Skip to content

Commit 454ae64

Browse files
committed
metrics performance tests
1 parent 68a6960 commit 454ae64

File tree

2 files changed

+142
-2
lines changed

2 files changed

+142
-2
lines changed

test/performance/metricsTest.m

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
classdef metricsTest < matlab.perftest.TestCase
2+
% performance tests for metrics
3+
4+
% Copyright 2024 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+
% add directory where common setup and teardown code lives
22+
utilsfolder = fullfile(fileparts(mfilename('fullpath')), "..", "utils");
23+
testCase.applyFixture(matlab.unittest.fixtures.PathFixture(utilsfolder));
24+
25+
% add the callbacks folder to the path
26+
callbackfolder = fullfile(fileparts(mfilename('fullpath')), "..", "callbacks");
27+
testCase.applyFixture(matlab.unittest.fixtures.PathFixture(callbackfolder));
28+
29+
commonSetupOnce(testCase);
30+
31+
% create a global meter provider
32+
mp = opentelemetry.sdk.metrics.MeterProvider();
33+
setMeterProvider(mp);
34+
end
35+
end
36+
37+
methods (TestMethodSetup)
38+
function setup(testCase)
39+
commonSetup(testCase);
40+
end
41+
end
42+
43+
methods (TestMethodTeardown)
44+
function teardown(testCase)
45+
% Flush any metrics that have not yet been exported
46+
mp = opentelemetry.metrics.Provider.getMeterProvider();
47+
opentelemetry.sdk.common.Cleanup.forceFlush(mp);
48+
49+
commonTeardown(testCase);
50+
end
51+
end
52+
53+
methods (Test)
54+
function testCounter(testCase)
55+
% create and increment a counter
56+
mt = opentelemetry.metrics.getMeter("foo");
57+
58+
testCase.startMeasuring();
59+
c = createCounter(mt, "bar");
60+
add(c, 5);
61+
testCase.stopMeasuring();
62+
end
63+
64+
function testUpDownCounter(testCase)
65+
% create and increment an up-down-counter
66+
mt = opentelemetry.metrics.getMeter("foo");
67+
68+
testCase.startMeasuring();
69+
c = createUpDownCounter(mt, "bar");
70+
add(c, -5);
71+
testCase.stopMeasuring();
72+
end
73+
74+
function testHistogram(testCase)
75+
% create a histogram and record a value
76+
mt = opentelemetry.metrics.getMeter("foo");
77+
78+
testCase.startMeasuring();
79+
h = createHistogram(mt, "bar");
80+
record(h, 111);
81+
testCase.stopMeasuring();
82+
end
83+
84+
function testObservableCounter(testCase)
85+
% create an observable counter
86+
mt = opentelemetry.metrics.getMeter("foo");
87+
88+
testCase.startMeasuring();
89+
c = createObservableCounter(mt, @callbackNoAttributes, "bar"); %#ok<*NASGU>
90+
testCase.stopMeasuring();
91+
end
92+
93+
function testObservableUpDownCounter(testCase)
94+
% create an observable up-down-counter
95+
mt = opentelemetry.metrics.getMeter("foo");
96+
97+
testCase.startMeasuring();
98+
c = createObservableUpDownCounter(mt, @callbackNoAttributes, "bar"); %#ok<*NASGU>
99+
testCase.stopMeasuring();
100+
end
101+
102+
function testObservableGauge(testCase)
103+
% create an observable gauge
104+
mt = opentelemetry.metrics.getMeter("foo");
105+
106+
testCase.startMeasuring();
107+
g = createObservableGauge(mt, @callbackNoAttributes, "bar");
108+
testCase.stopMeasuring();
109+
end
110+
111+
function testCounterAttributes(testCase)
112+
% increment counter with attributes
113+
mt = opentelemetry.metrics.getMeter("foo");
114+
c = createCounter(mt, "bar");
115+
d = dictionary("Attribute2", "Value2");
116+
117+
testCase.startMeasuring();
118+
add(c, 1, "Attribute1", "Value1")
119+
add(c, 2, d);
120+
add(c, 3, "Attribute3", "Value3");
121+
testCase.stopMeasuring();
122+
end
123+
124+
function testGetMeter(testCase)
125+
% get a meter from the global meter provider instance
126+
testCase.startMeasuring();
127+
mt = opentelemetry.metrics.getMeter("foo");
128+
testCase.stopMeasuring();
129+
end
130+
131+
function testCreateDefaultMeterProvider(testCase)
132+
% create default MeterProvider in the sdk
133+
testCase.startMeasuring();
134+
tp = opentelemetry.sdk.metrics.MeterProvider();
135+
testCase.stopMeasuring();
136+
end
137+
end
138+
end

test/performance/traceTest.m

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818

1919
methods (TestClassSetup)
2020
function setupOnce(testCase)
21-
testdir = fileparts(mfilename("fullpath"));
22-
addpath(fullfile(testdir, "..", "utils")); % add directory where common setup and teardown code lives
21+
% add directory where common setup and teardown code lives
22+
utilsfolder = fullfile(fileparts(mfilename('fullpath')), "..", "utils");
23+
testCase.applyFixture(matlab.unittest.fixtures.PathFixture(utilsfolder));
24+
2325
commonSetupOnce(testCase);
2426

2527
% create a global tracer provider

0 commit comments

Comments
 (0)