Skip to content

Commit 489c56e

Browse files
authored
Merge pull request #63 from mathworks/metrics_merge
separate nondefault endpoint tests into their own test file
2 parents 65c04b4 + 9f33853 commit 489c56e

File tree

2 files changed

+151
-74
lines changed

2 files changed

+151
-74
lines changed

test/tendpoint.m

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
classdef tendpoint < matlab.unittest.TestCase
2+
% tests for setting endpoint in the exporter
3+
4+
% Copyright 2023 The MathWorks, Inc.
5+
6+
properties
7+
OtelConfigFile
8+
JsonFile
9+
PidFile
10+
OtelcolName
11+
Otelcol
12+
ListPid
13+
ReadPidList
14+
ExtractPid
15+
Sigint
16+
Sigterm
17+
end
18+
19+
methods (TestClassSetup)
20+
function setupOnce(testCase)
21+
commonSetupOnce(testCase);
22+
end
23+
end
24+
25+
methods (TestMethodSetup)
26+
function setup(testCase)
27+
commonSetup(testCase, "nondefault_endpoint.yml");
28+
end
29+
end
30+
31+
methods (TestMethodTeardown)
32+
function teardown(testCase)
33+
commonTeardown(testCase);
34+
end
35+
end
36+
37+
methods (Test)
38+
function testNondefaultEndpoint(testCase)
39+
% testNondefaultEndpoint: using an alternative endpoint
40+
41+
testCase.assumeTrue(logical(exist("opentelemetry.exporters.otlp.OtlpHttpSpanExporter", "class")), ...
42+
"Otlp HTTP exporter must be installed.");
43+
44+
tracername = "foo";
45+
spanname = "bar";
46+
47+
exp = opentelemetry.exporters.otlp.OtlpHttpSpanExporter(...
48+
"Endpoint", "http://localhost:9921/v1/traces");
49+
processor = opentelemetry.sdk.trace.SimpleSpanProcessor(exp);
50+
tp = opentelemetry.sdk.trace.TracerProvider(processor);
51+
tr = getTracer(tp, tracername);
52+
sp = startSpan(tr, spanname);
53+
pause(1);
54+
endSpan(sp);
55+
56+
% perform test comparisons
57+
results = readJsonResults(testCase);
58+
results = results{1};
59+
60+
% check span and tracer names
61+
verifyEqual(testCase, string(results.resourceSpans.scopeSpans.spans.name), spanname);
62+
verifyEqual(testCase, string(results.resourceSpans.scopeSpans.scope.name), tracername);
63+
end
64+
65+
function testNondefaultGrpcEndpoint(testCase)
66+
% testNondefaultGrpcEndpoint: using an alternative endpoint
67+
68+
testCase.assumeTrue(logical(exist("opentelemetry.exporters.otlp.OtlpGrpcSpanExporter", "class")), ...
69+
"Otlp gRPC exporter must be installed.");
70+
71+
tracername = "foo";
72+
spanname = "bar";
73+
74+
exp = opentelemetry.exporters.otlp.OtlpGrpcSpanExporter(...
75+
"Endpoint", "http://localhost:9922");
76+
processor = opentelemetry.sdk.trace.SimpleSpanProcessor(exp);
77+
tp = opentelemetry.sdk.trace.TracerProvider(processor);
78+
tr = getTracer(tp, tracername);
79+
sp = startSpan(tr, spanname);
80+
pause(1);
81+
endSpan(sp);
82+
83+
% perform test comparisons
84+
results = readJsonResults(testCase);
85+
results = results{1};
86+
87+
% check span and tracer names
88+
verifyEqual(testCase, string(results.resourceSpans.scopeSpans.spans.name), spanname);
89+
verifyEqual(testCase, string(results.resourceSpans.scopeSpans.scope.name), tracername);
90+
end
91+
92+
function NondefaultMetricsEndpoint(testCase)
93+
% testNondefaultMetricsEndpoint: using an alternative endpoint
94+
testCase.assumeTrue(logical(exist("opentelemetry.exporters.otlp.OtlpHttpMetricExporter", "class")), ...
95+
"Otlp HTTP exporter must be installed.");
96+
97+
exp = opentelemetry.exporters.otlp.OtlpHttpMetricExporter(...
98+
"Endpoint", "http://localhost:9921/v1/metrics");
99+
reader = opentelemetry.sdk.metrics.PeriodicExportingMetricReader(...
100+
exp, "Interval", seconds(2), "Timeout", seconds(1));
101+
p = opentelemetry.sdk.metrics.MeterProvider(reader);
102+
mt = p.getMeter("foo");
103+
ct = mt.createCounter("bar");
104+
105+
val = 4;
106+
ct.add(val);
107+
pause(2.5);
108+
109+
% fetch result
110+
clear p;
111+
results = readJsonResults(testCase);
112+
113+
% verify counter value
114+
verifyEqual(testCase, results{end}.resourceMetrics.scopeMetrics.metrics.sum.dataPoints.asDouble, val);
115+
end
116+
117+
function NondefaultGrpcMetricsEndpoint(testCase)
118+
% testNondefaultGrpcMetricsEndpoint: using an alternative endpoint
119+
testCase.assumeTrue(logical(exist("opentelemetry.exporters.otlp.OtlpGrpcMetricExporter", "class")), ...
120+
"Otlp gRPC exporter must be installed.");
121+
122+
exp = opentelemetry.exporters.otlp.OtlpGrpcMetricExporter(...
123+
"Endpoint", "http://localhost:9922");
124+
reader = opentelemetry.sdk.metrics.PeriodicExportingMetricReader(...
125+
exp, "Interval", seconds(2), "Timeout", seconds(1));
126+
p = opentelemetry.sdk.metrics.MeterProvider(reader);
127+
mt = p.getMeter("foo");
128+
ct = mt.createCounter("bar");
129+
130+
val = 8;
131+
ct.add(val);
132+
pause(2.5);
133+
134+
% fetch result
135+
clear p;
136+
results = readJsonResults(testCase);
137+
138+
% verify counter value
139+
verifyEqual(testCase, results{end}.resourceMetrics.scopeMetrics.metrics.sum.dataPoints.asDouble, val);
140+
end
141+
142+
end
143+
end

