Exemplo n.º 1
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     return [
         TimeSeriesProcessor({"time": "finish_ts"}, ("start_ts", "finish_ts")),
         TagsExpanderProcessor(),
         BasicFunctionsProcessor(),
         apdex_processor(self.get_data_model()),
         failure_rate_processor(self.get_data_model()),
     ]
Exemplo n.º 2
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     return [
         TagsExpanderProcessor(),
         BasicFunctionsProcessor(),
         apdex_processor(self.get_data_model()),
         failure_rate_processor(self.get_data_model()),
         TimeSeriesColumnProcessor(self.__time_group_columns),
     ]
Exemplo n.º 3
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     columnset = self.get_data_model()
     return [
         TagsExpanderProcessor(),
         BasicFunctionsProcessor(),
         # Apdex and Impact seem very good candidates for
         # being defined by the Transaction entity when it will
         # exist, so it would run before Storage selection.
         apdex_processor(columnset),
         failure_rate_processor(columnset),
         HandledFunctionsProcessor("exception_stacks.mechanism_handled", columnset),
         TimeSeriesColumnProcessor({"time": "timestamp"}),
     ]
Exemplo n.º 4
0
 def get_query_processors(self) -> Sequence[QueryProcessor]:
     return [
         TimeSeriesProcessor({"time": "finish_ts"},
                             ("start_ts", "finish_ts", "timestamp")),
         TagsExpanderProcessor(),
         BasicFunctionsProcessor(),
         apdex_processor(),
         failure_rate_processor(),
         ReferrerRateLimiterProcessor(),
         ProjectReferrerRateLimiter("project_id"),
         ProjectRateLimiterProcessor(project_column="project_id"),
         ResourceQuotaProcessor("project_id"),
     ]
Exemplo n.º 5
0
def test_apdex_format_expressions() -> None:
    unprocessed = Query(
        QueryEntity(EntityKey.EVENTS, ColumnSet([])),
        selected_columns=[
            SelectedExpression(name=None, expression=Column(None, None, "column2")),
            SelectedExpression(
                "perf",
                FunctionCall(
                    "perf", "apdex", (Column(None, None, "column1"), Literal(None, 300))
                ),
            ),
        ],
    )
    expected = Query(
        QueryEntity(EntityKey.EVENTS, ColumnSet([])),
        selected_columns=[
            SelectedExpression(name=None, expression=Column(None, None, "column2")),
            SelectedExpression(
                "perf",
                divide(
                    plus(
                        FunctionCall(
                            None,
                            "countIf",
                            (
                                binary_condition(
                                    ConditionFunctions.LTE,
                                    Column(None, None, "column1"),
                                    Literal(None, 300),
                                ),
                            ),
                        ),
                        divide(
                            FunctionCall(
                                None,
                                "countIf",
                                (
                                    binary_condition(
                                        BooleanFunctions.AND,
                                        binary_condition(
                                            ConditionFunctions.GT,
                                            Column(None, None, "column1"),
                                            Literal(None, 300),
                                        ),
                                        binary_condition(
                                            ConditionFunctions.LTE,
                                            Column(None, None, "column1"),
                                            multiply(
                                                Literal(None, 300), Literal(None, 4)
                                            ),
                                        ),
                                    ),
                                ),
                            ),
                            Literal(None, 2),
                        ),
                    ),
                    FunctionCall(
                        None,
                        "count",
                        (),
                    ),
                    "perf",
                ),
            ),
        ],
    )

    apdex_processor().process_query(unprocessed, HTTPQuerySettings())
    assert expected.get_selected_columns() == unprocessed.get_selected_columns()

    ret = unprocessed.get_selected_columns()[1].expression.accept(
        ClickhouseExpressionFormatter()
    )
    assert ret == (
        "(divide(plus(countIf(lessOrEquals(column1, 300)), "
        "divide(countIf(greater(column1, 300) AND "
        "lessOrEquals(column1, multiply(300, 4))), 2)), count()) AS perf)"
    )