@@ -26,6 +26,7 @@ use redis::Commands;
2626use serde:: Deserialize ;
2727use serde:: Serialize ;
2828use serde_json:: Value ;
29+ use testcontainers:: core:: client:: docker_client_instance;
2930use testcontainers:: core:: error:: WaitContainerError ;
3031use testcontainers:: core:: IntoContainerPort ;
3132use testcontainers:: core:: WaitFor ;
@@ -242,12 +243,12 @@ fn run_script(name: &str, args: &[&str]) -> Result<()> {
242243}
243244
244245pub async fn run_ttc_container (
245- docker : & Docker ,
246246 image : & str ,
247247 port : u16 ,
248248 http_server_port : u16 ,
249249 cs : & mut Vec < ContainerAsync < GenericImage > > ,
250250) -> Result < ( ) > {
251+ let docker = & docker_client_instance ( ) . await ?;
251252 let mut images = image. split ( ":" ) ;
252253 let image = images. next ( ) . unwrap ( ) ;
253254 let tag = images. next ( ) . unwrap_or ( "latest" ) ;
@@ -264,8 +265,6 @@ pub async fn run_ttc_container(
264265 let start = Instant :: now ( ) ;
265266 println ! ( "Start container {container_name}" ) ;
266267
267- stop_container ( docker, & container_name) . await ;
268-
269268 let mut i = 1 ;
270269 loop {
271270 let container_res = GenericImage :: new ( image, tag)
@@ -287,28 +286,24 @@ pub async fn run_ttc_container(
287286 match container_res {
288287 Ok ( container) => {
289288 println ! (
290- "Start container {} using {} secs success" ,
289+ "Start container {container_name} {} using {duration } secs success" ,
291290 container. id( ) ,
292- duration
293291 ) ;
294292 cs. push ( container) ;
295293 return Ok ( ( ) ) ;
296294 }
297295 Err ( err) => {
298- println ! (
299- "Start container {} using {} secs failed: {}" ,
300- container_name, duration, err
301- ) ;
296+ println ! ( "Start container {container_name} using {duration} secs failed: {err}" ) ;
302297 if err. to_string ( ) . to_ascii_lowercase ( ) . contains ( "timeout" )
303298 || err. to_string ( ) . to_ascii_lowercase ( ) . contains ( "conflict" )
304299 {
305- println ! ( "start to stop container {container_name}" ) ;
300+ println ! ( "Start to stop container {container_name}" ) ;
306301 stop_container ( docker, & container_name) . await ;
307302 }
308303 if i == CONTAINER_RETRY_TIMES || duration >= CONTAINER_TIMEOUT_SECONDS {
309304 break ;
310305 } else {
311- println ! ( "retry start container {container_name} after {duration}" ) ;
306+ println ! ( "retry start container {container_name} after {duration} secs " ) ;
312307 i += 1 ;
313308 }
314309 }
@@ -330,7 +325,7 @@ pub async fn lazy_run_dictionary_containers(
330325 return Ok ( None ) ;
331326 }
332327 println ! ( "Start run dictionary source server container" ) ;
333- let docker = Docker :: connect_with_local_defaults ( ) . unwrap ( ) ;
328+ let docker = docker_client_instance ( ) . await ? ;
334329 let redis = run_redis_server ( & docker) . await ?;
335330 let mysql = run_mysql_server ( & docker) . await ?;
336331 let dict_container = DictionaryContainer { redis, mysql } ;
@@ -469,11 +464,15 @@ async fn run_mysql_server(docker: &Docker) -> Result<ContainerAsync<Mysql>> {
469464
470465// Stop the running container to avoid conflict
471466async fn stop_container ( docker : & Docker , container_name : & str ) {
472- let _ = docker. stop_container ( container_name, None ) . await ;
467+ if let Err ( err) = docker. stop_container ( container_name, None ) . await {
468+ println ! ( "stop container {container_name} err: {err}" ) ;
469+ }
473470 let options = Some ( RemoveContainerOptions {
474471 force : true ,
475472 ..Default :: default ( )
476473 } ) ;
477- let _ = docker. remove_container ( container_name, options) . await ;
478- println ! ( "Stop container {container_name}" ) ;
474+ if let Err ( err) = docker. remove_container ( container_name, options) . await {
475+ println ! ( "remove container {container_name} err: {err}" ) ;
476+ }
477+ println ! ( "Stopped container {container_name}" ) ;
479478}
0 commit comments