test/ttrace_sdk.m

Lines changed: 8 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -22,75 +22,21 @@ function setupOnce(testCase)
2222
end
2323
end
2424

25+
methods (TestMethodSetup)
26+
function setup(testCase)
27+
commonSetup(testCase);
28+
end
29+
end
30+
2531
methods (TestMethodTeardown)
2632
function teardown(testCase)
2733
commonTeardown(testCase);
2834
end
2935
end
3036

31-
methods (Test)
32-
function testNondefaultEndpoint(testCase)
33-
% testNondefaultEndpoint: using an alternative endpoint
34-
35-
testCase.assumeTrue(logical(exist("opentelemetry.exporters.otlp.OtlpHttpSpanExporter", "class")), ...
36-
"Otlp HTTP exporter must be installed.");
37-
38-
commonSetup(testCase, "nondefault_endpoint.yml")
39-
40-
tracername = "foo";
41-
spanname = "bar";
42-
43-
exp = opentelemetry.exporters.otlp.OtlpHttpSpanExporter(...
44-
"Endpoint", "http://localhost:9921/v1/traces");
45-
processor = opentelemetry.sdk.trace.SimpleSpanProcessor(exp);
46-
tp = opentelemetry.sdk.trace.TracerProvider(processor);
47-
tr = getTracer(tp, tracername);
48-
sp = startSpan(tr, spanname);
49-
pause(1);
50-
endSpan(sp);
51-
52-
% perform test comparisons
53-
results = readJsonResults(testCase);
54-
results = results{1};
55-
56-
% check span and tracer names
57-
verifyEqual(testCase, string(results.resourceSpans.scopeSpans.spans.name), spanname);
58-
verifyEqual(testCase, string(results.resourceSpans.scopeSpans.scope.name), tracername);
59-
end
60-
61-
function testNondefaultGrpcEndpoint(testCase)
62-
% testNondefaultEndpoint: using an alternative endpoint
63-
64-
testCase.assumeTrue(logical(exist("opentelemetry.exporters.otlp.OtlpGrpcSpanExporter", "class")), ...
65-
"Otlp gRPC exporter must be installed.");
66-
67-
commonSetup(testCase, "nondefault_endpoint.yml")
68-
69-
tracername = "foo";
70-
spanname = "bar";
71-
72-
exp = opentelemetry.exporters.otlp.OtlpGrpcSpanExporter(...
73-
"Endpoint", "http://localhost:9922");
74-
processor = opentelemetry.sdk.trace.SimpleSpanProcessor(exp);
75-
tp = opentelemetry.sdk.trace.TracerProvider(processor);
76-
tr = getTracer(tp, tracername);
77-
sp = startSpan(tr, spanname);
78-
pause(1);
79-
endSpan(sp);
80-
81-
% perform test comparisons
82-
results = readJsonResults(testCase);
83-
results = results{1};
84-
85-
% check span and tracer names
86-
verifyEqual(testCase, string(results.resourceSpans.scopeSpans.spans.name), spanname);
87-
verifyEqual(testCase, string(results.resourceSpans.scopeSpans.scope.name), tracername);
88-
end
89-
37+
methods (Test)
9038
function testAlwaysOffSampler(testCase)
9139
% testAlwaysOffSampler: should not produce any spans
92-
commonSetup(testCase)
93-
9440
tp = opentelemetry.sdk.trace.TracerProvider( ...
9541
opentelemetry.sdk.trace.SimpleSpanProcessor, ...
9642
"Sampler", opentelemetry.sdk.trace.AlwaysOffSampler);
@@ -106,8 +52,6 @@ function testAlwaysOffSampler(testCase)
10652

