From 7878b9fe67cfb44000528b74d175cbcf1cea59cc Mon Sep 17 00:00:00 2001 From: lincyaw <814750204@qq.com> Date: Sun, 25 Feb 2024 11:45:59 +0800 Subject: [PATCH] feat: strengthen the load generator with fuzz input --- src/loadgenerator/locustfile.py | 35 ++++++++++++++++++++---------- src/loadgenerator/requirements.in | 1 + src/loadgenerator/requirements.txt | 16 +++++++++++--- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/loadgenerator/locustfile.py b/src/loadgenerator/locustfile.py index 7874fc7a01b..8522522926f 100644 --- a/src/loadgenerator/locustfile.py +++ b/src/loadgenerator/locustfile.py @@ -16,6 +16,9 @@ import random from locust import HttpUser, TaskSet, between +from faker import Faker +import datetime +fake = Faker() products = [ '0PUK6V6EV0', @@ -32,7 +35,7 @@ def index(l): l.client.get("/") def setCurrency(l): - currencies = ['EUR', 'USD', 'JPY', 'CAD'] + currencies = ['EUR', 'USD', 'JPY', 'CAD', 'GBP', 'TRY'] l.client.post("/setCurrency", {'currency_code': random.choice(currencies)}) @@ -47,22 +50,30 @@ def addToCart(l): l.client.get("/product/" + product) l.client.post("/cart", { 'product_id': product, - 'quantity': random.choice([1,2,3,4,5,10])}) + 'quantity': random.randint(1,100)}) + +def empty_cart(l): + l.client.post('/cart/empty') def checkout(l): addToCart(l) + current_year = datetime.datetime.now().year+1 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': '2039', - 'credit_card_cvv': '672', + 'email': fake.email(), + 'street_address': fake.street_address(), + 'zip_code': fake.zipcode(), + 'city': fake.city(), + 'state': fake.state_abbr(), + 'country': fake.country(), + 'credit_card_number': fake.credit_card_number(card_type="visa"), + 'credit_card_expiration_month': random.randint(1, 12), + 'credit_card_expiration_year': random.randint(current_year, current_year + 70), + 'credit_card_cvv': f"{random.randint(100, 999)}", }) + +def logout(l): + l.client.get('/logout') + class UserBehavior(TaskSet): diff --git a/src/loadgenerator/requirements.in b/src/loadgenerator/requirements.in index be8436126b5..21dcb0baade 100644 --- a/src/loadgenerator/requirements.in +++ b/src/loadgenerator/requirements.in @@ -1 +1,2 @@ locust==2.22.0 +faker==23.2.1 \ No newline at end of file diff --git a/src/loadgenerator/requirements.txt b/src/loadgenerator/requirements.txt index 774320b8fc7..dc17329a12c 100644 --- a/src/loadgenerator/requirements.txt +++ b/src/loadgenerator/requirements.txt @@ -1,8 +1,8 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --output-file=requirements.txt requirements.in +# pip-compile requirements.in # blinker==1.7.0 # via flask @@ -18,6 +18,8 @@ click==8.1.7 # via flask configargparse==1.7 # via locust +faker==23.2.1 + # via -r requirements.in flask==3.0.2 # via # flask-cors @@ -37,6 +39,8 @@ greenlet==3.0.3 # via gevent idna==3.6 # via requests +importlib-metadata==7.0.1 + # via flask itsdangerous==2.1.2 # via flask jinja2==3.1.3 @@ -51,6 +55,8 @@ msgpack==1.0.7 # via locust psutil==5.9.8 # via locust +python-dateutil==2.8.2 + # via faker pyzmq==25.1.2 # via locust requests==2.31.0 @@ -58,7 +64,9 @@ requests==2.31.0 roundrobin==0.0.4 # via locust six==1.16.0 - # via geventhttpclient + # via + # geventhttpclient + # python-dateutil urllib3==2.2.0 # via requests werkzeug==3.0.1 @@ -66,6 +74,8 @@ werkzeug==3.0.1 # flask # flask-login # locust +zipp==3.17.0 + # via importlib-metadata zope-event==5.0 # via gevent zope-interface==6.1