1010import com .fasterxml .jackson .core .JsonProcessingException ;
1111import io .opentelemetry .instrumentation .docs .internal .InstrumentationMetadata ;
1212import io .opentelemetry .instrumentation .docs .internal .ManualTelemetryEntry ;
13+ import io .opentelemetry .instrumentation .docs .internal .SemanticConvention ;
14+ import io .opentelemetry .instrumentation .docs .internal .TelemetryAttribute ;
1315import io .opentelemetry .instrumentation .docs .utils .YamlHelper ;
16+ import java .util .List ;
1417import org .junit .jupiter .api .Test ;
1518
1619class ManualTelemetryTest {
@@ -51,36 +54,45 @@ void testManualTelemetryParsing() throws JsonProcessingException {
5154 type: STRING
5255 """ ;
5356
54- InstrumentationMetadata metadata = YamlHelper .metaDataParser (yamlContent );
55-
56- assertThat (metadata ).isNotNull ();
57- assertThat (metadata .getDescription ())
58- .isEqualTo ("Example instrumentation with manual telemetry documentation" );
59- assertThat (metadata .getLibraryLink ()).isEqualTo ("https://example.com/library" );
60- assertThat (metadata .getOverrideTelemetry ()).isFalse ();
61-
62- assertThat (metadata .getAdditionalTelemetry ()).hasSize (2 );
63-
64- ManualTelemetryEntry defaultEntry = metadata .getAdditionalTelemetry ().get (0 );
65- assertThat (defaultEntry .getWhen ()).isEqualTo ("default" );
66- assertThat (defaultEntry .getMetrics ()).hasSize (1 );
67- assertThat (defaultEntry .getSpans ()).hasSize (1 );
68-
69- ManualTelemetryEntry .ManualMetric metric = defaultEntry .getMetrics ().get (0 );
70- assertThat (metric .getName ()).isEqualTo ("system.disk.io" );
71- assertThat (metric .getDescription ()).isEqualTo ("System disk IO" );
72- assertThat (metric .getType ()).isEqualTo ("LONG_SUM" );
73- assertThat (metric .getUnit ()).isEqualTo ("By" );
74- assertThat (metric .getAttributes ()).hasSize (2 );
75-
76- ManualTelemetryEntry .ManualSpan span = defaultEntry .getSpans ().get (0 );
77- assertThat (span .getSpanKind ()).isEqualTo ("CLIENT" );
78- assertThat (span .getAttributes ()).hasSize (1 );
79-
80- ManualTelemetryEntry experimentalEntry = metadata .getAdditionalTelemetry ().get (1 );
81- assertThat (experimentalEntry .getWhen ()).isEqualTo ("experimental" );
82- assertThat (experimentalEntry .getMetrics ()).hasSize (1 );
83- assertThat (experimentalEntry .getSpans ()).isEmpty ();
57+ InstrumentationMetadata actualMetadata = YamlHelper .metaDataParser (yamlContent );
58+ ManualTelemetryEntry defaultEntry =
59+ new ManualTelemetryEntry (
60+ "default" ,
61+ List .of (
62+ new ManualTelemetryEntry .ManualMetric (
63+ "system.disk.io" ,
64+ "System disk IO" ,
65+ "LONG_SUM" ,
66+ "By" ,
67+ List .of (
68+ new TelemetryAttribute ("device" , "STRING" ),
69+ new TelemetryAttribute ("direction" , "STRING" )))),
70+ List .of (
71+ new ManualTelemetryEntry .ManualSpan (
72+ "CLIENT" , List .of (new TelemetryAttribute ("custom.operation" , "STRING" )))));
73+
74+ ManualTelemetryEntry experimentalEntry =
75+ new ManualTelemetryEntry (
76+ "experimental" ,
77+ List .of (
78+ new ManualTelemetryEntry .ManualMetric (
79+ "experimental.feature.usage" ,
80+ "Usage of experimental features" ,
81+ "HISTOGRAM" ,
82+ "s" ,
83+ List .of (new TelemetryAttribute ("feature.name" , "STRING" )))),
84+ List .of ());
85+
86+ InstrumentationMetadata expectedMetadata =
87+ new InstrumentationMetadata .Builder ()
88+ .description ("Example instrumentation with manual telemetry documentation" )
89+ .libraryLink ("https://example.com/library" )
90+ .semanticConventions (List .of (SemanticConvention .HTTP_CLIENT_SPANS ))
91+ .additionalTelemetry (List .of (defaultEntry , experimentalEntry ))
92+ .overrideTelemetry (false )
93+ .build ();
94+
95+ assertThat (actualMetadata ).usingRecursiveComparison ().isEqualTo (expectedMetadata );
8496 }
8597
8698 @ Test
@@ -99,11 +111,24 @@ void testOverrideTelemetryFlag() throws JsonProcessingException {
99111 attributes: []
100112 """ ;
101113
102- InstrumentationMetadata metadata = YamlHelper .metaDataParser (yamlContent );
114+ InstrumentationMetadata actualMetadata = YamlHelper .metaDataParser (yamlContent );
115+
116+ ManualTelemetryEntry defaultEntry =
117+ new ManualTelemetryEntry (
118+ "default" ,
119+ List .of (
120+ new ManualTelemetryEntry .ManualMetric (
121+ "manual.metric" , "Manual metric only" , "COUNTER" , "1" , List .of ())),
122+ List .of ());
103123
104- assertThat (metadata ).isNotNull ();
105- assertThat (metadata .getOverrideTelemetry ()).isTrue ();
106- assertThat (metadata .getAdditionalTelemetry ()).hasSize (1 );
124+ InstrumentationMetadata expectedMetadata =
125+ new InstrumentationMetadata .Builder ()
126+ .description ("Example with override" )
127+ .overrideTelemetry (true )
128+ .additionalTelemetry (List .of (defaultEntry ))
129+ .build ();
130+
131+ assertThat (actualMetadata ).usingRecursiveComparison ().isEqualTo (expectedMetadata );
107132 }
108133
109134 @ Test
@@ -115,10 +140,45 @@ void testEmptyAdditionalTelemetry() throws JsonProcessingException {
115140 - HTTP_CLIENT_SPANS
116141 """ ;
117142
118- InstrumentationMetadata metadata = YamlHelper .metaDataParser (yamlContent );
119-
120- assertThat (metadata ).isNotNull ();
121- assertThat (metadata .getOverrideTelemetry ()).isFalse ();
122- assertThat (metadata .getAdditionalTelemetry ()).isEmpty ();
143+ InstrumentationMetadata actualMetadata = YamlHelper .metaDataParser (yamlContent );
144+
145+ ManualTelemetryEntry defaultEntry =
146+ new ManualTelemetryEntry (
147+ "default" ,
148+ List .of (
149+ new ManualTelemetryEntry .ManualMetric (
150+ "system.disk.io" ,
151+ "System disk IO" ,
152+ "LONG_SUM" ,
153+ "By" ,
154+ List .of (
155+ new TelemetryAttribute ("device" , "STRING" ),
156+ new TelemetryAttribute ("direction" , "STRING" )))),
157+ List .of (
158+ new ManualTelemetryEntry .ManualSpan (
159+ "CLIENT" , List .of (new TelemetryAttribute ("custom.operation" , "STRING" )))));
160+
161+ ManualTelemetryEntry experimentalEntry =
162+ new ManualTelemetryEntry (
163+ "experimental" ,
164+ List .of (
165+ new ManualTelemetryEntry .ManualMetric (
166+ "experimental.feature.usage" ,
167+ "Usage of experimental features" ,
168+ "HISTOGRAM" ,
169+ "s" ,
170+ List .of (new TelemetryAttribute ("feature.name" , "STRING" )))),
171+ List .of ());
172+
173+ InstrumentationMetadata expectedMetadata =
174+ new InstrumentationMetadata .Builder ()
175+ .description ("Example instrumentation with manual telemetry documentation" )
176+ .libraryLink ("https://example.com/library" )
177+ .semanticConventions (List .of (SemanticConvention .HTTP_CLIENT_SPANS ))
178+ .additionalTelemetry (List .of (defaultEntry , experimentalEntry ))
179+ .overrideTelemetry (false )
180+ .build ();
181+
182+ assertThat (actualMetadata ).usingRecursiveComparison ().isEqualTo (expectedMetadata );
123183 }
124184}
0 commit comments