1+ classdef thttpheaders < matlab .unittest .TestCase
2+ % tests for setting HTTPHeaders in the exporter
3+
4+ % Copyright 2025 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 the utils folder to the path
22+ utilsfolder = fullfile(fileparts(mfilename(' fullpath' )), " utils" );
23+ testCase .applyFixture(matlab .unittest .fixtures .PathFixture(utilsfolder ));
24+ commonSetupOnce(testCase );
25+ end
26+ end
27+
28+ methods (TestMethodSetup )
29+ function setup(testCase )
30+ commonSetup(testCase );
31+ end
32+ end
33+
34+ methods (TestMethodTeardown )
35+ function teardown(testCase )
36+ commonTeardown(testCase );
37+ end
38+ end
39+
40+ methods (Test )
41+ function testNondefaultHTTPHeaders(testCase )
42+ % testNondefaultHTTPHeaders: using an alternative HTTPHeaders
43+
44+ testCase .assumeTrue(logical(exist(" opentelemetry.exporters.otlp.OtlpHttpSpanExporter" , " class" )), ...
45+ " Otlp HTTP exporter must be installed." );
46+
47+ tracername = " foo" ;
48+ spanname = " bar" ;
49+
50+ exp = opentelemetry .exporters .otlp .OtlpHttpSpanExporter(...
51+ " HTTPHeaders" , dictionary(" new" ," header" ));
52+ processor = opentelemetry .sdk .trace .SimpleSpanProcessor(exp );
53+ tp = opentelemetry .sdk .trace .TracerProvider(processor );
54+ tr = getTracer(tp , tracername );
55+ sp = startSpan(tr , spanname );
56+ pause(1 );
57+ endSpan(sp );
58+
59+ % perform test comparisons
60+ results = readJsonResults(testCase );
61+ results = results{1 };
62+
63+ % check span and tracer names
64+ verifyEqual(testCase , string(results .resourceSpans .scopeSpans .spans .name ), spanname );
65+ verifyEqual(testCase , string(results .resourceSpans .scopeSpans .scope .name ), tracername );
66+ end
67+
68+ function testNondefaultGrpcHTTPHeaders(testCase )
69+ % testNondefaultGrpcHTTPHeaders: using an alternative HTTPHeaders
70+
71+ testCase .assumeTrue(logical(exist(" opentelemetry.exporters.otlp.OtlpGrpcSpanExporter" , " class" )), ...
72+ " Otlp gRPC exporter must be installed." );
73+
74+ tracername = " foo" ;
75+ spanname = " bar" ;
76+
77+ exp = opentelemetry .exporters .otlp .OtlpGrpcSpanExporter(...
78+ " HTTPHeaders" , dictionary(" new" ," header" ));
79+ processor = opentelemetry .sdk .trace .SimpleSpanProcessor(exp );
80+ tp = opentelemetry .sdk .trace .TracerProvider(processor );
81+ tr = getTracer(tp , tracername );
82+ sp = startSpan(tr , spanname );
83+ pause(1 );
84+ endSpan(sp );
85+
86+ % perform test comparisons
87+ results = readJsonResults(testCase );
88+ results = results{1 };
89+
90+ % check span and tracer names
91+ verifyEqual(testCase , string(results .resourceSpans .scopeSpans .spans .name ), spanname );
92+ verifyEqual(testCase , string(results .resourceSpans .scopeSpans .scope .name ), tracername );
93+ end
94+
95+ function NondefaultMetricsHTTPHeaders(testCase )
96+ % testNondefaultMetricsHTTPHeaders: using an alternative HTTPHeaders
97+ testCase .assumeTrue(logical(exist(" opentelemetry.exporters.otlp.OtlpHttpMetricExporter" , " class" )), ...
98+ " Otlp HTTP exporter must be installed." );
99+
100+ exp = opentelemetry .exporters .otlp .OtlpHttpMetricExporter(...
101+ " HTTPHeaders" , dictionary(" new" ," header" ));
102+ reader = opentelemetry .sdk .metrics .PeriodicExportingMetricReader(...
103+ exp , " Interval" , seconds(2 ), " Timeout" , seconds(1 ));
104+ p = opentelemetry .sdk .metrics .MeterProvider(reader );
105+ mt = p .getMeter(" foo" );
106+ ct = mt .createCounter(" bar" );
107+
108+ val = 4 ;
109+ ct .add(val );
110+ pause(2.5 );
111+
112+ % fetch result
113+ clear p ;
114+ results = readJsonResults(testCase );
115+
116+ % verify counter value
117+ verifyEqual(testCase , results{end }.resourceMetrics.scopeMetrics.metrics.sum.dataPoints.asDouble, val );
118+ end
119+
120+ function NondefaultGrpcMetricsHTTPHeaders(testCase )
121+ % testNondefaultGrpcMetricsHTTPHeaders: using an alternative HTTPHeaders
122+ testCase .assumeTrue(logical(exist(" opentelemetry.exporters.otlp.OtlpGrpcMetricExporter" , " class" )), ...
123+ " Otlp gRPC exporter must be installed." );
124+
125+ exp = opentelemetry .exporters .otlp .OtlpGrpcMetricExporter(...
126+ " HTTPHeaders" , dictionary(" new" ," header" ));
127+ reader = opentelemetry .sdk .metrics .PeriodicExportingMetricReader(...
128+ exp , " Interval" , seconds(2 ), " Timeout" , seconds(1 ));
129+ p = opentelemetry .sdk .metrics .MeterProvider(reader );
130+ mt = p .getMeter(" foo" );
131+ ct = mt .createCounter(" bar" );
132+
133+ val = 8 ;
134+ ct .add(val );
135+ pause(2.5 );
136+
137+ % fetch result
138+ clear p ;
139+ results = readJsonResults(testCase );
140+
141+ % verify counter value
142+ verifyEqual(testCase , results{end }.resourceMetrics.scopeMetrics.metrics.sum.dataPoints.asDouble, val );
143+ end
144+
145+ end
146+ end
0 commit comments