From 3a12c74af39e18720242c732d0d717fb930988da Mon Sep 17 00:00:00 2001 From: Elizabeth Byerly Date: Wed, 22 May 2019 09:53:52 -0400 Subject: [PATCH] Should now actually work --- .gitignore | 1 + kubernetes-manifests/loadgenerator.yaml | 6 ++--- src/loadgenerator/Dockerfile | 3 ++- src/loadgenerator/loadgen.sh | 9 +++++-- src/loadgenerator/locustfile.py | 31 ++++++++++++++++--------- src/loadgenerator/requirements.in | 2 +- src/loadgenerator/requirements.txt | 6 ++--- 7 files changed, 37 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index 60433d6..1e1f40a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ pkg/ .idea .skaffold-*.yaml .kubernetes-manifests-*/ +env/ diff --git a/kubernetes-manifests/loadgenerator.yaml b/kubernetes-manifests/loadgenerator.yaml index c2aeb98..3385337 100644 --- a/kubernetes-manifests/loadgenerator.yaml +++ b/kubernetes-manifests/loadgenerator.yaml @@ -31,9 +31,9 @@ spec: initContainers: - name: wait-frontend image: alpine:3.6 - command: ['sh', '-c', 'set -x; apk add --no-cache curl && - until timeout -t 2 curl -f "http://${FRONTEND_ADDR}"; do - echo "waiting for http://${FRONTEND_ADDR}"; + command: ['sh', '-c', 'set -x; apk add --no-cache curl && + until timeout -t 2 curl -f "http://${FRONTEND_ADDR}"; do + echo "waiting for http://${FRONTEND_ADDR}"; sleep 2; done;'] env: diff --git a/src/loadgenerator/Dockerfile b/src/loadgenerator/Dockerfile index cebb98c..a77fd2c 100644 --- a/src/loadgenerator/Dockerfile +++ b/src/loadgenerator/Dockerfile @@ -14,4 +14,5 @@ FROM base COPY --from=builder /install /usr/local COPY . . -ENTRYPOINT ./loadgen.sh +ENTRYPOINT ["./loadgen.sh"] + diff --git a/src/loadgenerator/loadgen.sh b/src/loadgenerator/loadgen.sh index 2a68db7..23477fa 100755 --- a/src/loadgenerator/loadgen.sh +++ b/src/loadgenerator/loadgen.sh @@ -18,10 +18,15 @@ set -e trap "exit" TERM -if [[ -z "${FRONTEND_ADDR}" ]]; then +if [ -z "${FRONTEND_ADDR}" ]; then echo >&2 "FRONTEND_ADDR not specified" exit 1 fi set -x -locust --host="http://${FRONTEND_ADDR}" --no-web -c "${USERS:-10}" +locust \ + -f locustfile.py \ + --host="http://${FRONTEND_ADDR}" \ + --no-web \ + -c "${USERS:-10}" \ + -r 1 diff --git a/src/loadgenerator/locustfile.py b/src/loadgenerator/locustfile.py index a51a245..ebafae6 100644 --- a/src/loadgenerator/locustfile.py +++ b/src/loadgenerator/locustfile.py @@ -30,26 +30,32 @@ products = [ '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)}) + {'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])}) + 'quantity': random.choice([1, 2, 3, 4, 5, 10])}) + def checkout(l): addToCart(l) @@ -66,9 +72,17 @@ def checkout(l): 'credit_card_cvv': '672', }) + class UserBehavior(TaskSet): - min_wait = 1000 - max_wait = 20000 + min_wait = 500 + max_wait = 1500 + + tasks = {index: 1, + setCurrency: 2, + browseProduct: 10, + addToCart: 2, + viewCart: 3, + checkout: 1} def on_start(self): index(self) @@ -83,14 +97,9 @@ class UserBehavior(TaskSet): traffic_scaler = (traffic_scaler + 1) / 2.0 # Scale traffic between minimum and maximum wait times. - return self.max_wait + (self.min_wait - self.max_wait) * traffic_scaler + wait = self.max_wait + (self.min_wait - self.max_wait) * traffic_scaler + return round(wait) - tasks = {index: 1, - setCurrency: 2, - browseProduct: 10, - addToCart: 2, - viewCart: 3, - checkout: 1} class WebsiteUser(HttpLocust): task_set = UserBehavior diff --git a/src/loadgenerator/requirements.in b/src/loadgenerator/requirements.in index 0b66c0a..280aa5f 100644 --- a/src/loadgenerator/requirements.in +++ b/src/loadgenerator/requirements.in @@ -1 +1 @@ -locustio==0.8.1 +locustio==0.9.0 diff --git a/src/loadgenerator/requirements.txt b/src/loadgenerator/requirements.txt index ac69aca..60993cd 100644 --- a/src/loadgenerator/requirements.txt +++ b/src/loadgenerator/requirements.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile # To update, run: # -# pip-compile --output-file requirements.txt requirements.in +# pip-compile --output-file=requirements.txt requirements.in # certifi==2018.11.29 # via requests chardet==3.0.4 # via requests @@ -13,9 +13,9 @@ greenlet==0.4.15 # via gevent idna==2.8 # via requests itsdangerous==1.1.0 # via flask jinja2==2.10 # via flask -locustio==0.8.1 +locustio==0.9.0 markupsafe==1.1.0 # via jinja2 -msgpack-python==0.5.6 # via locustio +msgpack==0.6.1 # via locustio pyzmq==17.0.0 # via locustio requests==2.21.0 # via locustio six==1.12.0 # via locustio