55
66package io .opentelemetry .sdk .extension .incubator .fileconfig ;
77
8+ import static io .opentelemetry .sdk .metrics .internal .SdkMeterProviderUtil .setMeterConfigurator ;
89import static io .opentelemetry .sdk .testing .assertj .OpenTelemetryAssertions .assertThat ;
910
1011import io .opentelemetry .exporter .otlp .http .metrics .OtlpHttpMetricExporter ;
1112import io .opentelemetry .internal .testing .CleanupExtension ;
1213import io .opentelemetry .sdk .autoconfigure .internal .SpiHelper ;
14+ import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .ExperimentalMeterConfigModel ;
15+ import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .ExperimentalMeterConfiguratorModel ;
16+ import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .ExperimentalMeterMatcherAndConfigModel ;
1317import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .MeterProviderModel ;
1418import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .MetricReaderModel ;
1519import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .OtlpHttpMetricExporterModel ;
1620import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .PeriodicMetricReaderModel ;
1721import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .PushMetricExporterModel ;
1822import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .ViewSelectorModel ;
1923import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .ViewStreamModel ;
24+ import io .opentelemetry .sdk .internal .ScopeConfigurator ;
25+ import io .opentelemetry .sdk .internal .ScopeConfiguratorBuilder ;
2026import io .opentelemetry .sdk .metrics .InstrumentSelector ;
2127import io .opentelemetry .sdk .metrics .SdkMeterProvider ;
2228import io .opentelemetry .sdk .metrics .View ;
29+ import io .opentelemetry .sdk .metrics .internal .MeterConfig ;
2330import java .io .Closeable ;
2431import java .util .ArrayList ;
2532import java .util .Collections ;
2633import java .util .List ;
27- import org . junit . jupiter . api . Test ;
34+ import java . util . stream . Stream ;
2835import org .junit .jupiter .api .extension .RegisterExtension ;
36+ import org .junit .jupiter .params .ParameterizedTest ;
37+ import org .junit .jupiter .params .provider .Arguments ;
38+ import org .junit .jupiter .params .provider .MethodSource ;
2939
3040class MeterProviderFactoryTest {
3141
@@ -34,65 +44,66 @@ class MeterProviderFactoryTest {
3444 private final SpiHelper spiHelper =
3545 SpiHelper .create (MeterProviderFactoryTest .class .getClassLoader ());
3646
37- @ Test
38- void create_Defaults () {
47+ @ ParameterizedTest
48+ @ MethodSource ("createArguments" )
49+ void create (MeterProviderModel model , SdkMeterProvider expectedProvider ) {
3950 List <Closeable > closeables = new ArrayList <>();
40- SdkMeterProvider expectedProvider = SdkMeterProvider .builder ().build ();
4151 cleanup .addCloseable (expectedProvider );
4252
4353 SdkMeterProvider provider =
44- MeterProviderFactory .getInstance ()
45- .create (new MeterProviderModel (), spiHelper , closeables )
46- .build ();
54+ MeterProviderFactory .getInstance ().create (model , spiHelper , closeables ).build ();
4755 cleanup .addCloseable (provider );
4856 cleanup .addCloseables (closeables );
4957
5058 assertThat (provider .toString ()).isEqualTo (expectedProvider .toString ());
5159 }
5260
53- @ Test
54- void create_Configured () {
55- List <Closeable > closeables = new ArrayList <>();
56- SdkMeterProvider expectedProvider =
57- SdkMeterProvider .builder ()
58- .registerMetricReader (
59- io .opentelemetry .sdk .metrics .export .PeriodicMetricReader .builder (
60- OtlpHttpMetricExporter .getDefault ())
61- .build ())
62- .registerView (
63- InstrumentSelector .builder ().setName ("instrument-name" ).build (),
64- View .builder ().setName ("stream-name" ).build ())
65- .build ();
66- cleanup .addCloseable (expectedProvider );
67-
68- SdkMeterProvider provider =
69- MeterProviderFactory .getInstance ()
70- .create (
71- new MeterProviderModel ()
72- .withReaders (
73- Collections .singletonList (
74- new MetricReaderModel ()
75- .withPeriodic (
76- new PeriodicMetricReaderModel ()
77- .withExporter (
78- new PushMetricExporterModel ()
79- .withOtlpHttp (new OtlpHttpMetricExporterModel ())))))
80- .withViews (
81- Collections .singletonList (
82- new io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model
83- .ViewModel ()
84- .withSelector (
85- new ViewSelectorModel ().withInstrumentName ("instrument-name" ))
86- .withStream (
87- new ViewStreamModel ()
88- .withName ("stream-name" )
89- .withAttributeKeys (null )))),
90- spiHelper ,
91- closeables )
92- .build ();
93- cleanup .addCloseable (provider );
94- cleanup .addCloseables (closeables );
95-
96- assertThat (provider .toString ()).isEqualTo (expectedProvider .toString ());
61+ private static Stream <Arguments > createArguments () {
62+ return Stream .of (
63+ Arguments .of (new MeterProviderModel (), SdkMeterProvider .builder ().build ()),
64+ Arguments .of (
65+ new MeterProviderModel ()
66+ .withReaders (
67+ Collections .singletonList (
68+ new MetricReaderModel ()
69+ .withPeriodic (
70+ new PeriodicMetricReaderModel ()
71+ .withExporter (
72+ new PushMetricExporterModel ()
73+ .withOtlpHttp (new OtlpHttpMetricExporterModel ())))))
74+ .withViews (
75+ Collections .singletonList (
76+ new io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model
77+ .ViewModel ()
78+ .withSelector (
79+ new ViewSelectorModel ().withInstrumentName ("instrument-name" ))
80+ .withStream (
81+ new ViewStreamModel ()
82+ .withName ("stream-name" )
83+ .withAttributeKeys (null ))))
84+ .withMeterConfiguratorDevelopment (
85+ new ExperimentalMeterConfiguratorModel ()
86+ .withDefaultConfig (new ExperimentalMeterConfigModel ().withDisabled (true ))
87+ .withMeters (
88+ Collections .singletonList (
89+ new ExperimentalMeterMatcherAndConfigModel ()
90+ .withName ("foo" )
91+ .withConfig (
92+ new ExperimentalMeterConfigModel ().withDisabled (false ))))),
93+ setMeterConfigurator (
94+ SdkMeterProvider .builder (),
95+ ScopeConfigurator .<MeterConfig >builder ()
96+ .setDefault (MeterConfig .disabled ())
97+ .addCondition (
98+ ScopeConfiguratorBuilder .nameMatchesGlob ("foo" ), MeterConfig .enabled ())
99+ .build ())
100+ .registerMetricReader (
101+ io .opentelemetry .sdk .metrics .export .PeriodicMetricReader .builder (
102+ OtlpHttpMetricExporter .getDefault ())
103+ .build ())
104+ .registerView (
105+ InstrumentSelector .builder ().setName ("instrument-name" ).build (),
106+ View .builder ().setName ("stream-name" ).build ())
107+ .build ()));
97108 }
98109}
0 commit comments