1- use std:: time:: Duration ;
1+ use std:: { path :: PathBuf , time:: Duration } ;
22
33use tap:: TapFallible ;
44use tracing:: error;
@@ -11,8 +11,10 @@ async fn supervisor_disallows_downloads_if_signup_started_received(
1111 let dbus_instances = helpers:: launch_dbuses ( ) . await ??;
1212
1313 let settings = helpers:: make_settings ( & dbus_instances) ;
14+ let zenorb = helpers:: isolated_supervisor_zenorb ( ) . await ?;
1415
15- let application = helpers:: spawn_supervisor_service ( settings. clone ( ) ) . await ?;
16+ let application =
17+ helpers:: spawn_supervisor_service ( settings. clone ( ) , zenorb) . await ?;
1618 let _application_handle = tokio:: spawn ( application. run ( ) ) ;
1719
1820 let update_agent_proxy =
@@ -47,7 +49,9 @@ async fn supervisor_stops_orb_core_when_update_permission_is_requested(
4749 let dbus_instances = helpers:: launch_dbuses ( ) . await ??;
4850
4951 let settings = helpers:: make_settings ( & dbus_instances) ;
50- let application = helpers:: spawn_supervisor_service ( settings. clone ( ) ) . await ?;
52+ let zenorb = helpers:: isolated_supervisor_zenorb ( ) . await ?;
53+ let application =
54+ helpers:: spawn_supervisor_service ( settings. clone ( ) , zenorb) . await ?;
5155
5256 let _application_handle = tokio:: spawn ( application. run ( ) ) ;
5357
@@ -91,3 +95,33 @@ async fn supervisor_stops_orb_core_when_update_permission_is_requested(
9195
9296 Ok ( ( ) )
9397}
98+
99+ #[ tokio:: test( flavor = "multi_thread" , worker_threads = 2 ) ]
100+ async fn application_serves_gondor_zoci_handler_end_to_end ( ) -> color_eyre:: Result < ( ) > {
101+ let dbus_instances = helpers:: launch_dbuses ( ) . await ??;
102+
103+ let ( _router, supervisor_zenorb, client_zenorb) =
104+ helpers:: spawn_zenoh_router_and_clients ( "supervisor" , "test-client" ) . await ?;
105+
106+ let mut settings = helpers:: make_settings ( & dbus_instances) ;
107+ settings. gondor_bin = PathBuf :: from ( "/bin/true" ) ;
108+
109+ let application =
110+ helpers:: spawn_supervisor_service ( settings, supervisor_zenorb) . await ?;
111+ let _application_handle = tokio:: spawn ( application. run ( ) ) ;
112+
113+ // Give Application::run a beat to register its zoci queryable on the router.
114+ tokio:: time:: sleep ( Duration :: from_millis ( 300 ) ) . await ;
115+
116+ let reply = client_zenorb
117+ . command_raw ( "supervisor/job/gondor-calls-for-ota" , "v1.0.0" )
118+ . await ?;
119+
120+ if let Err ( reply_err) = reply {
121+ let payload =
122+ String :: from_utf8_lossy ( & reply_err. payload ( ) . to_bytes ( ) ) . into_owned ( ) ;
123+ panic ! ( "expected success reply, got error: {payload}" ) ;
124+ }
125+
126+ Ok ( ( ) )
127+ }
0 commit comments