Skip to content

Commit e985288

Browse files
committed
hmon: add positive path unit tests for HMON FFI
Only positive path is tested. Negative path will require rework to avoid aborts.
1 parent 14ee704 commit e985288

2 files changed

Lines changed: 92 additions & 1 deletion

File tree

.github/workflows/reference-integration.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ on:
1919
types: [checks_requested]
2020
jobs:
2121
integration:
22-
uses: eclipse-score/reference_integration/.github/workflows/reusable_smoke-test.yml@main
22+
uses: eclipse-score/reference_integration/.github/workflows/reusable_smoke-test.yml@151344ccd314617eebb76f372f1279e611e056e2
2323
secrets: inherit
2424
with:
2525
repo_runner_labels: 'ubuntu-latest'

src/health_monitoring_lib/rust/ffi.rs

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,94 @@ extern "C" fn health_monitor_destroy(handle: FFIHandle) {
113113
let _ = Box::from_raw(handle as *mut HealthMonitor);
114114
}
115115
}
116+
117+
#[cfg(test)]
118+
mod tests {
119+
use crate::deadline::ffi::{deadline_monitor_builder_create, deadline_monitor_cpp_destroy};
120+
use crate::ffi::{
121+
health_monitor_builder_add_deadline_monitor, health_monitor_builder_build, health_monitor_builder_create,
122+
health_monitor_builder_destroy, health_monitor_destroy, health_monitor_get_deadline_monitor,
123+
health_monitor_start,
124+
};
125+
use crate::IdentTag;
126+
127+
#[test]
128+
fn test_health_monitor_builder_create_ok() {
129+
let health_monitor_builder_handle = health_monitor_builder_create();
130+
assert!(!health_monitor_builder_handle.is_null());
131+
132+
// Clean-up.
133+
// NOTE: `health_monitor_builder_destroy` positive path is already tested here.
134+
health_monitor_builder_destroy(health_monitor_builder_handle);
135+
}
136+
137+
#[test]
138+
fn test_health_monitor_builder_add_deadline_monitor_ok() {
139+
let health_monitor_builder_handle = health_monitor_builder_create();
140+
let deadline_monitor_tag = IdentTag::new("deadline_monitor");
141+
let deadline_monitor_builder_handle = deadline_monitor_builder_create();
142+
health_monitor_builder_add_deadline_monitor(
143+
health_monitor_builder_handle,
144+
&deadline_monitor_tag as *const IdentTag,
145+
deadline_monitor_builder_handle,
146+
);
147+
148+
// Clean-up.
149+
health_monitor_builder_destroy(health_monitor_builder_handle);
150+
}
151+
152+
#[test]
153+
fn test_health_monitor_builder_build_ok() {
154+
let health_monitor_builder_handle = health_monitor_builder_create();
155+
let health_monitor_handle = health_monitor_builder_build(health_monitor_builder_handle, 200, 100);
156+
assert!(!health_monitor_handle.is_null());
157+
158+
// Clean-up.
159+
// NOTE: `health_monitor_destroy` positive path is already tested here.
160+
health_monitor_destroy(health_monitor_handle);
161+
}
162+
163+
#[test]
164+
fn test_health_monitor_get_deadline_monitor_ok() {
165+
let health_monitor_builder_handle = health_monitor_builder_create();
166+
let deadline_monitor_tag = IdentTag::new("deadline_monitor");
167+
let deadline_monitor_builder_handle = deadline_monitor_builder_create();
168+
health_monitor_builder_add_deadline_monitor(
169+
health_monitor_builder_handle,
170+
&deadline_monitor_tag as *const IdentTag,
171+
deadline_monitor_builder_handle,
172+
);
173+
let health_monitor_handle = health_monitor_builder_build(health_monitor_builder_handle, 200, 100);
174+
175+
let deadline_monitor_handle =
176+
health_monitor_get_deadline_monitor(health_monitor_handle, &deadline_monitor_tag as *const IdentTag);
177+
assert!(!deadline_monitor_handle.is_null());
178+
179+
// Clean-up.
180+
deadline_monitor_cpp_destroy(deadline_monitor_handle);
181+
health_monitor_destroy(health_monitor_handle);
182+
}
183+
184+
#[test]
185+
fn test_health_monitor_start_ok() {
186+
let health_monitor_builder_handle = health_monitor_builder_create();
187+
let deadline_monitor_tag = IdentTag::new("deadline_monitor");
188+
let deadline_monitor_builder_handle = deadline_monitor_builder_create();
189+
health_monitor_builder_add_deadline_monitor(
190+
health_monitor_builder_handle,
191+
&deadline_monitor_tag as *const IdentTag,
192+
deadline_monitor_builder_handle,
193+
);
194+
let health_monitor_handle = health_monitor_builder_build(health_monitor_builder_handle, 200, 100);
195+
196+
let deadline_monitor_handle =
197+
health_monitor_get_deadline_monitor(health_monitor_handle, &deadline_monitor_tag as *const IdentTag);
198+
assert!(!deadline_monitor_handle.is_null());
199+
200+
health_monitor_start(health_monitor_handle);
201+
202+
// Clean-up.
203+
deadline_monitor_cpp_destroy(deadline_monitor_handle);
204+
health_monitor_destroy(health_monitor_handle);
205+
}
206+
}

0 commit comments

Comments
 (0)