diff --git a/services/commtest/tests/backup/pull_backup.rs b/services/commtest/tests/backup/pull_backup.rs --- a/services/commtest/tests/backup/pull_backup.rs +++ b/services/commtest/tests/backup/pull_backup.rs @@ -4,9 +4,11 @@ mod tools; use tonic::Request; +use std::io::{Error as IOError, ErrorKind}; use crate::backup_utils::{ proto::pull_backup_response::Data, proto::pull_backup_response::Data::*, + proto::pull_backup_response::Id, proto::pull_backup_response::Id::*, proto::PullBackupRequest, BackupServiceClient, }; @@ -45,15 +47,26 @@ let mut current_id: String = String::new(); while let Some(response) = inbound.message().await? { let response_data: Option = response.data; - let id = response.id; + let id: Option = response.id; + let mut backup_id: Option = None; + let mut log_id: Option = None; + match id { + Some(BackupId(id)) => { + backup_id = Some(id) + }, + Some(LogId(id)) => { + log_id = Some(id) + }, + None => {}, + }; match response_data { Some(CompactionChunk(chunk)) => { - assert!( - state == State::Compaction, + assert_eq!( + state, State::Compaction, "invalid state, expected compaction, got {:?}", state ); - current_id = id; + current_id = backup_id.ok_or(IOError::new(ErrorKind::Other, "backup id expected but not received"))?; println!( "compaction (id {}), pushing chunk (size: {})", current_id, @@ -65,12 +78,13 @@ if state == State::Compaction { state = State::Log; } - assert!(state == State::Log, "invalid state, expected compaction"); - if id != current_id { + assert_eq!(state, State::Log, "invalid state, expected compaction"); + let log_id = log_id.ok_or(IOError::new(ErrorKind::Other, "log id expected but not received"))?; + if log_id != current_id { result .log_items - .push(Item::new(id.clone(), Vec::new(), Vec::new())); - current_id = id.clone(); + .push(Item::new(log_id.clone(), Vec::new(), Vec::new())); + current_id = log_id; } let log_items_size = result.log_items.len() - 1; result.log_items[log_items_size]