@@ -57,6 +57,8 @@ pub fn run() {
57
57
58
58
let running_services = parse_running_services_from_logs ( & container) ;
59
59
60
+ assert_there_are_no_panics_in_logs ( & container) ;
61
+
60
62
assert_there_is_at_least_one_service_per_type ( & running_services) ;
61
63
62
64
let tracker_checker_config =
@@ -69,9 +71,12 @@ pub fn run() {
69
71
70
72
run_tracker_checker ( & tracker_checker_config_path) . expect ( "Tracker checker should check running services" ) ;
71
73
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) ;
73
78
74
- info ! ( "Running container `{}` will be automatically removed" , container . name ) ;
79
+ remove_tracker_container ( & container_name ) ;
75
80
}
76
81
77
82
fn setup_runner_logging ( level : LevelFilter ) {
@@ -164,6 +169,29 @@ fn run_tracker_container(image: &str, container_name: &str, options: &RunOptions
164
169
container
165
170
}
166
171
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
+
167
195
fn parse_running_services_from_logs ( container : & RunningContainer ) -> RunningServices {
168
196
let logs = Docker :: logs ( & container. name ) . expect ( "Logs should be captured from running container" ) ;
169
197
0 commit comments