提交 2cbe39c4 authored 作者: Serhij S's avatar Serhij S

insta tests

上级 36e67c8d
......@@ -23,4 +23,5 @@ sysinfo = "0.30.6"
thiserror = "1.0.57"
[dev-dependencies]
insta = "1.36.1"
tokio = { version = "1.36.0", features = ["rt", "macros", "time"] }
......@@ -307,7 +307,7 @@ mod test {
use super::Hub;
#[derive(Clone)]
#[derive(Clone, Debug)]
enum Message {
Temperature(f64),
Humidity(f64),
......@@ -331,13 +331,11 @@ mod test {
sender.send(Message::Humidity(2.0));
sender.send(Message::Test);
}
let mut c = 0;
let mut messages = Vec::with_capacity(20);
while let Ok(msg) = recv.try_recv() {
match msg {
Message::Temperature(_) | Message::Humidity(_) => c += 1,
Message::Test => panic!(),
}
messages.push(msg);
}
assert_eq!(c, 20);
insta::assert_snapshot!(messages.len());
insta::assert_debug_snapshot!(messages);
}
}
......@@ -306,7 +306,7 @@ mod test {
use super::Hub;
#[derive(Clone)]
#[derive(Clone, Debug)]
enum Message {
Temperature(f64),
Humidity(f64),
......@@ -319,9 +319,9 @@ mod test {
async fn test_hub() {
let hub = Hub::<Message>::new().set_default_channel_capacity(20);
let sender = hub.sender();
let recv = hub
let client1 = hub
.register(
"test_recv",
"test1",
event_matches!(Message::Temperature(_) | Message::Humidity(_)),
)
.unwrap();
......@@ -330,13 +330,11 @@ mod test {
sender.send(Message::Humidity(2.0)).await;
sender.send(Message::Test).await;
}
let mut c = 0;
while let Ok(msg) = recv.try_recv() {
match msg {
Message::Temperature(_) | Message::Humidity(_) => c += 1,
Message::Test => panic!(),
}
let mut messages = Vec::with_capacity(20);
while let Ok(msg) = client1.try_recv() {
messages.push(msg);
}
assert_eq!(c, 20);
insta::assert_snapshot!(messages.len());
insta::assert_debug_snapshot!(messages);
}
}
......@@ -325,12 +325,16 @@ mod test {
}
});
thread::sleep(Duration::from_secs(1));
let mut messages = Vec::new();
while let Ok(msg) = rx.recv() {
thread::sleep(Duration::from_millis(10));
if matches!(msg, Message::Spam) {
panic!("delivery policy not respected ({:?})", msg);
}
messages.push(msg);
}
insta::assert_debug_snapshot!(messages.len());
insta::assert_debug_snapshot!(messages);
}
#[test]
......@@ -348,20 +352,23 @@ mod test {
thread::sleep(Duration::from_secs(1));
let mut c = 0;
let mut t = 0;
let mut messages = Vec::new();
while let Ok(msg) = rx.recv() {
match msg {
Message::Test(_) => c += 1,
Message::Temperature(_) => t += 1,
Message::Spam => {}
}
messages.push(msg);
}
assert_eq!(c, 10);
assert_eq!(t, 1);
insta::assert_snapshot!(c);
insta::assert_snapshot!(t);
insta::assert_debug_snapshot!(messages);
}
#[test]
fn test_poisoning() {
let n = 20_000;
let n = 5_000;
for i in 0..n {
let (tx, rx) = bounded::<Message>(512);
let rx_t = thread::spawn(move || while rx.recv().is_ok() {});
......
......@@ -490,12 +490,16 @@ mod test {
}
});
thread::sleep(Duration::from_secs(1));
let mut messages = Vec::new();
while let Ok(msg) = rx.recv().await {
thread::sleep(Duration::from_millis(10));
if matches!(msg, Message::Spam) {
panic!("delivery policy not respected ({:?})", msg);
}
messages.push(msg);
}
insta::assert_debug_snapshot!(messages.len());
insta::assert_debug_snapshot!(messages);
}
#[tokio::test]
......@@ -513,20 +517,23 @@ mod test {
thread::sleep(Duration::from_secs(1));
let mut c = 0;
let mut t = 0;
let mut messages = Vec::new();
while let Ok(msg) = rx.recv().await {
match msg {
Message::Test(_) => c += 1,
Message::Temperature(_) => t += 1,
Message::Spam => {}
}
messages.push(msg);
}
assert_eq!(c, 10);
assert_eq!(t, 1);
insta::assert_snapshot!(c);
insta::assert_snapshot!(t);
insta::assert_debug_snapshot!(messages);
}
#[tokio::test]
async fn test_poisoning() {
let n = 20_000;
let n = 5_000;
for _ in 0..n {
let (tx, rx) = bounded::<Message>(512);
let rx_t = tokio::spawn(async move { while rx.recv().await.is_ok() {} });
......
---
source: src/hub.rs
expression: messages
---
[
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
]
---
source: src/hub.rs
expression: messages.len()
---
20
---
source: src/hub_async.rs
expression: messages
---
[
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
Temperature(
1.0,
),
Humidity(
2.0,
),
]
---
source: src/hub_async.rs
expression: messages.len()
---
20
---
source: src/pchannel.rs
expression: messages
---
[
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
]
---
source: src/pchannel.rs
expression: messages.len()
---
20
---
source: src/pchannel.rs
expression: messages
---
[
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Temperature(
123.0,
),
]
---
source: src/pchannel.rs
expression: c
---
10
---
source: src/pchannel_async.rs
expression: messages
---
[
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
Test(
123,
),
Temperature(
123.0,
),
]
---
source: src/pchannel_async.rs
expression: messages.len()
---
20
---
source: src/pchannel_async.rs
expression: t
---
1
---
source: src/pchannel_async.rs
expression: messages
---
[
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Test(
123,
),
Spam,
Temperature(
123.0,
),
]
---
source: src/pchannel_async.rs
expression: c
---
10
---
source: src/ttlcell.rs
expression: opt.as_ref().copied()
---
None
---
source: src/ttlcell.rs
expression: opt.as_ref().copied()
---
Some(
30,
)
---
source: src/ttlcell.rs
expression: opt.as_ref().copied()
---
None
---
source: src/ttlcell.rs
expression: opt.as_ref().copied()
---
Some(
25,
)
......@@ -146,14 +146,14 @@ mod test {
let ttl = Duration::from_millis(10);
let mut opt = TtlCell::new_with_value(ttl, 25);
thread::sleep(ttl / 2);
assert_eq!(opt.as_ref().copied(), Some(25));
insta::assert_debug_snapshot!(opt.as_ref().copied());
thread::sleep(ttl);
assert_eq!(opt.as_ref().copied(), None);
insta::assert_debug_snapshot!(opt.as_ref().copied());
opt.set(30);
thread::sleep(ttl / 2);
assert_eq!(opt.as_ref().copied(), Some(30));
insta::assert_debug_snapshot!(opt.as_ref().copied());
thread::sleep(ttl);
assert_eq!(opt.as_ref().copied(), None);
insta::assert_debug_snapshot!(opt.as_ref().copied());
}
#[test]
fn test_take_replace() {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论