1010import static org .assertj .core .api .Assertions .assertThatCode ;
1111import static org .assertj .core .api .Assertions .assertThatThrownBy ;
1212
13+ import io .github .netmikey .logunit .api .LogCapturer ;
1314import io .opentelemetry .api .baggage .propagation .W3CBaggagePropagator ;
1415import io .opentelemetry .api .incubator .config .DeclarativeConfigException ;
1516import io .opentelemetry .api .trace .propagation .W3CTraceContextPropagator ;
7273import org .junit .jupiter .params .ParameterizedTest ;
7374import org .junit .jupiter .params .provider .Arguments ;
7475import org .junit .jupiter .params .provider .MethodSource ;
76+ import org .slf4j .event .Level ;
7577
7678class OpenTelemetryConfigurationFactoryTest {
7779
7880 @ RegisterExtension CleanupExtension cleanup = new CleanupExtension ();
7981
82+ @ RegisterExtension
83+ LogCapturer logCapturer =
84+ LogCapturer .create ()
85+ .captureForLogger (OpenTelemetryConfigurationFactory .class .getName (), Level .WARN );
86+
8087 private final DeclarativeConfigContext context =
8188 new DeclarativeConfigContext (
8289 SpiHelper .create (OpenTelemetryConfigurationFactoryTest .class .getClassLoader ()));
@@ -110,6 +117,7 @@ private static Stream<Arguments> fileFormatArgs() {
110117 Arguments .of ("1.0-rc.a" , false ),
111118 Arguments .of ("1.0.0" , false ),
112119 Arguments .of ("1.0.3" , false ),
120+ Arguments .of ("1.0.0-rc.3" , false ),
113121 // Valid file formats
114122 Arguments .of ("0.4" , true ),
115123 Arguments .of ("1.0-rc.1" , true ),
@@ -118,6 +126,31 @@ private static Stream<Arguments> fileFormatArgs() {
118126 Arguments .of ("1.0" , true ));
119127 }
120128
129+ @ Test
130+ void create_FileFormatVersionMismatch_LogsWarning () {
131+ OpenTelemetryConfigurationModel model =
132+ new OpenTelemetryConfigurationModel ().withFileFormat ("1.0-rc.2" );
133+
134+ ExtendedOpenTelemetrySdk sdk =
135+ OpenTelemetryConfigurationFactory .getInstance ().create (model , context );
136+ cleanup .addCloseable (sdk );
137+
138+ logCapturer .assertContains (
139+ "Configuration file_format '1.0-rc.2' does not exactly match expected version '1.0-rc.3'" );
140+ }
141+
142+ @ Test
143+ void create_FileFormatExactMatch_NoWarning () {
144+ OpenTelemetryConfigurationModel model =
145+ new OpenTelemetryConfigurationModel ().withFileFormat ("1.0-rc.3" );
146+
147+ ExtendedOpenTelemetrySdk sdk =
148+ OpenTelemetryConfigurationFactory .getInstance ().create (model , context );
149+ cleanup .addCloseable (sdk );
150+
151+ assertThat (logCapturer .size ()).isEqualTo (0 );
152+ }
153+
121154 @ Test
122155 void create_Defaults () {
123156 List <Closeable > closeables = new ArrayList <>();
0 commit comments