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