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
0 commit comments