|
@@ -611,6 +611,138 @@ class OrganizationEventsMetricsEnhancedPerformanceEndpointTest(MetricsEnhancedPe
|
|
|
)
|
|
|
assert response.status_code == 400, response.content
|
|
|
|
|
|
+ def test_span_domain_array(self):
|
|
|
+ self.store_span_metric(
|
|
|
+ 321,
|
|
|
+ internal_metric=constants.SELF_TIME_LIGHT,
|
|
|
+ timestamp=self.min_ago,
|
|
|
+ tags={"span.domain": ",sentry_table1,"},
|
|
|
+ )
|
|
|
+ self.store_span_metric(
|
|
|
+ 21,
|
|
|
+ internal_metric=constants.SELF_TIME_LIGHT,
|
|
|
+ timestamp=self.min_ago,
|
|
|
+ tags={"span.domain": ",sentry_table1,sentry_table2,"},
|
|
|
+ )
|
|
|
+ response = self.do_request(
|
|
|
+ {
|
|
|
+ "field": ["span.domain_array", "p75(span.self_time)"],
|
|
|
+ "query": "",
|
|
|
+ "project": self.project.id,
|
|
|
+ "orderby": ["-p75(span.self_time)"],
|
|
|
+ "dataset": "spansMetrics",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ assert response.status_code == 200, response.content
|
|
|
+ data = response.data["data"]
|
|
|
+ meta = response.data["meta"]
|
|
|
+ assert len(data) == 2
|
|
|
+ assert data[0]["span.domain_array"] == ["sentry_table1"]
|
|
|
+ assert data[1]["span.domain_array"] == ["sentry_table1", "sentry_table2"]
|
|
|
+ assert meta["dataset"] == "spansMetrics"
|
|
|
+ assert meta["fields"]["span.domain_array"] == "array"
|
|
|
+
|
|
|
+ def test_span_domain_array_filter(self):
|
|
|
+ self.store_span_metric(
|
|
|
+ 321,
|
|
|
+ internal_metric=constants.SELF_TIME_LIGHT,
|
|
|
+ timestamp=self.min_ago,
|
|
|
+ tags={"span.domain": ",sentry_table1,"},
|
|
|
+ )
|
|
|
+ self.store_span_metric(
|
|
|
+ 21,
|
|
|
+ internal_metric=constants.SELF_TIME_LIGHT,
|
|
|
+ timestamp=self.min_ago,
|
|
|
+ tags={"span.domain": ",sentry_table1,sentry_table2,"},
|
|
|
+ )
|
|
|
+ response = self.do_request(
|
|
|
+ {
|
|
|
+ "field": ["span.domain_array", "p75(span.self_time)"],
|
|
|
+ "query": "span.domain_array:sentry_table2",
|
|
|
+ "project": self.project.id,
|
|
|
+ "dataset": "spansMetrics",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ assert response.status_code == 200, response.content
|
|
|
+ data = response.data["data"]
|
|
|
+ meta = response.data["meta"]
|
|
|
+ assert len(data) == 1
|
|
|
+ assert data[0]["span.domain_array"] == ["sentry_table1", "sentry_table2"]
|
|
|
+ assert meta["dataset"] == "spansMetrics"
|
|
|
+ assert meta["fields"]["span.domain_array"] == "array"
|
|
|
+
|
|
|
+ def test_span_domain_array_filter_wildcard(self):
|
|
|
+ self.store_span_metric(
|
|
|
+ 321,
|
|
|
+ internal_metric=constants.SELF_TIME_LIGHT,
|
|
|
+ timestamp=self.min_ago,
|
|
|
+ tags={"span.domain": ",sentry_table1,"},
|
|
|
+ )
|
|
|
+ self.store_span_metric(
|
|
|
+ 21,
|
|
|
+ internal_metric=constants.SELF_TIME_LIGHT,
|
|
|
+ timestamp=self.min_ago,
|
|
|
+ tags={"span.domain": ",sentry_table1,sentry_table2,"},
|
|
|
+ )
|
|
|
+ for query in ["sentry*2", "*table2", "sentry_table2*"]:
|
|
|
+ response = self.do_request(
|
|
|
+ {
|
|
|
+ "field": ["span.domain_array", "p75(span.self_time)"],
|
|
|
+ "query": f"span.domain_array:{query}",
|
|
|
+ "project": self.project.id,
|
|
|
+ "dataset": "spansMetrics",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ assert response.status_code == 200, response.content
|
|
|
+ data = response.data["data"]
|
|
|
+ meta = response.data["meta"]
|
|
|
+ assert len(data) == 1, query
|
|
|
+ assert data[0]["span.domain_array"] == ["sentry_table1", "sentry_table2"], query
|
|
|
+ assert meta["dataset"] == "spansMetrics", query
|
|
|
+ assert meta["fields"]["span.domain_array"] == "array"
|
|
|
+
|
|
|
+ def test_span_domain_array_has_filter(self):
|
|
|
+ self.store_span_metric(
|
|
|
+ 321,
|
|
|
+ internal_metric=constants.SELF_TIME_LIGHT,
|
|
|
+ timestamp=self.min_ago,
|
|
|
+ tags={"span.domain": ""},
|
|
|
+ )
|
|
|
+ self.store_span_metric(
|
|
|
+ 21,
|
|
|
+ internal_metric=constants.SELF_TIME_LIGHT,
|
|
|
+ timestamp=self.min_ago,
|
|
|
+ tags={"span.domain": ",sentry_table1,sentry_table2,"},
|
|
|
+ )
|
|
|
+ response = self.do_request(
|
|
|
+ {
|
|
|
+ "field": ["span.domain_array", "p75(span.self_time)"],
|
|
|
+ "query": "has:span.domain_array",
|
|
|
+ "project": self.project.id,
|
|
|
+ "dataset": "spansMetrics",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ assert response.status_code == 200, response.content
|
|
|
+ data = response.data["data"]
|
|
|
+ meta = response.data["meta"]
|
|
|
+ assert len(data) == 1
|
|
|
+ assert data[0]["span.domain_array"] == ["sentry_table1", "sentry_table2"]
|
|
|
+ assert meta["dataset"] == "spansMetrics"
|
|
|
+ response = self.do_request(
|
|
|
+ {
|
|
|
+ "field": ["span.domain_array", "p75(span.self_time)"],
|
|
|
+ "query": "!has:span.domain_array",
|
|
|
+ "project": self.project.id,
|
|
|
+ "dataset": "spansMetrics",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ assert response.status_code == 200, response.content
|
|
|
+ data = response.data["data"]
|
|
|
+ meta = response.data["meta"]
|
|
|
+ assert len(data) == 1
|
|
|
+ assert meta["dataset"] == "spansMetrics"
|
|
|
+ assert meta["fields"]["span.domain_array"] == "array"
|
|
|
+
|
|
|
|
|
|
@region_silo_test
|
|
|
class OrganizationEventsMetricsEnhancedPerformanceEndpointTestWithMetricLayer(
|
|
@@ -643,3 +775,19 @@ class OrganizationEventsMetricsEnhancedPerformanceEndpointTestWithMetricLayer(
|
|
|
@pytest.mark.xfail(reason="Not implemented")
|
|
|
def test_avg_compare(self):
|
|
|
super().test_avg_compare()
|
|
|
+
|
|
|
+ @pytest.mark.xfail(reason="Not implemented")
|
|
|
+ def test_span_domain_array(self):
|
|
|
+ super().test_span_domain_array()
|
|
|
+
|
|
|
+ @pytest.mark.xfail(reason="Not implemented")
|
|
|
+ def test_span_domain_array_filter(self):
|
|
|
+ super().test_span_domain_array_filter()
|
|
|
+
|
|
|
+ @pytest.mark.xfail(reason="Not implemented")
|
|
|
+ def test_span_domain_array_filter_wildcard(self):
|
|
|
+ super().test_span_domain_array_filter_wildcard()
|
|
|
+
|
|
|
+ @pytest.mark.xfail(reason="Not implemented")
|
|
|
+ def test_span_domain_array_has_filter(self):
|
|
|
+ super().test_span_domain_array_has_filter()
|