summaryrefslogtreecommitdiff
path: root/test_util/src/lib.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-03-17 14:09:57 +0530
committerGitHub <noreply@github.com>2023-03-17 10:39:57 +0200
commitc27e8da2c941098c41732faba84b57ba425346ce (patch)
treec06d804b40ad0e8d2d8e63a051f0704085c30873 /test_util/src/lib.rs
parent0eabd2c6d67b5581f461b8bc8fbfaba0a1efca7a (diff)
fix(test_util): parse strace usecs/call in total line if present (#18241)
Fixes https://github.com/denoland/deno/issues/18235
Diffstat (limited to 'test_util/src/lib.rs')
-rw-r--r--test_util/src/lib.rs31
1 files changed, 28 insertions, 3 deletions
diff --git a/test_util/src/lib.rs b/test_util/src/lib.rs
index 7b88b0a69..33b5ae8bc 100644
--- a/test_util/src/lib.rs
+++ b/test_util/src/lib.rs
@@ -2273,14 +2273,21 @@ pub fn parse_strace_output(output: &str) -> HashMap<String, StraceOutput> {
}
let total_fields = total_line.split_whitespace().collect::<Vec<_>>();
+
+ let mut usecs_call_offset = 0;
summary.insert(
"total".to_string(),
StraceOutput {
percent_time: str::parse::<f64>(total_fields[0]).unwrap(),
seconds: str::parse::<f64>(total_fields[1]).unwrap(),
- usecs_per_call: None,
- calls: str::parse::<u64>(total_fields[2]).unwrap(),
- errors: str::parse::<u64>(total_fields[3]).unwrap(),
+ usecs_per_call: if total_fields.len() > 5 {
+ usecs_call_offset = 1;
+ Some(str::parse::<u64>(total_fields[2]).unwrap())
+ } else {
+ None
+ },
+ calls: str::parse::<u64>(total_fields[2 + usecs_call_offset]).unwrap(),
+ errors: str::parse::<u64>(total_fields[3 + usecs_call_offset]).unwrap(),
},
);
@@ -2384,6 +2391,7 @@ mod tests {
// summary line
assert_eq!(strace.get("total").unwrap().calls, 704);
assert_eq!(strace.get("total").unwrap().errors, 5);
+ assert_eq!(strace.get("total").unwrap().usecs_per_call, None);
}
#[test]
@@ -2399,6 +2407,23 @@ mod tests {
// summary line
assert_eq!(strace.get("total").unwrap().calls, 821);
assert_eq!(strace.get("total").unwrap().errors, 107);
+ assert_eq!(strace.get("total").unwrap().usecs_per_call, None);
+ }
+
+ #[test]
+ fn strace_parse_3() {
+ const TEXT: &str = include_str!("./testdata/strace_summary3.out");
+ let strace = parse_strace_output(TEXT);
+
+ // first syscall line
+ let futex = strace.get("mprotect").unwrap();
+ assert_eq!(futex.calls, 90);
+ assert_eq!(futex.errors, 0);
+
+ // summary line
+ assert_eq!(strace.get("total").unwrap().calls, 543);
+ assert_eq!(strace.get("total").unwrap().errors, 36);
+ assert_eq!(strace.get("total").unwrap().usecs_per_call, Some(6));
}
#[test]