10753
function testAlwaysOnSampler(testCase)
10854
% testAlwaysOnSampler: should produce all spans
109-
commonSetup(testCase)
110-
11155
tracername = "foo";
11256
spanname = "bar";
11357

@@ -130,8 +74,6 @@ function testAlwaysOnSampler(testCase)
13074

13175
function testTraceIdRatioBasedSampler(testCase)
13276
% testTraceIdRatioBasedSampler: filter spans based on a ratio
133-
commonSetup(testCase)
134-
13577
s = opentelemetry.sdk.trace.TraceIdRatioBasedSampler(0); % equivalent to always off
13678

13779
tracername = "mytracer";
@@ -187,8 +129,6 @@ function testTraceIdRatioBasedSampler(testCase)
187129
function testCustomResource(testCase)
188130
% testCustomResource: check custom resources are included in
189131
% emitted spans
190-
commonSetup(testCase)
191-
192132
customkeys = ["foo" "bar"];
193133
customvalues = [1 5];
194134
tp = opentelemetry.sdk.trace.TracerProvider(opentelemetry.sdk.trace.SimpleSpanProcessor, ...
@@ -213,8 +153,6 @@ function testCustomResource(testCase)
213153
function testShutdown(testCase)
214154
% testShutdown: shutdown method should stop exporting
215155
% of spans
216-
commonSetup(testCase)
217-
218156
tp = opentelemetry.sdk.trace.TracerProvider();
219157
tr = getTracer(tp, "foo");
220158

@@ -238,8 +176,6 @@ function testShutdown(testCase)
238176

239177
function testCleanupSdk(testCase)
240178
% testCleanupSdk: shutdown an SDK tracer provider through the Cleanup class
241-
commonSetup(testCase)
242-
243179
tp = opentelemetry.sdk.trace.TracerProvider();
244180
tr = getTracer(tp, "foo");
245181

@@ -262,9 +198,7 @@ function testCleanupSdk(testCase)
262198
end
263199

264200
function testCleanupApi(testCase)
265-
% testCleanupApi: shutdown an API tracer provider through the Cleanup class
266-
commonSetup(testCase)
267-
201+
% testCleanupApi: shutdown an API tracer provider through the Cleanup class
268202
tp = opentelemetry.sdk.trace.TracerProvider();
269203
setTracerProvider(tp);
270204
clear("tp");

0 commit comments

Comments
 (0)