diff options
| author | Divy Srivastava <dj.srivastava23@gmail.com> | 2023-03-17 14:09:57 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-17 10:39:57 +0200 |
| commit | c27e8da2c941098c41732faba84b57ba425346ce (patch) | |
| tree | c06d804b40ad0e8d2d8e63a051f0704085c30873 /test_util/src/lib.rs | |
| parent | 0eabd2c6d67b5581f461b8bc8fbfaba0a1efca7a (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.rs | 31 |
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] |
