@@ -46,83 +46,6 @@ protected override async Task CleanupQueueAsync(IQueue<SimpleWorkItem> queue)
4646 }
4747 }
4848
49- [ Fact ]
50- public async Task TestAsyncEvents ( )
51- {
52- using var q = new InMemoryQueue < SimpleWorkItem > ( o => o . LoggerFactory ( Log ) ) ;
53- var disposables = new List < IDisposable > ( 5 ) ;
54- try
55- {
56- disposables . Add ( q . Enqueuing . AddHandler ( async ( sender , args ) =>
57- {
58- await Task . Delay ( 250 ) ;
59- _logger . LogInformation ( "First Enqueuing" ) ;
60- } ) ) ;
61- disposables . Add ( q . Enqueuing . AddHandler ( async ( sender , args ) =>
62- {
63- await Task . Delay ( 250 ) ;
64- _logger . LogInformation ( "Second Enqueuing" ) ;
65- } ) ) ;
66- disposables . Add ( q . Enqueued . AddHandler ( async ( sender , args ) =>
67- {
68- await Task . Delay ( 250 ) ;
69- _logger . LogInformation ( "First" ) ;
70- } ) ) ;
71- disposables . Add ( q . Enqueued . AddHandler ( async ( sender , args ) =>
72- {
73- await Task . Delay ( 250 ) ;
74- _logger . LogInformation ( "Second" ) ;
75- } ) ) ;
76-
77- var sw = Stopwatch . StartNew ( ) ;
78- await q . EnqueueAsync ( new SimpleWorkItem ( ) ) ;
79- sw . Stop ( ) ;
80- if ( _logger . IsEnabled ( LogLevel . Trace ) ) _logger . LogTrace ( "Time {Elapsed:g}" , sw . Elapsed ) ;
81-
82- sw . Restart ( ) ;
83- await q . EnqueueAsync ( new SimpleWorkItem ( ) ) ;
84- sw . Stop ( ) ;
85- if ( _logger . IsEnabled ( LogLevel . Trace ) ) _logger . LogTrace ( "Time {Elapsed:g}" , sw . Elapsed ) ;
86- }
87- finally
88- {
89- foreach ( var disposable in disposables )
90- disposable . Dispose ( ) ;
91- }
92- }
93-
94- [ Fact ]
95- public async Task CanGetCompletedEntries ( )
96- {
97- using var q = new InMemoryQueue < SimpleWorkItem > ( o => o . LoggerFactory ( Log ) . CompletedEntryRetentionLimit ( 10 ) ) ;
98-
99- await q . EnqueueAsync ( new SimpleWorkItem ( ) ) ;
100- Assert . Single ( q . GetEntries ( ) ) ;
101- Assert . Empty ( q . GetDequeuedEntries ( ) ) ;
102- Assert . Empty ( q . GetCompletedEntries ( ) ) ;
103-
104- var item = await q . DequeueAsync ( ) ;
105- Assert . Empty ( q . GetEntries ( ) ) ;
106- Assert . Single ( q . GetDequeuedEntries ( ) ) ;
107- Assert . Empty ( q . GetCompletedEntries ( ) ) ;
108-
109- await item . CompleteAsync ( ) ;
110- Assert . Empty ( q . GetEntries ( ) ) ;
111- Assert . Empty ( q . GetDequeuedEntries ( ) ) ;
112- Assert . Single ( q . GetCompletedEntries ( ) ) ;
113-
114- for ( int i = 0 ; i < 100 ; i ++ )
115- {
116- await q . EnqueueAsync ( new SimpleWorkItem ( ) ) ;
117- item = await q . DequeueAsync ( ) ;
118- await item . CompleteAsync ( ) ;
119- }
120-
121- Assert . Empty ( q . GetEntries ( ) ) ;
122- Assert . Empty ( q . GetDequeuedEntries ( ) ) ;
123- Assert . Equal ( 10 , q . GetCompletedEntries ( ) . Count ) ;
124- }
125-
12649 [ Fact ]
12750 public override Task CanQueueAndDequeueWorkItemAsync ( )
12851 {
@@ -291,6 +214,83 @@ public override Task CanHandleAutoAbandonInWorker()
291214 return base . CanHandleAutoAbandonInWorker ( ) ;
292215 }
293216
217+ [ Fact ]
218+ public async Task TestAsyncEvents ( )
219+ {
220+ using var q = new InMemoryQueue < SimpleWorkItem > ( o => o . LoggerFactory ( Log ) ) ;
221+ var disposables = new List < IDisposable > ( 5 ) ;
222+ try
223+ {
224+ disposables . Add ( q . Enqueuing . AddHandler ( async ( sender , args ) =>
225+ {
226+ await Task . Delay ( 250 ) ;
227+ _logger . LogInformation ( "First Enqueuing" ) ;
228+ } ) ) ;
229+ disposables . Add ( q . Enqueuing . AddHandler ( async ( sender , args ) =>
230+ {
231+ await Task . Delay ( 250 ) ;
232+ _logger . LogInformation ( "Second Enqueuing" ) ;
233+ } ) ) ;
234+ disposables . Add ( q . Enqueued . AddHandler ( async ( sender , args ) =>
235+ {
236+ await Task . Delay ( 250 ) ;
237+ _logger . LogInformation ( "First" ) ;
238+ } ) ) ;
239+ disposables . Add ( q . Enqueued . AddHandler ( async ( sender , args ) =>
240+ {
241+ await Task . Delay ( 250 ) ;
242+ _logger . LogInformation ( "Second" ) ;
243+ } ) ) ;
244+
245+ var sw = Stopwatch . StartNew ( ) ;
246+ await q . EnqueueAsync ( new SimpleWorkItem ( ) ) ;
247+ sw . Stop ( ) ;
248+ if ( _logger . IsEnabled ( LogLevel . Trace ) ) _logger . LogTrace ( "Time {Elapsed:g}" , sw . Elapsed ) ;
249+
250+ sw . Restart ( ) ;
251+ await q . EnqueueAsync ( new SimpleWorkItem ( ) ) ;
252+ sw . Stop ( ) ;
253+ if ( _logger . IsEnabled ( LogLevel . Trace ) ) _logger . LogTrace ( "Time {Elapsed:g}" , sw . Elapsed ) ;
254+ }
255+ finally
256+ {
257+ foreach ( var disposable in disposables )
258+ disposable . Dispose ( ) ;
259+ }
260+ }
261+
262+ [ Fact ]
263+ public async Task CanGetCompletedEntries ( )
264+ {
265+ using var q = new InMemoryQueue < SimpleWorkItem > ( o => o . LoggerFactory ( Log ) . CompletedEntryRetentionLimit ( 10 ) ) ;
266+
267+ await q . EnqueueAsync ( new SimpleWorkItem ( ) ) ;
268+ Assert . Single ( q . GetEntries ( ) ) ;
269+ Assert . Empty ( q . GetDequeuedEntries ( ) ) ;
270+ Assert . Empty ( q . GetCompletedEntries ( ) ) ;
271+
272+ var item = await q . DequeueAsync ( ) ;
273+ Assert . Empty ( q . GetEntries ( ) ) ;
274+ Assert . Single ( q . GetDequeuedEntries ( ) ) ;
275+ Assert . Empty ( q . GetCompletedEntries ( ) ) ;
276+
277+ await item . CompleteAsync ( ) ;
278+ Assert . Empty ( q . GetEntries ( ) ) ;
279+ Assert . Empty ( q . GetDequeuedEntries ( ) ) ;
280+ Assert . Single ( q . GetCompletedEntries ( ) ) ;
281+
282+ for ( int i = 0 ; i < 100 ; i ++ )
283+ {
284+ await q . EnqueueAsync ( new SimpleWorkItem ( ) ) ;
285+ item = await q . DequeueAsync ( ) ;
286+ await item . CompleteAsync ( ) ;
287+ }
288+
289+ Assert . Empty ( q . GetEntries ( ) ) ;
290+ Assert . Empty ( q . GetDequeuedEntries ( ) ) ;
291+ Assert . Equal ( 10 , q . GetCompletedEntries ( ) . Count ) ;
292+ }
293+
294294 #region Issue239
295295
296296 class QueueEntry_Issue239 < T > : IQueueEntry < T > where T : class
0 commit comments