@@ -19,32 +19,30 @@ pub const NUMBER_OF_ARGUMENTS: usize = 2;
19
19
///
20
20
/// Will panic if it can't not perform any of the operations.
21
21
pub fn run ( ) {
22
+ // todo: const
23
+ let container_tag: & str = "torrust-tracker:local" ;
24
+ let tracker_checker_config_file = "tracker_checker.json" ;
25
+
22
26
setup_logging ( LevelFilter :: Info ) ;
23
27
24
28
let args = parse_arguments ( ) ;
25
29
30
+ // Setup tracker configuration
26
31
info ! ( "Reading tracker configuration from file: {} ..." , args. tracker_config_path) ;
27
-
28
32
let tracker_config = read_tracker_config ( & args. tracker_config_path ) ;
29
33
30
- let container_tag: & str = "torrust-tracker:local" ;
31
- let tracker_checker_config_file = "tracker_checker.json" ;
32
-
34
+ // Build tracker container image
33
35
Docker :: build ( "./Containerfile" , container_tag) . expect ( "A tracker local docker image should be built" ) ;
34
36
37
+ // Create temp dir
35
38
info ! (
36
39
"Current dir: {:?}" ,
37
40
env:: current_dir( ) . expect( "It should return the current dir" )
38
41
) ;
39
-
40
42
let temp_dir_handler = Handler :: new ( ) . expect ( "A temp dir should be created" ) ;
41
43
info ! ( "Temp dir created: {:?}" , temp_dir_handler. temp_dir) ;
42
44
43
- info ! ( "Change dir to: {:?}" , temp_dir_handler. temp_dir) ;
44
- temp_dir_handler
45
- . change_to_temp_dir ( )
46
- . expect ( "The app should change dir to the temp dir" ) ;
47
-
45
+ // Run the tracker container
48
46
let container_name = generate_random_container_name ( "tracker_" ) ;
49
47
50
48
// code-review: if we want to use port 0 we don't know which ports we have to open.
@@ -68,6 +66,8 @@ pub fn run() {
68
66
69
67
info ! ( "Container {container_name} is healthy ..." ) ;
70
68
69
+ // Extract running services from container logs
70
+
71
71
let logs = Docker :: logs ( & container_name) . expect ( "Logs should be captured from running container" ) ;
72
72
73
73
debug ! ( "Logs after starting the container:\n {logs}" ) ;
@@ -77,20 +77,20 @@ pub fn run() {
77
77
78
78
let json = serde_json:: to_string_pretty ( & config) . expect ( "Running services should be serialized into JSON" ) ;
79
79
80
- let tracker_checker_config_path = format ! ( "./{tracker_checker_config_file}" ) ;
80
+ // Write tracker_checker configuration file
81
81
82
- let mut file = File :: create ( tracker_checker_config_path. clone ( ) ) . expect ( "Tracker checker config file to be created" ) ;
82
+ let mut absolute_tracker_checker_config_path = PathBuf :: from ( & temp_dir_handler. temp_dir . path ( ) ) ;
83
+ absolute_tracker_checker_config_path. push ( tracker_checker_config_file) ;
84
+
85
+ let mut file = File :: create ( absolute_tracker_checker_config_path. clone ( ) ) . expect ( "Tracker checker config file to be created" ) ;
83
86
file. write_all ( json. as_bytes ( ) )
84
87
. expect ( "Tracker checker config file to be written" ) ;
85
- info ! ( "Tracker checker configuration file: {tracker_checker_config_path} \n {json}" ) ;
86
-
87
- info ! ( "Revert current dir to: {:?}" , temp_dir_handler. original_dir) ;
88
- temp_dir_handler
89
- . revert_to_original_dir ( )
90
- . expect ( "The app should revert dir from temp dir to the original one" ) ;
88
+ info ! (
89
+ "Tracker checker configuration file: {:?} \n {json}" ,
90
+ absolute_tracker_checker_config_path
91
+ ) ;
91
92
92
- let mut absolute_tracker_checker_config_path = PathBuf :: from ( & temp_dir_handler. temp_dir . path ( ) ) ;
93
- absolute_tracker_checker_config_path. push ( tracker_checker_config_file) ;
93
+ // Run the tracker_checker
94
94
95
95
info ! (
96
96
"Running tacker checker: cargo --bin tracker_checker {}" ,
@@ -99,6 +99,8 @@ pub fn run() {
99
99
100
100
run_tracker_checker ( & absolute_tracker_checker_config_path) . expect ( "Tracker checker should check running services" ) ;
101
101
102
+ // End: container will be removed automatically when the `RunningContainer` is dropped.
103
+
102
104
info ! ( "Running container `{}` will be automatically removed" , container. name) ;
103
105
}
104
106
0 commit comments