summaryrefslogtreecommitdiff
path: root/tests/unit/test_tracing.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_tracing.py')
-rw-r--r--tests/unit/test_tracing.py42
1 files changed, 29 insertions, 13 deletions
diff --git a/tests/unit/test_tracing.py b/tests/unit/test_tracing.py
index d26a9510d..00ef85e36 100644
--- a/tests/unit/test_tracing.py
+++ b/tests/unit/test_tracing.py
@@ -31,6 +31,16 @@ class TestTracing(ZuulTestCase):
config_file = 'zuul-tracing.conf'
tenant_config_file = "config/single-tenant/main.yaml"
+ def _waitForSpans(self, *span_names, timeout=60,):
+ for _ in iterate_timeout(timeout, "requests to arrive"):
+ test_requests = [
+ r for r in self.otlp.requests
+ if r.resource_spans[0].scope_spans[0].spans[0].name
+ in span_names
+ ]
+ if len(test_requests) == len(span_names):
+ return test_requests
+
def test_tracing_api(self):
tracer = trace.get_tracer("zuul")
@@ -68,10 +78,10 @@ class TestTracing(ZuulTestCase):
tracing.endSavedSpan(span_info, end_time=time.time(),
attributes={'endattr': 'baz'})
- for _ in iterate_timeout(60, "request to arrive"):
- if len(self.otlp.requests) == 4:
- break
- req1 = self.otlp.requests[0]
+ test_requests = self._waitForSpans(
+ "parent-trace", "child1-trace", "child2-trace", "child3-trace")
+
+ req1 = test_requests[0]
self.log.debug("Received:\n%s", req1)
attrs = attributes_to_dict(req1.resource_spans[0].resource.attributes)
self.assertEqual({"service.name": "zuultest"}, attrs)
@@ -80,7 +90,7 @@ class TestTracing(ZuulTestCase):
span1 = req1.resource_spans[0].scope_spans[0].spans[0]
self.assertEqual("child1-trace", span1.name)
- req2 = self.otlp.requests[1]
+ req2 = test_requests[1]
self.log.debug("Received:\n%s", req2)
span2 = req2.resource_spans[0].scope_spans[0].spans[0]
self.assertEqual("child2-trace", span2.name)
@@ -88,12 +98,12 @@ class TestTracing(ZuulTestCase):
attrs = attributes_to_dict(span2.links[0].attributes)
self.assertEqual({"relationship": "prev"}, attrs)
- req3 = self.otlp.requests[2]
+ req3 = test_requests[2]
self.log.debug("Received:\n%s", req3)
span3 = req3.resource_spans[0].scope_spans[0].spans[0]
self.assertEqual("child3-trace", span3.name)
- req4 = self.otlp.requests[3]
+ req4 = test_requests[3]
self.log.debug("Received:\n%s", req4)
span4 = req4.resource_spans[0].scope_spans[0].spans[0]
self.assertEqual("parent-trace", span4.name)
@@ -138,10 +148,10 @@ class TestTracing(ZuulTestCase):
# End our root span manually.
span.end(end_time=time.time())
- for _ in iterate_timeout(60, "request to arrive"):
- if len(self.otlp.requests) == 3:
- break
- req1 = self.otlp.requests[0]
+ test_requests = self._waitForSpans(
+ "child1-trace", "child2-trace", "child3-trace")
+
+ req1 = test_requests[0]
self.log.debug("Received:\n%s", req1)
attrs = attributes_to_dict(req1.resource_spans[0].resource.attributes)
self.assertEqual({"service.name": "zuultest"}, attrs)
@@ -150,7 +160,7 @@ class TestTracing(ZuulTestCase):
span1 = req1.resource_spans[0].scope_spans[0].spans[0]
self.assertEqual("child1-trace", span1.name)
- req2 = self.otlp.requests[1]
+ req2 = test_requests[1]
self.log.debug("Received:\n%s", req2)
span2 = req2.resource_spans[0].scope_spans[0].spans[0]
self.assertEqual("child2-trace", span2.name)
@@ -158,7 +168,7 @@ class TestTracing(ZuulTestCase):
attrs = attributes_to_dict(span2.links[0].attributes)
self.assertEqual({"relationship": "prev"}, attrs)
- req3 = self.otlp.requests[2]
+ req3 = test_requests[2]
self.log.debug("Received:\n%s", req3)
span3 = req3.resource_spans[0].scope_spans[0].spans[0]
self.assertEqual("child3-trace", span3.name)
@@ -181,6 +191,8 @@ class TestTracing(ZuulTestCase):
self.log.debug("Received:\n%s", buildset)
item = self.getSpan('QueueItem')
self.log.debug("Received:\n%s", item)
+ merge_job = self.getSpan('Merge')
+ self.log.debug("Received:\n%s", merge_job)
build = self.getSpan('Build')
self.log.debug("Received:\n%s", build)
job = self.getSpan('JobExecution')
@@ -192,6 +204,10 @@ class TestTracing(ZuulTestCase):
item.start_time_unix_nano)
self.assertTrue(buildset.end_time_unix_nano <=
item.end_time_unix_nano)
+ self.assertTrue(merge_job.start_time_unix_nano >=
+ buildset.start_time_unix_nano)
+ self.assertTrue(merge_job.end_time_unix_nano <=
+ buildset.end_time_unix_nano)
item_attrs = attributes_to_dict(item.attributes)
self.assertTrue(item_attrs['ref_number'] == "1")
self.assertTrue(item_attrs['ref_patchset'] == "1")