def interrupt(self, reschedule=True): """ Interrupt the TaskSet and hand over execution control back to the parent TaskSet. If *reschedule* is True (default), the parent User will immediately re-schedule, and execute, a new task. """ raise InterruptTaskSet(reschedule)
def executeTestOne(self): result1 = queryGlobalMethodExample(self, "some-value") if result1 is not None: logger.debug("result2: %s" % result1) else: logger.warn("Error occurred... aborting task.") raise InterruptTaskSet(False)
def interrupt(self, reschedule=True): """ Interrupt the TaskSet and hand over execution control back to the parent TaskSet. If *reschedule* is True (default), the parent User will immediately re-schedule, and execute, a new task. This method should not be called by the root TaskSet (the one that is immediately, attached to the User class's *task_set* attribute), but rather in nested TaskSet classes further down the hierarchy. """ raise InterruptTaskSet(reschedule)
def request_failure(self, request_type, name, response_time, response_length, exception, **_kwargs): raise InterruptTaskSet()
def interrupted_task(self): with self.client.get("/ultra_fast", catch_response=True) as r: raise InterruptTaskSet()
def t2(self): self.t2_executed = True raise InterruptTaskSet(reschedule=False)
def request(self, exception, **_kwargs): if exception: raise InterruptTaskSet()
def on_task_end(self): raise InterruptTaskSet(reschedule=False)
def t1(self): if not self.completed: self.completed = True raise RescheduleTask else: raise InterruptTaskSet(reschedule=False)
def debug(self): if not self.locust.user_token: logger.warn("Aborting task - unexpected user token") raise InterruptTaskSet(False)
def login(self): """ Main script used to log in via CAS protocol """ print("CAS Login Process Starting ...") client = self.client cas_response = client.get("/cas/login", params={'service': CAS_SP}, name="1. /cas/login - GET", verify=False) content = cas_response.text found_exec = EXECUTION_PAT.search(content) if found_exec is None: print("CAS No Execution field found on login form!") print(content) raise InterruptTaskSet() execution = found_exec.groups()[0] found_eventid = EVENTID_PAT.search(content) if found_eventid is None: print("CAS No Event Id field found on login form!") raise InterruptTaskSet() event_id = found_eventid.groups()[0] creds = random.choice(self.creds) cas_user = creds[0] cas_passwd = creds[1] data = { "username": cas_user, "password": cas_passwd, "execution": execution, "_eventId": event_id, "geolocation": "", } print("CAS Logging in User") cas_login_response = client.post( "/cas/login?service={}".format(CAS_SP), data=data, name="2. /cas/login - POST", verify=False, allow_redirects=False) cas_response_url = cas_login_response.next.url url_query = unquote(urlparse(cas_response_url).query) cas_parsed_url = parse_qs(url_query) if 'ticket' in cas_parsed_url: cas_ticket = cas_parsed_url['ticket'][0] else: print("CAS No Ticket found in returned form!") raise InterruptTaskSet() print("CAS Validating service ticket ...") ticket_response = client.get("/cas/serviceValidate", params={ 'service': CAS_SP, 'ticket': cas_ticket }, name="3. /cas/serviceValidate - GET", verify=False) ticket_status = ticket_response.status_code assert ticket_status is 200, "CAS Ticket response code of: ".format( ticket_status) user_data = ticket_response.text if "<cas:authenticationSuccess>" in user_data: print("CAS Successful Run!") else: print("CAS No Event Id field found on login form!") raise InterruptTaskSet() print("CAS Validating service ticket ...")