@@ -29,28 +29,51 @@ public function testImplementsListenerInterface(): void
2929 $ this ->assertInstanceOf (ListenerInterface::class, $ listener );
3030 }
3131
32- public function testProcessCallsShutdown (): void
32+ public function testListensToOnWorkerExit (): void
33+ {
34+ $ listener = new OtelShutdownListener (
35+ $ this ->createMock (MeterProviderInterface::class),
36+ $ this ->createMock (TracerProviderInterface::class),
37+ $ this ->createMock (StdoutLoggerInterface::class)
38+ );
39+ $ this ->assertSame ([OnWorkerExit::class], $ listener ->listen ());
40+ }
41+
42+ public function testProcessCallsShutdownInsideCoroutine (): void
3343 {
3444 $ meterProvider = $ this ->createMock (MeterProviderInterface::class);
3545 $ tracerProvider = $ this ->createMock (TracerProviderInterface::class);
3646 $ logger = $ this ->createMock (StdoutLoggerInterface::class);
3747
38- $ meterProvider ->expects ($ this ->once ())->method ('shutdown ' );
3948 $ tracerProvider ->expects ($ this ->once ())->method ('shutdown ' );
49+ $ meterProvider ->expects ($ this ->once ())->method ('shutdown ' );
4050 $ logger ->expects ($ this ->never ())->method ('warning ' );
4151
4252 $ listener = new OtelShutdownListener ($ meterProvider , $ tracerProvider , $ logger );
4353 $ listener ->process (new OnWorkerExit ($ this ->createMock (Server::class), 0 ));
4454 }
4555
46- public function testProcessLogsWarningOnException (): void
56+ public function testProcessLogsWarningOnTracerException (): void
57+ {
58+ $ meterProvider = $ this ->createMock (MeterProviderInterface::class);
59+ $ tracerProvider = $ this ->createMock (TracerProviderInterface::class);
60+ $ logger = $ this ->createMock (StdoutLoggerInterface::class);
61+
62+ $ tracerProvider ->method ('shutdown ' )->willThrowException (new RuntimeException ('tracer error ' ));
63+ $ logger ->expects ($ this ->atLeastOnce ())->method ('warning ' )->with ($ this ->stringContains ('tracer ' ));
64+
65+ $ listener = new OtelShutdownListener ($ meterProvider , $ tracerProvider , $ logger );
66+ $ listener ->process (new OnWorkerExit ($ this ->createMock (Server::class), 0 ));
67+ }
68+
69+ public function testProcessLogsWarningOnMeterException (): void
4770 {
4871 $ meterProvider = $ this ->createMock (MeterProviderInterface::class);
4972 $ tracerProvider = $ this ->createMock (TracerProviderInterface::class);
5073 $ logger = $ this ->createMock (StdoutLoggerInterface::class);
5174
5275 $ meterProvider ->method ('shutdown ' )->willThrowException (new RuntimeException ('meter error ' ));
53- $ logger ->expects ($ this ->once ())->method ('warning ' )->with ($ this ->stringContains ('meter error ' ));
76+ $ logger ->expects ($ this ->atLeastOnce ())->method ('warning ' )->with ($ this ->stringContains ('meter ' ));
5477
5578 $ listener = new OtelShutdownListener ($ meterProvider , $ tracerProvider , $ logger );
5679 $ listener ->process (new OnWorkerExit ($ this ->createMock (Server::class), 0 ));
0 commit comments