aboutsummaryrefslogtreecommitdiff
path: root/tests/io_mem_stream.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/io_mem_stream.rs')
-rw-r--r--tests/io_mem_stream.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/io_mem_stream.rs b/tests/io_mem_stream.rs
index 520391a..3d9941d 100644
--- a/tests/io_mem_stream.rs
+++ b/tests/io_mem_stream.rs
@@ -101,3 +101,22 @@ async fn max_write_size() {
// drop b only after task t1 finishes writing
drop(b);
}
+
+#[tokio::test]
+async fn duplex_is_cooperative() {
+ let (mut tx, mut rx) = tokio::io::duplex(1024 * 8);
+
+ tokio::select! {
+ biased;
+
+ _ = async {
+ loop {
+ let buf = [3u8; 4096];
+ tx.write_all(&buf).await.unwrap();
+ let mut buf = [0u8; 4096];
+ let _ = rx.read(&mut buf).await.unwrap();
+ }
+ } => {},
+ _ = tokio::task::yield_now() => {}
+ }
+}