Skip to content

Commit 239ba9e

Browse files
refactor(precompute-args): remove Option<String> fields and use empty strings (#30)
1 parent 548c07c commit 239ba9e

File tree

2 files changed

+49
-61
lines changed

2 files changed

+49
-61
lines changed

src/compute/pre_compute_app.rs

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ impl PreComputeAppTrait for PreComputeApp {
163163
/// ```
164164
fn download_encrypted_dataset(&self) -> Result<Vec<u8>, ReplicateStatusCause> {
165165
let args = self.pre_compute_args.as_ref().unwrap();
166-
let chain_task_id = self.chain_task_id.as_ref().unwrap();
167-
let encrypted_dataset_url = args.encrypted_dataset_url.as_ref().unwrap();
166+
let chain_task_id: &str = self.chain_task_id.as_ref().unwrap();
167+
let encrypted_dataset_url: &str = &args.encrypted_dataset_url;
168168

169169
info!(
170170
"Downloading encrypted dataset file [chainTaskId:{chain_task_id}, url:{encrypted_dataset_url}]",
@@ -189,13 +189,10 @@ impl PreComputeAppTrait for PreComputeApp {
189189
.ok_or(ReplicateStatusCause::PreComputeDatasetDownloadFailed)?;
190190

191191
info!("Checking encrypted dataset checksum [chainTaskId:{chain_task_id}]");
192-
let expected_checksum = args
193-
.encrypted_dataset_checksum
194-
.as_ref()
195-
.ok_or(ReplicateStatusCause::PreComputeDatasetDownloadFailed)?;
192+
let expected_checksum: &str = &args.encrypted_dataset_checksum;
196193
let actual_checksum = sha256_from_bytes(&encrypted_content);
197194

198-
if actual_checksum != *expected_checksum {
195+
if actual_checksum != expected_checksum {
199196
error!(
200197
"Invalid dataset checksum [chainTaskId:{chain_task_id}, expected:{expected_checksum}, actual:{actual_checksum}]"
201198
);
@@ -231,13 +228,11 @@ impl PreComputeAppTrait for PreComputeApp {
231228
/// let decrypted = app.decrypt_dataset(&encrypted)?;
232229
/// ```
233230
fn decrypt_dataset(&self, encrypted_content: &[u8]) -> Result<Vec<u8>, ReplicateStatusCause> {
234-
let base64_key = self
231+
let base64_key: &str = &self
235232
.pre_compute_args
236233
.as_ref()
237234
.unwrap()
238-
.encrypted_dataset_base64_key
239-
.as_ref()
240-
.unwrap();
235+
.encrypted_dataset_base64_key;
241236

242237
let key = general_purpose::STANDARD
243238
.decode(base64_key)
@@ -280,10 +275,10 @@ impl PreComputeAppTrait for PreComputeApp {
280275
/// app.save_plain_dataset_file(&plain_data)?;
281276
/// ```
282277
fn save_plain_dataset_file(&self, plain_dataset: &[u8]) -> Result<(), ReplicateStatusCause> {
283-
let chain_task_id = self.chain_task_id.as_ref().unwrap();
278+
let chain_task_id: &str = self.chain_task_id.as_ref().unwrap();
284279
let args = self.pre_compute_args.as_ref().unwrap();
285-
let output_dir = &args.output_dir;
286-
let plain_dataset_filename = args.plain_dataset_filename.as_ref().unwrap();
280+
let output_dir: &str = &args.output_dir;
281+
let plain_dataset_filename: &str = &args.plain_dataset_filename;
287282

288283
let mut path = PathBuf::from(output_dir);
289284
path.push(plain_dataset_filename);
@@ -335,10 +330,10 @@ mod tests {
335330
input_files: urls.into_iter().map(String::from).collect(),
336331
output_dir: output_dir.to_string(),
337332
is_dataset_required: true,
338-
encrypted_dataset_url: Some(HTTP_DATASET_URL.to_string()),
339-
encrypted_dataset_base64_key: Some(ENCRYPTED_DATASET_KEY.to_string()),
340-
encrypted_dataset_checksum: Some(DATASET_CHECKSUM.to_string()),
341-
plain_dataset_filename: Some(PLAIN_DATA_FILE.to_string()),
333+
encrypted_dataset_url: HTTP_DATASET_URL.to_string(),
334+
encrypted_dataset_base64_key: ENCRYPTED_DATASET_KEY.to_string(),
335+
encrypted_dataset_checksum: DATASET_CHECKSUM.to_string(),
336+
plain_dataset_filename: PLAIN_DATA_FILE.to_string(),
342337
}),
343338
}
344339
}
@@ -501,7 +496,7 @@ mod tests {
501496
fn download_encrypted_dataset_failure_with_invalid_dataset_url() {
502497
let mut app = get_pre_compute_app(CHAIN_TASK_ID, vec![], "");
503498
if let Some(args) = &mut app.pre_compute_args {
504-
args.encrypted_dataset_url = Some("http://bad-url".to_string());
499+
args.encrypted_dataset_url = "http://bad-url".to_string();
505500
}
506501
let actual_content = app.download_encrypted_dataset();
507502
assert_eq!(
@@ -514,10 +509,9 @@ mod tests {
514509
fn download_encrypted_dataset_success_with_valid_iexec_gateway() {
515510
let mut app = get_pre_compute_app(CHAIN_TASK_ID, vec![], "");
516511
if let Some(args) = &mut app.pre_compute_args {
517-
args.encrypted_dataset_url = Some(IPFS_DATASET_URL.to_string());
518-
args.encrypted_dataset_checksum = Some(
519-
"0x323b1637c7999942fbebfe5d42fe15dbfe93737577663afa0181938d7ad4a2ac".to_string(),
520-
)
512+
args.encrypted_dataset_url = IPFS_DATASET_URL.to_string();
513+
args.encrypted_dataset_checksum =
514+
"0x323b1637c7999942fbebfe5d42fe15dbfe93737577663afa0181938d7ad4a2ac".to_string();
521515
}
522516
let actual_content = app.download_encrypted_dataset();
523517
let expected_content = Ok("hello world !\n".as_bytes().to_vec());
@@ -528,7 +522,7 @@ mod tests {
528522
fn download_encrypted_dataset_failure_with_invalid_gateway() {
529523
let mut app = get_pre_compute_app(CHAIN_TASK_ID, vec![], "");
530524
if let Some(args) = &mut app.pre_compute_args {
531-
args.encrypted_dataset_url = Some("/ipfs/INVALID_IPFS_DATASET_URL".to_string());
525+
args.encrypted_dataset_url = "/ipfs/INVALID_IPFS_DATASET_URL".to_string();
532526
}
533527
let actual_content = app.download_encrypted_dataset();
534528
let expected_content = Err(ReplicateStatusCause::PreComputeDatasetDownloadFailed);
@@ -539,7 +533,7 @@ mod tests {
539533
fn download_encrypted_dataset_failure_with_invalid_dataset_checksum() {
540534
let mut app = get_pre_compute_app(CHAIN_TASK_ID, vec![], "");
541535
if let Some(args) = &mut app.pre_compute_args {
542-
args.encrypted_dataset_checksum = Some("invalid_dataset_checksum".to_string())
536+
args.encrypted_dataset_checksum = "invalid_dataset_checksum".to_string()
543537
}
544538
let actual_content = app.download_encrypted_dataset();
545539
let expected_content = Err(ReplicateStatusCause::PreComputeInvalidDatasetChecksum);
@@ -563,7 +557,7 @@ mod tests {
563557
fn decrypt_dataset_failure_with_bad_key() {
564558
let mut app = get_pre_compute_app(CHAIN_TASK_ID, vec![], "");
565559
if let Some(args) = &mut app.pre_compute_args {
566-
args.encrypted_dataset_base64_key = Some("bad_key".to_string());
560+
args.encrypted_dataset_base64_key = "bad_key".to_string();
567561
}
568562
let encrypted_data = app.download_encrypted_dataset().unwrap();
569563
let actual_plain_data = app.decrypt_dataset(&encrypted_data);
@@ -609,7 +603,7 @@ mod tests {
609603

610604
let mut app = get_pre_compute_app(CHAIN_TASK_ID, vec![], output_path);
611605
if let Some(args) = &mut app.pre_compute_args {
612-
args.plain_dataset_filename = Some("/some-folder-123/not-found".to_string());
606+
args.plain_dataset_filename = "/some-folder-123/not-found".to_string();
613607
}
614608
let plain_dataset = "Some very useful data.".as_bytes().to_vec();
615609
let saved_dataset = app.save_plain_dataset_file(&plain_dataset);

src/compute/pre_compute_args.rs

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ pub struct PreComputeArgs {
1010
pub output_dir: String,
1111
// Dataset related fields
1212
pub is_dataset_required: bool,
13-
pub encrypted_dataset_url: Option<String>,
14-
pub encrypted_dataset_base64_key: Option<String>,
15-
pub encrypted_dataset_checksum: Option<String>,
16-
pub plain_dataset_filename: Option<String>,
13+
pub encrypted_dataset_url: String,
14+
pub encrypted_dataset_base64_key: String,
15+
pub encrypted_dataset_checksum: String,
16+
pub plain_dataset_filename: String,
1717
// Input files
1818
pub input_files: Vec<String>,
1919
}
@@ -64,28 +64,28 @@ impl PreComputeArgs {
6464
.parse::<bool>()
6565
.map_err(|_| ReplicateStatusCause::PreComputeIsDatasetRequiredMissing)?;
6666

67-
let mut encrypted_dataset_url = None;
68-
let mut encrypted_dataset_base64_key = None;
69-
let mut encrypted_dataset_checksum = None;
70-
let mut plain_dataset_filename = None;
67+
let mut encrypted_dataset_url = String::new();
68+
let mut encrypted_dataset_base64_key = String::new();
69+
let mut encrypted_dataset_checksum = String::new();
70+
let mut plain_dataset_filename = String::new();
7171

7272
if is_dataset_required {
73-
encrypted_dataset_url = Some(get_env_var_or_error(
73+
encrypted_dataset_url = get_env_var_or_error(
7474
TeeSessionEnvironmentVariable::IexecDatasetUrl,
7575
ReplicateStatusCause::PreComputeDatasetUrlMissing,
76-
)?);
77-
encrypted_dataset_base64_key = Some(get_env_var_or_error(
76+
)?;
77+
encrypted_dataset_base64_key = get_env_var_or_error(
7878
TeeSessionEnvironmentVariable::IexecDatasetKey,
7979
ReplicateStatusCause::PreComputeDatasetKeyMissing,
80-
)?);
81-
encrypted_dataset_checksum = Some(get_env_var_or_error(
80+
)?;
81+
encrypted_dataset_checksum = get_env_var_or_error(
8282
TeeSessionEnvironmentVariable::IexecDatasetChecksum,
8383
ReplicateStatusCause::PreComputeDatasetChecksumMissing,
84-
)?);
85-
plain_dataset_filename = Some(get_env_var_or_error(
84+
)?;
85+
plain_dataset_filename = get_env_var_or_error(
8686
TeeSessionEnvironmentVariable::IexecDatasetFilename,
8787
ReplicateStatusCause::PreComputeDatasetFilenameMissing,
88-
)?);
88+
)?;
8989
}
9090

9191
let input_files_nb_str = get_env_var_or_error(
@@ -178,10 +178,10 @@ mod tests {
178178

179179
assert_eq!(args.output_dir, OUTPUT_DIR);
180180
assert!(!args.is_dataset_required);
181-
assert_eq!(args.encrypted_dataset_url, None);
182-
assert_eq!(args.encrypted_dataset_base64_key, None);
183-
assert_eq!(args.encrypted_dataset_checksum, None);
184-
assert_eq!(args.plain_dataset_filename, None);
181+
assert_eq!(args.encrypted_dataset_url, "");
182+
assert_eq!(args.encrypted_dataset_base64_key, "");
183+
assert_eq!(args.encrypted_dataset_checksum, "");
184+
assert_eq!(args.plain_dataset_filename, "");
185185
assert_eq!(args.input_files.len(), 1);
186186
assert_eq!(args.input_files[0], "https://input-1.txt");
187187
});
@@ -202,19 +202,13 @@ mod tests {
202202

203203
assert_eq!(args.output_dir, OUTPUT_DIR);
204204
assert!(args.is_dataset_required);
205-
assert_eq!(args.encrypted_dataset_url, Some(DATASET_URL.to_string()));
206-
assert_eq!(
207-
args.encrypted_dataset_base64_key,
208-
Some(DATASET_KEY.to_string())
209-
);
205+
assert_eq!(args.encrypted_dataset_url, DATASET_URL.to_string());
206+
assert_eq!(args.encrypted_dataset_base64_key, DATASET_KEY.to_string());
210207
assert_eq!(
211208
args.encrypted_dataset_checksum,
212-
Some(DATASET_CHECKSUM.to_string())
213-
);
214-
assert_eq!(
215-
args.plain_dataset_filename,
216-
Some(DATASET_FILENAME.to_string())
209+
DATASET_CHECKSUM.to_string()
217210
);
211+
assert_eq!(args.plain_dataset_filename, DATASET_FILENAME.to_string());
218212
assert_eq!(args.input_files.len(), 0);
219213
});
220214
}
@@ -235,10 +229,10 @@ mod tests {
235229

236230
assert_eq!(args.output_dir, OUTPUT_DIR);
237231
assert!(!args.is_dataset_required);
238-
assert_eq!(args.encrypted_dataset_url, None);
239-
assert_eq!(args.encrypted_dataset_base64_key, None);
240-
assert_eq!(args.encrypted_dataset_checksum, None);
241-
assert_eq!(args.plain_dataset_filename, None);
232+
assert_eq!(args.encrypted_dataset_url, "");
233+
assert_eq!(args.encrypted_dataset_base64_key, "");
234+
assert_eq!(args.encrypted_dataset_checksum, "");
235+
assert_eq!(args.plain_dataset_filename, "");
242236
assert_eq!(args.input_files.len(), 3);
243237
assert_eq!(args.input_files[0], "https://input-1.txt");
244238
assert_eq!(args.input_files[1], "https://input-2.txt");

0 commit comments

Comments
 (0)