Skip to content

Commit 83b9d01

Browse files
refactor: move output_dir handling from PreComputeArgs to PreComputeApp
1 parent da73cf1 commit 83b9d01

File tree

2 files changed

+21
-24
lines changed

2 files changed

+21
-24
lines changed

pre-compute/src/compute/pre_compute_app.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::compute::errors::ReplicateStatusCause;
22
use crate::compute::pre_compute_args::PreComputeArgs;
3+
use crate::compute::utils::env_utils::{TeeSessionEnvironmentVariable, get_env_var_or_error};
34
use crate::compute::utils::file_utils::{download_file, write_file};
45
use crate::compute::utils::hash_utils::sha256;
56
use log::{error, info};
@@ -56,7 +57,20 @@ impl PreComputeAppTrait for PreComputeApp {
5657
/// app.run();
5758
/// ```
5859
fn run(&mut self) -> Result<(), Vec<ReplicateStatusCause>> {
59-
let (args, mut exit_causes) = PreComputeArgs::read_args();
60+
let (mut args, mut exit_causes): (PreComputeArgs, Vec<ReplicateStatusCause>);
61+
match get_env_var_or_error(
62+
TeeSessionEnvironmentVariable::IexecPreComputeOut,
63+
ReplicateStatusCause::PreComputeOutputPathMissing,
64+
) {
65+
Ok(output_dir) => {
66+
(args, exit_causes) = PreComputeArgs::read_args();
67+
args.output_dir = output_dir;
68+
}
69+
Err(e) => {
70+
error!("Failed to read output directory: {e:?}");
71+
return Err(vec![e]);
72+
}
73+
};
6074
self.pre_compute_args = args;
6175

6276
if let Err(exit_cause) = self.check_output_folder() {

pre-compute/src/compute/pre_compute_args.rs

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,6 @@ impl PreComputeArgs {
6363
info!("Starting to read pre-compute arguments from environment variables");
6464
let mut exit_causes: Vec<ReplicateStatusCause> = vec![];
6565

66-
let output_dir = match get_env_var_or_error(
67-
TeeSessionEnvironmentVariable::IexecPreComputeOut,
68-
ReplicateStatusCause::PreComputeOutputPathMissing,
69-
) {
70-
Ok(output_dir) => output_dir,
71-
Err(e) => {
72-
error!("Failed to read output directory: {e:?}");
73-
return (PreComputeArgs::default(), vec![e]);
74-
}
75-
};
76-
7766
let is_dataset_required = match get_env_var_or_error(
7867
TeeSessionEnvironmentVariable::IsDatasetRequired,
7968
ReplicateStatusCause::PreComputeIsDatasetRequiredMissing,
@@ -212,7 +201,7 @@ impl PreComputeArgs {
212201

213202
(
214203
PreComputeArgs {
215-
output_dir,
204+
output_dir: String::new(),
216205
is_dataset_required,
217206
input_files,
218207
iexec_bulk_slice_size,
@@ -230,15 +219,13 @@ mod tests {
230219
use crate::compute::utils::env_utils::TeeSessionEnvironmentVariable::*;
231220
use std::collections::HashMap;
232221

233-
const OUTPUT_DIR: &str = "/iexec_out";
234222
const DATASET_URL: &str = "https://dataset.url";
235223
const DATASET_KEY: &str = "datasetKey123";
236224
const DATASET_CHECKSUM: &str = "0x123checksum";
237225
const DATASET_FILENAME: &str = "dataset.txt";
238226

239227
fn setup_basic_env_vars() -> HashMap<String, String> {
240228
let mut vars = HashMap::new();
241-
vars.insert(IexecPreComputeOut.name(), OUTPUT_DIR.to_string());
242229
vars.insert(IsDatasetRequired.name(), "true".to_string());
243230
vars.insert(IexecInputFilesNumber.name(), "0".to_string());
244231
vars.insert(IexecBulkSliceSize.name(), "0".to_string()); // Default to no bulk processing
@@ -303,7 +290,7 @@ mod tests {
303290
assert!(result.1.is_empty());
304291
let args = result.0;
305292

306-
assert_eq!(args.output_dir, OUTPUT_DIR);
293+
assert_eq!(args.output_dir, "");
307294
assert!(!args.is_dataset_required);
308295
assert_eq!(args.input_files.len(), 1);
309296
assert_eq!(args.input_files[0], "https://input-1.txt");
@@ -325,7 +312,7 @@ mod tests {
325312
assert!(result.1.is_empty());
326313
let args = result.0;
327314

328-
assert_eq!(args.output_dir, OUTPUT_DIR);
315+
assert_eq!(args.output_dir, "");
329316
assert!(args.is_dataset_required);
330317
assert_eq!(args.datasets[0].url, DATASET_URL.to_string());
331318
assert_eq!(args.datasets[0].key, DATASET_KEY.to_string());
@@ -351,7 +338,7 @@ mod tests {
351338
assert!(result.1.is_empty());
352339
let args = result.0;
353340

354-
assert_eq!(args.output_dir, OUTPUT_DIR);
341+
assert_eq!(args.output_dir, "");
355342
assert!(!args.is_dataset_required);
356343
assert_eq!(args.input_files.len(), 3);
357344
assert_eq!(args.input_files[0], "https://input-1.txt");
@@ -429,7 +416,7 @@ mod tests {
429416
assert!(result.1.is_empty());
430417
let args = result.0;
431418

432-
assert_eq!(args.output_dir, OUTPUT_DIR);
419+
assert_eq!(args.output_dir, "");
433420
assert!(!args.is_dataset_required);
434421
assert_eq!(args.iexec_bulk_slice_size, 3);
435422
assert_eq!(args.datasets.len(), 3);
@@ -468,7 +455,7 @@ mod tests {
468455
assert!(result.1.is_empty());
469456
let args = result.0;
470457

471-
assert_eq!(args.output_dir, OUTPUT_DIR);
458+
assert_eq!(args.output_dir, "");
472459
assert!(args.is_dataset_required);
473460
assert_eq!(args.iexec_bulk_slice_size, 2);
474461
assert_eq!(args.datasets.len(), 3); // 1 regular + 2 bulk datasets
@@ -592,10 +579,6 @@ mod tests {
592579
#[test]
593580
fn read_args_fails_when_dataset_env_var_missing() {
594581
let missing_env_var_causes = vec![
595-
(
596-
IexecPreComputeOut,
597-
ReplicateStatusCause::PreComputeOutputPathMissing,
598-
),
599582
(
600583
IsDatasetRequired,
601584
ReplicateStatusCause::PreComputeIsDatasetRequiredMissing,

0 commit comments

Comments
 (0)