Skip to content

Commit 5466c61

Browse files
committed
update udp test sample app
1 parent 1c89c51 commit 5466c61

File tree

1 file changed

+53
-9
lines changed

1 file changed

+53
-9
lines changed

.github/workflows/release-udp-exporter.yml

Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,68 @@ jobs:
3636
working-directory: validation_app
3737
run: |
3838
cat > test_exporter.py << 'EOF'
39+
import socket
40+
import threading
41+
import time
3942
from opentelemetry import trace
4043
from opentelemetry.sdk.trace import TracerProvider
41-
from amazon.opentelemetry.exporters.otlp.udp import OTLPSpanExporter
44+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
45+
from amazon.opentelemetry.exporters.otlp.udp import OTLPUdpSpanExporter
4246
43-
# Set up tracer
47+
# Set up a UDP server to verify data is sent
48+
def udp_server():
49+
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
50+
sock.bind(('127.0.0.1', 2000))
51+
sock.settimeout(5)
52+
print("UDP server listening on 127.0.0.1:2000")
53+
try:
54+
data, addr = sock.recvfrom(4096)
55+
print(f"Received data from {addr}")
56+
if data:
57+
print("✅ Successfully received exported span data")
58+
return True
59+
except socket.timeout:
60+
print("❌ No data received within timeout period")
61+
return False
62+
finally:
63+
sock.close()
64+
65+
# Start UDP server in a separate thread
66+
server_thread = threading.Thread(target=udp_server)
67+
server_thread.daemon = True
68+
server_thread.start()
69+
70+
# Set up tracer provider
4471
tracer_provider = TracerProvider()
4572
trace.set_tracer_provider(tracer_provider)
4673
47-
# Set up UDP exporter
48-
exporter = OTLPSpanExporter()
74+
# Set up UDP exporter with batch processor (more realistic usage)
75+
exporter = OTLPUdpSpanExporter(endpoint="127.0.0.1:2000")
76+
span_processor = BatchSpanProcessor(exporter)
77+
tracer_provider.add_span_processor(span_processor)
4978
50-
# Create a span for testing
79+
# Create a span for testing with various attributes
5180
tracer = trace.get_tracer(__name__)
52-
with tracer.start_as_current_span("test_span") as span:
53-
span.set_attribute("test.attribute", "test_value")
54-
print("Span created and exported via UDP")
81+
with tracer.start_as_current_span("test_parent_span") as parent:
82+
parent.set_attribute("service.name", "validation-app")
83+
parent.set_attribute("test.attribute", "test_value")
84+
parent.add_event("test-event", {"event.data": "some data"})
85+
86+
# Add a child span
87+
with tracer.start_as_current_span("test_child_span") as child:
88+
child.set_attribute("child.attribute", "child_value")
89+
print("Created spans with attributes and events")
90+
91+
# Force flush to ensure spans are exported immediately
92+
success = tracer_provider.force_flush()
93+
print(f"Force flush {'succeeded' if success else 'failed'}")
94+
95+
# Give some time for the UDP packet to be processed
96+
time.sleep(2)
5597
56-
print("Validation successful!")
98+
# Shutdown
99+
tracer_provider.shutdown()
100+
print("Test completed")
57101
EOF
58102
59103
- name: Run validation test

0 commit comments

Comments
 (0)