text: #!/usr/bin/python
  #
  # Copyright 2018 Google LLC
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #      http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  import random
  from locust import HttpLocust, TaskSet
  
  products = [
      '0PUK6V6EV0',
      '1YMWWN1N4O',
      '2ZYFJ3GM2N',
      '66VCHSJNUP',
      '6E92ZMYYFZ',
      '9SIQT8TOJO',
      'L9ECAV7KIM',
      'LS4PSXUNUM',
      'OLJCESPC7Z']
  
  def index(l):
      l.client.get("/")
  
  def setCurrency(l):
      currencies = ['EUR', 'USD', 'JPY', 'CAD']
      l.client.post("/setCurrency",
          {'currency_code': random.choice(currencies)})
  
  def browseProduct(l):
      l.client.get("/product/" + random.choice(products))
  
  def viewCart(l):
      l.client.get("/cart")
  
  def addToCart(l):
      product = random.choice(products)
      l.client.get("/product/" + product)
      l.client.post("/cart", {
          'product_id': product,
          'quantity': random.choice([1,2,3,4,5,10])})
  
  def checkout(l):
      addToCart(l)
      l.client.post("/cart/checkout", {
          'email': 'someone@example.com',
          'street_address': '1600 Amphitheatre Parkway',
          'zip_code': '94043',
          'city': 'Mountain View',
          'state': 'CA',
          'country': 'United States',
          'credit_card_number': '4432-8015-6152-0454',
          'credit_card_expiration_month': '1',
          'credit_card_expiration_year': '2019',
          'credit_card_cvv': '672',
      })
  
  class UserBehavior(TaskSet):
  
      def on_start(self):
          index(self)
  
      tasks = {index: 1,
          setCurrency: 2,
          browseProduct: 10,
          addToCart: 2,
          viewCart: 3,
          checkout: 1}
  
  class WebsiteUser(HttpLocust):
      task_set = UserBehavior
      min_wait = 1000
      max_wait = 10000
  