10
10
11
11
namespace Serilog . Sinks . Async . Tests ;
12
12
13
- public class BackgroundWorkerSinkIntegrationSpec
13
+ public static class BackgroundWorkerSinkIntegrationSpec
14
14
{
15
15
/// <summary>
16
16
/// If <see cref="withDelay" />, then adds a 1sec delay before every fifth element created
17
17
/// </summary>
18
18
static void CreateAudits ( ILogger logger , int count , bool withDelay )
19
19
{
20
- var delay = TimeSpan . FromMilliseconds ( 1000 ) ;
21
- var sw = new Stopwatch ( ) ;
22
- sw . Start ( ) ;
23
- Debug . WriteLine ( "{0:h:mm:ss tt} Start: Writing {1} audits" , DateTime . Now , count ) ;
24
- try
20
+ var delay = TimeSpan . FromMilliseconds ( 1000 ) ;
21
+ var sw = new Stopwatch ( ) ;
22
+ sw . Start ( ) ;
23
+ Debug . WriteLine ( "{0:h:mm:ss tt} Start: Writing {1} audits" , DateTime . Now , count ) ;
24
+ try
25
+ {
26
+ var delayCount = 0 ;
27
+ Loop . For ( counter =>
25
28
{
26
- var delayCount = 0 ;
27
- Loop . For ( counter =>
29
+ if ( withDelay
30
+ && counter > 0
31
+ && counter % 5 == 0 )
28
32
{
29
- if ( withDelay
30
- && counter > 0
31
- && counter % 5 == 0 )
32
- {
33
- delayCount ++ ;
34
- Debug . WriteLine ( "{0:h:mm:ss tt} Delay ({1}) after {2}th write, for {3:0.###}secs" , DateTime . Now ,
35
- delayCount , counter ,
36
- delay . TotalSeconds ) ;
37
- Thread . Sleep ( delay ) ;
38
- }
39
- logger . Information ( "{$Counter}" , counter ) ;
40
- } , count ) ;
41
- }
42
- finally
43
- {
44
- sw . Stop ( ) ;
45
- Debug . WriteLine ( "{0:h:mm:ss tt} End: Writing {1} audits, taking {2:0.###}" , DateTime . Now , count ,
46
- sw . Elapsed . TotalSeconds ) ;
47
- }
33
+ delayCount ++ ;
34
+ Debug . WriteLine ( "{0:h:mm:ss tt} Delay ({1}) after {2}th write, for {3:0.###}secs" , DateTime . Now ,
35
+ delayCount , counter ,
36
+ delay . TotalSeconds ) ;
37
+ Thread . Sleep ( delay ) ;
38
+ }
39
+
40
+ logger . Information ( "{$Counter}" , counter ) ;
41
+ } , count ) ;
42
+ }
43
+ finally
44
+ {
45
+ sw . Stop ( ) ;
46
+ Debug . WriteLine ( "{0:h:mm:ss tt} End: Writing {1} audits, taking {2:0.###}" , DateTime . Now , count ,
47
+ sw . Elapsed . TotalSeconds ) ;
48
48
}
49
+ }
49
50
50
51
static List < LogEvent > RetrieveEvents ( MemorySink sink , int count )
51
52
{
52
- Debug . WriteLine ( "{0:h:mm:ss tt} Retrieving {1} events" , DateTime . Now , count ) ;
53
+ Debug . WriteLine ( "{0:h:mm:ss tt} Retrieving {1} events" , DateTime . Now , count ) ;
53
54
54
- Loop . Retry ( ( ) => sink . Events , events => events != null && events . Count >= count , TimeSpan . FromSeconds ( 1 ) ,
55
- TimeSpan . FromSeconds ( 30 ) ) ;
55
+ Loop . Retry ( ( ) => sink . Events , events => events != null && events . Count >= count , TimeSpan . FromSeconds ( 1 ) ,
56
+ TimeSpan . FromSeconds ( 30 ) ) ;
56
57
57
- return sink . Events . ToList ( ) ;
58
- }
58
+ return sink . Events . ToList ( ) ;
59
+ }
59
60
60
61
public class GivenNoBufferQueueAndNoDelays : SinkSpecBase
61
62
{
62
63
public GivenNoBufferQueueAndNoDelays ( )
63
64
: base ( false , false )
64
65
{
65
- }
66
+ }
66
67
}
67
68
68
69
public class GivenBufferQueueAndNoDelays : SinkSpecBase
69
70
{
70
71
public GivenBufferQueueAndNoDelays ( )
71
72
: base ( true , false )
72
73
{
73
- }
74
+ }
74
75
}
75
76
76
77
public class GivenNoBufferQueueAndDelays : SinkSpecBase
77
78
{
78
79
public GivenNoBufferQueueAndDelays ( )
79
80
: base ( false , true )
80
81
{
81
- }
82
+ }
82
83
}
83
84
84
85
public class GivenBufferQueueAndDelays : SinkSpecBase
85
86
{
86
87
public GivenBufferQueueAndDelays ( )
87
88
: base ( true , true )
88
89
{
89
- }
90
+ }
90
91
}
91
92
92
93
public abstract class SinkSpecBase : IDisposable
93
94
{
94
- bool _delayCreation ;
95
- Logger _logger ;
96
- MemorySink _memorySink ;
95
+ readonly bool _delayCreation ;
96
+ readonly Logger _logger ;
97
+ readonly MemorySink _memorySink ;
97
98
98
99
protected SinkSpecBase ( bool useBufferedQueue , bool delayCreation )
99
100
{
100
- _delayCreation = delayCreation ;
101
+ _delayCreation = delayCreation ;
101
102
102
- _memorySink = new MemorySink ( ) ;
103
+ _memorySink = new MemorySink ( ) ;
103
104
104
- if ( useBufferedQueue )
105
- {
106
- _logger = new LoggerConfiguration ( )
107
- . WriteTo . Async ( a => a . Sink ( _memorySink ) )
108
- . CreateLogger ( ) ;
109
- }
110
- else
111
- {
112
- _logger = new LoggerConfiguration ( )
113
- . WriteTo . Sink ( _memorySink )
114
- . CreateLogger ( ) ;
115
- }
116
-
117
- Debug . WriteLine ( "{0:h:mm:ss tt} Started test" , DateTime . Now ) ;
105
+ if ( useBufferedQueue )
106
+ {
107
+ _logger = new LoggerConfiguration ( )
108
+ . WriteTo . Async ( a => a . Sink ( _memorySink ) )
109
+ . CreateLogger ( ) ;
110
+ }
111
+ else
112
+ {
113
+ _logger = new LoggerConfiguration ( )
114
+ . WriteTo . Sink ( _memorySink )
115
+ . CreateLogger ( ) ;
118
116
}
119
117
118
+ Debug . WriteLine ( "{0:h:mm:ss tt} Started test" , DateTime . Now ) ;
119
+ }
120
+
120
121
public void Dispose ( )
121
122
{
122
- _logger . Dispose ( ) ;
123
- Debug . WriteLine ( "{0:h:mm:ss tt} Ended test" , DateTime . Now ) ;
124
- }
123
+ _logger . Dispose ( ) ;
124
+ Debug . WriteLine ( "{0:h:mm:ss tt} Ended test" , DateTime . Now ) ;
125
+ }
125
126
126
127
[ Fact ]
127
128
public void WhenAuditSingle_ThenQueued ( )
128
129
{
129
- CreateAudits ( _logger , 1 , _delayCreation ) ;
130
+ CreateAudits ( _logger , 1 , _delayCreation ) ;
130
131
131
- var result = RetrieveEvents ( _memorySink , 1 ) ;
132
+ var result = RetrieveEvents ( _memorySink , 1 ) ;
132
133
133
- Assert . Single ( result ) ;
134
- }
134
+ Assert . Single ( result ) ;
135
+ }
135
136
136
137
[ Fact ]
137
138
public void WhenAuditTen_ThenQueued ( )
138
139
{
139
- CreateAudits ( _logger , 10 , _delayCreation ) ;
140
+ CreateAudits ( _logger , 10 , _delayCreation ) ;
140
141
141
- var result = RetrieveEvents ( _memorySink , 10 ) ;
142
+ var result = RetrieveEvents ( _memorySink , 10 ) ;
142
143
143
- Assert . Equal ( 10 , result . Count ) ;
144
- }
144
+ Assert . Equal ( 10 , result . Count ) ;
145
+ }
145
146
146
147
[ Fact ]
147
148
public void WhenAuditHundred_ThenQueued ( )
148
149
{
149
- CreateAudits ( _logger , 100 , _delayCreation ) ;
150
+ CreateAudits ( _logger , 100 , _delayCreation ) ;
150
151
151
- var result = RetrieveEvents ( _memorySink , 100 ) ;
152
+ var result = RetrieveEvents ( _memorySink , 100 ) ;
152
153
153
- Assert . Equal ( 100 , result . Count ) ;
154
- }
154
+ Assert . Equal ( 100 , result . Count ) ;
155
+ }
155
156
156
157
[ Fact ]
157
158
public void WhenAuditFiveHundred_ThenQueued ( )
158
159
{
159
- CreateAudits ( _logger , 500 , _delayCreation ) ;
160
+ CreateAudits ( _logger , 500 , _delayCreation ) ;
160
161
161
- var result = RetrieveEvents ( _memorySink , 500 ) ;
162
+ var result = RetrieveEvents ( _memorySink , 500 ) ;
162
163
163
- Assert . Equal ( 500 , result . Count ) ;
164
- }
164
+ Assert . Equal ( 500 , result . Count ) ;
165
+ }
165
166
}
166
167
}
0 commit comments