def test_build_suggest_query_all_logs_nonempty_stacktrace_launches_with_the_same_name(
            self):
        """Tests building analyze query"""
        search_cfg = TestEsQuery.get_default_search_config()

        test_item_info = launch_objects.TestItemInfo(
            **{
                "analyzerConfig": {
                    "analyzerMode": "LAUNCH_NAME",
                    "numberOfLogLines": -1
                },
                "launchId": 12,
                "launchName": "Launch name",
                "project": 1,
                "testCaseHash": 1,
                "uniqueId": "unique",
                "testItemId": 2
            })
        log = {
            "_id": 1,
            "_index": 1,
            "_source": {
                "unique_id": "unique",
                "test_case_hash": 1,
                "test_item": "123",
                "message": "hello world 'sdf'",
                "merged_small_logs": "",
                "detected_message": "hello world 'sdf'",
                "detected_message_with_numbers": "hello world 1 'sdf'",
                "stacktrace": "invoke.method(arg)",
                "only_numbers": "1",
                "found_exceptions": "AssertionError",
                "found_exceptions_extended": "AssertionError",
                "message_params": "sdf",
                "urls": "",
                "paths": "",
                "message_without_params_extended": "hello world",
                "detected_message_without_params_extended": "hello world",
                "stacktrace_extended": "invoke.method(arg)",
                "message_extended": "hello world 'sdf'",
                "detected_message_extended": "hello world 'sdf'",
                "potential_status_codes": "200 401"
            }
        }
        query_from_esclient = EsQueryBuilder(
            search_cfg, 40000).build_suggest_query(
                test_item_info,
                log,
                message_field="message_without_params_extended",
                det_mes_field="detected_message_without_params_extended",
                stacktrace_field="stacktrace_extended")
        demo_query = utils.get_fixture(
            self.
            suggest_query_all_logs_nonempty_stacktrace_launches_with_the_same_name,
            to_json=True)

        query_from_esclient.should.equal(demo_query)
    def test_build_search_query(self):
        """Tests building analyze query"""
        search_cfg = TestEsQuery.get_default_search_config()

        search_req = launch_objects.SearchLogs(
            **{
                "launchId": 1,
                "launchName": "launch 1",
                "itemId": 2,
                "projectId": 3,
                "filteredLaunchIds": [1, 2, 3],
                "logMessages": ["log message 1"],
                "logLines": -1
            })
        query_from_esclient = EsQueryBuilder(search_cfg,
                                             40000).build_search_query(
                                                 search_req, "log message 1")
        demo_query = utils.get_fixture(self.query_search_logs, to_json=True)

        query_from_esclient.should.equal(demo_query)
    def test_build_analyze_query_all_logs_nonempty_stacktrace_launches_with_the_same_name(
            self):
        """Tests building analyze query"""
        search_cfg = TestEsQuery.get_default_search_config()

        launch = launch_objects.Launch(
            **{
                "analyzerConfig": {
                    "analyzerMode": "LAUNCH_NAME",
                    "numberOfLogLines": -1
                },
                "launchId": 12,
                "launchName": "Launch name",
                "project": 1
            })
        log = {
            "_id": 1,
            "_index": 1,
            "_source": {
                "unique_id": "unique",
                "test_case_hash": 1,
                "test_item": "123",
                "message": "hello world",
                "merged_small_logs": "",
                "detected_message": "hello world",
                "detected_message_with_numbers": "hello world 1",
                "stacktrace": "invoke.method(arg)",
                "only_numbers": "1",
                "found_exceptions": "AssertionError",
                "potential_status_codes": "300 401"
            }
        }
        query_from_esclient = EsQueryBuilder(search_cfg,
                                             40000).build_analyze_query(
                                                 launch, log)
        demo_query = utils.get_fixture(
            self.
            query_all_logs_nonempty_stacktrace_launches_with_the_same_name,
            to_json=True)

        query_from_esclient.should.equal(demo_query)
    def test_build_analyze_query_two_log_lines_only_current_launch_wo_exceptions(
            self):
        """Tests building analyze query"""
        search_cfg = TestEsQuery.get_default_search_config()

        launch = launch_objects.Launch(
            **{
                "analyzerConfig": {
                    "analyzerMode": "CURRENT_LAUNCH",
                    "numberOfLogLines": 2
                },
                "launchId": 12,
                "launchName": "Launch name",
                "project": 1
            })
        log = {
            "_id": 1,
            "_index": 1,
            "_source": {
                "unique_id": "unique",
                "test_case_hash": 1,
                "test_item": "123",
                "message": "hello world",
                "merged_small_logs": "",
                "detected_message": "hello world",
                "detected_message_with_numbers": "hello world 1",
                "stacktrace": "",
                "only_numbers": "1",
                "found_exceptions": "",
                "potential_status_codes": ""
            }
        }
        query_from_esclient = EsQueryBuilder(search_cfg,
                                             40000).build_analyze_query(
                                                 launch, log)
        demo_query = utils.get_fixture(
            self.query_two_log_lines_only_current_launch_wo_exceptions,
            to_json=True)

        query_from_esclient.should.equal(demo_query)