summaryrefslogtreecommitdiffstats
path: root/tests-integration/tests/rt_shell.rs
blob: 012f44a71b38f57906df0011331213120989c773 (plain)
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
#![warn(rust_2018_idioms)]
#![cfg(feature = "sync")]

use tokio::runtime;
use tokio::sync::oneshot;

use std::sync::mpsc;
use std::thread;

#[test]
fn basic_shell_rt() {
    let (feed_tx, feed_rx) = mpsc::channel::<oneshot::Sender<()>>();

    let th = thread::spawn(move || {
        for tx in feed_rx.iter() {
            tx.send(()).unwrap();
        }
    });

    for _ in 0..1_000 {
        let rt = runtime::Builder::new().build().unwrap();

        let (tx, rx) = oneshot::channel();

        feed_tx.send(tx).unwrap();

        rt.block_on(rx).unwrap();
    }

    drop(feed_tx);
    th.join().unwrap();
}