diff --git a/application/locustfile.py b/application/locustfile.py index 5cc90f33ce0c99a127c9f3d307561a916e8abf33..8ea2f32ee9ebbe7ff7db91f46ecc9b0052d1c37c 100644 --- a/application/locustfile.py +++ b/application/locustfile.py @@ -17,88 +17,126 @@ class StudentActor(HttpUser): wait_time = between(.250, .500) weight = 1 - course_ids = set() - lecture_ids = set() - student_ids = set() + course_id = None + lecture_id = None + id = None + header = None - @task(3) - def get_courses_english(self): - self.client.get( - url='/courses/findAllByLang?lang=ENGLISH', + def on_start(self): + self.header = {'Authorization': f'Bearer {self.environment.parsed_options.token}'} + + response = self.client.post( + url='/users', auth=None, - headers=header, - name="Find Courses" - ) + headers=self.header, + json={ + "username": "xnocni", + "email": f"xnocni{random.randint(0, 42069)}@mail.muni.cz", + "firstName": "Hana", + "lastName": "Sykorova" + }, + name="Add User" + ) + if response.status_code == 201: + self.id = response.json()["id"] + return super().on_start() @task(3) - def get_courses_spanish(self): - self.client.get( - url='/courses/findAllByLang?lang=SPANISH', + def get_courses_english(self): + response = self.client.get( + url='/courses/findAllByLang?lang=ENGLISH', auth=None, - headers=header, + headers=self.header, name="Find Courses" - ) - + ) + if response.status_code == 200: + json = response.json() + if len(json) > 0: + self.course_id = json[0]["id"] @task def enrol(self): + if self.course_id is None or self.id is None: + return self.client.patch( - url=f'/courses/enrol/{1}?studentId={1}', + url=f'/courses/enrol/{self.course_id}?studentId={self.id}', auth=None, - headers=header, + headers=self.header, name="Enrol Courses" - ) - + ) @task - def get_lecture_by_id(self): - self.client.get( - url=f'/lectures/findByCourse?courseId={1}', + def get_lectures_by_course(self): + if self.course_id is None: + return + response = self.client.get( + url=f'/lectures/findByCourse?courseId={self.course_id}', auth=None, - headers=header, + headers=self.header, name="Find Lectures" - ) + ) + if response.status_code == 200: + json = response.json() + if len(json) > 0: + self.lecture_id = json[0]["id"] + class LecturerActor(HttpUser): weight = 0 fixed_count = 1 - wait_time = between(.100, .400) - + wait_time = between(.100, .900) courses_created = 0 lecture_created = 0 course_ids = set() + id = None + header = None + + def on_start(self): + self.header = {'Authorization': f'Bearer {self.environment.parsed_options.token}'} + + response = self.client.post( + url='/users', + auth=None, + headers=self.header, + json={ + "username": "xhana", + "email": f"xhana{random.randint(0, 42069)}@mail.muni.cz", + "firstName": "Hana", + "lastName": "Sykorova" + }, + name="Add User" + ) + if response.status_code == 201: + self.id = response.json()["id"] + return super().on_start() @task def new_course(self): if self.courses_created < 3: - self.client.headers['Content-Type'] = "application/json" response = self.client.post( url="/courses", auth=None, - headers=header, + headers=self.header, name="Create Course", json={ - "name": "string", - "capacity": 10, - "language": random.choice(["SPANISH", "ENGLISH"]), - "proficiency": random.choice(["A1", "B1", "C1"]) - } + "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 + if response.status_code == 201: + self.course_ids.add(response.json()['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( url="/lectures", auth=None, - headers=header, + headers=self.header, name="Create Lecture", json={ "lectureFrom": "2024-04-26T18:06:30.658Z", @@ -108,10 +146,7 @@ class LecturerActor(HttpUser): "courseId": random.choice(list(self.course_ids)) } ) - - print("lecture " + str(response.json()['id']) + " created.") - - self.lecture_created += 1 - - if self.lecture_created >= 9: + if response.status_code == 201: + self.lecture_created += 1 + if self.lecture_created >= 20: raise StopUser()