pub const SMALL_FILE_THRESHOLD_BYTES: u64 = 16 * 1024 * 1024;
pub const TARGET_COMPACTION_SIZE_BYTES: u64 = 128 * 1024 * 1024;
pub const MEDIUM_FILE_THRESHOLD_BYTES: u64 = 128 * 1024 * 1024;
pub const LARGE_FILE_THRESHOLD_BYTES: u64 = 1024 * 1024 * 1024;
pub const COMPACTION_TARGET_SMALL_AVG: u64 = 128 * 1024 * 1024;
pub const COMPACTION_TARGET_MEDIUM_AVG: u64 = 256 * 1024 * 1024;
pub const COMPACTION_TARGET_LARGE_AVG: u64 = 512 * 1024 * 1024;
pub const AVG_FILE_SIZE_MEDIUM_THRESHOLD: f64 = 64.0 * 1024.0 * 1024.0;
pub const SECONDS_PER_DAY: f64 = 86400.0;
pub const DEFAULT_STABILITY_SCORE: f64 = 365.0;
pub const SCHEMA_CHANGES_HIGH_THRESHOLD: usize = 50;
pub const SCHEMA_CHANGES_MEDIUM_THRESHOLD: usize = 20;
pub const SCHEMA_CHANGES_LOW_THRESHOLD: usize = 10;
pub const BREAKING_CHANGES_HIGH_THRESHOLD: usize = 10;
pub const BREAKING_CHANGES_MEDIUM_THRESHOLD: usize = 5;
pub const SCHEMA_CHANGE_FREQUENCY_HIGH: f64 = 1.0;
pub const SCHEMA_CHANGE_FREQUENCY_MEDIUM: f64 = 0.5;
pub const SCHEMA_CHANGE_FREQUENCY_LOW: f64 = 0.1;
pub const DAYS_SINCE_CHANGE_VERY_STABLE: f64 = 30.0;
pub const DAYS_SINCE_CHANGE_STABLE: f64 = 7.0;
pub const STORAGE_SIZE_HIGH_GB: f64 = 100.0;
pub const STORAGE_SIZE_MEDIUM_GB: f64 = 50.0;
pub const STORAGE_SIZE_LOW_GB: f64 = 10.0;
pub const SNAPSHOT_COUNT_HIGH: usize = 100;
pub const SNAPSHOT_COUNT_MEDIUM: usize = 50;
pub const SNAPSHOT_COUNT_LOW: usize = 20;
pub const SNAPSHOT_AGE_OLD_DAYS: f64 = 90.0;
pub const SNAPSHOT_AGE_MEDIUM_DAYS: f64 = 30.0;
pub const RETENTION_SNAPSHOT_VERY_HIGH: usize = 1000;
pub const RETENTION_SNAPSHOT_HIGH: usize = 500;
pub const RETENTION_SNAPSHOT_MEDIUM: usize = 100;
pub const RETENTION_SNAPSHOT_LOW: usize = 50;
pub const RETENTION_PENALTY_VERY_HIGH: f64 = 0.4;
pub const RETENTION_PENALTY_HIGH: f64 = 0.3;
pub const RETENTION_PENALTY_MEDIUM: f64 = 0.2;
pub const RETENTION_PENALTY_LOW: f64 = 0.1;
pub const RETENTION_MAX_DAYS: f64 = 365.0;
pub const RETENTION_MIN_DAYS: f64 = 7.0;
pub const RETENTION_TOO_LONG_PENALTY: f64 = 0.2;
pub const RETENTION_TOO_SHORT_PENALTY: f64 = 0.1;
pub const RECOMMENDED_RETENTION_VERY_OLD_DAYS: f64 = 365.0;
pub const RECOMMENDED_RETENTION_OLD_DAYS: f64 = 90.0;
pub const RECOMMENDED_RETENTION_RECENT_DAYS: f64 = 30.0;
pub const RECOMMENDED_RETENTION_SHORT: u64 = 30;
pub const RECOMMENDED_RETENTION_MEDIUM: u64 = 60;
pub const RECOMMENDED_RETENTION_LONG: u64 = 90;
pub const RECOMMENDED_RETENTION_VERY_LONG: u64 = 180;
const _: () = assert!(SMALL_FILE_THRESHOLD_BYTES < MEDIUM_FILE_THRESHOLD_BYTES);
const _: () = assert!(MEDIUM_FILE_THRESHOLD_BYTES < LARGE_FILE_THRESHOLD_BYTES);
const _: () = assert!(SCHEMA_CHANGES_LOW_THRESHOLD < SCHEMA_CHANGES_MEDIUM_THRESHOLD);
const _: () = assert!(SCHEMA_CHANGES_MEDIUM_THRESHOLD < SCHEMA_CHANGES_HIGH_THRESHOLD);
const _: () = assert!(COMPACTION_TARGET_SMALL_AVG < COMPACTION_TARGET_MEDIUM_AVG);
const _: () = assert!(COMPACTION_TARGET_MEDIUM_AVG < COMPACTION_TARGET_LARGE_AVG);
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_file_size_thresholds_ordering() {
assert_eq!(SMALL_FILE_THRESHOLD_BYTES, 16 * 1024 * 1024); assert_eq!(MEDIUM_FILE_THRESHOLD_BYTES, 128 * 1024 * 1024); assert_eq!(LARGE_FILE_THRESHOLD_BYTES, 1024 * 1024 * 1024); }
#[test]
fn test_compaction_target_thresholds() {
assert_eq!(COMPACTION_TARGET_SMALL_AVG, 128 * 1024 * 1024); assert_eq!(COMPACTION_TARGET_MEDIUM_AVG, 256 * 1024 * 1024); assert_eq!(COMPACTION_TARGET_LARGE_AVG, 512 * 1024 * 1024); assert!((AVG_FILE_SIZE_MEDIUM_THRESHOLD - 64.0 * 1024.0 * 1024.0).abs() < f64::EPSILON);
}
#[test]
fn test_schema_change_thresholds_ordering() {
assert_eq!(SCHEMA_CHANGES_LOW_THRESHOLD, 10);
assert_eq!(SCHEMA_CHANGES_MEDIUM_THRESHOLD, 20);
assert_eq!(SCHEMA_CHANGES_HIGH_THRESHOLD, 50);
}
#[test]
fn test_frequency_thresholds_ordering() {
assert!((SCHEMA_CHANGE_FREQUENCY_LOW - 0.1).abs() < f64::EPSILON);
assert!((SCHEMA_CHANGE_FREQUENCY_MEDIUM - 0.5).abs() < f64::EPSILON);
assert!((SCHEMA_CHANGE_FREQUENCY_HIGH - 1.0).abs() < f64::EPSILON);
}
}