Skip to content

Commit d18da84

Browse files
committed
testing with locust works #482
1 parent 10d078b commit d18da84

File tree

1 file changed

+33
-24
lines changed

1 file changed

+33
-24
lines changed

mapswipe_workers/locust_files/load_testing.py

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,27 @@
1+
# run with locust -f locust_files/load_testing.py
2+
# then set number of users and spawn rate in web interface
3+
# e.g. test with 100 users, and 15 users/sec
4+
# web interface: http://0.0.0.0:8089/
5+
16
import datetime
7+
import json
28
import random
39
from uuid import uuid4
410

5-
from locust import User, between
11+
from locust import HttpUser, between, task
612

13+
from mapswipe_workers.definitions import logger
714
from mapswipe_workers.utils import user_management
815

916

10-
class MapSwipeUser(User):
11-
wait_time = between(0.5, 10)
12-
13-
def __init__(self):
14-
self.project_id = "-MYg8CEf2k1-RitN62X0"
15-
random_string = uuid4()
16-
self.email = f"test_{random_string}@mapswipe.org"
17-
self.username = f"test_{random_string}"
18-
self.password = "mapswipe"
19-
self.user_id = None
20-
self.signed_in_user = None
17+
class MapSwipeUser(HttpUser):
18+
# assuming that users need between 30 sec and 120 sec to map a group
19+
wait_time = between(30, 120)
2120

2221
def set_up_user(self):
2322
# check if is already signed in
2423
if self.signed_in_user is None:
25-
print("user is not signed in. Will create a new user.")
24+
logger.info("user is not signed in. Will create a new user.")
2625
# create user if not exists
2726
user = user_management.create_user(self.email, self.username, self.password)
2827
self.user_id = user.uid
@@ -31,9 +30,9 @@ def set_up_user(self):
3130
self.signed_in_user = user_management.sign_in_with_email_and_password(
3231
self.email, self.password
3332
)
34-
print("Created a new user.")
33+
logger.info("Created a new user.")
3534
else:
36-
print("user is already signed in.")
35+
logger.info("user is already signed in.")
3736
pass
3837

3938
def create_mock_result(self, group):
@@ -54,12 +53,20 @@ def create_mock_result(self, group):
5453

5554
data = {
5655
"results": results,
57-
"timestamp": end_time,
5856
"startTime": start_time,
5957
"endTime": end_time,
6058
}
6159
return data
6260

61+
def set_firebase_db(self, path, data, token=None):
62+
request_ref = f"{path}.json?auth={token}"
63+
headers = {"content-type": "application/json; charset=UTF-8"}
64+
self.client.patch(
65+
request_ref, headers=headers, data=json.dumps(data).encode("utf-8")
66+
)
67+
logger.info(f"set data in firebase for {path}.json")
68+
69+
@task
6370
def map_a_group(self):
6471
"""Get a group from Firebase for this user.
6572
@@ -104,12 +111,14 @@ def map_a_group(self):
104111

105112
# upload results in firebase
106113
path = f"/v2/results/{self.project_id}/{next_group_id}/{self.user_id}"
107-
user_management.set_firebase_db(path, result, self.signed_in_user["idToken"])
108-
114+
self.set_firebase_db(path, result, self.signed_in_user["idToken"])
109115

110-
if __name__ == "__main__":
111-
mapswipe_user = MapSwipeUser()
112-
mapswipe_user.set_up_user()
113-
mapswipe_user.map_a_group()
114-
mapswipe_user.map_a_group()
115-
mapswipe_user.map_a_group()
116+
def on_start(self):
117+
self.project_id = "-MYg8CEf2k1-RitN62X0"
118+
random_string = uuid4()
119+
self.email = f"test_{random_string}@mapswipe.org"
120+
self.username = f"test_{random_string}"
121+
self.password = "mapswipe"
122+
self.user_id = None
123+
self.signed_in_user = None
124+
self.set_up_user()

0 commit comments

Comments
 (0)