Пример #1
0
class WebsiteUser(HttpLocust):
    task_set = WebsiteTasks
    wait_time = between(5, 15)
Пример #2
0
class OTL_Locust(HttpUser):
    wait_time = between(3, 5)

    code = "c857eb3a9234ccab38eb"
    state = "8d973242f7cca7d3e253"

    user_id = "1"
    course_id = "865"
    professor_id = "796"

    csrf_token = None

    lecture_id = 987440

    def on_start(self):
        self.get_main()
        self.session_login_callback()

    # session APIs
    @task
    def session(self):
        return self.session_login()

    @task
    def session_login(self):
        url = "/session/login" \
            # + "next=" + "/"

        data = {"sso_state": self.state}

        response = self.client.get(url, data=data, name='session_login')
        # print('Response status code:', response.status_code)
        # print('Response content:', response.content)

    @task
    def session_login_callback(self):

        url = "/session/login/callback?" \
            + "state= " + self.state + "&" \
            + "code= " + self.code

        data = {"sso_state": self.state}

        response = self.client.get(url,
                                   data=data,
                                   name='session_login_callback')

    @task
    def session_logout(self):
        url = "/session/logout?" \
            # + "next=" + "/"

        response = self.client.get(url, name='session_logout')

    # @task
    # def session_unregister(self):
    # 	code = "c857eb3a9234ccab38eb"
    # 	state = "8d973242f7cca7d3e253"

    # 	url = "/session/unregister"

    # 	response = self.client.post(url, name='session_unregister')

    @task
    def session_language(self):
        url = "/session/language"

        response = self.client.get(url, name='session_language')

    @task
    def session_setting_get(self):
        url = "/session/settings"

        response = self.client.get(url, name='session_setting_get')

    @task
    def session_setting_post(self):
        url = "/session/settings/"

        data = {'language': "ko", 'fav_department': [132, 331, 4423]}

        response = self.client.post(url,
                                    data=data,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='session_setting_post')

    # timetable APIs
    @task
    def get_table(self):
        response = self.client.get('/timetable', name='get_table')

    @task
    def table_update_lecture_delete(self):
        table_id = self.table_create()
        body = {
            'table_id': table_id,
            'lecture_id': 1377884,
            'delete': u'true',
        }
        response = self.client.post('/timetable/api/table_update/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='table_update')

    @task
    def table_update(self):
        table_id = self.table_create()
        body = {
            'table_id': table_id,
            'lecture_id': 1377884,
            'delete': u'false',
        }
        response = self.client.post('/timetable/api/table_update/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='table_update')

    @task
    def table_create(self):
        body = {
            'year': 2018,
            'semester': 1,
            'lectures': [1, 2],
        }
        response = self.client.post('/timetable/api/table_create/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='table_create')

        return response.json()["id"]

    @task
    def table_delete(self):
        table_id = self.table_create()
        body = {
            'table_id': table_id,
            'year': 2018,
            'semester': 1,
        }
        response = self.client.post('/timetable/api/table_delete/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='table_delete')

    @task
    def table_copy(self):
        table_id = self.table_create()
        body = {
            'table_id': table_id,
            'year': 2018,
            'semester': 1,
        }
        response = self.client.post('/timetable/api/table_copy/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='table_copy')

    @task
    def table_load(self):
        body = {
            'year': 2018,
            'semester': 1,
        }
        response = self.client.post('/timetable/api/table_load/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='table_load')

    @task
    def table_autocomplete(self):
        body = {
            'year': 2018,
            'semester': 1,
            'keyword': '논리',
        }
        response = self.client.post('/timetable/api/autocomplete/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='table_autocomplete')

    @task
    def table_search(self):
        body = json.dumps({
            "year": 2018,
            "semester": 1,
            "keyword": "논리",
        })
        response = self.client.post('/timetable/api/search/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='table_search')

    @task
    def comment_load(self):
        body = {
            'lecture_id': self.lecture_id,
        }
        response = self.client.post('/timetable/api/comment_load/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='comment_load')

    @task
    def major_load(self):
        body = {
            'year': 2018,
            'semester': 1,
        }
        response = self.client.post('/timetable/api/list_load_major/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='major_load')

    @task
    def humanity_load(self):
        body = {
            'year': 2018,
            'semester': 1,
        }
        response = self.client.post('/timetable/api/list_load_humanity/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='humanity_load')

    @task
    def wishlist_load(self):
        body = {
            'year': 2018,
            'semester': 1,
        }
        response = self.client.post('/timetable/api/wishlist_load/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='wishlist_load')

    @task
    def wishlist_update(self):  # can fail due to call before load
        body = {
            'lecture_id': self.lecture_id,
            'delete': u'false',
        }
        response = self.client.post('/timetable/api/wishlist_update/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='wishlist_update')

    @task
    def wishlist_update_lecture_delete(
            self):  # can fail due to call before update
        body = {
            'lecture_id': self.lecture_id,
            'delete': u'true',
        }
        response = self.client.post('/timetable/api/wishlist_update/',
                                    data=body,
                                    headers={"X-CSRFToken": self.csrf_token},
                                    cookies={"csrftoken": self.csrf_token},
                                    name='wishlist_update_lecture_delete')

    @task
    def share_image(self):
        table_id = self.table_create()
        params = {
            'table_id': table_id,
        }
        response = self.client.get('/timetable/api/share_image',
                                   params=params,
                                   name='share_image')

    @task
    def share_calander(self):
        table_id = self.table_create()
        params = {
            'table_id': table_id,
            'year': 2018,
            'semester': 1,
        }
        response = self.client.get('/timetable/api/share_calendar',
                                   params=params,
                                   name='share_calander')

    @task
    def google_auth_return(self):
        params = {
            'state': 'some-valid-token',
        }
        response = self.client.get('/timetable/google_auth_return',
                                   params=params,
                                   name='google_auth_return')

    # review APIs
    @task
    def get_main(self):
        response = self.client.get("/main", name='get_main')
        self.csrf_token = response.cookies['csrftoken']
        # print("TOKEN : ", self.csrf_token)

    @task
    def get_review(self):
        self.client.get("/review/", name='get_review')

    @task
    def refresh_review(self):
        self.client.get("/review/refresh/", name='refresh_review')

    @task
    def insert_review(self):
        self.client.get("/review/refresh/", name='insert_review')

    @task
    def get_credits(self):
        self.client.get("/credits", name='get_credits')

    @task
    def get_licenses(self):
        self.client.get("/licenses", name='get_licenses')

    @task
    def get_last_comment_json(self):
        params = {
            "filter": ["F"],
        }
        self.client.get(f"/review/json/{self.course_id}",
                        params=params,
                        name='get_last_comment_json')

    @task
    def get_comment(self):
        self.client.get(f"/review/result/comment/{self.course_id}",
                        name='get_comment')

    @task
    def get_professor_review(self):
        self.client.get(
            f"/review/result/professor/{self.professor_id}/{self.course_id}",
            name='get_professor_review')

    @task
    def get_professor_review_json(self):
        self.client.get(
            f"/review/result/professor/{self.professor_id}/json/{self.course_id}/1/",
            name='get_professor_review_json')

    @task
    def get_course_review(self):
        self.client.get(f"/review/result/course/{self.course_id}/1/",
                        name='get_course_review')

    @task
    def get_course_review_json(self):
        self.client.get(f"/review/result/course/{self.course_id}/1/json/1",
                        name='get_course_review_json')

    @task
    def get_result(self):
        params = {
            "q": "논리적",  # 키워드
            "sort": "name",
            # "sort": "total",
            # "sort": "grade",
            # "sort": "load",
            # "sort": "speech",
            # "semester": 1,
            # "department": "",
            # "type": "",
            # "grade": "",
        }
        self.client.get("/review/result/", params=params, name='get_result')

    @task
    def get_result_json(self):
        params = {
            "q": "논리적",  # 키워드
            "sort": "name",
            # "sort": "total",
            # "sort": "grade",
            # "sort": "load",
            # "sort": "speech",
            # "semester": 1,
            # "department": "",
            # "type": "",
            # "grade": "",
        }
        self.client.get("/review/result/json/1/",
                        params=params,
                        name='get_result_json')
Пример #3
0
class ShopUser(HttpUser):
    wait_time = between(5, 15)
    products_id = []
    email = None

    def on_start(self):
        self.search_products()

    @task(4)
    def search_products(self):
        while len(self.products_id) == 0:
            page = random.randint(0, 7000)
            response = self.client.get(
                f'/v1/products/search?page={page}&size=10',
                name='search products',
                timeout=30)
            #print(response.json())
            content = response.json()['content']
            if len(content) == 0:
                continue
            self.products_id = [product['id'] for product in content]

    @task(10)
    def get_product(self):
        product_id = self.products_id[random.randint(0,
                                                     len(self.products_id) -
                                                     1)]
        self.client.get(f'/v1/products/{product_id}',
                        name='get product',
                        timeout=30)

    @task(2)
    def create_order(self):
        if self.email is None:
            self.email = self.registration()

        ordered_products = self.products_id[0:len(self.products_id) - 1]
        payload = {
            'products': [{
                'id': p,
                'count': 1
            } for p in ordered_products],
            'address': self.get_address()
        }
        headers = {
            'content-type': 'application/json',
            'X-Auth-Request-Email': self.email
        }

        response = self.client.post('/v1/orders',
                                    json=payload,
                                    headers=headers,
                                    name='create order',
                                    timeout=30)
        order_id = response.json()['id']
        response = self.client.post(f'/v1/payments/{order_id}/pay?status=OK',
                                    name='pay order',
                                    timeout=30)
        #print(response.json())

    def registration(self):
        email = f'{random.randint(0, 1000000)}@mail.ru'

        payload = {
            'name': f'Name {random.randint(0, 1000000)}',
            'phone': '1234567890',
            'address': self.get_address()
        }
        headers = {
            'content-type': 'application/json',
            'X-Auth-Request-Email': email
        }

        response = self.client.put('/v1/customers/current',
                                   json=payload,
                                   headers=headers,
                                   name='create account',
                                   timeout=30)
        return email

    def get_address(self):
        if random.randint(0, 10) == 10:
            return 'Москва'
        else:
            return 'Екатеринбург'
Пример #4
0
class UserRun(HttpUser):
    host = "http://127.0.0.1"
    tasks = [SaleApplyPriceCase]  # 指定任务类名称

    wait_time = between(0.1, 0.2)  # 用于确定模拟用户在执行任务之间将等待多长时间;单位秒
class WebsiteUser(FastHttpLocust):
    task_set = UserBehavior
    wait_time = between(3, 5)
Пример #6
0
class BambooUser(HttpUser):
    host = BAMBOO_SETTINGS.server_url
    tasks = [BambooBehavior]
    wait_time = between(0, 0)
Пример #7
0
class MetricsLocust(HttpLocust):
    task_set = MetricsTaskSet
    wait_time = between(0.1, 0.1)
Пример #8
0
class MyLocust(HttpLocust):
    host = os.getenv('HOST_URL', "http://localhost")
    task_set = Client
    wait_time = between(0, 0)
Пример #9
0
class LoadTestUser(HttpUser):
    host = "http://0.0.0.0:8000"
    wait_time = between(5, 15)
    tasks = [LoadTestTasks]
Пример #10
0
class QuickstartUser(HttpUser):
    wait_time = between(1, 2)

    @task
    def hello_world(self):
        self.client.get("")
Пример #11
0
class LightTask(TaskSet):
    wait_time = between(1, 2)

    @task(1)
    def lightv1_create(self):
        request = {
            'action': 'CREATE',
            'data': self.generate_light_create_request()
        }
        self.client.post('/v1/light/create', json=request)

    @task(3)
    def lightv1_get(self):
        request = {
            'action': 'GET',
            'query': self.generate_light_get_request()
        }
        self.client.post('/v1/light/get', json=request)

    @task(1)
    def lightv2_create(self):
        request = {
            'action': 'CREATE',
            'data': self.generate_light_create_request()
        }
        self.client.post('/v2/light/create', json=request)

    @task(3)
    def lightv2_get(self):
        request = {
            'action': 'GET',
            'query': self.generate_light_get_request()
        }
        self.client.post('/v2/light/get', json=request)

    @staticmethod
    def generate_light_create_request():
        choices = [0, 1, 2]
        if random.choice(choices) == 0:
            request = {
                'fieldOne': random.choice(strings_choices),
                'fieldTwo': random.uniform(0, 10),
                'fieldThree': random.choice(strings_choices),
                'fieldFour': datetime.now(timezone.utc).astimezone().isoformat()
            }
        elif random.choice(choices) == 1:
            request = {
                'fieldOne': random.choice(strings_choices),
                'fieldTwo': random.uniform(0, 10),
                'fieldFour': datetime.now(timezone.utc).astimezone().isoformat()
            }
        else:
            request = {
                'fieldOne': random.choice(strings_choices),
                'fieldTwo': random.uniform(0, 10),
                'fieldThree': random.choice(strings_choices),
            }
        return request

    @staticmethod
    def generate_light_get_request():
        choices = [20, 50, 100]
        request = {
            'skip': random.choice(choices),
            'take': random.choice(choices),
            'filters': [
                {
                    'type': 'text',
                    'field': 'field_one',
                    'value': random.choice(strings_choices)
                }
            ]
        }

        return request
class WebsiteUser(HttpUser):
    tasks = [SPSignInLoad]
    wait_time = between(5, 9)
class WebsiteUser(HttpUser):
    tasks = [UserBehavior]
    wait_time = between(1, 10)
Пример #14
0
class UserRun(HttpUser):
    tasks = [MyTaskCase]
    wait_time = between(0.1, 3)
Пример #15
0
class AccountUser(OdooRPCLocust):
    wait_time = between(1, 15)
    weight = 10
    tasks = [account.AccountTaskSet]
Пример #16
0
class MyLocus(HttpLocust):
    task_set = MyTaskSet
    wait_time = between(3, 5)
Пример #17
0
class WebsiteUser(HttpUser):
    tasks = [LiuCheng]
    wait_time = between(1, 3)
    host = "https://maoyan.com"
Пример #18
0
class LoggedInUser(HttpUser):
    wait_time = between(1, 2)
    tasks = {QuickstartUser: 2}
Пример #19
0
class WebsiteUser(HttpLocust):
    task_set = WebsiteTasks
    host = "https://hocodevn.com/"
    wait_time = between(5, 15)
Пример #20
0
class CRMUser(OdooRPCLocust):
    wait_time = between(1, 15)
    weight = 10
    tasks = [crm.CRMTaskSet]
Пример #21
0
 def wait_time(self):
     target_wait = between(0, 2 / TARGET_RPS)(self)  
     print(("wait", target_wait))
     return target_wait
Пример #22
0
class ProjectUser(OdooRPCLocust):
    wait_time = between(1, 15)
    weight = 10
    tasks = [project.ProjectTaskSet]
Пример #23
0
class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    wait_time = between(5.0, 9.0)
Пример #24
0
class PurchaseUser(OdooRPCLocust):
    wait_time = between(1, 15)
    weight = 10
    tasks = [purchase.PurchaseTaskSet]
Пример #25
0
class WebsiteUser(HttpUser):
    wait_time = between(2, 5)
    tasks = [UserTasks]
Пример #26
0
class SaleUser(OdooRPCLocust):
    wait_time = between(1, 15)
    weight = 10
    tasks = [sale.SaleTaskSet]
Пример #27
0
class TestUser(HttpLocust):
    task_set = BusinessBehavior
    wait_time = between(2, 4)
Пример #28
0
class StockUser(OdooRPCLocust):
    wait_time = between(1, 15)
    weight = 10
    tasks = [stock.StockTaskSet]
Пример #29
0
class LoadUser(User):
    tasks = [TriggerTask]
    wait_time = between(1, 3)
Пример #30
0
class Between(User):
    wait_time = between(3, 5)

    @task
    def launch(self):
        print("Between Demo")