diff --git a/application/locustfile.py b/application/locustfile.py new file mode 100644 index 0000000000000000000000000000000000000000..afe710485ac4cba08fd88183381d1a63b80147aa --- /dev/null +++ b/application/locustfile.py @@ -0,0 +1,88 @@ +import random +from locust import HttpUser, task, between +from locust.exception import StopUser + + + +class StudentActor(HttpUser): + wait_time = between(.250, .500) + weight = 1 + + course_ids = set() + lecture_ids = set() + student_ids = set() + + @task(3) + def get_courses_english(self): + self.client.get('/courses/findAllByLang?lang=ENGLISH') + + @task(3) + def get_courses_spanish(self): + self.client.get('/courses/findAllByLang?lang=SPANISH') + + + @task + def enrol(self): + self.client.get(f'http://localhost:5000/courses/enrol/{1}?studentId={1}') + + + @task + def get_lecture_by_id(self): + self.client.get(f'/lectures/findByCourse?courseId={1}') + + def on_start(self): + # TODO auth + return super().on_start() + +class LecturerActor(HttpUser): + weight = 0 + fixed_count = 1 + wait_time = between(.100, .400) + + + courses_created = 0 + lecture_created = 0 + course_ids = set() + + @task + def new_course(self): + if self.courses_created < 3: + self.client.headers['Content-Type'] = "application/json" + response = self.client.post("/courses", json= + { + "name": "string", + "capacity": 10, + "language": random.choice(["SPANISH", "ENGLISH"]), + "proficiency": random.choice(["A1", "B1", "C1"]) + } + ) + values = response.json() + + print("course " + str(values['id']) + " created.") + self.course_ids.add(values['id']) + self.courses_created += 1 + + @task + def new_lecture(self): + if self.courses_created > 0 and self.lecture_created < 10: + self.client.headers['Content-Type'] = "application/json" + response = self.client.post("/lectures", json= + { + "lectureFrom": "2024-04-26T18:06:30.658Z", + "lectureTo": "2024-04-27T18:06:30.658Z", + "topic": "string", + "capacity": random.choice([10, 20, 30]), + "courseId": random.choice(list(self.course_ids)) + } + ) + + print("lecture " + str(response.json()['id']) + " created.") + + self.lecture_created += 1 + + if self.lecture_created >= 9: + raise StopUser() + + def on_start(self): + # TODO auth + return super().on_start()