29
29
import com .ibm .mq .headers .pcf .PCFMessage ;
30
30
import com .ibm .mq .headers .pcf .PCFMessageAgent ;
31
31
import com .splunk .ibm .mq .config .QueueManager ;
32
- import com .splunk .ibm .mq .integration .opentelemetry .TestResultMetricExporter ;
33
32
import com .splunk .ibm .mq .metrics .MetricsConfig ;
34
33
import com .splunk .ibm .mq .opentelemetry .ConfigWrapper ;
35
34
import io .opentelemetry .api .metrics .Meter ;
36
- import io .opentelemetry .sdk .metrics .SdkMeterProvider ;
37
35
import io .opentelemetry .sdk .metrics .data .MetricData ;
38
- import io .opentelemetry .sdk .metrics . export . PeriodicMetricReader ;
36
+ import io .opentelemetry .sdk .testing . junit5 . OpenTelemetryExtension ;
39
37
import java .util .ArrayList ;
40
38
import java .util .List ;
41
- import java .util .concurrent .Executors ;
42
- import java .util .concurrent .TimeUnit ;
43
39
import java .util .stream .Stream ;
44
40
import org .junit .jupiter .api .BeforeEach ;
45
41
import org .junit .jupiter .api .Test ;
46
42
import org .junit .jupiter .api .extension .ExtendWith ;
43
+ import org .junit .jupiter .api .extension .RegisterExtension ;
47
44
import org .junit .jupiter .params .ParameterizedTest ;
48
45
import org .junit .jupiter .params .provider .Arguments ;
49
46
import org .junit .jupiter .params .provider .MethodSource ;
53
50
@ ExtendWith (MockitoExtension .class )
54
51
class ChannelMetricsCollectorTest {
55
52
56
- ChannelMetricsCollector classUnderTest ;
57
-
58
- @ Mock PCFMessageAgent pcfMessageAgent ;
53
+ @ RegisterExtension
54
+ static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension .create ();
59
55
56
+ ChannelMetricsCollector classUnderTest ;
60
57
QueueManager queueManager ;
61
58
MetricsCollectorContext context ;
62
- private TestResultMetricExporter testExporter ;
63
- private PeriodicMetricReader reader ;
64
- private Meter meter ;
59
+ Meter meter ;
60
+ @ Mock PCFMessageAgent pcfMessageAgent ;
65
61
66
62
@ BeforeEach
67
63
void setup () throws Exception {
68
64
ConfigWrapper config = ConfigWrapper .parse ("src/test/resources/conf/config.yml" );
69
65
ObjectMapper mapper = new ObjectMapper ();
70
66
queueManager = mapper .convertValue (config .getQueueManagers ().get (0 ), QueueManager .class );
71
- testExporter = new TestResultMetricExporter ();
72
- reader =
73
- PeriodicMetricReader .builder (testExporter )
74
- .setExecutor (Executors .newScheduledThreadPool (1 ))
75
- .build ();
76
- SdkMeterProvider meterProvider =
77
- SdkMeterProvider .builder ().registerMetricReader (reader ).build ();
78
- meter = meterProvider .get ("opentelemetry.io/mq" );
67
+ meter = otelTesting .getOpenTelemetry ().getMeter ("opentelemetry.io/mq" );
79
68
context =
80
69
new MetricsCollectorContext (queueManager , pcfMessageAgent , null , new MetricsConfig (config ));
81
70
}
@@ -87,7 +76,6 @@ void testPublishMetrics() throws Exception {
87
76
classUnderTest = new ChannelMetricsCollector (meter );
88
77
89
78
classUnderTest .accept (context );
90
- reader .forceFlush ().join (1 , TimeUnit .SECONDS );
91
79
92
80
List <String > metricsList =
93
81
new ArrayList <>(
@@ -99,7 +87,7 @@ void testPublishMetrics() throws Exception {
99
87
"mq.buffers.sent" ,
100
88
"mq.buffers.received" ));
101
89
102
- for (MetricData metric : testExporter . getExportedMetrics ()) {
90
+ for (MetricData metric : otelTesting . getMetrics ()) {
103
91
if (metricsList .remove (metric .getName ())) {
104
92
if (metric .getName ().equals ("mq.message.count" )) {
105
93
assertThat (metric .getLongGaugeData ().getPoints ().iterator ().next ().getValue ())
@@ -213,8 +201,7 @@ void testPublishMetrics_nullResponse() throws Exception {
213
201
classUnderTest = new ChannelMetricsCollector (meter );
214
202
215
203
classUnderTest .accept (context );
216
- reader .forceFlush ().join (1 , TimeUnit .SECONDS );
217
- assertThat (testExporter .getExportedMetrics ()).isEmpty ();
204
+ assertThat (otelTesting .getMetrics ()).isEmpty ();
218
205
}
219
206
220
207
@ Test
@@ -223,8 +210,7 @@ void testPublishMetrics_emptyResponse() throws Exception {
223
210
classUnderTest = new ChannelMetricsCollector (meter );
224
211
225
212
classUnderTest .accept (context );
226
- reader .forceFlush ().join (1 , TimeUnit .SECONDS );
227
- assertThat (testExporter .getExportedMetrics ()).isEmpty ();
213
+ assertThat (otelTesting .getMetrics ()).isEmpty ();
228
214
}
229
215
230
216
@ ParameterizedTest
@@ -234,9 +220,8 @@ void testPublishMetrics_pfException(Exception exceptionToThrow) throws Exception
234
220
classUnderTest = new ChannelMetricsCollector (meter );
235
221
236
222
classUnderTest .accept (context );
237
- reader .forceFlush ().join (1 , TimeUnit .SECONDS );
238
223
239
- List <MetricData > exported = testExporter . getExportedMetrics ();
224
+ List <MetricData > exported = otelTesting . getMetrics ();
240
225
assertThat (exported .get (0 ).getLongGaugeData ().getPoints ()).hasSize (1 );
241
226
assertThatMetric (exported .get (0 ), 0 ).hasName ("mq.manager.active.channels" ).hasValue (0 );
242
227
}
0 commit comments