def test_influx_db_query_when_get_multiple_events_for_feature_then_query_api_called(
    monkeypatch, ):
    query = (
        f'from(bucket:"{read_bucket}") '
        "|> range(start: -30d, stop: now()) "
        '|> filter(fn:(r) => r._measurement == "feature_evaluation")                   '
        '|> filter(fn: (r) => r["_field"] == "request_count")                   '
        f'|> filter(fn: (r) => r["environment_id"] == "{env_id}")                   '
        f'|> filter(fn: (r) => r["feature_id"] == "{feature_name}") '
        '|> drop(columns: ["organisation", "organisation_id", "type", "project", "project_id"])'
        "|> aggregateWindow(every: 30d, fn: sum, createEmpty: false)                    "
        '|> yield(name: "sum")')

    mock_influxdb_client = mock.MagicMock()
    monkeypatch.setattr(app_analytics.influxdb_wrapper, "influxdb_client",
                        mock_influxdb_client)

    mock_query_api = mock.MagicMock()
    mock_influxdb_client.query_api.return_value = mock_query_api

    # When
    assert get_multiple_event_list_for_feature(env_id, feature_name) == []

    # Then
    mock_query_api.query.assert_called_once_with(org=influx_org, query=query)
示例#2
0
    def get_influx_data(self, request, pk, project_pk):
        serializer = self.get_serializer(data={
            "events_list":
            get_multiple_event_list_for_feature(pk, project_pk)
        })

        serializer.is_valid(raise_exception=True)
        return Response(serializer.data)
示例#3
0
    def get_influx_data(self, request, pk, project_pk):
        feature = get_object_or_404(Feature, pk=pk)

        query_serializer = GetInfluxDataQuerySerializer(
            data=request.query_params)
        query_serializer.is_valid(raise_exception=True)

        events_list = get_multiple_event_list_for_feature(
            feature_name=feature.name, **query_serializer.data)
        serializer = FeatureInfluxDataSerializer(
            instance={"events_list": events_list})
        return Response(serializer.data)