Skip to content

Commit 90b9a24

Browse files
authored
Port Akka.Tests.Actor.Scheduler tests to async/await (#5753)
1 parent f5e115d commit 90b9a24

4 files changed

+86
-82
lines changed

src/core/Akka.Tests/Actor/Scheduler/TaskBasedScheduler_ActionScheduler_Cancellation_Tests.cs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
//-----------------------------------------------------------------------
77

88
using System;
9+
using System.Threading.Tasks;
910
using Akka.Actor;
1011
using Akka.TestKit;
1112
using Akka.Util.Internal;
@@ -17,7 +18,7 @@ namespace Akka.Tests.Actor.Scheduler
1718
public class DefaultScheduler_ActionScheduler_Cancellation_Tests : AkkaSpec
1819
{
1920
[Fact]
20-
public void When_ScheduleOnce_using_canceled_Cancelable_Then_their_actions_should_not_be_invoked()
21+
public async Task When_ScheduleOnce_using_canceled_Cancelable_Then_their_actions_should_not_be_invoked()
2122
{
2223
// Prepare, set up actions to be fired
2324
IActionScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -28,7 +29,7 @@ public void When_ScheduleOnce_using_canceled_Cancelable_Then_their_actions_shoul
2829
scheduler.ScheduleOnce(0, () => TestActor.Tell("Test"), canceled);
2930

3031
//Validate that no messages were sent
31-
ExpectNoMsg(100);
32+
await ExpectNoMsgAsync(100);
3233
}
3334
finally
3435
{
@@ -37,7 +38,7 @@ public void When_ScheduleOnce_using_canceled_Cancelable_Then_their_actions_shoul
3738
}
3839

3940
[Fact]
40-
public void When_ScheduleRepeatedly_using_canceled_Cancelable_Then_their_actions_should_not_be_invoked()
41+
public async Task When_ScheduleRepeatedly_using_canceled_Cancelable_Then_their_actions_should_not_be_invoked()
4142
{
4243
// Prepare, set up actions to be fired
4344
IActionScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -49,7 +50,7 @@ public void When_ScheduleRepeatedly_using_canceled_Cancelable_Then_their_actions
4950
scheduler.ScheduleRepeatedly(50, 100, () => TestActor.Tell("Test2"), canceled);
5051

5152
//Validate that no messages were sent
52-
ExpectNoMsg(150);
53+
await ExpectNoMsgAsync(150);
5354
}
5455
finally
5556
{
@@ -58,7 +59,7 @@ public void When_ScheduleRepeatedly_using_canceled_Cancelable_Then_their_actions
5859
}
5960

6061
[Fact]
61-
public void When_ScheduleOnce_and_then_canceling_before_they_occur_Then_their_actions_should_not_be_invoked()
62+
public async Task When_ScheduleOnce_and_then_canceling_before_they_occur_Then_their_actions_should_not_be_invoked()
6263
{
6364
// Prepare, set up actions to be fired
6465
IActionScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -70,7 +71,7 @@ public void When_ScheduleOnce_and_then_canceling_before_they_occur_Then_their_ac
7071
cancelable.Cancel();
7172

7273
//Validate that no messages were sent
73-
ExpectNoMsg(150);
74+
await ExpectNoMsgAsync(150);
7475
}
7576
finally
7677
{
@@ -79,7 +80,7 @@ public void When_ScheduleOnce_and_then_canceling_before_they_occur_Then_their_ac
7980
}
8081

8182
[Fact]
82-
public void When_ScheduleRepeatedly_and_then_canceling_before_they_occur_Then_their_actions_should_not_be_invoked()
83+
public async Task When_ScheduleRepeatedly_and_then_canceling_before_they_occur_Then_their_actions_should_not_be_invoked()
8384
{
8485
// Prepare, set up actions to be fired
8586
IActionScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -91,7 +92,7 @@ public void When_ScheduleRepeatedly_and_then_canceling_before_they_occur_Then_th
9192
cancelable.Cancel();
9293

9394
//Validate that no messages were sent
94-
ExpectNoMsg(150);
95+
await ExpectNoMsgAsync(150);
9596
}
9697
finally
9798
{
@@ -100,7 +101,7 @@ public void When_ScheduleRepeatedly_and_then_canceling_before_they_occur_Then_th
100101
}
101102

102103
[Fact]
103-
public void When_canceling_existing_running_repeaters_Then_their_future_actions_should_not_be_invoked()
104+
public async Task When_canceling_existing_running_repeaters_Then_their_future_actions_should_not_be_invoked()
104105
{
105106
// Prepare, set up actions to be fired
106107
IActionScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -109,11 +110,11 @@ public void When_canceling_existing_running_repeaters_Then_their_future_actions_
109110
{
110111
var cancelable = new Cancelable(scheduler);
111112
scheduler.ScheduleRepeatedly(0, 150, () => TestActor.Tell("Test"), cancelable);
112-
ExpectMsg("Test");
113+
await ExpectMsgAsync("Test");
113114
cancelable.Cancel();
114115

115116
//Validate that no more messages were sent
116-
ExpectNoMsg(200);
117+
await ExpectNoMsgAsync(200);
117118
}
118119
finally
119120
{
@@ -124,7 +125,7 @@ public void When_canceling_existing_running_repeaters_Then_their_future_actions_
124125
// Might be racy, failed at least once in Azure Pipelines.
125126
// Passed 500 consecutive local test runs with no fail with very heavy load without modification
126127
[Fact]
127-
public void When_canceling_existing_running_repeaters_by_scheduling_the_cancellation_ahead_of_time_Then_their_future_actions_should_not_be_invoked()
128+
public async Task When_canceling_existing_running_repeaters_by_scheduling_the_cancellation_ahead_of_time_Then_their_future_actions_should_not_be_invoked()
128129
{
129130
// Prepare, set up actions to be fired
130131
IActionScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -136,10 +137,10 @@ public void When_canceling_existing_running_repeaters_by_scheduling_the_cancella
136137
cancelableOdd.CancelAfter(50);
137138

138139
//Expect one message
139-
ExpectMsg("Test");
140+
await ExpectMsgAsync("Test");
140141

141142
//Validate that no messages were sent
142-
ExpectNoMsg(200);
143+
await ExpectNoMsgAsync(200);
143144
}
144145
finally
145146
{

src/core/Akka.Tests/Actor/Scheduler/TaskBasedScheduler_ActionScheduler_Schedule_Tests.cs

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System;
99
using System.Collections.Generic;
1010
using System.Threading;
11+
using System.Threading.Tasks;
1112
using Akka.Actor;
1213
using Akka.TestKit;
1314
using Akka.Util.Internal;
@@ -21,7 +22,7 @@ public class DefaultScheduler_ActionScheduler_Schedule_Tests : AkkaSpec
2122
{
2223
[Theory]
2324
[InlineData(10, 1000)]
24-
public void ScheduleRepeatedly_in_milliseconds_Tests_and_verify_the_interval(int initialDelay, int interval)
25+
public async Task ScheduleRepeatedly_in_milliseconds_Tests_and_verify_the_interval(int initialDelay, int interval)
2526
{
2627
// Prepare, set up actions to be fired
2728
IActionScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -48,7 +49,7 @@ public void ScheduleRepeatedly_in_milliseconds_Tests_and_verify_the_interval(int
4849
scheduler.ScheduleRepeatedly(initialDelay, interval, () => receiver.Tell(""), cancelable);
4950

5051
//Expect to get a list from receiver after it has received three messages
51-
var dateTimeOffsets = ExpectMsg<List<DateTimeOffset>>();
52+
var dateTimeOffsets = await ExpectMsgAsync<List<DateTimeOffset>>();
5253
dateTimeOffsets.ShouldHaveCount(3);
5354
Action<int, int> validate = (a, b) =>
5455
{
@@ -76,7 +77,7 @@ public void ScheduleRepeatedly_in_milliseconds_Tests_and_verify_the_interval(int
7677
[Theory]
7778
[InlineData(50, 50)]
7879
[InlineData(00, 50)]
79-
public void ScheduleRepeatedly_in_milliseconds_Tests(int initialDelay, int interval)
80+
public async Task ScheduleRepeatedly_in_milliseconds_Tests(int initialDelay, int interval)
8081
{
8182
// Prepare, set up actions to be fired
8283
IActionScheduler testScheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -86,9 +87,9 @@ public void ScheduleRepeatedly_in_milliseconds_Tests(int initialDelay, int inter
8687
testScheduler.ScheduleRepeatedly(initialDelay, interval, () => TestActor.Tell("Test"));
8788

8889
//Just check that we receives more than one message
89-
ExpectMsg("Test");
90-
ExpectMsg("Test");
91-
ExpectMsg("Test");
90+
await ExpectMsgAsync("Test");
91+
await ExpectMsgAsync("Test");
92+
await ExpectMsgAsync("Test");
9293
}
9394
finally
9495
{
@@ -99,7 +100,7 @@ public void ScheduleRepeatedly_in_milliseconds_Tests(int initialDelay, int inter
99100
[Theory]
100101
[InlineData(50, 50)]
101102
[InlineData(00, 50)]
102-
public void ScheduleRepeatedly_in_TimeSpan_Tests(int initialDelay, int interval)
103+
public async Task ScheduleRepeatedly_in_TimeSpan_Tests(int initialDelay, int interval)
103104
{
104105
// Prepare, set up actions to be fired
105106
IActionScheduler testScheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -110,9 +111,9 @@ public void ScheduleRepeatedly_in_TimeSpan_Tests(int initialDelay, int interval)
110111
TimeSpan.FromMilliseconds(interval), () => TestActor.Tell("Test"));
111112

112113
//Just check that we receives more than one message
113-
ExpectMsg("Test");
114-
ExpectMsg("Test");
115-
ExpectMsg("Test");
114+
await ExpectMsgAsync("Test");
115+
await ExpectMsgAsync("Test");
116+
await ExpectMsgAsync("Test");
116117
}
117118
finally
118119
{
@@ -122,7 +123,7 @@ public void ScheduleRepeatedly_in_TimeSpan_Tests(int initialDelay, int interval)
122123

123124

124125
[Fact]
125-
public void ScheduleOnceTests()
126+
public async Task ScheduleOnceTests()
126127
{
127128
// Prepare, set up actions to be fired
128129
IActionScheduler testScheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -132,10 +133,10 @@ public void ScheduleOnceTests()
132133
testScheduler.ScheduleOnce(50, () => TestActor.Tell("Test1"));
133134
testScheduler.ScheduleOnce(100, () => TestActor.Tell("Test2"));
134135

135-
ExpectMsg("Test1");
136-
ExpectMsg("Test2");
136+
await ExpectMsgAsync("Test1");
137+
await ExpectMsgAsync("Test2");
137138

138-
ExpectNoMsg(100);
139+
await ExpectNoMsgAsync(100);
139140
}
140141
finally
141142
{
@@ -147,7 +148,7 @@ public void ScheduleOnceTests()
147148

148149
[Theory]
149150
[InlineData(new int[] { 1, 1, 50, 50, 100, 100 })]
150-
public void When_ScheduleOnce_many_at_the_same_time_Then_all_fires(int[] times)
151+
public async Task When_ScheduleOnce_many_at_the_same_time_Then_all_fires(int[] times)
151152
{
152153
// Prepare, set up actions to be fired
153154
IActionScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -161,13 +162,13 @@ public void When_ScheduleOnce_many_at_the_same_time_Then_all_fires(int[] times)
161162
}
162163

163164
//Perform the test
164-
ExpectMsg("Test1");
165-
ExpectMsg("Test1");
166-
ExpectMsg("Test50");
167-
ExpectMsg("Test50");
168-
ExpectMsg("Test100");
169-
ExpectMsg("Test100");
170-
ExpectNoMsg(50);
165+
await ExpectMsgAsync("Test1");
166+
await ExpectMsgAsync("Test1");
167+
await ExpectMsgAsync("Test50");
168+
await ExpectMsgAsync("Test50");
169+
await ExpectMsgAsync("Test100");
170+
await ExpectMsgAsync("Test100");
171+
await ExpectNoMsgAsync(50);
171172
}
172173
finally
173174
{
@@ -273,7 +274,7 @@ public void When_ScheduleRepeatedly_with_0_delay_Then_action_is_executed_immedia
273274
}
274275

275276
[Fact]
276-
public void When_ScheduleRepeatedly_action_crashes_Then_no_more_calls_will_be_scheduled()
277+
public async Task When_ScheduleRepeatedly_action_crashes_Then_no_more_calls_will_be_scheduled()
277278
{
278279
IActionScheduler testScheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
279280

@@ -285,8 +286,8 @@ public void When_ScheduleRepeatedly_action_crashes_Then_no_more_calls_will_be_sc
285286
Interlocked.Increment(ref timesCalled);
286287
throw new Exception("Crash");
287288
});
288-
AwaitCondition(() => timesCalled >= 1);
289-
Thread.Sleep(200); //Allow any scheduled actions to be fired.
289+
await AwaitConditionAsync(() => timesCalled >= 1);
290+
await Task.Delay(200); //Allow any scheduled actions to be fired.
290291

291292
//We expect only one of the scheduled actions to actually fire
292293
timesCalled.ShouldBe(1);

src/core/Akka.Tests/Actor/Scheduler/TaskBasedScheduler_TellScheduler_Cancellation_Tests.cs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
//-----------------------------------------------------------------------
77

88
using System;
9+
using System.Threading.Tasks;
910
using Akka.Actor;
1011
using Akka.TestKit;
1112
using Akka.Util.Internal;
@@ -17,7 +18,7 @@ namespace Akka.Tests.Actor.Scheduler
1718
public class DefaultScheduler_TellScheduler_Cancellation_Tests : AkkaSpec
1819
{
1920
[Fact]
20-
public void When_ScheduleTellOnce_using_canceled_Cancelable_Then_their_actions_should_not_be_invoked()
21+
public async Task When_ScheduleTellOnce_using_canceled_Cancelable_Then_their_actions_should_not_be_invoked()
2122
{
2223
// Prepare, set up actions to be fired
2324
ITellScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -29,7 +30,7 @@ public void When_ScheduleTellOnce_using_canceled_Cancelable_Then_their_actions_s
2930
scheduler.ScheduleTellOnce(1, TestActor, "Test", ActorRefs.NoSender, canceled);
3031

3132
//Validate that no messages were sent
32-
ExpectNoMsg(100);
33+
await ExpectNoMsgAsync(100);
3334
}
3435
finally
3536
{
@@ -38,7 +39,7 @@ public void When_ScheduleTellOnce_using_canceled_Cancelable_Then_their_actions_s
3839
}
3940

4041
[Fact]
41-
public void When_ScheduleTellRepeatedly_using_canceled_Cancelable_Then_their_actions_should_not_be_invoked()
42+
public async Task When_ScheduleTellRepeatedly_using_canceled_Cancelable_Then_their_actions_should_not_be_invoked()
4243
{
4344
// Prepare, set up actions to be fired
4445
ITellScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -50,7 +51,7 @@ public void When_ScheduleTellRepeatedly_using_canceled_Cancelable_Then_their_act
5051
scheduler.ScheduleTellRepeatedly(1, 2, TestActor, "Test", ActorRefs.NoSender, canceled);
5152

5253
//Validate that no messages were sent
53-
ExpectNoMsg(100);
54+
await ExpectNoMsgAsync(100);
5455
}
5556
finally
5657
{
@@ -59,7 +60,7 @@ public void When_ScheduleTellRepeatedly_using_canceled_Cancelable_Then_their_act
5960
}
6061

6162
[Fact]
62-
public void When_ScheduleTellOnce_and_then_canceling_before_they_occur_Then_their_actions_should_not_be_invoked()
63+
public async Task When_ScheduleTellOnce_and_then_canceling_before_they_occur_Then_their_actions_should_not_be_invoked()
6364
{
6465
// Prepare, set up actions to be fired
6566
IScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -71,7 +72,7 @@ public void When_ScheduleTellOnce_and_then_canceling_before_they_occur_Then_thei
7172
cancelable.Cancel();
7273

7374
//Validate that no messages were sent
74-
ExpectNoMsg(150);
75+
await ExpectNoMsgAsync(150);
7576
}
7677
finally
7778
{
@@ -81,7 +82,7 @@ public void When_ScheduleTellOnce_and_then_canceling_before_they_occur_Then_thei
8182

8283

8384
[Fact]
84-
public void When_ScheduleTellRepeatedly_and_then_canceling_before_they_occur_Then_their_actions_should_not_be_invoked()
85+
public async Task When_ScheduleTellRepeatedly_and_then_canceling_before_they_occur_Then_their_actions_should_not_be_invoked()
8586
{
8687
// Prepare, set up actions to be fired
8788
IScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -93,7 +94,7 @@ public void When_ScheduleTellRepeatedly_and_then_canceling_before_they_occur_The
9394
cancelable.Cancel();
9495

9596
//Validate that no messages were sent
96-
ExpectNoMsg(150);
97+
await ExpectNoMsgAsync(150);
9798
}
9899
finally
99100
{
@@ -103,7 +104,7 @@ public void When_ScheduleTellRepeatedly_and_then_canceling_before_they_occur_The
103104

104105

105106
[Fact]
106-
public void When_canceling_existing_running_repeaters_Then_their_future_actions_should_not_be_invoked()
107+
public async Task When_canceling_existing_running_repeaters_Then_their_future_actions_should_not_be_invoked()
107108
{
108109
// Prepare, set up actions to be fired
109110
IScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -112,11 +113,11 @@ public void When_canceling_existing_running_repeaters_Then_their_future_actions_
112113
{
113114
var cancelable = new Cancelable(scheduler);
114115
scheduler.ScheduleTellRepeatedly(0, 150, TestActor, "Test", ActorRefs.NoSender, cancelable);
115-
ExpectMsg("Test");
116+
await ExpectMsgAsync("Test");
116117
cancelable.Cancel();
117118

118119
//Validate that no more messages were sent
119-
ExpectNoMsg(200);
120+
await ExpectNoMsgAsync(200);
120121
}
121122
finally
122123
{
@@ -126,7 +127,7 @@ public void When_canceling_existing_running_repeaters_Then_their_future_actions_
126127
}
127128

128129
[Fact]
129-
public void When_canceling_existing_running_repeaters_by_scheduling_the_cancellation_ahead_of_time_Then_their_future_actions_should_not_be_invoked()
130+
public async Task When_canceling_existing_running_repeaters_by_scheduling_the_cancellation_ahead_of_time_Then_their_future_actions_should_not_be_invoked()
130131
{
131132
// Prepare, set up actions to be fired
132133
IScheduler scheduler = new HashedWheelTimerScheduler(Sys.Settings.Config, Log);
@@ -138,10 +139,10 @@ public void When_canceling_existing_running_repeaters_by_scheduling_the_cancella
138139
cancelableOdd.CancelAfter(50);
139140

140141
//Expect one message
141-
ExpectMsg("Test");
142+
await ExpectMsgAsync("Test");
142143

143144
//Validate that no messages were sent
144-
ExpectNoMsg(200);
145+
await ExpectNoMsgAsync(200);
145146
}
146147
finally
147148
{

0 commit comments

Comments
 (0)