@@ -57,6 +57,8 @@ pub fn run() {
5757
5858 let running_services = parse_running_services_from_logs ( & container) ;
5959
60+ assert_there_are_no_panics_in_logs ( & container) ;
61+
6062 assert_there_is_at_least_one_service_per_type ( & running_services) ;
6163
6264 let tracker_checker_config =
@@ -69,9 +71,12 @@ pub fn run() {
6971
7072 run_tracker_checker ( & tracker_checker_config_path) . expect ( "Tracker checker should check running services" ) ;
7173
72- // More E2E tests could be executed here in the future. For example: `cargo test ...`.
74+ // More E2E tests could be added here in the future.
75+ // For example: `cargo test ...` for only E2E tests, using this shared test env.
76+
77+ stop_tracker_container ( & container) ;
7378
74- info ! ( "Running container `{}` will be automatically removed" , container . name ) ;
79+ remove_tracker_container ( & container_name ) ;
7580}
7681
7782fn setup_runner_logging ( level : LevelFilter ) {
@@ -164,6 +169,29 @@ fn run_tracker_container(image: &str, container_name: &str, options: &RunOptions
164169 container
165170}
166171
172+ fn stop_tracker_container ( container : & RunningContainer ) {
173+ info ! ( "Stopping docker tracker image: {} ..." , container. name) ;
174+ Docker :: stop ( container) . expect ( "Container should be stopped" ) ;
175+ assert_there_are_no_panics_in_logs ( container) ;
176+ }
177+
178+ fn remove_tracker_container ( container_name : & str ) {
179+ info ! ( "Removing docker tracker image: {container_name} ..." ) ;
180+ Docker :: remove ( container_name) . expect ( "Container should be removed" ) ;
181+ }
182+
183+ fn assert_there_are_no_panics_in_logs ( container : & RunningContainer ) -> RunningServices {
184+ let logs = Docker :: logs ( & container. name ) . expect ( "Logs should be captured from running container" ) ;
185+
186+ assert ! (
187+ !( logs. contains( " panicked at " ) || logs. contains( "RUST_BACKTRACE=1" ) ) ,
188+ "{}" ,
189+ format!( "Panics found is logs:\n {logs}" )
190+ ) ;
191+
192+ RunningServices :: parse_from_logs ( & logs)
193+ }
194+
167195fn parse_running_services_from_logs ( container : & RunningContainer ) -> RunningServices {
168196 let logs = Docker :: logs ( & container. name ) . expect ( "Logs should be captured from running container" ) ;
169197
0 commit comments