[ping3] Deny unused results
Change-Id: I95917c4c7de700b6911bd05b0318166832d96384
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/514901
Reviewed-by: Sam Balana <sbalana@google.com>
Reviewed-by: Tamir Duberstein <tamird@google.com>
Reviewed-by: Jay Zhuang <jayzhuang@google.com>
Reviewed-by: Nick Brown <nickbrow@google.com>
Commit-Queue: Peter Johnston <peterjohnston@google.com>
diff --git a/build/config/rust/BUILD.gn b/build/config/rust/BUILD.gn
index b9c4f52..5b9e4c4 100644
--- a/build/config/rust/BUILD.gn
+++ b/build/config/rust/BUILD.gn
@@ -146,7 +146,6 @@
"//src/connectivity/network/lib/*",
"//src/connectivity/network/netstack/*",
"//src/connectivity/network/netstack3/*",
- "//src/connectivity/network/ping3/*",
"//src/connectivity/network/testing/netemul/*",
"//src/connectivity/network/tests/connect/*",
"//src/connectivity/network/tests/dhcp_interop/*",
diff --git a/src/connectivity/network/ping3/BUILD.gn b/src/connectivity/network/ping3/BUILD.gn
index b964c97..cb536aa 100644
--- a/src/connectivity/network/ping3/BUILD.gn
+++ b/src/connectivity/network/ping3/BUILD.gn
@@ -24,6 +24,7 @@
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:log",
+ "//third_party/rust_crates:matches",
"//third_party/rust_crates:structopt",
"//third_party/rust_crates:thiserror",
]
@@ -45,6 +46,8 @@
"src/tests/integration_tests.rs",
"src/tests/mod.rs",
]
+
+ configs -= [ "//build/config/rust:allow_unused_results" ]
}
fuchsia_component("component") {
diff --git a/src/connectivity/network/ping3/src/store.rs b/src/connectivity/network/ping3/src/store.rs
index 0a26853..dc43c3a 100644
--- a/src/connectivity/network/ping3/src/store.rs
+++ b/src/connectivity/network/ping3/src/store.rs
@@ -96,6 +96,7 @@
mod test {
use super::*;
+ const ZERO_DURATION: zx::Duration = zx::Duration::from_nanos(0);
const SHORT_DELAY: zx::Duration = zx::Duration::from_nanos(1);
#[test]
@@ -103,7 +104,9 @@
let _executor = fasync::Executor::new_with_fake_time().expect("Failed to create executor");
let mut s = SequenceStore::new();
for i in 0..std::u16::MAX {
- assert_eq!(s.take().expect("Failed to take").0, i);
+ let (seq, offset) = s.take().expect("Failed to take");
+ assert_eq!(seq, i);
+ assert_eq!(offset, ZERO_DURATION);
}
}
@@ -112,34 +115,43 @@
let _executor = fasync::Executor::new_with_fake_time().expect("Failed to create executor");
let mut s = SequenceStore::new();
for i in 0..std::u16::MAX {
- assert_eq!(s.take().expect("Failed to take").0, i);
+ let (seq, offset) = s.take().expect("Failed to take");
+ assert_eq!(seq, i);
+ assert_eq!(offset, ZERO_DURATION);
}
- s.take().expect_err("There shouldn't be any more sequence numbers available");
+ matches::assert_matches!(s.take(), Err(OutOfSequencesError {}));
}
#[test]
fn give_out_of_order() {
let _executor = fasync::Executor::new_with_fake_time().expect("Failed to create executor");
let mut s = SequenceStore::new();
- s.take().expect("Failed to take");
- let (n, _) = s.take().expect("Failed to take");
- s.give(n, None).expect_err("Should error on out-of-order responses");
+ let (seq, offset) = s.take().expect("Failed to take");
+ assert_eq!(seq, 0);
+ assert_eq!(offset, ZERO_DURATION);
+ let (seq, offset) = s.take().expect("Failed to take");
+ assert_eq!(seq, 1);
+ assert_eq!(offset, ZERO_DURATION);
+ matches::assert_matches!(s.give(seq, None), Err(GiveError::OutOfOrder(None)));
}
#[test]
fn give_duplicate() {
let _executor = fasync::Executor::new_with_fake_time().expect("Failed to create executor");
let mut s = SequenceStore::new();
- s.give(42, None).expect_err("Should not be able to give seq_nums that haven't been given");
+ matches::assert_matches!(s.give(42, None), Err(GiveError::DoesNotExist(None)));
}
#[test]
fn give_same_number() {
let _executor = fasync::Executor::new_with_fake_time().expect("Failed to create executor");
let mut s = SequenceStore::new();
- let (num, _) = s.take().expect("Failed to take");
- s.give(num, None).expect("Failed to give");
- s.give(num, None).expect_err("Should not be able to give duplicates");
+ let (seq, offset) = s.take().expect("Failed to take");
+ assert_eq!(seq, 0);
+ assert_eq!(offset, ZERO_DURATION);
+ let latency = s.give(seq, None).expect("Failed to give");
+ assert_eq!(latency, None);
+ matches::assert_matches!(s.give(seq, None), Err(GiveError::Duplicate(None)));
}
#[test]
@@ -147,8 +159,10 @@
let _executor = fasync::Executor::new_with_fake_time().expect("Failed to create executor");
let mut s = SequenceStore::new();
- let (_, a_time) = s.take().expect("Failed to take");
- let (_, b_time) = s.take().expect("Failed to take");
+ let (seq, a_time) = s.take().expect("Failed to take");
+ assert_eq!(seq, 0);
+ let (seq, b_time) = s.take().expect("Failed to take");
+ assert_eq!(seq, 1);
assert_eq!(a_time, b_time);
}
@@ -157,9 +171,11 @@
let executor = fasync::Executor::new_with_fake_time().expect("Failed to create executor");
let mut s = SequenceStore::new();
- let (_, a_time) = s.take().expect("Failed to take");
+ let (seq, a_time) = s.take().expect("Failed to take");
+ assert_eq!(seq, 0);
executor.set_fake_time(executor.now() + SHORT_DELAY);
- let (_, b_time) = s.take().expect("Failed to take");
+ let (seq, b_time) = s.take().expect("Failed to take");
+ assert_eq!(seq, 1);
assert_eq!(b_time - a_time, SHORT_DELAY);
}