Skip to content

Commit 4089d04

Browse files
committed
Adding unit tests to ruby_heap_trigger.rs
1 parent b9c4ef4 commit 4089d04

1 file changed

Lines changed: 51 additions & 0 deletions

File tree

gc/mmtk/src/heap/ruby_heap_trigger.rs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,54 @@ impl RubyHeapTrigger {
103103
.expect("Attempt to use RUBY_HEAP_TRIGGER_CONFIG before it is initialized")
104104
}
105105
}
106+
107+
#[cfg(test)]
108+
mod tests {
109+
use super::*;
110+
111+
const MIN_HEAP_PAGES: usize = 256;
112+
const MAX_HEAP_PAGES: usize = 4096;
113+
114+
fn init_config() {
115+
RUBY_HEAP_TRIGGER_CONFIG.get_or_init(|| RubyHeapTriggerConfig {
116+
min_heap_pages: MIN_HEAP_PAGES,
117+
max_heap_pages: MAX_HEAP_PAGES,
118+
heap_pages_min_ratio: 0.2,
119+
heap_pages_goal_ratio: 0.4,
120+
heap_pages_max_ratio: 0.65,
121+
});
122+
}
123+
124+
fn trigger_with_target(target_heap_pages: usize) -> RubyHeapTrigger {
125+
init_config();
126+
127+
RubyHeapTrigger {
128+
target_heap_pages: AtomicUsize::new(target_heap_pages),
129+
}
130+
}
131+
132+
#[test]
133+
fn starts_at_the_min_heap_size() {
134+
init_config();
135+
136+
let trigger = RubyHeapTrigger::default();
137+
138+
assert_eq!(trigger.get_current_heap_size_in_pages(), MIN_HEAP_PAGES);
139+
}
140+
141+
#[test]
142+
fn reports_the_configured_max_heap_size() {
143+
let trigger = trigger_with_target(MIN_HEAP_PAGES);
144+
145+
assert_eq!(trigger.get_max_heap_size_in_pages(), MAX_HEAP_PAGES);
146+
}
147+
148+
#[test]
149+
fn current_heap_size_tracks_the_target() {
150+
let trigger = trigger_with_target(1024);
151+
assert_eq!(trigger.get_current_heap_size_in_pages(), 1024);
152+
153+
trigger.target_heap_pages.store(2048, Ordering::Relaxed);
154+
assert_eq!(trigger.get_current_heap_size_in_pages(), 2048);
155+
}
156+
}

0 commit comments

Comments
 (0)