@@ -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