Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F3061246
D8643.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
D8643.diff
View Options
diff --git a/services/commtest/src/tools.rs b/services/commtest/src/tools.rs
--- a/services/commtest/src/tools.rs
+++ b/services/commtest/src/tools.rs
@@ -28,6 +28,8 @@
HttpStatus(#[error(ignore)] reqwest::StatusCode),
#[display(...)]
ParseError(ParseError),
+ #[display(...)]
+ AssertionError(#[error(ignore)] String),
}
pub fn obtain_number_of_threads() -> usize {
diff --git a/services/commtest/tests/blob_integration_test.rs b/services/commtest/tests/blob_integration_test.rs
--- a/services/commtest/tests/blob_integration_test.rs
+++ b/services/commtest/tests/blob_integration_test.rs
@@ -7,6 +7,45 @@
use commtest::tools::Error;
use std::env;
+async fn run_blob_integration_test(
+ client: &BlobServiceClient,
+ blob_data: &Vec<BlobData>,
+) -> Result<(), Error> {
+ for (i, item) in blob_data.iter().enumerate() {
+ let data_exists: bool = put::run(&client, &item).await?;
+ if data_exists {
+ Err(Error::AssertionError(format!(
+ "test data no. {} should not exist",
+ i
+ )))?;
+ }
+ }
+
+ for (i, blob_item) in blob_data.iter().enumerate() {
+ let received_sizes = get::run(&client, &blob_item).await?;
+ let expected_data_size = blob_item.chunks_sizes.iter().sum::<usize>();
+ let received_data_size: usize = received_sizes.iter().sum::<usize>();
+ if expected_data_size != received_data_size {
+ Err(Error::AssertionError(format!(
+ "invalid size of data for index {}, expected {}, got {}",
+ i, expected_data_size, received_data_size
+ )))?;
+ }
+ }
+
+ for (i, item) in blob_data.iter().enumerate() {
+ remove::run(&client, &item).await?;
+ if get::run(&client, &item).await.is_ok() {
+ Err(Error::AssertionError(format!(
+ "test data no. {} should no longer be available",
+ i
+ )))?;
+ }
+ }
+
+ Ok(())
+}
+
#[tokio::test]
async fn blob_integration_test() -> Result<(), Error> {
let port = env::var("COMM_SERVICES_PORT_BLOB")
@@ -47,29 +86,19 @@
},
];
- for item in &blob_data {
- let data_exists: bool = put::run(&client, &item).await?;
- assert!(!data_exists, "test data should not exist");
- }
-
- for (i, blob_item) in blob_data.iter().enumerate() {
- let received_sizes = get::run(&client, &blob_item).await?;
- let expected_data_size = blob_item.chunks_sizes.iter().sum::<usize>();
- let received_data_size = received_sizes.iter().sum::<usize>();
- assert_eq!(
- expected_data_size, received_data_size,
- "invalid size of data for index {}, expected {}, got {}",
- i, expected_data_size, received_data_size
- );
- }
-
- for item in &blob_data {
- remove::run(&client, &item).await?;
- assert!(
- get::run(&client, &item).await.is_err(),
- "item should no longer be available"
- );
+ let tests_result = run_blob_integration_test(&client, &blob_data).await;
+ if tests_result.is_err() {
+ // Clean up the data if any test fails
+ for (i, item) in blob_data.iter().enumerate() {
+ if remove::run(&client, &item).await.is_err() {
+ Err(Error::AssertionError(format!(
+ "failed to clean test data no. {}",
+ i
+ )))?;
+ }
+ }
}
+ tests_result?;
Ok(())
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Oct 25, 12:20 PM (22 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2363959
Default Alt Text
D8643.diff (3 KB)
Attached To
Mode
D8643: [blob-service] Clean up uploaded blob data if any test fails
Attached
Detach File
Event Timeline
Log In to Comment