Skip to content

Commit 4abdd49

Browse files
committed
Fix up tests that reply on timeout-based cancellation
Signed-off-by: Ludvig Liljenberg <[email protected]>
1 parent 5c42336 commit 4abdd49

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

Justfile

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,7 @@ test-isolated target=default-target features="":
8787
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- sandbox::outb::tests::test_log_outb_log --exact --ignored
8888
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- mem::shared_mem::tests::test_drop --exact --ignored
8989
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --test integration_test -- log_message --exact --ignored
90-
@# metrics tests
91-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- metrics::tests::test_metrics_are_emitted --exact --ignored
92-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F function_call_metrics," + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- metrics::tests::test_metrics_are_emitted --exact --ignored
93-
90+
9491
# runs integration tests. Guest can either be "rust" or "c"
9592
test-integration guest target=default-target features="":
9693
@# run execute_on_heap test with feature "executable_heap" on and off

src/hyperlight_host/src/metrics/mod.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,12 @@ pub(crate) fn maybe_time_and_emit_host_call<T, F: FnOnce() -> T>(
8585

8686
#[cfg(test)]
8787
mod tests {
88+
use std::thread;
89+
use std::time::Duration;
90+
8891
use hyperlight_common::flatbuffer_wrappers::function_types::{ParameterValue, ReturnType};
8992
use hyperlight_testing::simple_guest_as_string;
90-
use metrics::Key;
93+
use metrics::{with_local_recorder, Key};
9194
use metrics_util::CompositeKey;
9295

9396
use super::*;
@@ -96,24 +99,24 @@ mod tests {
9699
use crate::{GuestBinary, UninitializedSandbox};
97100

98101
#[test]
99-
#[ignore = "This test needs to be run separately to avoid having other tests interfere with it"]
100102
fn test_metrics_are_emitted() {
101-
// Set up the recorder and snapshotter
102103
let recorder = metrics_util::debugging::DebuggingRecorder::new();
103104
let snapshotter = recorder.snapshotter();
104-
105-
// we cannot use with_local_recorder, since that won't capture the metrics
106-
// emitted by the hypervisor-thread (which is all of them)
107-
recorder.install().unwrap();
108-
109-
let snapshot = {
105+
let snapshot = with_local_recorder(&recorder, || {
110106
let uninit = UninitializedSandbox::new(
111107
GuestBinary::FilePath(simple_guest_as_string().unwrap()),
112108
None,
113109
)
114110
.unwrap();
115111

116112
let mut multi = uninit.evolve(Noop::default()).unwrap();
113+
let interrupt_handle = multi.interrupt_handle();
114+
115+
// interrupt the guest function call to "Spin" after 1 second
116+
let thread = thread::spawn(move || {
117+
thread::sleep(Duration::from_secs(1));
118+
assert!(interrupt_handle.kill());
119+
});
117120

118121
multi
119122
.call_guest_function_by_name(
@@ -126,9 +129,10 @@ mod tests {
126129
multi
127130
.call_guest_function_by_name("Spin", ReturnType::Int, None)
128131
.unwrap_err();
132+
thread.join().unwrap();
129133

130134
snapshotter.snapshot()
131-
};
135+
});
132136

133137
// Convert snapshot into a hashmap for easier lookup
134138
#[expect(clippy::mutable_key_type)]

src/hyperlight_host/tests/integration_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use crate::common::{new_uninit, new_uninit_rust};
3333

3434
#[test]
3535
fn kill_running_vm() {
36-
let mut sbox1: MultiUseSandbox = new_uninit().unwrap().evolve(Noop::default()).unwrap();
36+
let mut sbox1: MultiUseSandbox = new_uninit_rust().unwrap().evolve(Noop::default()).unwrap();
3737

3838
let interrupt_handle = sbox1.interrupt_handle();
3939
assert!(!interrupt_handle.dropped()); // not yet dropped

0 commit comments

Comments
 (0)