1+ use crate :: benchmarker:: modes:: CICD ;
12use crate :: config:: { Framework , Named , Project , Test } ;
23use crate :: docker:: container:: {
34 create_benchmarker_container, create_container, create_verifier_container,
@@ -34,6 +35,7 @@ use std::{thread, time};
3435pub mod modes {
3536 pub const BENCHMARK : & str = "benchmark" ;
3637 pub const VERIFY : & str = "verify" ;
38+ pub const CICD : & str = "cicd" ;
3739 pub const DEBUG : & str = "debug" ;
3840}
3941
@@ -68,7 +70,7 @@ pub struct Benchmarker<'a> {
6870}
6971
7072impl < ' a > Benchmarker < ' a > {
71- pub fn new ( docker_config : DockerConfig < ' a > , projects : Vec < Project > ) -> Self {
73+ pub fn new ( docker_config : DockerConfig < ' a > , projects : Vec < Project > , mode : & str ) -> Self {
7274 let application_container_id = Arc :: new ( Mutex :: new ( DockerContainerIdFuture :: new (
7375 & docker_config. server_docker_host ,
7476 ) ) ) ;
@@ -92,37 +94,39 @@ impl<'a> Benchmarker<'a> {
9294 ctrlc_received : Arc :: new ( AtomicBool :: new ( false ) ) ,
9395 } ;
9496
95- let use_unix_socket = benchmarker. docker_config . use_unix_socket ;
96- let application_container_id = Arc :: clone ( & benchmarker. application_container_id ) ;
97- let database_container_id = Arc :: clone ( & benchmarker. database_container_id ) ;
98- let verifier_container_id = Arc :: clone ( & benchmarker. verifier_container_id ) ;
99- let benchmarker_container_id = Arc :: clone ( & benchmarker. benchmarker_container_id ) ;
100- let ctrlc_received = Arc :: clone ( & benchmarker. ctrlc_received ) ;
101- ctrlc:: set_handler ( move || {
102- let logger = Logger :: default ( ) ;
103- logger. log ( "Shutting down (may take a moment)" ) . unwrap ( ) ;
104- if ctrlc_received. load ( Ordering :: Acquire ) {
105- logger
106- . log ( "Exiting immediately (there may still be running containers to stop)" )
107- . unwrap ( ) ;
108- std:: process:: exit ( 0 ) ;
109- } else {
110- let application_container_id = Arc :: clone ( & application_container_id) ;
111- let database_container_id = Arc :: clone ( & database_container_id) ;
112- let verifier_container_id = Arc :: clone ( & verifier_container_id) ;
113- let benchmarker_container_id = Arc :: clone ( & benchmarker_container_id) ;
114- let ctrlc_received = Arc :: clone ( & ctrlc_received) ;
115- thread:: spawn ( move || {
116- ctrlc_received. store ( true , Ordering :: Release ) ;
117- stop_docker_container_future ( use_unix_socket, & verifier_container_id) ;
118- stop_docker_container_future ( use_unix_socket, & benchmarker_container_id) ;
119- stop_docker_container_future ( use_unix_socket, & application_container_id) ;
120- stop_docker_container_future ( use_unix_socket, & database_container_id) ;
97+ if mode != CICD {
98+ let use_unix_socket = benchmarker. docker_config . use_unix_socket ;
99+ let application_container_id = Arc :: clone ( & benchmarker. application_container_id ) ;
100+ let database_container_id = Arc :: clone ( & benchmarker. database_container_id ) ;
101+ let verifier_container_id = Arc :: clone ( & benchmarker. verifier_container_id ) ;
102+ let benchmarker_container_id = Arc :: clone ( & benchmarker. benchmarker_container_id ) ;
103+ let ctrlc_received = Arc :: clone ( & benchmarker. ctrlc_received ) ;
104+ ctrlc:: set_handler ( move || {
105+ let logger = Logger :: default ( ) ;
106+ logger. log ( "Shutting down (may take a moment)" ) . unwrap ( ) ;
107+ if ctrlc_received. load ( Ordering :: Acquire ) {
108+ logger
109+ . log ( "Exiting immediately (there may still be running containers to stop)" )
110+ . unwrap ( ) ;
121111 std:: process:: exit ( 0 ) ;
122- } ) ;
123- }
124- } )
125- . unwrap ( ) ;
112+ } else {
113+ let application_container_id = Arc :: clone ( & application_container_id) ;
114+ let database_container_id = Arc :: clone ( & database_container_id) ;
115+ let verifier_container_id = Arc :: clone ( & verifier_container_id) ;
116+ let benchmarker_container_id = Arc :: clone ( & benchmarker_container_id) ;
117+ let ctrlc_received = Arc :: clone ( & ctrlc_received) ;
118+ thread:: spawn ( move || {
119+ ctrlc_received. store ( true , Ordering :: Release ) ;
120+ stop_docker_container_future ( use_unix_socket, & verifier_container_id) ;
121+ stop_docker_container_future ( use_unix_socket, & benchmarker_container_id) ;
122+ stop_docker_container_future ( use_unix_socket, & application_container_id) ;
123+ stop_docker_container_future ( use_unix_socket, & database_container_id) ;
124+ std:: process:: exit ( 0 ) ;
125+ } ) ;
126+ }
127+ } )
128+ . unwrap ( ) ;
129+ }
126130
127131 benchmarker
128132 }
@@ -774,30 +778,24 @@ impl<'a> Benchmarker<'a> {
774778 }
775779 }
776780
777- match self . docker_config . server_host {
778- "tfb-server" => easy . url ( & format ! ( "http://localhost:{}{}" , host_port, endpoint) ) ? ,
779- _ => easy . url ( & format ! (
781+ let url = match self . docker_config . server_host {
782+ "tfb-server" => format ! ( "http://localhost:{}{}" , host_port, endpoint) ,
783+ _ => format ! (
780784 "http://{}:{}{}" ,
781785 & self . docker_config. server_host, host_port, endpoint
782- ) ) ? ,
786+ ) ,
783787 } ;
788+ easy. url ( & url) ?;
784789 easy. timeout ( time:: Duration :: from_secs ( 1 ) ) ?;
785790 let _ = easy. perform ( ) ;
786791
787- match easy. response_code ( ) {
788- Ok ( code) => {
789- if code > 0 {
790- return Ok ( ( ) ) ;
791- } else {
792- slept_for += 1 ;
793- thread:: sleep ( Duration :: from_secs ( 1 ) ) ;
794- }
795- }
796- _ => {
797- slept_for += 1 ;
798- thread:: sleep ( Duration :: from_secs ( 1 ) ) ;
792+ if let Ok ( code) = easy. response_code ( ) {
793+ if code > 0 {
794+ return Ok ( ( ) ) ;
799795 }
800796 }
797+ slept_for += 1 ;
798+ thread:: sleep ( Duration :: from_secs ( 1 ) ) ;
801799 }
802800 }
803801}
0 commit comments