Skip to content

Commit 3e315ea

Browse files
committed
add rate limit to test, instead of random delay
1 parent 31cc6e5 commit 3e315ea

13 files changed

+111
-77
lines changed

src/allow_failure_test.mbt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
///|
1616
async test "allow_failure ignored" {
17-
random_delay()
17+
rate_limit.acquire()
18+
defer rate_limit.release()
1819
let buf = StringBuilder::new()
1920
@async.with_task_group(fn(root) {
2021
root.spawn_bg(allow_failure=true, fn() { raise Err })
@@ -32,7 +33,8 @@ async test "allow_failure ignored" {
3233

3334
///|
3435
async test "allow_failure waited" {
35-
random_delay()
36+
rate_limit.acquire()
37+
defer rate_limit.release()
3638
let buf = StringBuilder::new()
3739
buf.write_object(
3840
try? @async.with_task_group(fn(root) {
@@ -47,7 +49,8 @@ async test "allow_failure waited" {
4749

4850
///|
4951
async test "allow_failure no error" {
50-
random_delay()
52+
rate_limit.acquire()
53+
defer rate_limit.release()
5154
let buf = StringBuilder::new()
5255
buf.write_object(
5356
try? @async.with_task_group(fn(root) {

src/cancellation_test.mbt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
///|
1616
async test "manual cancel" {
17-
random_delay()
17+
rate_limit.acquire()
18+
defer rate_limit.release()
1819
let buf = StringBuilder::new()
1920
let result = try? @async.with_task_group(fn(root) {
2021
let task = root.spawn(allow_failure=true, fn() {
@@ -49,7 +50,8 @@ suberror Err derive(Show)
4950

5051
///|
5152
async test "error propagation" {
52-
random_delay()
53+
rate_limit.acquire()
54+
defer rate_limit.release()
5355
let buf = StringBuilder::new()
5456
let result = try? @async.with_task_group(fn(root) {
5557
root.spawn_bg(fn() {
@@ -85,7 +87,8 @@ async test "error propagation" {
8587

8688
///|
8789
async test "multiple scope" {
88-
random_delay()
90+
rate_limit.acquire()
91+
defer rate_limit.release()
8992
let buf = StringBuilder::new()
9093
@async.with_task_group(fn(root) {
9194
root.spawn_bg(fn() {
@@ -151,7 +154,8 @@ async test "multiple scope" {
151154

152155
///|
153156
async test "recursive cancel" {
154-
random_delay()
157+
rate_limit.acquire()
158+
defer rate_limit.release()
155159
let buf = StringBuilder::new()
156160
buf.write_object(
157161
try? @async.with_task_group(fn(root) {
@@ -191,7 +195,8 @@ async test "recursive cancel" {
191195

192196
///|
193197
async test "spawn directly error" {
194-
random_delay()
198+
rate_limit.acquire()
199+
defer rate_limit.release()
195200
let buf = StringBuilder::new()
196201
buf.write_object(
197202
try? @async.with_task_group(fn(root) {
@@ -218,7 +223,8 @@ async test "spawn directly error" {
218223

219224
///|
220225
async test "error in cancellation" {
221-
random_delay()
226+
rate_limit.acquire()
227+
defer rate_limit.release()
222228
let log = StringBuilder::new()
223229
log.write_object(
224230
try? @async.with_task_group(fn(root) {
@@ -244,7 +250,8 @@ async test "error in cancellation" {
244250

245251
///|
246252
async test "immediately cancelled" {
247-
random_delay()
253+
rate_limit.acquire()
254+
defer rate_limit.release()
248255
let log = StringBuilder::new()
249256
@async.with_task_group(fn(root) {
250257
let task = root.spawn(allow_failure=true, fn() {

src/group_defer_test.mbt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
///|
1616
async test "group defer basic" {
17-
random_delay()
17+
rate_limit.acquire()
18+
defer rate_limit.release()
1819
let log = StringBuilder::new()
1920
@async.with_task_group(fn(root) {
2021
root.add_defer(() => log.write_string("first group defer\n"))
@@ -55,7 +56,8 @@ async test "group defer basic" {
5556

5657
///|
5758
async test "group defer error" {
58-
random_delay()
59+
rate_limit.acquire()
60+
defer rate_limit.release()
5961
let log = StringBuilder::new()
6062
log.write_object(
6163
try? @async.with_task_group(fn(root) {
@@ -98,7 +100,8 @@ async test "group defer error" {
98100

99101
///|
100102
async test "group defer cancelled" {
101-
random_delay()
103+
rate_limit.acquire()
104+
defer rate_limit.release()
102105
let log = StringBuilder::new()
103106
@async.with_task_group(fn(root) {
104107
root.spawn_bg(fn() {

src/no_wait_test.mbt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
///|
1616
async test "no_wait cancelled" {
17-
random_delay()
17+
rate_limit.acquire()
18+
defer rate_limit.release()
1819
let buf = StringBuilder::new()
1920
@async.with_task_group(fn(root) {
2021
root.spawn_bg(no_wait=true, fn() {
@@ -42,7 +43,8 @@ async test "no_wait cancelled" {
4243

4344
///|
4445
async test "no_wait normal exit" {
45-
random_delay()
46+
rate_limit.acquire()
47+
defer rate_limit.release()
4648
let buf = StringBuilder::new()
4749
@async.with_task_group(fn(root) {
4850
root.spawn_bg(no_wait=true, fn() {

src/protect_from_cancel_test.mbt

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
///|
1616
async test "protect_from_cancel" {
17-
random_delay()
17+
rate_limit.acquire()
18+
defer rate_limit.release()
1819
let log = StringBuilder::new()
1920
@async.with_task_group(fn(root) {
2021
root.spawn_bg(fn() {
@@ -62,7 +63,8 @@ async test "protect_from_cancel" {
6263

6364
///|
6465
async test "protect_from_cancel wait" {
65-
random_delay()
66+
rate_limit.acquire()
67+
defer rate_limit.release()
6668
let log = StringBuilder::new()
6769
log.write_object(
6870
try? @async.with_task_group(fn(root) {
@@ -105,7 +107,8 @@ async test "protect_from_cancel wait" {
105107

106108
///|
107109
async test "protect_from_cancel with_timeout" {
108-
random_delay()
110+
rate_limit.acquire()
111+
defer rate_limit.release()
109112
let log = StringBuilder::new()
110113
@async.with_task_group(fn(root) {
111114
root.spawn_bg(fn() {
@@ -137,7 +140,8 @@ async test "protect_from_cancel with_timeout" {
137140

138141
///|
139142
async test "protect_from_cancel fail" {
140-
random_delay()
143+
rate_limit.acquire()
144+
defer rate_limit.release()
141145
let log = StringBuilder::new()
142146
log.write_object(
143147
try? @async.with_task_group(fn(root) {
@@ -169,7 +173,8 @@ async test "protect_from_cancel fail" {
169173

170174
///|
171175
async test "protect_from_cancel nested1" {
172-
random_delay()
176+
rate_limit.acquire()
177+
defer rate_limit.release()
173178
let log = StringBuilder::new()
174179
@async.with_task_group(fn(root) {
175180
root.spawn_bg(fn() {
@@ -203,7 +208,8 @@ async test "protect_from_cancel nested1" {
203208

204209
///|
205210
async test "protect_from_cancel nested2" {
206-
random_delay()
211+
rate_limit.acquire()
212+
defer rate_limit.release()
207213
let log = StringBuilder::new()
208214
@async.with_task_group(fn(root) {
209215
root.spawn_bg(fn() {
@@ -243,7 +249,8 @@ async test "protect_from_cancel nested2" {
243249

244250
///|
245251
async test "protect_from_cancel in cancellation handler" {
246-
random_delay()
252+
rate_limit.acquire()
253+
defer rate_limit.release()
247254
let log = StringBuilder::new()
248255
log.write_object(
249256
try? @async.with_task_group(fn(root) {
@@ -276,7 +283,8 @@ async test "protect_from_cancel in cancellation handler" {
276283

277284
///|
278285
async test "cancel while scheduled" {
279-
random_delay()
286+
rate_limit.acquire()
287+
defer rate_limit.release()
280288
let log = StringBuilder::new()
281289
@async.with_task_group(fn(root) {
282290
root.spawn_bg(fn() {
@@ -320,7 +328,8 @@ async test "cancel while scheduled" {
320328

321329
///|
322330
async test "error in async cancel" {
323-
random_delay()
331+
rate_limit.acquire()
332+
defer rate_limit.release()
324333
let log = StringBuilder::new()
325334
@async.with_task_group(fn(root) {
326335
root.spawn_bg(fn() {

src/random_delay_test.mbt renamed to src/rate_limit_for_test.mbt

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,4 @@
1313
// limitations under the License.
1414

1515
///|
16-
/// add a random delay before every test,
17-
/// so that there won't be a lot of timers expiring at the same time,
18-
/// causing inaccurate result
19-
async fn random_delay() -> Unit {
20-
let rand = match rand_seed.val {
21-
Some(r) => r
22-
None => {
23-
let now = @async.now()
24-
let seed = @buffer.new()
25-
for _ in 0..<4 {
26-
seed.write_int64_le(now)
27-
}
28-
let rand = @random.Rand::chacha8(seed=seed.to_bytes())
29-
rand_seed.val = Some(rand)
30-
rand
31-
}
32-
}
33-
@async.sleep(rand.int(limit=100))
34-
}
35-
36-
///|
37-
let rand_seed : Ref[@random.Rand?] = @ref.new(None)
16+
let rate_limit : @semaphore.Semaphore = @semaphore.Semaphore::new(20)

src/retry_test.mbt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
///|
1616
async test "retry immediate" {
17-
random_delay()
17+
rate_limit.acquire()
18+
defer rate_limit.release()
1819
let log = StringBuilder::new()
1920
let mut i = 0
2021
@async.retry(Immediate, fn() {
@@ -37,7 +38,8 @@ async test "retry immediate" {
3738

3839
///|
3940
async test "retry fixed" {
40-
random_delay()
41+
rate_limit.acquire()
42+
defer rate_limit.release()
4143
let log = StringBuilder::new()
4244
@async.with_task_group(fn(root) {
4345
root.spawn_bg(fn() {
@@ -72,7 +74,8 @@ async test "retry fixed" {
7274

7375
///|
7476
async test "retry exponential" {
75-
random_delay()
77+
rate_limit.acquire()
78+
defer rate_limit.release()
7679
let log = StringBuilder::new()
7780
log.write_object(
7881
try? @async.with_task_group(fn(root) {
@@ -116,7 +119,8 @@ async test "retry exponential" {
116119

117120
///|
118121
async test "retry cancelled1" {
119-
random_delay()
122+
rate_limit.acquire()
123+
defer rate_limit.release()
120124
let log = StringBuilder::new()
121125
let mut i = 0
122126
@async.with_timeout(500, fn() {
@@ -142,7 +146,8 @@ async test "retry cancelled1" {
142146

143147
///|
144148
async test "retry cancelled2" {
145-
random_delay()
149+
rate_limit.acquire()
150+
defer rate_limit.release()
146151
let log = StringBuilder::new()
147152
let mut i = 0
148153
@async.with_timeout(500, fn() {
@@ -168,7 +173,8 @@ async test "retry cancelled2" {
168173

169174
///|
170175
async test "retry fatal_error" {
171-
random_delay()
176+
rate_limit.acquire()
177+
defer rate_limit.release()
172178
let log = StringBuilder::new()
173179
fn fatal_error(err) {
174180
not(err is @async.TimeoutError)

src/return_immediately_test.mbt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
///|
1616
async test "return_immediately basic" {
17-
random_delay()
17+
rate_limit.acquire()
18+
defer rate_limit.release()
1819
let log = StringBuilder::new()
1920
log.write_object(
2021
try? @async.with_task_group(fn(root) {
@@ -33,7 +34,8 @@ async test "return_immediately basic" {
3334

3435
///|
3536
async test "return_immediately nested" {
36-
random_delay()
37+
rate_limit.acquire()
38+
defer rate_limit.release()
3739
let log = StringBuilder::new()
3840
log.write_object(
3941
try? @async.with_task_group(fn(root) {
@@ -58,7 +60,8 @@ async test "return_immediately nested" {
5860

5961
///|
6062
async test "return_immediately error on cancel" {
61-
random_delay()
63+
rate_limit.acquire()
64+
defer rate_limit.release()
6265
let log = StringBuilder::new()
6366
log.write_object(
6467
try? @async.with_task_group(fn(root) {

src/spawn_loop_test.mbt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
///|
1616
async test "spawn_loop basic" {
17-
random_delay()
17+
rate_limit.acquire()
18+
defer rate_limit.release()
1819
let log = StringBuilder::new()
1920
log.write_object(
2021
try? @async.with_task_group(fn(root) {
@@ -43,7 +44,8 @@ async test "spawn_loop basic" {
4344

4445
///|
4546
async test "spawn_loop basic-error" {
46-
random_delay()
47+
rate_limit.acquire()
48+
defer rate_limit.release()
4749
let log = StringBuilder::new()
4850
log.write_object(
4951
try? @async.with_task_group(fn(root) {
@@ -71,7 +73,8 @@ async test "spawn_loop basic-error" {
7173

7274
///|
7375
async test "spawn_loop retry-exponential" {
74-
random_delay()
76+
rate_limit.acquire()
77+
defer rate_limit.release()
7578
let log = StringBuilder::new()
7679
log.write_object(
7780
try? @async.with_task_group(fn(root) {

0 commit comments

Comments
 (0)