Skip to content

Commit e91b9d2

Browse files
feat: rename bulk env vars
1 parent 3e46681 commit e91b9d2

File tree

3 files changed

+79
-106
lines changed

3 files changed

+79
-106
lines changed

pre-compute/src/compute/pre_compute_app.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ mod tests {
187187
input_files: urls.into_iter().map(String::from).collect(),
188188
output_dir: output_dir.to_string(),
189189
is_dataset_required: true,
190-
bulk_size: 0,
190+
iexec_bulk_slice_size: 0,
191191
datasets: vec![Dataset {
192192
url: HTTP_DATASET_URL.to_string(),
193193
checksum: DATASET_CHECKSUM.to_string(),

pre-compute/src/compute/pre_compute_args.rs

Lines changed: 47 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pub struct PreComputeArgs {
1515
// Input files
1616
pub input_files: Vec<String>,
1717
// Bulk processing
18-
pub bulk_size: usize,
18+
pub iexec_bulk_slice_size: usize,
1919
pub datasets: Vec<Dataset>,
2020
}
2121

@@ -28,24 +28,24 @@ impl PreComputeArgs {
2828
/// - `IEXEC_PRE_COMPUTE_OUT`: Output directory path
2929
/// - `IEXEC_DATASET_REQUIRED`: Boolean ("true"/"false") indicating dataset requirement
3030
/// - `IEXEC_INPUT_FILES_NUMBER`: Number of input files to load
31-
/// - `BULK_SIZE`: Number of bulk datasets (0 means no bulk processing)
31+
/// - `IEXEC_BULK_SLICE_SIZE`: Number of bulk datasets (0 means no bulk processing)
3232
/// - Required when `IEXEC_DATASET_REQUIRED` = "true":
3333
/// - `IEXEC_DATASET_URL`: Encrypted dataset URL
3434
/// - `IEXEC_DATASET_KEY`: Base64-encoded dataset encryption key
3535
/// - `IEXEC_DATASET_CHECKSUM`: Encrypted dataset checksum
3636
/// - `IEXEC_DATASET_FILENAME`: Decrypted dataset filename
37-
/// - Required when `BULK_SIZE` > 0 (for each dataset index from 1 to BULK_SIZE):
38-
/// - `BULK_DATASET_#_URL`: Dataset URL
39-
/// - `BULK_DATASET_#_CHECKSUM`: Dataset checksum
40-
/// - `BULK_DATASET_#_FILENAME`: Dataset filename
41-
/// - `BULK_DATASET_#_KEY`: Dataset decryption key
37+
/// - Required when `IEXEC_BULK_SLICE_SIZE` > 0 (for each dataset index from 1 to IEXEC_BULK_SLICE_SIZE):
38+
/// - `IEXEC_DATASET_#_URL`: Dataset URL
39+
/// - `IEXEC_DATASET_#_CHECKSUM`: Dataset checksum
40+
/// - `IEXEC_DATASET_#_FILENAME`: Dataset filename
41+
/// - `IEXEC_DATASET_#_KEY`: Dataset decryption key
4242
/// - Input file URLs (`IEXEC_INPUT_FILE_URL_1`, `IEXEC_INPUT_FILE_URL_2`, etc.)
4343
///
4444
/// # Errors
4545
/// Returns `ReplicateStatusCause` error variants for:
4646
/// - Missing required environment variables
4747
/// - Invalid boolean values in `IEXEC_DATASET_REQUIRED`
48-
/// - Invalid numeric format in `IEXEC_INPUT_FILES_NUMBER` or `BULK_SIZE`
48+
/// - Invalid numeric format in `IEXEC_INPUT_FILES_NUMBER` or `IEXEC_BULK_SLICE_SIZE`
4949
/// - Missing dataset parameters when required
5050
/// - Missing input file URLs
5151
/// - Missing bulk dataset parameters when bulk processing is enabled
@@ -73,51 +73,33 @@ impl PreComputeArgs {
7373
.parse::<bool>()
7474
.map_err(|_| ReplicateStatusCause::PreComputeIsDatasetRequiredMissing)?;
7575

76-
// Read bulk size (defaults to 0 if not present for backward compatibility)
77-
let bulk_size_str = std::env::var(TeeSessionEnvironmentVariable::BulkSize.name())
78-
.unwrap_or("0".to_string());
79-
let bulk_size = bulk_size_str
76+
// Read iexec bulk slice size (defaults to 0 if not present for backward compatibility)
77+
let iexec_bulk_slice_size_str =
78+
std::env::var(TeeSessionEnvironmentVariable::IexecBulkSliceSize.name())
79+
.unwrap_or("0".to_string());
80+
let iexec_bulk_slice_size = iexec_bulk_slice_size_str
8081
.parse::<usize>()
8182
.map_err(|_| ReplicateStatusCause::PreComputeIsDatasetRequiredMissing)?;
8283

83-
let mut datasets = Vec::with_capacity(bulk_size + 1);
84+
let mut datasets = Vec::with_capacity(iexec_bulk_slice_size + 1);
8485

85-
if is_dataset_required {
86+
// Read datasets
87+
let start_index = if is_dataset_required { 0 } else { 1 };
88+
for i in start_index..=iexec_bulk_slice_size {
8689
let url = get_env_var_or_error(
87-
TeeSessionEnvironmentVariable::IexecDatasetUrl,
88-
ReplicateStatusCause::PreComputeDatasetUrlMissing,
89-
)?;
90-
let key = get_env_var_or_error(
91-
TeeSessionEnvironmentVariable::IexecDatasetKey,
92-
ReplicateStatusCause::PreComputeDatasetKeyMissing,
93-
)?;
94-
let checksum = get_env_var_or_error(
95-
TeeSessionEnvironmentVariable::IexecDatasetChecksum,
96-
ReplicateStatusCause::PreComputeDatasetChecksumMissing,
97-
)?;
98-
let filename = get_env_var_or_error(
99-
TeeSessionEnvironmentVariable::IexecDatasetFilename,
100-
ReplicateStatusCause::PreComputeDatasetFilenameMissing,
101-
)?;
102-
datasets.push(Dataset::new(url, checksum, filename, key));
103-
}
104-
105-
// Read bulk datasets
106-
for i in 1..=bulk_size {
107-
let url = get_env_var_or_error(
108-
TeeSessionEnvironmentVariable::BulkDatasetUrl(i),
90+
TeeSessionEnvironmentVariable::IexecDatasetUrl(i),
10991
ReplicateStatusCause::PreComputeDatasetUrlMissing,
11092
)?;
11193
let checksum = get_env_var_or_error(
112-
TeeSessionEnvironmentVariable::BulkDatasetChecksum(i),
94+
TeeSessionEnvironmentVariable::IexecDatasetChecksum(i),
11395
ReplicateStatusCause::PreComputeDatasetChecksumMissing,
11496
)?;
11597
let filename = get_env_var_or_error(
116-
TeeSessionEnvironmentVariable::BulkDatasetFilename(i),
98+
TeeSessionEnvironmentVariable::IexecDatasetFilename(i),
11799
ReplicateStatusCause::PreComputeDatasetFilenameMissing,
118100
)?;
119101
let key = get_env_var_or_error(
120-
TeeSessionEnvironmentVariable::BulkDatasetKey(i),
102+
TeeSessionEnvironmentVariable::IexecDatasetKey(i),
121103
ReplicateStatusCause::PreComputeDatasetKeyMissing,
122104
)?;
123105

@@ -145,7 +127,7 @@ impl PreComputeArgs {
145127
output_dir,
146128
is_dataset_required,
147129
input_files,
148-
bulk_size,
130+
iexec_bulk_slice_size,
149131
datasets,
150132
})
151133
}
@@ -169,16 +151,16 @@ mod tests {
169151
vars.insert(IexecPreComputeOut.name(), OUTPUT_DIR.to_string());
170152
vars.insert(IsDatasetRequired.name(), "true".to_string());
171153
vars.insert(IexecInputFilesNumber.name(), "0".to_string());
172-
vars.insert(BulkSize.name(), "0".to_string()); // Default to no bulk processing
154+
vars.insert(IexecBulkSliceSize.name(), "0".to_string()); // Default to no bulk processing
173155
vars
174156
}
175157

176158
fn setup_dataset_env_vars() -> HashMap<String, String> {
177159
let mut vars = HashMap::new();
178-
vars.insert(IexecDatasetUrl.name(), DATASET_URL.to_string());
179-
vars.insert(IexecDatasetKey.name(), DATASET_KEY.to_string());
180-
vars.insert(IexecDatasetChecksum.name(), DATASET_CHECKSUM.to_string());
181-
vars.insert(IexecDatasetFilename.name(), DATASET_FILENAME.to_string());
160+
vars.insert(IexecDatasetUrl(0).name(), DATASET_URL.to_string());
161+
vars.insert(IexecDatasetKey(0).name(), DATASET_KEY.to_string());
162+
vars.insert(IexecDatasetChecksum(0).name(), DATASET_CHECKSUM.to_string());
163+
vars.insert(IexecDatasetFilename(0).name(), DATASET_FILENAME.to_string());
182164
vars
183165
}
184166

@@ -198,19 +180,19 @@ mod tests {
198180
// TODO: Collect all errors instead of propagating immediately, and return the list of errors
199181
fn setup_bulk_dataset_env_vars(count: usize) -> HashMap<String, String> {
200182
let mut vars = HashMap::new();
201-
vars.insert(BulkSize.name(), count.to_string());
183+
vars.insert(IexecBulkSliceSize.name(), count.to_string());
202184

203185
for i in 1..=count {
204186
vars.insert(
205-
BulkDatasetUrl(i).name(),
187+
IexecDatasetUrl(i).name(),
206188
format!("https://bulk-dataset-{i}.bin"),
207189
);
208-
vars.insert(BulkDatasetChecksum(i).name(), format!("0x{i}23checksum"));
190+
vars.insert(IexecDatasetChecksum(i).name(), format!("0x{i}23checksum"));
209191
vars.insert(
210-
BulkDatasetFilename(i).name(),
192+
IexecDatasetFilename(i).name(),
211193
format!("bulk-dataset-{i}.txt"),
212194
);
213-
vars.insert(BulkDatasetKey(i).name(), format!("bulkKey{i}23"));
195+
vars.insert(IexecDatasetKey(i).name(), format!("bulkKey{i}23"));
214196
}
215197
vars
216198
}
@@ -235,7 +217,7 @@ mod tests {
235217
assert!(!args.is_dataset_required);
236218
assert_eq!(args.input_files.len(), 1);
237219
assert_eq!(args.input_files[0], "https://input-1.txt");
238-
assert_eq!(args.bulk_size, 0);
220+
assert_eq!(args.iexec_bulk_slice_size, 0);
239221
assert_eq!(args.datasets.len(), 0);
240222
});
241223
}
@@ -260,7 +242,7 @@ mod tests {
260242
assert_eq!(args.datasets[0].checksum, DATASET_CHECKSUM.to_string());
261243
assert_eq!(args.datasets[0].filename, DATASET_FILENAME.to_string());
262244
assert_eq!(args.input_files.len(), 0);
263-
assert_eq!(args.bulk_size, 0);
245+
assert_eq!(args.iexec_bulk_slice_size, 0);
264246
assert_eq!(args.datasets.len(), 1);
265247
});
266248
}
@@ -285,7 +267,7 @@ mod tests {
285267
assert_eq!(args.input_files[0], "https://input-1.txt");
286268
assert_eq!(args.input_files[1], "https://input-2.txt");
287269
assert_eq!(args.input_files[2], "https://input-3.txt");
288-
assert_eq!(args.bulk_size, 0);
270+
assert_eq!(args.iexec_bulk_slice_size, 0);
289271
assert_eq!(args.datasets.len(), 0);
290272
});
291273
}
@@ -359,7 +341,7 @@ mod tests {
359341

360342
assert_eq!(args.output_dir, OUTPUT_DIR);
361343
assert!(!args.is_dataset_required);
362-
assert_eq!(args.bulk_size, 3);
344+
assert_eq!(args.iexec_bulk_slice_size, 3);
363345
assert_eq!(args.datasets.len(), 3);
364346
assert_eq!(args.input_files.len(), 0);
365347

@@ -398,7 +380,7 @@ mod tests {
398380

399381
assert_eq!(args.output_dir, OUTPUT_DIR);
400382
assert!(args.is_dataset_required);
401-
assert_eq!(args.bulk_size, 2);
383+
assert_eq!(args.iexec_bulk_slice_size, 2);
402384
assert_eq!(args.datasets.len(), 3); // 1 regular + 2 bulk datasets
403385
assert_eq!(args.input_files.len(), 0);
404386

@@ -415,10 +397,10 @@ mod tests {
415397
}
416398

417399
#[test]
418-
fn read_args_fails_when_invalid_bulk_size_format() {
400+
fn read_args_fails_when_invalid_iexec_bulk_slice_size_format() {
419401
let mut env_vars = setup_basic_env_vars();
420402
env_vars.insert(IsDatasetRequired.name(), "false".to_string());
421-
env_vars.insert(BulkSize.name(), "not-a-number".to_string());
403+
env_vars.insert(IexecBulkSliceSize.name(), "not-a-number".to_string());
422404
env_vars.extend(setup_input_files_env_vars(0));
423405

424406
temp_env::with_vars(to_temp_env_vars(env_vars), || {
@@ -438,7 +420,7 @@ mod tests {
438420
env_vars.extend(setup_input_files_env_vars(0));
439421
env_vars.extend(setup_bulk_dataset_env_vars(2));
440422
// Remove one of the bulk dataset URLs
441-
env_vars.remove(&BulkDatasetUrl(1).name());
423+
env_vars.remove(&IexecDatasetUrl(1).name());
442424

443425
temp_env::with_vars(to_temp_env_vars(env_vars), || {
444426
let result = PreComputeArgs::read_args();
@@ -457,7 +439,7 @@ mod tests {
457439
env_vars.extend(setup_input_files_env_vars(0));
458440
env_vars.extend(setup_bulk_dataset_env_vars(2));
459441
// Remove one of the bulk dataset checksums
460-
env_vars.remove(&BulkDatasetChecksum(2).name());
442+
env_vars.remove(&IexecDatasetChecksum(2).name());
461443

462444
temp_env::with_vars(to_temp_env_vars(env_vars), || {
463445
let result = PreComputeArgs::read_args();
@@ -476,7 +458,7 @@ mod tests {
476458
env_vars.extend(setup_input_files_env_vars(0));
477459
env_vars.extend(setup_bulk_dataset_env_vars(3));
478460
// Remove one of the bulk dataset filenames
479-
env_vars.remove(&BulkDatasetFilename(2).name());
461+
env_vars.remove(&IexecDatasetFilename(2).name());
480462

481463
temp_env::with_vars(to_temp_env_vars(env_vars), || {
482464
let result = PreComputeArgs::read_args();
@@ -495,7 +477,7 @@ mod tests {
495477
env_vars.extend(setup_input_files_env_vars(0));
496478
env_vars.extend(setup_bulk_dataset_env_vars(2));
497479
// Remove one of the bulk dataset keys
498-
env_vars.remove(&BulkDatasetKey(1).name());
480+
env_vars.remove(&IexecDatasetKey(1).name());
499481

500482
temp_env::with_vars(to_temp_env_vars(env_vars), || {
501483
let result = PreComputeArgs::read_args();
@@ -525,19 +507,19 @@ mod tests {
525507
ReplicateStatusCause::PreComputeInputFilesNumberMissing,
526508
),
527509
(
528-
IexecDatasetUrl,
510+
IexecDatasetUrl(0),
529511
ReplicateStatusCause::PreComputeDatasetUrlMissing,
530512
),
531513
(
532-
IexecDatasetKey,
514+
IexecDatasetKey(0),
533515
ReplicateStatusCause::PreComputeDatasetKeyMissing,
534516
),
535517
(
536-
IexecDatasetChecksum,
518+
IexecDatasetChecksum(0),
537519
ReplicateStatusCause::PreComputeDatasetChecksumMissing,
538520
),
539521
(
540-
IexecDatasetFilename,
522+
IexecDatasetFilename(0),
541523
ReplicateStatusCause::PreComputeDatasetFilenameMissing,
542524
),
543525
(

pre-compute/src/compute/utils/env_utils.rs

Lines changed: 31 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@ use crate::compute::errors::ReplicateStatusCause;
22
use std::env;
33

44
pub enum TeeSessionEnvironmentVariable {
5-
BulkSize,
6-
BulkDatasetUrl(usize),
7-
BulkDatasetChecksum(usize),
8-
BulkDatasetFilename(usize),
9-
BulkDatasetKey(usize),
10-
IexecDatasetChecksum,
11-
IexecDatasetFilename,
12-
IexecDatasetKey,
13-
IexecDatasetUrl,
5+
IexecBulkSliceSize,
6+
IexecDatasetChecksum(usize),
7+
IexecDatasetFilename(usize),
8+
IexecDatasetKey(usize),
9+
IexecDatasetUrl(usize),
1410
IexecInputFileUrlPrefix(usize),
1511
IexecInputFilesNumber,
1612
IexecPreComputeOut,
@@ -24,43 +20,38 @@ pub enum TeeSessionEnvironmentVariable {
2420
impl TeeSessionEnvironmentVariable {
2521
pub fn name(&self) -> String {
2622
match self {
27-
TeeSessionEnvironmentVariable::BulkSize => "BULK_SIZE".to_string(),
28-
TeeSessionEnvironmentVariable::BulkDatasetUrl(index) => {
29-
format!("BULK_DATASET_{index}_URL")
30-
}
31-
TeeSessionEnvironmentVariable::BulkDatasetChecksum(index) => {
32-
format!("BULK_DATASET_{index}_CHECKSUM")
33-
}
34-
TeeSessionEnvironmentVariable::BulkDatasetFilename(index) => {
35-
format!("BULK_DATASET_{index}_FILENAME")
23+
Self::IexecBulkSliceSize => "IEXEC_BULK_SLICE_SIZE".to_string(),
24+
25+
Self::IexecDatasetChecksum(0) => "IEXEC_DATASET_CHECKSUM".to_string(),
26+
Self::IexecDatasetChecksum(index) => {
27+
format!("IEXEC_DATASET_{index}_CHECKSUM")
3628
}
37-
TeeSessionEnvironmentVariable::BulkDatasetKey(index) => {
38-
format!("BULK_DATASET_{index}_KEY")
29+
30+
Self::IexecDatasetFilename(0) => "IEXEC_DATASET_FILENAME".to_string(),
31+
Self::IexecDatasetFilename(index) => {
32+
format!("IEXEC_DATASET_{index}_FILENAME")
3933
}
40-
TeeSessionEnvironmentVariable::IexecDatasetChecksum => {
41-
"IEXEC_DATASET_CHECKSUM".to_string()
34+
35+
Self::IexecDatasetKey(0) => "IEXEC_DATASET_KEY".to_string(),
36+
Self::IexecDatasetKey(index) => {
37+
format!("IEXEC_DATASET_{index}_KEY")
4238
}
43-
TeeSessionEnvironmentVariable::IexecDatasetFilename => {
44-
"IEXEC_DATASET_FILENAME".to_string()
39+
40+
Self::IexecDatasetUrl(0) => "IEXEC_DATASET_URL".to_string(),
41+
Self::IexecDatasetUrl(index) => {
42+
format!("IEXEC_DATASET_{index}_URL")
4543
}
46-
TeeSessionEnvironmentVariable::IexecDatasetKey => "IEXEC_DATASET_KEY".to_string(),
47-
TeeSessionEnvironmentVariable::IexecDatasetUrl => "IEXEC_DATASET_URL".to_string(),
48-
TeeSessionEnvironmentVariable::IexecInputFileUrlPrefix(index) => {
44+
45+
Self::IexecInputFileUrlPrefix(index) => {
4946
format!("IEXEC_INPUT_FILE_URL_{index}")
5047
}
51-
TeeSessionEnvironmentVariable::IexecInputFilesNumber => {
52-
"IEXEC_INPUT_FILES_NUMBER".to_string()
53-
}
54-
TeeSessionEnvironmentVariable::IexecPreComputeOut => {
55-
"IEXEC_PRE_COMPUTE_OUT".to_string()
56-
}
57-
TeeSessionEnvironmentVariable::IexecTaskId => "IEXEC_TASK_ID".to_string(),
58-
TeeSessionEnvironmentVariable::IsDatasetRequired => "IS_DATASET_REQUIRED".to_string(),
59-
TeeSessionEnvironmentVariable::SignTeeChallengePrivateKey => {
60-
"SIGN_TEE_CHALLENGE_PRIVATE_KEY".to_string()
61-
}
62-
TeeSessionEnvironmentVariable::SignWorkerAddress => "SIGN_WORKER_ADDRESS".to_string(),
63-
TeeSessionEnvironmentVariable::WorkerHostEnvVar => "WORKER_HOST_ENV_VAR".to_string(),
48+
Self::IexecInputFilesNumber => "IEXEC_INPUT_FILES_NUMBER".to_string(),
49+
Self::IexecPreComputeOut => "IEXEC_PRE_COMPUTE_OUT".to_string(),
50+
Self::IexecTaskId => "IEXEC_TASK_ID".to_string(),
51+
Self::IsDatasetRequired => "IS_DATASET_REQUIRED".to_string(),
52+
Self::SignTeeChallengePrivateKey => "SIGN_TEE_CHALLENGE_PRIVATE_KEY".to_string(),
53+
Self::SignWorkerAddress => "SIGN_WORKER_ADDRESS".to_string(),
54+
Self::WorkerHostEnvVar => "WORKER_HOST_ENV_VAR".to_string(),
6455
}
6556
}
6657
}

0 commit comments

Comments
 (0)