arkhe_kernel/state/
config.rs1use serde::{Deserialize, Serialize};
8
9use crate::abi::{CapabilityMask, InstanceId};
10use crate::state::quota::QuotaReductionPolicy;
11
12#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
16pub struct InstanceConfig {
17 pub default_caps: CapabilityMask,
20 pub max_entities: u32,
22 pub max_scheduled: u32,
24 pub memory_budget_bytes: u64,
29 pub parent: Option<InstanceId>,
32 pub quota_reduction: QuotaReductionPolicy,
35}
36
37#[cfg(test)]
38mod tests {
39 use super::*;
40
41 #[test]
42 fn config_default_is_zero_quota_reject_policy() {
43 let c = InstanceConfig::default();
44 assert_eq!(c.max_entities, 0);
45 assert_eq!(c.max_scheduled, 0);
46 assert_eq!(c.memory_budget_bytes, 0);
47 assert!(c.parent.is_none());
48 assert_eq!(c.quota_reduction, QuotaReductionPolicy::Reject);
49 assert!(c.default_caps.is_empty());
50 }
51
52 #[test]
53 fn config_clone_eq() {
54 let c1 = InstanceConfig {
55 default_caps: CapabilityMask::SYSTEM,
56 max_entities: 10,
57 max_scheduled: 100,
58 memory_budget_bytes: 1024,
59 parent: InstanceId::new(7),
60 quota_reduction: QuotaReductionPolicy::ThrottleProportional,
61 };
62 let c2 = c1.clone();
63 assert_eq!(c1, c2);
64 }
65
66 #[test]
67 fn config_field_assignment() {
68 let c = InstanceConfig {
69 max_entities: 42,
70 parent: InstanceId::new(3),
71 quota_reduction: QuotaReductionPolicy::GrandfatherExisting,
72 ..Default::default()
73 };
74 assert_eq!(c.max_entities, 42);
75 assert_eq!(c.parent, InstanceId::new(3));
76 assert_eq!(c.quota_reduction, QuotaReductionPolicy::GrandfatherExisting);
77 }
78}