summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2023-01-04 10:41:49 +0100
committerMatthias Beyer <mail@beyermatthias.de>2023-01-04 11:06:31 +0100
commit31c4dd76a7aecd88224406dcd86f1732ff0dc282 (patch)
tree097cee7aba12056d676b71aa8472b94013a5475a
parentf27809bbe01d6870cb788e62f4d9e44a35e9d9c9 (diff)
Reduce waiting for output boilerplate with helper macro
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--mqtt-tester/src/client_report.rs68
1 files changed, 38 insertions, 30 deletions
diff --git a/mqtt-tester/src/client_report.rs b/mqtt-tester/src/client_report.rs
index c4ca59b..fafde51 100644
--- a/mqtt-tester/src/client_report.rs
+++ b/mqtt-tester/src/client_report.rs
@@ -67,6 +67,29 @@ macro_rules! mk_report {
};
}
+macro_rules! wait_for_output {
+ ($output:ident,
+ timeout_ms: $timeout_ms:literal,
+ out_success => $success:block,
+ out_failure => $failure:block
+ ) => {{
+ let (result, output) =
+ match tokio::time::timeout(Duration::from_millis($timeout_ms), $output).await {
+ Ok(Ok(out)) => (
+ if out.status.success() {
+ $success
+ } else {
+ $failure
+ },
+ Some(out.stderr),
+ ),
+ Ok(Err(_)) | Err(_) => (ReportResult::Failure, None),
+ };
+
+ (result, output)
+ }};
+}
+
async fn check_invalid_utf8_is_rejected(client_exe_path: &Path) -> miette::Result<Report> {
let output = open_connection_with(client_exe_path)
.await
@@ -98,16 +121,11 @@ async fn check_invalid_utf8_is_rejected(client_exe_path: &Path) -> miette::Resul
),
]);
- let (result, output) = match tokio::time::timeout(Duration::from_millis(100), output).await {
- Ok(Ok(out)) => (
- if out.status.success() {
- ReportResult::Failure
- } else {
- ReportResult::Success
- },
- Some(out.stderr),
- ),
- Ok(Err(_)) | Err(_) => (ReportResult::Failure, None),
+ let (result, output) = wait_for_output! {
+ output,
+ timeout_ms: 100,
+ out_success => { ReportResult::Failure },
+ out_failure => { ReportResult::Success }
};
Ok(mk_report! {
@@ -147,16 +165,11 @@ async fn check_receiving_server_packet(client_exe_path: &Path) -> miette::Result
),
]);
- let (result, output) = match tokio::time::timeout(Duration::from_millis(100), output).await {
- Ok(Ok(out)) => (
- if out.status.success() {
- ReportResult::Failure
- } else {
- ReportResult::Success
- },
- Some(out.stderr),
- ),
- Ok(Err(_)) | Err(_) => (ReportResult::Failure, None),
+ let (result, output) = wait_for_output! {
+ output,
+ timeout_ms: 100,
+ out_success => { ReportResult::Failure },
+ out_failure => { ReportResult::Success }
};
Ok(mk_report! {
@@ -188,16 +201,11 @@ async fn check_invalid_first_packet_is_rejected(client_exe_path: &Path) -> miett
.await?,
)]);
- let (result, output) = match tokio::time::timeout(Duration::from_millis(100), output).await {
- Ok(Ok(out)) => (
- if out.status.success() {
- ReportResult::Failure
- } else {
- ReportResult::Success
- },
- Some(out.stderr),
- ),
- Ok(Err(_)) | Err(_) => (ReportResult::Failure, None),
+ let (result, output) = wait_for_output! {
+ output,
+ timeout_ms: 100,
+ out_success => { ReportResult::Failure },
+ out_failure => { ReportResult::Success }
};
Ok(mk_report! {