File: spawn_many.rs

package info (click to toggle)
rust-async-executor 1.13.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 252 kB
  • sloc: makefile: 2; sh: 1
file content (45 lines) | stat: -rw-r--r-- 1,097 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use async_executor::{Executor, LocalExecutor};
use futures_lite::future;

#[cfg(not(miri))]
const READY_COUNT: usize = 50_000;
#[cfg(miri)]
const READY_COUNT: usize = 505;

#[test]
fn spawn_many() {
    future::block_on(async {
        let ex = Executor::new();

        // Spawn a lot of tasks.
        let mut tasks = vec![];
        ex.spawn_many((0..READY_COUNT).map(future::ready), &mut tasks);

        // Run all of the tasks in parallel.
        ex.run(async move {
            for (i, task) in tasks.into_iter().enumerate() {
                assert_eq!(task.await, i);
            }
        })
        .await;
    });
}

#[test]
fn spawn_many_local() {
    future::block_on(async {
        let ex = LocalExecutor::new();

        // Spawn a lot of tasks.
        let mut tasks = vec![];
        ex.spawn_many((0..READY_COUNT).map(future::ready), &mut tasks);

        // Run all of the tasks in parallel.
        ex.run(async move {
            for (i, task) in tasks.into_iter().enumerate() {
                assert_eq!(task.await, i);
            }
        })
        .await;
    });
}