From d50528620506d40b6bc4b848f715200a8fd9b9bd Mon Sep 17 00:00:00 2001 From: Eugene Grebenschikov Date: Wed, 18 Dec 2024 17:44:26 -0800 Subject: [PATCH 1/9] Verify custom resource attributes support (#32). --- tests/test_otel.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_otel.py b/tests/test_otel.py index 10ce2fe8..633fce5f 100644 --- a/tests/test_otel.py +++ b/tests/test_otel.py @@ -29,6 +29,7 @@ otel_trace on; otel_service_name test_service; + otel_resource_attr my.name "my service"; server { listen 127.0.0.1:18443 ssl; @@ -258,6 +259,7 @@ def test_batches(client, trace_service, batch_count): for batch in trace_service.batches: assert get_attr(batch[0].resource, "service.name") == "test_service" + assert get_attr(batch[0].resource, "my.name") == "my service" assert len(batch[0].scope_spans[0].spans) == batch_size time.sleep(0.3) # wait for +1 request to be flushed From 348c6ae4dc77adf9079471ac0b22c6f92e82f31b Mon Sep 17 00:00:00 2001 From: Eugene Grebenschikov Date: Thu, 19 Dec 2024 12:10:22 -0800 Subject: [PATCH 2/9] Add custom resource attributes test. --- tests/test_otel.py | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/tests/test_otel.py b/tests/test_otel.py index 633fce5f..8ecd640d 100644 --- a/tests/test_otel.py +++ b/tests/test_otel.py @@ -28,8 +28,8 @@ } otel_trace on; - otel_service_name test_service; - otel_resource_attr my.name "my service"; + {{ service_name }} + {{ res_attrs }} server { listen 127.0.0.1:18443 ssl; @@ -241,7 +241,7 @@ def test_context(client, trace_service, parent, path): @pytest.mark.parametrize( "nginx_config", - [({"interval": "200ms", "scheme": "http://"})], + [{"interval": "200ms", "scheme": "http://"}], indirect=True, ) @pytest.mark.parametrize("batch_count", [1, 3]) @@ -258,9 +258,40 @@ def test_batches(client, trace_service, batch_count): assert len(trace_service.batches) == batch_count for batch in trace_service.batches: - assert get_attr(batch[0].resource, "service.name") == "test_service" - assert get_attr(batch[0].resource, "my.name") == "my service" + assert ( + get_attr(batch[0].resource, "service.name") + == "unknown_service:nginx" + ) assert len(batch[0].scope_spans[0].spans) == batch_size time.sleep(0.3) # wait for +1 request to be flushed trace_service.batches.clear() + + +@pytest.mark.parametrize( + "nginx_config", + [ + { + "service_name": 'otel_service_name "test_service";', + "res_attrs": 'otel_resource_attr my.name "my name";\n' + + 'otel_resource_attr my.service "my service";', + } + ], + indirect=True, +) +def test_custom_resource_attributes(client, trace_service): + assert client.get("http://127.0.0.1:18080/ok").status_code == 200 + + for _ in range(10): + if len(trace_service.batches): + break + time.sleep(0.001) + + assert len(trace_service.batches) == 1 + + for batch in trace_service.batches: + assert get_attr(batch[0].resource, "service.name") == "test_service" + assert get_attr(batch[0].resource, "my.name") == "my name" + assert get_attr(batch[0].resource, "my.service") == "my service" + + trace_service.batches.clear() From bef27d48158dfe56014d849a6e51187a6f14ded9 Mon Sep 17 00:00:00 2001 From: Eugene Grebenschikov Date: Thu, 19 Dec 2024 13:48:54 -0800 Subject: [PATCH 3/9] Address review notices. --- tests/test_otel.py | 16 ++++++---------- tests/trace_service.py | 6 ++++-- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/tests/test_otel.py b/tests/test_otel.py index 8ecd640d..645f6103 100644 --- a/tests/test_otel.py +++ b/tests/test_otel.py @@ -28,7 +28,6 @@ } otel_trace on; - {{ service_name }} {{ res_attrs }} server { @@ -272,9 +271,11 @@ def test_batches(client, trace_service, batch_count): "nginx_config", [ { - "service_name": 'otel_service_name "test_service";', - "res_attrs": 'otel_resource_attr my.name "my name";\n' - + 'otel_resource_attr my.service "my service";', + "res_attrs": """ + otel_service_name "test_service"; + otel_resource_attr my.name "my name"; + otel_resource_attr my.service "my service"; + """, } ], indirect=True, @@ -282,12 +283,7 @@ def test_batches(client, trace_service, batch_count): def test_custom_resource_attributes(client, trace_service): assert client.get("http://127.0.0.1:18080/ok").status_code == 200 - for _ in range(10): - if len(trace_service.batches): - break - time.sleep(0.001) - - assert len(trace_service.batches) == 1 + trace_service.wait_batch() for batch in trace_service.batches: assert get_attr(batch[0].resource, "service.name") == "test_service" diff --git a/tests/trace_service.py b/tests/trace_service.py index 9f094f91..0ec56ae8 100644 --- a/tests/trace_service.py +++ b/tests/trace_service.py @@ -14,13 +14,15 @@ def Export(self, request, context): self.batches.append(request.resource_spans) return trace_service_pb2.ExportTracePartialSuccess() - def get_span(self): + def wait_batch(self): for _ in range(10): if len(self.batches): break time.sleep(0.001) - assert len(self.batches) == 1, "No spans received" + + def get_span(self): + self.wait_batch() span = self.batches[0][0].scope_spans[0].spans.pop() self.batches.clear() return span From e625db711a34853c6881b45f45dd3a51e2b578b5 Mon Sep 17 00:00:00 2001 From: Eugene Grebenschikov Date: Thu, 19 Dec 2024 13:50:43 -0800 Subject: [PATCH 4/9] fixup! Address review notices. --- tests/test_otel.py | 2 +- tests/trace_service.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_otel.py b/tests/test_otel.py index 645f6103..b94f3e5e 100644 --- a/tests/test_otel.py +++ b/tests/test_otel.py @@ -283,7 +283,7 @@ def test_batches(client, trace_service, batch_count): def test_custom_resource_attributes(client, trace_service): assert client.get("http://127.0.0.1:18080/ok").status_code == 200 - trace_service.wait_batch() + trace_service.wait_one_batch() for batch in trace_service.batches: assert get_attr(batch[0].resource, "service.name") == "test_service" diff --git a/tests/trace_service.py b/tests/trace_service.py index 0ec56ae8..5fc38270 100644 --- a/tests/trace_service.py +++ b/tests/trace_service.py @@ -14,7 +14,7 @@ def Export(self, request, context): self.batches.append(request.resource_spans) return trace_service_pb2.ExportTracePartialSuccess() - def wait_batch(self): + def wait_one_batch(self): for _ in range(10): if len(self.batches): break @@ -22,7 +22,7 @@ def wait_batch(self): assert len(self.batches) == 1, "No spans received" def get_span(self): - self.wait_batch() + self.wait_one_batch() span = self.batches[0][0].scope_spans[0].spans.pop() self.batches.clear() return span From 023ea7962f97485f14a6e9196d655cf086aa62be Mon Sep 17 00:00:00 2001 From: Eugene Grebenschikov Date: Thu, 19 Dec 2024 15:31:29 -0800 Subject: [PATCH 5/9] Address review notices. --- tests/test_otel.py | 13 ++++++------- tests/trace_service.py | 10 ++++------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/tests/test_otel.py b/tests/test_otel.py index b94f3e5e..8e7f262d 100644 --- a/tests/test_otel.py +++ b/tests/test_otel.py @@ -28,7 +28,7 @@ } otel_trace on; - {{ res_attrs }} + {{ resource_attrs }} server { listen 127.0.0.1:18443 ssl; @@ -271,7 +271,7 @@ def test_batches(client, trace_service, batch_count): "nginx_config", [ { - "res_attrs": """ + "resource_attrs": """ otel_service_name "test_service"; otel_resource_attr my.name "my name"; otel_resource_attr my.service "my service"; @@ -283,11 +283,10 @@ def test_batches(client, trace_service, batch_count): def test_custom_resource_attributes(client, trace_service): assert client.get("http://127.0.0.1:18080/ok").status_code == 200 - trace_service.wait_one_batch() + batch = trace_service.get_batch() - for batch in trace_service.batches: - assert get_attr(batch[0].resource, "service.name") == "test_service" - assert get_attr(batch[0].resource, "my.name") == "my name" - assert get_attr(batch[0].resource, "my.service") == "my service" + assert get_attr(batch[0].resource, "service.name") == "test_service" + assert get_attr(batch[0].resource, "my.name") == "my name" + assert get_attr(batch[0].resource, "my.service") == "my service" trace_service.batches.clear() diff --git a/tests/trace_service.py b/tests/trace_service.py index 5fc38270..291a984d 100644 --- a/tests/trace_service.py +++ b/tests/trace_service.py @@ -14,18 +14,16 @@ def Export(self, request, context): self.batches.append(request.resource_spans) return trace_service_pb2.ExportTracePartialSuccess() - def wait_one_batch(self): + def get_batch(self): for _ in range(10): if len(self.batches): break time.sleep(0.001) - assert len(self.batches) == 1, "No spans received" + assert len(self.batches) == 1 + return self.batches.pop() def get_span(self): - self.wait_one_batch() - span = self.batches[0][0].scope_spans[0].spans.pop() - self.batches.clear() - return span + return self.get_batch()[0].scope_spans[0].spans.pop() @pytest.fixture(scope="module") From a78bd259bd472abccb7be9b871099363af56216c Mon Sep 17 00:00:00 2001 From: Eugene Grebenschikov Date: Thu, 19 Dec 2024 15:35:02 -0800 Subject: [PATCH 6/9] fixup! Address review notices. --- tests/test_otel.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_otel.py b/tests/test_otel.py index 8e7f262d..941eb812 100644 --- a/tests/test_otel.py +++ b/tests/test_otel.py @@ -288,5 +288,3 @@ def test_custom_resource_attributes(client, trace_service): assert get_attr(batch[0].resource, "service.name") == "test_service" assert get_attr(batch[0].resource, "my.name") == "my name" assert get_attr(batch[0].resource, "my.service") == "my service" - - trace_service.batches.clear() From 41bf12e56e2fceebf6d74a5def64a0d60bff4774 Mon Sep 17 00:00:00 2001 From: Eugene <54681898+jimf5@users.noreply.github.com> Date: Thu, 19 Dec 2024 17:00:37 -0800 Subject: [PATCH 7/9] Add more checkes to get_span. Co-authored-by: p-pautov <37922380+p-pautov@users.noreply.github.com> --- tests/trace_service.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/trace_service.py b/tests/trace_service.py index 291a984d..47e477db 100644 --- a/tests/trace_service.py +++ b/tests/trace_service.py @@ -23,7 +23,10 @@ def get_batch(self): return self.batches.pop() def get_span(self): - return self.get_batch()[0].scope_spans[0].spans.pop() + batch = self.get_batch() + assert len(batch.scope_spans) == 1 + assert len(batch.scope_spans[0].spans) == 1 + return batch.scope_spans[0].spans.pop() @pytest.fixture(scope="module") From e402206a75f127798be263fafac7d57da644b20b Mon Sep 17 00:00:00 2001 From: Eugene <54681898+jimf5@users.noreply.github.com> Date: Thu, 19 Dec 2024 17:04:36 -0800 Subject: [PATCH 8/9] Return resource object in get_batches. Co-authored-by: p-pautov <37922380+p-pautov@users.noreply.github.com> --- tests/trace_service.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/trace_service.py b/tests/trace_service.py index 47e477db..3b191a1d 100644 --- a/tests/trace_service.py +++ b/tests/trace_service.py @@ -20,7 +20,8 @@ def get_batch(self): break time.sleep(0.001) assert len(self.batches) == 1 - return self.batches.pop() + assert len(self.batches[0]) == 1 + return self.batches.pop()[0] def get_span(self): batch = self.get_batch() From 286e6bb55c322adc38a7808f221fa6095796f038 Mon Sep 17 00:00:00 2001 From: Eugene Grebenschikov Date: Thu, 19 Dec 2024 17:09:00 -0800 Subject: [PATCH 9/9] Remove index. --- tests/test_otel.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_otel.py b/tests/test_otel.py index 941eb812..11caa854 100644 --- a/tests/test_otel.py +++ b/tests/test_otel.py @@ -285,6 +285,6 @@ def test_custom_resource_attributes(client, trace_service): batch = trace_service.get_batch() - assert get_attr(batch[0].resource, "service.name") == "test_service" - assert get_attr(batch[0].resource, "my.name") == "my name" - assert get_attr(batch[0].resource, "my.service") == "my service" + assert get_attr(batch.resource, "service.name") == "test_service" + assert get_attr(batch.resource, "my.name") == "my name" + assert get_attr(batch.resource, "my.service") == "my service"