runtime-rs: modify the transfer to oci::Hooks

In this commit, we have done:
    * modify the tranfer process from grpc::Hooks to oci::Hooks, so the code
      can be more clean
    * add more tests for create_runtime, create_container, start_container hooks

Signed-off-by: Yushuo <y-shuo@linux.alibaba.com>
This commit is contained in:
Yushuo 2023-03-01 10:35:10 +08:00
parent 2c4428ee02
commit 12cfad4858
2 changed files with 137 additions and 26 deletions

View File

@ -835,6 +835,45 @@ mod tests {
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }])),
CreateRuntime: protobuf::RepeatedField::from(Vec::from([grpc::Hook {
Path: String::from("createruntimepath"),
Args: protobuf::RepeatedField::from(Vec::from([
String::from("arg1"),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10,
..Default::default()
}])),
CreateContainer: protobuf::RepeatedField::from(Vec::from([grpc::Hook {
Path: String::from("createcontainerpath"),
Args: protobuf::RepeatedField::from(Vec::from([
String::from("arg1"),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10,
..Default::default()
}])),
StartContainer: protobuf::RepeatedField::from(Vec::from([grpc::Hook {
Path: String::from("startcontainerpath"),
Args: protobuf::RepeatedField::from(Vec::from([
String::from("arg1"),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10,
..Default::default()
}])),
..Default::default() ..Default::default()
}, },
result: oci::Hooks { result: oci::Hooks {
@ -864,7 +903,24 @@ mod tests {
env: Vec::from([String::from("env1"), String::from("env2")]), env: Vec::from([String::from("env1"), String::from("env2")]),
timeout: Some(10), timeout: Some(10),
}]), }]),
..Default::default() create_runtime: Vec::from([oci::Hook {
path: String::from("createruntimepath"),
args: Vec::from([String::from("arg1"), String::from("arg2")]),
env: Vec::from([String::from("env1"), String::from("env2")]),
timeout: Some(10),
}]),
create_container: Vec::from([oci::Hook {
path: String::from("createcontainerpath"),
args: Vec::from([String::from("arg1"), String::from("arg2")]),
env: Vec::from([String::from("env1"), String::from("env2")]),
timeout: Some(10),
}]),
start_container: Vec::from([oci::Hook {
path: String::from("startcontainerpath"),
args: Vec::from([String::from("arg1"), String::from("arg2")]),
env: Vec::from([String::from("env1"), String::from("env2")]),
timeout: Some(10),
}]),
}, },
}, },
TestData { TestData {
@ -897,6 +953,45 @@ mod tests {
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }])),
CreateRuntime: protobuf::RepeatedField::from(Vec::from([grpc::Hook {
Path: String::from("createruntimepath"),
Args: protobuf::RepeatedField::from(Vec::from([
String::from("arg1"),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10,
..Default::default()
}])),
CreateContainer: protobuf::RepeatedField::from(Vec::from([grpc::Hook {
Path: String::from("createcontainerpath"),
Args: protobuf::RepeatedField::from(Vec::from([
String::from("arg1"),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10,
..Default::default()
}])),
StartContainer: protobuf::RepeatedField::from(Vec::from([grpc::Hook {
Path: String::from("startcontainerpath"),
Args: protobuf::RepeatedField::from(Vec::from([
String::from("arg1"),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10,
..Default::default()
}])),
..Default::default() ..Default::default()
}, },
result: oci::Hooks { result: oci::Hooks {
@ -913,7 +1008,24 @@ mod tests {
env: Vec::from([String::from("env1"), String::from("env2")]), env: Vec::from([String::from("env1"), String::from("env2")]),
timeout: Some(10), timeout: Some(10),
}]), }]),
..Default::default() create_runtime: Vec::from([oci::Hook {
path: String::from("createruntimepath"),
args: Vec::from([String::from("arg1"), String::from("arg2")]),
env: Vec::from([String::from("env1"), String::from("env2")]),
timeout: Some(10),
}]),
create_container: Vec::from([oci::Hook {
path: String::from("createcontainerpath"),
args: Vec::from([String::from("arg1"), String::from("arg2")]),
env: Vec::from([String::from("env1"), String::from("env2")]),
timeout: Some(10),
}]),
start_container: Vec::from([oci::Hook {
path: String::from("startcontainerpath"),
args: Vec::from([String::from("arg1"), String::from("arg2")]),
env: Vec::from([String::from("env1"), String::from("env2")]),
timeout: Some(10),
}]),
}, },
}, },
]; ];

View File

@ -973,30 +973,29 @@ impl From<crate::oci::Hook> for oci::Hook {
impl From<crate::oci::Hooks> for oci::Hooks { impl From<crate::oci::Hooks> for oci::Hooks {
fn from(mut from: crate::oci::Hooks) -> Self { fn from(mut from: crate::oci::Hooks) -> Self {
let mut prestart = Vec::new(); let prestart = from.take_Prestart().into_iter().map(|i| i.into()).collect();
for hook in from.take_Prestart().to_vec() { let create_runtime = from
prestart.push(hook.into()) .take_CreateRuntime()
} .into_iter()
let mut create_runtime = Vec::new(); .map(|i| i.into())
for hook in from.take_CreateRuntime().to_vec() { .collect();
create_runtime.push(hook.into()) let create_container = from
} .take_CreateContainer()
let mut create_container = Vec::new(); .into_iter()
for hook in from.take_CreateContainer().to_vec() { .map(|i| i.into())
create_container.push(hook.into()) .collect();
} let start_container = from
let mut start_container = Vec::new(); .take_StartContainer()
for hook in from.take_StartContainer().to_vec() { .into_iter()
start_container.push(hook.into()) .map(|i| i.into())
} .collect();
let mut poststart = Vec::new(); let poststart = from
for hook in from.take_Poststart().to_vec() { .take_Poststart()
poststart.push(hook.into()); .into_iter()
} .map(|i| i.into())
let mut poststop = Vec::new(); .collect();
for hook in from.take_Poststop().to_vec() { let poststop = from.take_Poststop().into_iter().map(|i| i.into()).collect();
poststop.push(hook.into());
}
oci::Hooks { oci::Hooks {
prestart, prestart,
create_runtime, create_runtime,