@@ -20,6 +20,7 @@ public RuntimeCounterListener(){}
20
20
21
21
private DateTime ? setToZeroTimestamp = null ;
22
22
private DateTime ? mostRecentTimestamp = null ;
23
+ private ManualResetEvent setToZero = new ManualResetEvent ( initialState : false ) ;
23
24
public ManualResetEvent ReadyToVerify { get ; } = new ManualResetEvent ( initialState : false ) ;
24
25
25
26
protected override void OnEventSourceCreated ( EventSource source )
@@ -28,7 +29,7 @@ protected override void OnEventSourceCreated(EventSource source)
28
29
{
29
30
Dictionary < string , string > refreshInterval = new Dictionary < string , string > ( ) ;
30
31
31
- Console . WriteLine ( $ "[{ DateTime . Now : hh:mm:ss.fff} ] Setting interval to 1") ;
32
+ Console . WriteLine ( $ "[{ DateTime . UtcNow : hh:mm:ss.fff} ] OnEventSourceCreated :: Setting interval to 1") ;
32
33
// first set interval to 1 seconds
33
34
refreshInterval [ "EventCounterIntervalSec" ] = "1" ;
34
35
EnableEvents ( source , EventLevel . Informational , ( EventKeywords ) ( - 1 ) , refreshInterval ) ;
@@ -37,32 +38,42 @@ protected override void OnEventSourceCreated(EventSource source)
37
38
Thread . Sleep ( TimeSpan . FromSeconds ( 3 ) ) ;
38
39
39
40
// then set interval to 0
40
- Console . WriteLine ( $ "[{ DateTime . Now : hh:mm:ss.fff} ] Setting interval to 0") ;
41
+ Console . WriteLine ( $ "[{ DateTime . UtcNow : hh:mm:ss.fff} ] OnEventSourceCreated :: Setting interval to 0") ;
41
42
refreshInterval [ "EventCounterIntervalSec" ] = "0" ;
42
43
EnableEvents ( source , EventLevel . Informational , ( EventKeywords ) ( - 1 ) , refreshInterval ) ;
43
- setToZeroTimestamp = DateTime . Now + TimeSpan . FromSeconds ( 1 ) ; // Stash timestamp 1 second after setting to 0
44
+ setToZeroTimestamp = DateTime . UtcNow + TimeSpan . FromSeconds ( 1 ) ; // Stash timestamp 1 second after setting to 0
45
+ setToZero . Set ( ) ;
44
46
45
47
// then attempt to set interval back to 1
46
48
Thread . Sleep ( TimeSpan . FromSeconds ( 3 ) ) ;
47
- Console . WriteLine ( $ "[{ DateTime . Now : hh:mm:ss.fff} ] Setting interval to 1") ;
49
+ Console . WriteLine ( $ "[{ DateTime . UtcNow : hh:mm:ss.fff} ] OnEventSourceCreated :: Setting interval to 1") ;
48
50
refreshInterval [ "EventCounterIntervalSec" ] = "1" ;
49
51
EnableEvents ( source , EventLevel . Informational , ( EventKeywords ) ( - 1 ) , refreshInterval ) ;
50
- Thread . Sleep ( TimeSpan . FromSeconds ( 3 ) ) ;
51
- Console . WriteLine ( $ "[{ DateTime . Now : hh:mm:ss.fff} ] Setting ReadyToVerify") ;
52
- ReadyToVerify . Set ( ) ;
53
52
}
54
53
}
55
54
56
55
protected override void OnEventWritten ( EventWrittenEventArgs eventData )
57
56
{
58
- mostRecentTimestamp = eventData . TimeStamp ;
57
+ if ( ! ReadyToVerify . WaitOne ( 0 ) )
58
+ {
59
+ mostRecentTimestamp = eventData . TimeStamp ;
60
+ if ( setToZero . WaitOne ( 0 ) && mostRecentTimestamp > setToZeroTimestamp )
61
+ {
62
+ Console . WriteLine ( $ "[{ DateTime . UtcNow : hh:mm:ss.fff} ] OnEventWritten :: Setting ReadyToVerify") ;
63
+ ReadyToVerify . Set ( ) ;
64
+ }
65
+ }
59
66
}
60
67
61
68
public bool Verify ( )
62
69
{
63
70
if ( ! ReadyToVerify . WaitOne ( 0 ) )
64
71
return false ;
65
72
73
+ Console . WriteLine ( $ "[{ DateTime . UtcNow : hh:mm:ss.fff} ] Verify :: Verifying") ;
74
+ Console . WriteLine ( $ "[{ DateTime . UtcNow : hh:mm:ss.fff} ] setToZeroTimestamp = { setToZeroTimestamp ? . ToString ( "hh:mm:ss.fff" ) ?? "NULL" } ") ;
75
+ Console . WriteLine ( $ "[{ DateTime . UtcNow : hh:mm:ss.fff} ] mostRecentTimestamp = { mostRecentTimestamp ? . ToString ( "hh:mm:ss.fff" ) ?? "NULL" } ") ;
76
+
66
77
return ( setToZeroTimestamp is null || mostRecentTimestamp is null ) ? false : setToZeroTimestamp < mostRecentTimestamp ;
67
78
}
68
79
}
@@ -74,9 +85,8 @@ public static int Main(string[] args)
74
85
// Create an EventListener.
75
86
using ( RuntimeCounterListener myListener = new RuntimeCounterListener ( ) )
76
87
{
77
- if ( myListener . ReadyToVerify . WaitOne ( TimeSpan . FromSeconds ( 15 ) ) )
88
+ if ( myListener . ReadyToVerify . WaitOne ( TimeSpan . FromSeconds ( 30 ) ) )
78
89
{
79
- Console . WriteLine ( $ "[{ DateTime . Now : hh:mm:ss.fff} ] Ready to verify") ;
80
90
if ( myListener . Verify ( ) )
81
91
{
82
92
Console . WriteLine ( "Test passed" ) ;
0 commit comments