fn test_rotation_files_size()

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(())
    }