@@ -215,6 +215,74 @@ public void MultipleListeners_ThreeCounters()
215
215
AssertCollectStartStopEventsPresent ( events3 , IntervalSecs , 2 ) ;
216
216
}
217
217
218
+ [ ConditionalFact ( typeof ( PlatformDetection ) , nameof ( PlatformDetection . IsNotBrowser ) ) ]
219
+ [ OuterLoop ( "Slow and has lots of console spew" ) ]
220
+ public void SingleListener_Wildcard ( )
221
+ {
222
+ using Meter meter = new Meter ( "Test.TestMeter1" ) ;
223
+ Counter < int > c = meter . CreateCounter < int > ( "counter1" ) ;
224
+
225
+ using Meter meter2 = new Meter ( "Test.TestMeter2" , null , new TagList ( ) { { "Mk1" , "Mv1" } } , new object ( ) ) ;
226
+ Counter < int > c2 = meter2 . CreateCounter < int > ( "counter2" ) ;
227
+
228
+ using Meter meter3 = new Meter ( "Test.TestMeter3" , null , new TagList ( ) { { "MMk1" , null } , { "MMk2" , null } } , new object ( ) ) ;
229
+ Counter < int > c3 = meter3 . CreateCounter < int > ( "counter3" ) ;
230
+
231
+ EventWrittenEventArgs [ ] events ;
232
+ using ( MetricsEventListener listener = new MetricsEventListener ( _output , MetricsEventListener . TimeSeriesValues , isShared : true , IntervalSecs , "*" ) )
233
+ {
234
+ listener . WaitForCollectionStop ( s_waitForEventTimeout , 1 ) ;
235
+ c . Add ( 5 ) ;
236
+ c2 . Add ( 10 ) ;
237
+ c3 . Add ( 20 ) ;
238
+ listener . WaitForCollectionStop ( s_waitForEventTimeout , 2 ) ;
239
+ events = listener . Events . ToArray ( ) ;
240
+ }
241
+
242
+ // Note: Need to exclude System.Runtime metrics any anything else in platform
243
+ events = events . Where ( e => e . EventName != "BeginInstrumentReporting"
244
+ || ( e . Payload [ 1 ] as string ) ? . StartsWith ( "Test." ) == true )
245
+ . ToArray ( ) ;
246
+
247
+ AssertBeginInstrumentReportingEventsPresent ( events , c , c2 , c3 ) ;
248
+ AssertInitialEnumerationCompleteEventPresent ( events ) ;
249
+ AssertCounterEventsPresent ( events , meter . Name , c . Name , "" , "" , ( "5" , "5" ) ) ;
250
+ AssertCounterEventsPresent ( events , meter2 . Name , c2 . Name , "" , "" , ( "10" , "10" ) ) ;
251
+ AssertCounterEventsPresent ( events , meter3 . Name , c3 . Name , "" , "" , ( "20" , "20" ) ) ;
252
+ AssertCollectStartStopEventsPresent ( events , IntervalSecs , 2 ) ;
253
+ }
254
+
255
+ [ ConditionalFact ( typeof ( PlatformDetection ) , nameof ( PlatformDetection . IsNotBrowser ) ) ]
256
+ [ OuterLoop ( "Slow and has lots of console spew" ) ]
257
+ public void SingleListener_Prefix ( )
258
+ {
259
+ using Meter meter = new Meter ( "Company1.TestMeter1" ) ;
260
+ Counter < int > c = meter . CreateCounter < int > ( "counter1" ) ;
261
+
262
+ using Meter meter2 = new Meter ( "Company1.TestMeter2" , null , new TagList ( ) { { "Mk1" , "Mv1" } } , new object ( ) ) ;
263
+ Counter < int > c2 = meter2 . CreateCounter < int > ( "counter2" ) ;
264
+
265
+ using Meter meter3 = new Meter ( "Company2.TestMeter3" , null , new TagList ( ) { { "MMk1" , null } , { "MMk2" , null } } , new object ( ) ) ;
266
+ Counter < int > c3 = meter3 . CreateCounter < int > ( "counter3" ) ;
267
+
268
+ EventWrittenEventArgs [ ] events ;
269
+ using ( MetricsEventListener listener = new MetricsEventListener ( _output , MetricsEventListener . TimeSeriesValues , isShared : true , IntervalSecs , "Company1*" ) )
270
+ {
271
+ listener . WaitForCollectionStop ( s_waitForEventTimeout , 1 ) ;
272
+ c . Add ( 5 ) ;
273
+ c2 . Add ( 10 ) ;
274
+ c3 . Add ( 20 ) ;
275
+ listener . WaitForCollectionStop ( s_waitForEventTimeout , 2 ) ;
276
+ events = listener . Events . ToArray ( ) ;
277
+ }
278
+
279
+ AssertBeginInstrumentReportingEventsPresent ( events , c , c2 ) ;
280
+ AssertInitialEnumerationCompleteEventPresent ( events ) ;
281
+ AssertCounterEventsPresent ( events , meter . Name , c . Name , "" , "" , ( "5" , "5" ) ) ;
282
+ AssertCounterEventsPresent ( events , meter2 . Name , c2 . Name , "" , "" , ( "10" , "10" ) ) ;
283
+ AssertCollectStartStopEventsPresent ( events , IntervalSecs , 2 ) ;
284
+ }
285
+
218
286
[ ConditionalFact ( typeof ( PlatformDetection ) , nameof ( PlatformDetection . IsNotBrowser ) ) ]
219
287
[ OuterLoop ( "Slow and has lots of console spew" ) ]
220
288
public void MultipleListeners_OverlappingListeners ( )
@@ -1727,7 +1795,7 @@ private static void AssertGenericCounterEventsPresent(string eventName, EventWri
1727
1795
Tags = e . Payload [ 5 ] . ToString ( ) ,
1728
1796
Rate = e . Payload [ 6 ] . ToString ( ) ,
1729
1797
Value = e . Payload [ 7 ] . ToString ( ) ,
1730
- InstrumentId = ( int ) ( e . Payload [ 7 ] ) ,
1798
+ InstrumentId = ( int ) ( e . Payload [ 8 ] ) ,
1731
1799
} ) . ToArray ( ) ;
1732
1800
var filteredEvents = counterEvents . Where ( e => e . MeterName == meterName && e . InstrumentName == instrumentName && e . Tags == tags ) . ToArray ( ) ;
1733
1801
Assert . True ( filteredEvents . Length >= expected . Length ) ;
0 commit comments