Skip to content

Commit da9ceae

Browse files
committed
take care of delete
Signed-off-by: Akiyama <[email protected]>
1 parent e3eef09 commit da9ceae

File tree

1 file changed

+45
-28
lines changed

1 file changed

+45
-28
lines changed

Diff for: tests/contest/contest/src/tests/kill/kill_test.rs

+45-28
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use test_framework::{Test, TestGroup, TestResult};
77
use crate::tests::lifecycle::ContainerLifecycle;
88

99
fn create_spec(args: &[&str]) -> Result<Spec> {
10-
let args_vec: Vec<String> = args.iter().map(|&a| a.to_string()).collect();
10+
let args_vec: Vec<String> = args.iter().map(|&a| a.into()).collect();
1111
let spec = SpecBuilder::default()
1212
.process(
1313
ProcessBuilder::default()
@@ -20,52 +20,72 @@ fn create_spec(args: &[&str]) -> Result<Spec> {
2020
Ok(spec)
2121
}
2222

23+
fn failed_and_delete(text: String, container: ContainerLifecycle) -> TestResult {
24+
let delete_result = container.delete();
25+
match delete_result {
26+
TestResult::Passed => TestResult::Failed(anyhow!(text)),
27+
TestResult::Failed(err) => TestResult::Failed(anyhow!(
28+
"{}; also container deletion failed: {:?}",
29+
text,
30+
err
31+
)),
32+
_ => TestResult::Failed(anyhow!("{}; unexpected delete result", text)),
33+
}
34+
}
35+
36+
fn merge_test_results(kill_result: TestResult, delete_result: TestResult) -> TestResult {
37+
match (kill_result, delete_result) {
38+
(TestResult::Failed(err), _) => TestResult::Failed(err),
39+
(TestResult::Passed, TestResult::Failed(err)) => {
40+
TestResult::Failed(anyhow!("Delete failed: {:?}", err))
41+
}
42+
(TestResult::Passed, TestResult::Passed) => TestResult::Passed,
43+
_ => TestResult::Failed(anyhow!("Unexpected result")),
44+
}
45+
}
46+
2347
fn kill_with_empty_id_test() -> TestResult {
2448
let mut container = ContainerLifecycle::new();
2549

2650
// kill with empty id
2751
container.set_id("");
28-
let result = match container.kill() {
52+
match container.kill() {
2953
TestResult::Failed(_) => TestResult::Passed,
3054
TestResult::Passed => TestResult::Failed(anyhow!(
3155
"Expected killing container with empty id to fail, but was successful"
3256
)),
3357
_ => TestResult::Failed(anyhow!(
3458
"Unexpected killing container with empty id test result"
3559
)),
36-
};
37-
container.delete();
38-
result
60+
}
3961
}
4062

4163
fn kill_non_existed_container() -> TestResult {
42-
let mut container = ContainerLifecycle::new();
64+
let container = ContainerLifecycle::new();
4365

4466
// kill for non existed container
45-
container.set_id("non-existent-container-id");
46-
let result = match container.kill() {
67+
match container.kill() {
4768
TestResult::Failed(_) => TestResult::Passed,
4869
TestResult::Passed => TestResult::Failed(anyhow!(
4970
"Expected killing non existed container to fail, but was successful"
5071
)),
5172
_ => TestResult::Failed(anyhow!(
5273
"Unexpected killing non existed container test result"
5374
)),
54-
};
55-
container.delete();
56-
result
75+
}
5776
}
77+
5878
fn kill_created_container_test() -> TestResult {
5979
let container = ContainerLifecycle::new();
6080

6181
// kill created container
6282
match container.create() {
6383
TestResult::Passed => {}
64-
_ => return TestResult::Failed(anyhow!("Failed to create container")),
84+
_ => return failed_and_delete("Failed to create container".to_string(), container),
6585
}
66-
let result = container.kill();
67-
container.delete();
68-
result
86+
let kill_result = container.kill();
87+
let delete_result = container.delete();
88+
merge_test_results(kill_result, delete_result)
6989
}
7090

7191
fn kill_stopped_container_test() -> TestResult {
@@ -75,20 +95,20 @@ fn kill_stopped_container_test() -> TestResult {
7595
// kill stopped container
7696
match container.create_with_spec(spec) {
7797
TestResult::Passed => {}
78-
_ => return TestResult::Failed(anyhow!("Failed to create container")),
98+
_ => return failed_and_delete("Failed to create container".to_string(), container),
7999
}
80100
match container.start() {
81101
TestResult::Passed => {}
82-
_ => return TestResult::Failed(anyhow!("Failed to start container")),
102+
_ => return failed_and_delete("Failed to start container".to_string(), container),
83103
}
84104
container.waiting_for_status(Duration::from_secs(10), Duration::from_secs(1), "stopped");
85-
let result = match container.kill() {
105+
let kill_result = match container.kill() {
86106
TestResult::Failed(_) => TestResult::Passed,
87107
TestResult::Passed => TestResult::Failed(anyhow!("Expected failure but got success")),
88108
_ => TestResult::Failed(anyhow!("Unexpected test result")),
89109
};
90-
container.delete();
91-
result
110+
let delete_result = container.delete();
111+
merge_test_results(kill_result, delete_result)
92112
}
93113

94114
fn kill_start_container_test() -> TestResult {
@@ -98,20 +118,17 @@ fn kill_start_container_test() -> TestResult {
98118
// kill start container
99119
match container.create_with_spec(spec) {
100120
TestResult::Passed => {}
101-
_ => return TestResult::Failed(anyhow!("Failed to recreate container")),
121+
_ => return failed_and_delete("Failed to recreate container".to_string(), container),
102122
}
103123

104124
match container.start() {
105125
TestResult::Passed => {}
106-
TestResult::Failed(err) => {
107-
return TestResult::Failed(anyhow!("Failed to start container: {:?}", err));
108-
}
109-
_ => unreachable!(),
126+
_ => return failed_and_delete(("Failed to start container").to_string(), container),
110127
}
111128
container.waiting_for_status(Duration::from_secs(10), Duration::from_secs(1), "running");
112-
let result = container.kill();
113-
container.delete();
114-
result
129+
let kill_result = container.kill();
130+
let delete_result = container.delete();
131+
merge_test_results(kill_result, delete_result)
115132
}
116133

117134
pub fn get_kill_test() -> TestGroup {

0 commit comments

Comments
 (0)