in src/flowgger/utils/rotating_file.rs [437:493]
fn test_rotation_files_size() -> Result<(), io::Error> {
let tmp_dir = TempDir::new("test_rotation_files_size")?;
let file_base = tmp_dir.path().join("test_log.log");
let file_rotated = tmp_dir.path().join("test_log.0");
let file_rotated2 = tmp_dir.path().join("test_log.1");
let test_patterns = build_pattern_list(7, 6);
let mut rotating_file = RotatingFile::new(&file_base, 16, 0, 2, "");
assert!(rotating_file.open().is_ok());
// No rotation yet
let _ = rotating_file.write(test_patterns[0].as_bytes());
let _ = rotating_file.write(test_patterns[1].as_bytes());
assert_eq!(
fs::read_to_string(file_base.as_path()).unwrap(),
format!("{}{}", test_patterns[0], test_patterns[1])
);
// First rotation
let _ = rotating_file.write(test_patterns[2].as_bytes());
assert_eq!(
fs::read_to_string(file_rotated.as_path()).unwrap(),
format!("{}{}", test_patterns[0], test_patterns[1])
);
assert_eq!(fs::read_to_string(file_base.as_path()).unwrap(), test_patterns[2]);
// Second rotation
let _ = rotating_file.write(test_patterns[3].as_bytes());
let _ = rotating_file.write(test_patterns[4].as_bytes());
assert_eq!(
fs::read_to_string(file_rotated2.as_path()).unwrap(),
format!("{}{}", test_patterns[0], test_patterns[1])
);
assert_eq!(
fs::read_to_string(file_rotated.as_path()).unwrap(),
format!("{}{}", test_patterns[2], test_patterns[3])
);
assert_eq!(fs::read_to_string(file_base.as_path()).unwrap(), test_patterns[4]);
// Oldest log overwritten
let _ = rotating_file.write(test_patterns[5].as_bytes());
let _ = rotating_file.write(test_patterns[6].as_bytes());
assert_eq!(
fs::read_to_string(file_rotated2.as_path()).unwrap(),
format!("{}{}", test_patterns[2], test_patterns[3])
);
assert_eq!(
fs::read_to_string(file_rotated.as_path()).unwrap(),
format!("{}{}", test_patterns[4], test_patterns[5])
);
assert_eq!(fs::read_to_string(file_base).unwrap(), test_patterns[6]);
let _ = rotating_file.flush();
Ok(())
}