From db9b3433bcb06668d8386b836b586b1a7c74a01d Mon Sep 17 00:00:00 2001 From: Fuad Ismail <fuad1502@gmail.com> Date: Sat, 7 Dec 2024 15:28:29 +0000 Subject: [PATCH] tests/dmesg: add facility and level filter tests. --- tests/by-util/test_dmesg.rs | 65 +++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/tests/by-util/test_dmesg.rs b/tests/by-util/test_dmesg.rs index b811584..b6cfb73 100644 --- a/tests/by-util/test_dmesg.rs +++ b/tests/by-util/test_dmesg.rs @@ -81,3 +81,68 @@ fn test_invalid_time_format() { .code_is(1) .stderr_only("dmesg: unknown time format: definitely-invalid\n"); } + +#[test] +fn test_filter_facility() { + let facilities = [ + "kern", "user", "mail", "daemon", "auth", "syslog", "lpr", "news", "uucp", "cron", + "authpriv", "ftp", "local0", "local1", "local2", "local3", "local4", "local5", "local6", + "local7", + ]; + for facility in facilities { + let facility_filter_arg = format!("--facility={facility}"); + let mut cmd = new_ucmd!(); + let result = cmd + .arg("--kmsg-file") + .arg("kmsg.input") + .arg(facility_filter_arg) + .succeeds(); + let stdout = result.no_stderr().stdout_str(); + assert_eq!(stdout.lines().count(), 8); + let expected = format!("LOG_{}", facility.to_uppercase()); + stdout + .lines() + .for_each(|line| assert!(line.contains(&expected))); + } +} + +#[test] +fn test_filter_levels() { + let levels = [ + "emerg", "alert", "crit", "err", "warn", "notice", "info", "debug", + ]; + for level in levels { + let level_filter_arg = format!("--level={level}"); + let mut cmd = new_ucmd!(); + let result = cmd + .arg("--kmsg-file") + .arg("kmsg.input") + .arg(level_filter_arg) + .succeeds(); + let stdout = result.no_stderr().stdout_str(); + assert_eq!(stdout.lines().count(), 20); + let expected = format!("LOG_{}", level.to_uppercase()); + stdout + .lines() + .for_each(|line| assert!(line.contains(&expected))); + } +} + +#[test] +fn test_filter_multiple() { + let mut cmd = new_ucmd!(); + let result = cmd + .arg("--kmsg-file") + .arg("kmsg.input") + .arg("--facility=kern,user") + .arg("--level=emerg,alert") + .succeeds(); + let stdout = result.no_stderr().stdout_str(); + assert_eq!(stdout.lines().count(), 4); + stdout.lines().for_each(|line| { + assert!( + (line.contains("LOG_KERN") || line.contains("LOG_USER")) + && (line.contains("LOG_EMERG") || line.contains("LOG_ALERT")) + ) + }); +}