1
1
// Licensed to the .NET Foundation under one or more agreements.
2
2
// The .NET Foundation licenses this file to you under the MIT license.
3
3
4
- using System ;
5
4
using System . Collections . Generic ;
6
5
using System . Diagnostics . Tracing ;
7
6
using System . Globalization ;
8
7
using System . Linq ;
9
8
using System . Runtime . CompilerServices ;
10
9
using System . Text ;
11
10
using System . Threading ;
12
- using System . Threading . Tasks ;
11
+ using Microsoft . DotNet . RemoteExecutor ;
13
12
using Xunit ;
14
13
using Xunit . Abstractions ;
15
14
@@ -658,45 +657,59 @@ public void MultipleListeners_PublishingInstruments()
658
657
AssertInitialEnumerationCompleteEventPresent ( events2 ) ;
659
658
}
660
659
661
- [ ConditionalFact ( typeof ( PlatformDetection ) , nameof ( PlatformDetection . IsNotBrowser ) ) ]
660
+ public static bool IsNotBrowserAndRemoteExecuteSupported => PlatformDetection . IsNotBrowser && RemoteExecutor . IsSupported ;
661
+
662
+ [ ConditionalFact ( typeof ( MetricEventSourceTests ) , nameof ( IsNotBrowserAndRemoteExecuteSupported ) ) ]
662
663
[ OuterLoop ( "Slow and has lots of console spew" ) ]
663
664
public void EventSourcePublishesTimeSeriesWithEmptyMetadata ( )
664
665
{
665
- using Meter meter = new Meter ( "TestMeter1" , null , new TagList ( ) { { "Mk1" , "Mv1" } , { "Mk2" , "Mv2" } } , new object ( ) ) ;
666
- Counter < int > c = meter . CreateCounter < int > ( "counter1" ) ;
667
- int counterState = 3 ;
668
- ObservableCounter < int > oc = meter . CreateObservableCounter < int > ( "observableCounter1" , ( ) => { counterState += 7 ; return counterState ; } ) ;
669
- int gaugeState = 0 ;
670
- ObservableGauge < int > og = meter . CreateObservableGauge < int > ( "observableGauge1" , ( ) => { gaugeState += 9 ; return gaugeState ; } ) ;
671
- Histogram < int > h = meter . CreateHistogram < int > ( "histogram1" ) ;
672
- UpDownCounter < int > udc = meter . CreateUpDownCounter < int > ( "upDownCounter1" ) ;
673
- int upDownCounterState = 0 ;
674
- ObservableUpDownCounter < int > oudc = meter . CreateObservableUpDownCounter < int > ( "observableUpDownCounter1" , ( ) => { upDownCounterState -= 11 ; return upDownCounterState ; } ) ;
675
-
676
- EventWrittenEventArgs [ ] events ;
677
- using ( MetricsEventListener listener = new MetricsEventListener ( _output , MetricsEventListener . TimeSeriesValues , IntervalSecs , "TestMeter1" ) )
666
+ RemoteExecutor . Invoke ( static ( ) =>
678
667
{
679
- listener . WaitForCollectionStop ( s_waitForEventTimeout , 1 ) ;
680
- c . Add ( 5 ) ;
681
- h . Record ( 19 ) ;
682
- udc . Add ( - 33 ) ;
683
- listener . WaitForCollectionStop ( s_waitForEventTimeout , 2 ) ;
684
- c . Add ( 12 ) ;
685
- h . Record ( 26 ) ;
686
- udc . Add ( - 40 ) ;
687
- listener . WaitForCollectionStop ( s_waitForEventTimeout , 3 ) ;
688
- events = listener . Events . ToArray ( ) ;
689
- }
668
+ CultureInfo . DefaultThreadCurrentCulture = new CultureInfo ( "fi-FI" ) ;
690
669
691
- AssertBeginInstrumentReportingEventsPresent ( events , c , oc , og , h , udc , oudc ) ;
692
- AssertInitialEnumerationCompleteEventPresent ( events ) ;
693
- AssertCounterEventsPresent ( events , meter . Name , c . Name , "" , "" , ( "5" , "5" ) , ( "12" , "17" ) ) ;
694
- AssertCounterEventsPresent ( events , meter . Name , oc . Name , "" , "" , ( "" , "10" ) , ( "7" , "17" ) ) ;
695
- AssertGaugeEventsPresent ( events , meter . Name , og . Name , "" , "" , "9" , "18" ) ;
696
- AssertHistogramEventsPresent ( events , meter . Name , h . Name , "" , "" , ( "0.5=19;0.95=19;0.99=19" , "1" , "19" ) , ( "0.5=26;0.95=26;0.99=26" , "1" , "26" ) ) ;
697
- AssertUpDownCounterEventsPresent ( events , meter . Name , udc . Name , "" , "" , ( "-33" , "-33" ) , ( "-40" , "-73" ) ) ;
698
- AssertUpDownCounterEventsPresent ( events , meter . Name , oudc . Name , "" , "" , ( "" , "-11" ) , ( "-11" , "-22" ) ) ;
699
- AssertCollectStartStopEventsPresent ( events , IntervalSecs , 3 ) ;
670
+ using Meter meter = new Meter ( "TestMeter1" , null , new TagList ( ) { { "Mk1" , "Mv1" } , { "Mk2" , "Mv2" } } , new object ( ) ) ;
671
+ Counter < int > c = meter . CreateCounter < int > ( "counter1" ) ;
672
+ int counterState = 3 ;
673
+ ObservableCounter < int > oc = meter . CreateObservableCounter < int > ( "observableCounter1" , ( ) => { counterState += 7 ; return counterState ; } ) ;
674
+ int gaugeState = 0 ;
675
+ ObservableGauge < int > og = meter . CreateObservableGauge < int > ( "observableGauge1" , ( ) => { gaugeState += 9 ; return gaugeState ; } ) ;
676
+ Histogram < int > h = meter . CreateHistogram < int > ( "histogram1" ) ;
677
+ UpDownCounter < int > udc = meter . CreateUpDownCounter < int > ( "upDownCounter1" ) ;
678
+ int upDownCounterState = 0 ;
679
+ ObservableUpDownCounter < int > oudc = meter . CreateObservableUpDownCounter < int > ( "observableUpDownCounter1" , ( ) => { upDownCounterState -= 11 ; return upDownCounterState ; } ) ;
680
+
681
+ EventWrittenEventArgs [ ] events ;
682
+ using ( MetricsEventListener listener = new MetricsEventListener ( NullTestOutputHelper . Instance , MetricsEventListener . TimeSeriesValues , IntervalSecs , "TestMeter1" ) )
683
+ {
684
+ listener . WaitForCollectionStop ( s_waitForEventTimeout , 1 ) ;
685
+ c . Add ( 5 ) ;
686
+ h . Record ( 19 ) ;
687
+ udc . Add ( - 33 ) ;
688
+ listener . WaitForCollectionStop ( s_waitForEventTimeout , 2 ) ;
689
+ c . Add ( 12 ) ;
690
+ h . Record ( 26 ) ;
691
+ udc . Add ( - 40 ) ;
692
+ listener . WaitForCollectionStop ( s_waitForEventTimeout , 3 ) ;
693
+ events = listener . Events . ToArray ( ) ;
694
+ }
695
+
696
+ AssertBeginInstrumentReportingEventsPresent ( events , c , oc , og , h , udc , oudc ) ;
697
+ AssertInitialEnumerationCompleteEventPresent ( events ) ;
698
+ AssertCounterEventsPresent ( events , meter . Name , c . Name , "" , "" , ( "5" , "5" ) , ( "12" , "17" ) ) ;
699
+ AssertCounterEventsPresent ( events , meter . Name , oc . Name , "" , "" , ( "" , "10" ) , ( "7" , "17" ) ) ;
700
+ AssertGaugeEventsPresent ( events , meter . Name , og . Name , "" , "" , "9" , "18" ) ;
701
+ AssertHistogramEventsPresent ( events , meter . Name , h . Name , "" , "" , ( "0.5=19;0.95=19;0.99=19" , "1" , "19" ) , ( "0.5=26;0.95=26;0.99=26" , "1" , "26" ) ) ;
702
+ AssertUpDownCounterEventsPresent ( events , meter . Name , udc . Name , "" , "" , ( "-33" , "-33" ) , ( "-40" , "-73" ) ) ;
703
+ AssertUpDownCounterEventsPresent ( events , meter . Name , oudc . Name , "" , "" , ( "" , "-11" ) , ( "-11" , "-22" ) ) ;
704
+ AssertCollectStartStopEventsPresent ( events , IntervalSecs , 3 ) ;
705
+ } ) . Dispose ( ) ;
706
+ }
707
+
708
+ private sealed class NullTestOutputHelper : ITestOutputHelper
709
+ {
710
+ public static NullTestOutputHelper Instance { get ; } = new ( ) ;
711
+ public void WriteLine ( string message ) { }
712
+ public void WriteLine ( string format , params object [ ] args ) { }
700
713
}
701
714
702
715
[ ConditionalFact ( typeof ( PlatformDetection ) , nameof ( PlatformDetection . IsNotBrowser ) ) ]
@@ -1470,7 +1483,7 @@ private static string FormatTags(IEnumerable<KeyValuePair<string, object?>>? tag
1470
1483
return sb . ToString ( ) ;
1471
1484
}
1472
1485
1473
- private void AssertBeginInstrumentReportingEventsPresent ( EventWrittenEventArgs [ ] events , params Instrument [ ] expectedInstruments )
1486
+ private static void AssertBeginInstrumentReportingEventsPresent ( EventWrittenEventArgs [ ] events , params Instrument [ ] expectedInstruments )
1474
1487
{
1475
1488
var beginReportEvents = events . Where ( e => e . EventName == "BeginInstrumentReporting" ) . Select ( e =>
1476
1489
new
@@ -1502,7 +1515,7 @@ private void AssertBeginInstrumentReportingEventsPresent(EventWrittenEventArgs[]
1502
1515
Assert . Equal ( expectedInstruments . Length , beginReportEvents . Length ) ;
1503
1516
}
1504
1517
1505
- private void AssertEndInstrumentReportingEventsPresent ( EventWrittenEventArgs [ ] events , params Instrument [ ] expectedInstruments )
1518
+ private static void AssertEndInstrumentReportingEventsPresent ( EventWrittenEventArgs [ ] events , params Instrument [ ] expectedInstruments )
1506
1519
{
1507
1520
var beginReportEvents = events . Where ( e => e . EventName == "EndInstrumentReporting" ) . Select ( e =>
1508
1521
new
@@ -1534,27 +1547,27 @@ private void AssertEndInstrumentReportingEventsPresent(EventWrittenEventArgs[] e
1534
1547
Assert . Equal ( expectedInstruments . Length , beginReportEvents . Length ) ;
1535
1548
}
1536
1549
1537
- private void AssertInitialEnumerationCompleteEventPresent ( EventWrittenEventArgs [ ] events , int eventsCount = 1 )
1550
+ private static void AssertInitialEnumerationCompleteEventPresent ( EventWrittenEventArgs [ ] events , int eventsCount = 1 )
1538
1551
{
1539
1552
Assert . Equal ( eventsCount , events . Where ( e => e . EventName == "InitialInstrumentEnumerationComplete" ) . Count ( ) ) ;
1540
1553
}
1541
1554
1542
- private void AssertTimeSeriesLimitPresent ( EventWrittenEventArgs [ ] events )
1555
+ private static void AssertTimeSeriesLimitPresent ( EventWrittenEventArgs [ ] events )
1543
1556
{
1544
1557
Assert . Equal ( 1 , events . Where ( e => e . EventName == "TimeSeriesLimitReached" ) . Count ( ) ) ;
1545
1558
}
1546
1559
1547
- private void AssertTimeSeriesLimitNotPresent ( EventWrittenEventArgs [ ] events )
1560
+ private static void AssertTimeSeriesLimitNotPresent ( EventWrittenEventArgs [ ] events )
1548
1561
{
1549
1562
Assert . Equal ( 0 , events . Where ( e => e . EventName == "TimeSeriesLimitReached" ) . Count ( ) ) ;
1550
1563
}
1551
1564
1552
- private void AssertHistogramLimitPresent ( EventWrittenEventArgs [ ] events )
1565
+ private static void AssertHistogramLimitPresent ( EventWrittenEventArgs [ ] events )
1553
1566
{
1554
1567
Assert . Equal ( 1 , events . Where ( e => e . EventName == "HistogramLimitReached" ) . Count ( ) ) ;
1555
1568
}
1556
1569
1557
- private void AssertInstrumentPublishingEventsPresent ( EventWrittenEventArgs [ ] events , params Instrument [ ] expectedInstruments )
1570
+ private static void AssertInstrumentPublishingEventsPresent ( EventWrittenEventArgs [ ] events , params Instrument [ ] expectedInstruments )
1558
1571
{
1559
1572
var publishEvents = events . Where ( e => e . EventName == "InstrumentPublished" ) . Select ( e =>
1560
1573
new
@@ -1586,19 +1599,19 @@ private void AssertInstrumentPublishingEventsPresent(EventWrittenEventArgs[] eve
1586
1599
Assert . Equal ( expectedInstruments . Length , publishEvents . Length ) ;
1587
1600
}
1588
1601
1589
- private void AssertCounterEventsPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1602
+ private static void AssertCounterEventsPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1590
1603
string expectedUnit , params ( string , string ) [ ] expected )
1591
1604
{
1592
1605
AssertGenericCounterEventsPresent ( "CounterRateValuePublished" , events , meterName , instrumentName , tags , expectedUnit , expected ) ;
1593
1606
}
1594
1607
1595
- private void AssertUpDownCounterEventsPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1608
+ private static void AssertUpDownCounterEventsPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1596
1609
string expectedUnit , params ( string , string ) [ ] expected )
1597
1610
{
1598
1611
AssertGenericCounterEventsPresent ( "UpDownCounterRateValuePublished" , events , meterName , instrumentName , tags , expectedUnit , expected ) ;
1599
1612
}
1600
1613
1601
- private void AssertGenericCounterEventsPresent ( string eventName , EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1614
+ private static void AssertGenericCounterEventsPresent ( string eventName , EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1602
1615
string expectedUnit , params ( string , string ) [ ] expected )
1603
1616
{
1604
1617
var counterEvents = events . Where ( e => e . EventName == eventName ) . Select ( e =>
@@ -1622,7 +1635,7 @@ private void AssertGenericCounterEventsPresent(string eventName, EventWrittenEve
1622
1635
}
1623
1636
}
1624
1637
1625
- private void AssertCounterEventsNotPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags )
1638
+ private static void AssertCounterEventsNotPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags )
1626
1639
{
1627
1640
var counterEvents = events . Where ( e => e . EventName == "CounterRateValuePublished" ) . Select ( e =>
1628
1641
new
@@ -1636,7 +1649,7 @@ private void AssertCounterEventsNotPresent(EventWrittenEventArgs[] events, strin
1636
1649
Assert . Equal ( 0 , filteredEvents . Length ) ;
1637
1650
}
1638
1651
1639
- private void AssertGaugeEventsPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1652
+ private static void AssertGaugeEventsPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1640
1653
string expectedUnit , params string [ ] expectedValues )
1641
1654
{
1642
1655
var counterEvents = events . Where ( e => e . EventName == "GaugeValuePublished" ) . Select ( e =>
@@ -1658,7 +1671,7 @@ private void AssertGaugeEventsPresent(EventWrittenEventArgs[] events, string met
1658
1671
}
1659
1672
}
1660
1673
1661
- private void AssertHistogramEventsPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1674
+ private static void AssertHistogramEventsPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags ,
1662
1675
string expectedUnit , params ( string , string , string ) [ ] expected )
1663
1676
{
1664
1677
var counterEvents = events . Where ( e => e . EventName == "HistogramValuePublished" ) . Select ( e =>
@@ -1684,7 +1697,7 @@ private void AssertHistogramEventsPresent(EventWrittenEventArgs[] events, string
1684
1697
}
1685
1698
}
1686
1699
1687
- private void AssertHistogramEventsNotPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags )
1700
+ private static void AssertHistogramEventsNotPresent ( EventWrittenEventArgs [ ] events , string meterName , string instrumentName , string tags )
1688
1701
{
1689
1702
var counterEvents = events . Where ( e => e . EventName == "HistogramValuePublished" ) . Select ( e =>
1690
1703
new
@@ -1697,7 +1710,7 @@ private void AssertHistogramEventsNotPresent(EventWrittenEventArgs[] events, str
1697
1710
var filteredEvents = counterEvents . Where ( e => e . MeterName == meterName && e . InstrumentName == instrumentName && e . Tags == tags ) . ToArray ( ) ;
1698
1711
Assert . Equal ( 0 , filteredEvents . Length ) ;
1699
1712
}
1700
- private void AssertCollectStartStopEventsPresent ( EventWrittenEventArgs [ ] events , double expectedIntervalSecs , int expectedPairs )
1713
+ private static void AssertCollectStartStopEventsPresent ( EventWrittenEventArgs [ ] events , double expectedIntervalSecs , int expectedPairs )
1701
1714
{
1702
1715
int startEventsSeen = 0 ;
1703
1716
int stopEventsSeen = 0 ;
@@ -1726,7 +1739,7 @@ private void AssertCollectStartStopEventsPresent(EventWrittenEventArgs[] events,
1726
1739
Assert . Equal ( expectedPairs , stopEventsSeen ) ;
1727
1740
}
1728
1741
1729
- private void AssertObservableCallbackErrorPresent ( EventWrittenEventArgs [ ] events )
1742
+ private static void AssertObservableCallbackErrorPresent ( EventWrittenEventArgs [ ] events )
1730
1743
{
1731
1744
var errorEvents = events . Where ( e => e . EventName == "ObservableInstrumentCallbackError" ) . Select ( e =>
1732
1745
new
@@ -1737,7 +1750,7 @@ private void AssertObservableCallbackErrorPresent(EventWrittenEventArgs[] events
1737
1750
Assert . Contains ( "Example user exception" , errorEvents [ 0 ] . ErrorText ) ;
1738
1751
}
1739
1752
1740
- private void AssertMultipleSessionsConfiguredIncorrectlyErrorEventsPresent ( EventWrittenEventArgs [ ] events ,
1753
+ private static void AssertMultipleSessionsConfiguredIncorrectlyErrorEventsPresent ( EventWrittenEventArgs [ ] events ,
1741
1754
string expectedMaxHistograms , string actualMaxHistograms , string expectedMaxTimeSeries , string actualMaxTimeSeries ,
1742
1755
string expectedRefreshInterval , string actualRefreshInterval )
1743
1756
{
0 commit comments