Skip to content

Commit 38752a7

Browse files
committed
performance tests for tracing
1 parent 9e805d7 commit 38752a7

File tree

2 files changed

+164
-1
lines changed

2 files changed

+164
-1
lines changed

test/commonSetupOnce.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ function commonSetupOnce(testCase)
55

66
% file definitions
77
otelcolroot = getenv("OPENTELEMETRY_COLLECTOR_INSTALL");
8-
testCase.TestData.otelconfigfile = "otelcol_config.yml";
8+
testCase.TestData.otelconfigfile = fullfile(fileparts(mfilename("fullpath")), ...
9+
"otelcol_config.yml");
910
testCase.TestData.otelroot = getenv("OPENTELEMETRY_MATLAB_INSTALL");
1011
testCase.TestData.jsonfile = "myoutput.json";
1112
testCase.TestData.pidfile = "testoutput.txt";

test/performance/traceTest.m

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
classdef traceTest < matlab.perftest.TestCase
2+
% performance tests for tracing
3+
4+
properties
5+
TestData
6+
end
7+
8+
methods (TestClassSetup)
9+
function setupOnce(testCase)
10+
testdir = fileparts(mfilename("fullpath"));
11+
addpath(fullfile(testdir, "..")); % add directory where common setup and teardown code lives
12+
commonSetupOnce(testCase);
13+
end
14+
end
15+
16+
methods (TestMethodSetup)
17+
function setup(testCase)
18+
commonSetup(testCase);
19+
20+
% create a global tracer provider
21+
import opentelemetry.sdk.trace.*
22+
tp = TracerProvider(BatchSpanProcessor());
23+
setTracerProvider(tp);
24+
end
25+
end
26+
27+
methods (TestMethodTeardown)
28+
function teardown(testCase)
29+
commonTeardown(testCase);
30+
end
31+
end
32+
33+
methods (Test)
34+
function testSpan(testCase)
35+
% start and end a span
36+
tr = opentelemetry.trace.getTracer("Tracer");
37+
38+
testCase.startMeasuring();
39+
sp = startSpan(tr, "Span");
40+
endSpan(sp);
41+
testCase.stopMeasuring();
42+
end
43+
44+
function testCurrentSpan(testCase)
45+
% start a span, put it in current context, end the span
46+
tr = opentelemetry.trace.getTracer("Tracer");
47+
48+
testCase.startMeasuring();
49+
sp = startSpan(tr, "Span");
50+
scope = makeCurrent(sp); %#ok<NASGU>
51+
endSpan(sp);
52+
testCase.stopMeasuring();
53+
end
54+
55+
function testNestedSpansImplicitContext(testCase)
56+
% nested spans, using current span as parent
57+
tr = opentelemetry.trace.getTracer("Tracer");
58+
59+
testCase.startMeasuring();
60+
osp = startSpan(tr, "outer");
61+
oscope = makeCurrent(osp); %#ok<NASGU>
62+
63+
isp = startSpan(tr, "inner");
64+
iscope = makeCurrent(isp); %#ok<NASGU>
65+
66+
imsp = startSpan(tr, "innermost");
67+
68+
endSpan(imsp);
69+
endSpan(isp);
70+
endSpan(osp);
71+
testCase.stopMeasuring();
72+
end
73+
74+
function testNestedSpansExplicitContext(testCase)
75+
% nested spans, explicitly setting parents
76+
tr = opentelemetry.trace.getTracer("Tracer");
77+
78+
testCase.startMeasuring();
79+
osp = startSpan(tr, "outer");
80+
context = insertSpan(osp);
81+
82+
isp = startSpan(tr, "inner", Context=context);
83+
context = insertSpan(isp, context);
84+
85+
imsp = startSpan(tr, "innermost", Context=context);
86+
87+
endSpan(imsp);
88+
endSpan(isp);
89+
endSpan(osp);
90+
testCase.stopMeasuring();
91+
end
92+
93+
function testAttributes(testCase)
94+
% span with 3 attributes
95+
tr = opentelemetry.trace.getTracer("Tracer");
96+
m = magic(4);
97+
98+
testCase.startMeasuring();
99+
sp = startSpan(tr, "Span");
100+
setAttributes(sp, "attribute 1", "value 1", "attribute 2", 10, ...
101+
"attribute 3", m);
102+
endSpan(sp);
103+
testCase.stopMeasuring()
104+
end
105+
106+
function testEvents(testCase)
107+
% span with 3 events
108+
tr = opentelemetry.trace.getTracer("Tracer");
109+
110+
testCase.startMeasuring();
111+
sp = startSpan(tr, "Span");
112+
addEvent(sp, "event 1")
113+
addEvent(sp, "event 2");
114+
addEvent(sp, "event 3");
115+
endSpan(sp);
116+
testCase.stopMeasuring()
117+
end
118+
119+
function testLinks(testCase)
120+
% span with 2 links
121+
tr = opentelemetry.trace.getTracer("Tracer");
122+
sp1 = startSpan(tr, "Span 1");
123+
sp1ctxt = getSpanContext(sp1);
124+
sp2 = startSpan(tr, "Span 2");
125+
sp2ctxt = getSpanContext(sp2);
126+
127+
testCase.startMeasuring();
128+
link1 = opentelemetry.trace.Link(sp1ctxt);
129+
link2 = opentelemetry.trace.Link(sp2ctxt);
130+
sp3 = startSpan(tr, "Span 3", Links=[link1 link2]);
131+
endSpan(sp3);
132+
testCase.stopMeasuring()
133+
end
134+
135+
function testGetTracer(testCase)
136+
% get a tracer from the global tracer provider instance
137+
testCase.startMeasuring();
138+
tr = opentelemetry.trace.getTracer("Tracer"); %#ok<NASGU>
139+
testCase.stopMeasuring();
140+
end
141+
142+
function testCreateDefaultTracerProvider(testCase)
143+
% create default TracerProvider in the sdk
144+
testCase.startMeasuring();
145+
tp = opentelemetry.sdk.trace.TracerProvider(); %#ok<NASGU>
146+
testCase.stopMeasuring();
147+
end
148+
149+
function testSpanContext(testCase)
150+
% retrieve trace ID and span ID in the span context
151+
tr = opentelemetry.trace.getTracer("Tracer");
152+
sp = startSpan(tr, "Span");
153+
154+
testCase.startMeasuring();
155+
spctxt = getSpanContext(sp);
156+
traceid = spctxt.TraceId; %#ok<NASGU>
157+
spanid = spctxt.SpanId; %#ok<NASGU>
158+
testCase.stopMeasuring();
159+
end
160+
161+
end
162+
end

0 commit comments

Comments
 (0)