agent: Fix unit test issue cuased by protobuf upgrade

Fixes: #6646

Signed-off-by: Tim Zhang <tim@hyper.sh>
This commit is contained in:
Tim Zhang 2023-04-17 15:27:16 +08:00
parent 0a582f7815
commit 4849c56faa
2 changed files with 79 additions and 177 deletions

View File

@ -558,35 +558,30 @@ mod tests {
// All fields specified // All fields specified
grpcproc: grpc::Process { grpcproc: grpc::Process {
Terminal: true, Terminal: true,
ConsoleSize: protobuf::SingularPtrField::<grpc::Box>::some(grpc::Box { ConsoleSize: protobuf::MessageField::<grpc::Box>::some(grpc::Box {
Height: 123, Height: 123,
Width: 456, Width: 456,
..Default::default() ..Default::default()
}), }),
User: protobuf::SingularPtrField::<grpc::User>::some(grpc::User { User: protobuf::MessageField::<grpc::User>::some(grpc::User {
UID: 1234, UID: 1234,
GID: 5678, GID: 5678,
AdditionalGids: Vec::from([910, 1112]), AdditionalGids: Vec::from([910, 1112]),
Username: String::from("username"), Username: String::from("username"),
..Default::default() ..Default::default()
}), }),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([String::from("env")])),
Cwd: String::from("cwd"), Cwd: String::from("cwd"),
Capabilities: protobuf::SingularPtrField::some(grpc::LinuxCapabilities { Capabilities: protobuf::MessageField::some(grpc::LinuxCapabilities {
Bounding: protobuf::RepeatedField::from(Vec::from([String::from("bnd")])), Bounding: Vec::from([String::from("bnd")]),
Effective: protobuf::RepeatedField::from(Vec::from([String::from("eff")])), Effective: Vec::from([String::from("eff")]),
Inheritable: protobuf::RepeatedField::from(Vec::from([String::from( Inheritable: Vec::from([String::from("inher")]),
"inher", Permitted: Vec::from([String::from("perm")]),
)])), Ambient: Vec::from([String::from("amb")]),
Permitted: protobuf::RepeatedField::from(Vec::from([String::from("perm")])),
Ambient: protobuf::RepeatedField::from(Vec::from([String::from("amb")])),
..Default::default() ..Default::default()
}), }),
Rlimits: protobuf::RepeatedField::from(Vec::from([ Rlimits: Vec::from([
grpc::POSIXRlimit { grpc::POSIXRlimit {
Type: String::from("r#type"), Type: String::from("r#type"),
Hard: 123, Hard: 123,
@ -599,7 +594,7 @@ mod tests {
Soft: 1011, Soft: 1011,
..Default::default() ..Default::default()
}, },
])), ]),
NoNewPrivileges: true, NoNewPrivileges: true,
ApparmorProfile: String::from("apparmor profile"), ApparmorProfile: String::from("apparmor profile"),
OOMScoreAdj: 123456, OOMScoreAdj: 123456,
@ -649,7 +644,7 @@ mod tests {
TestData { TestData {
// None ConsoleSize // None ConsoleSize
grpcproc: grpc::Process { grpcproc: grpc::Process {
ConsoleSize: protobuf::SingularPtrField::<grpc::Box>::none(), ConsoleSize: protobuf::MessageField::<grpc::Box>::none(),
OOMScoreAdj: 0, OOMScoreAdj: 0,
..Default::default() ..Default::default()
}, },
@ -662,7 +657,7 @@ mod tests {
TestData { TestData {
// None User // None User
grpcproc: grpc::Process { grpcproc: grpc::Process {
User: protobuf::SingularPtrField::<grpc::User>::none(), User: protobuf::MessageField::<grpc::User>::none(),
OOMScoreAdj: 0, OOMScoreAdj: 0,
..Default::default() ..Default::default()
}, },
@ -680,7 +675,7 @@ mod tests {
TestData { TestData {
// None Capabilities // None Capabilities
grpcproc: grpc::Process { grpcproc: grpc::Process {
Capabilities: protobuf::SingularPtrField::none(), Capabilities: protobuf::MessageField::none(),
OOMScoreAdj: 0, OOMScoreAdj: 0,
..Default::default() ..Default::default()
}, },
@ -781,99 +776,57 @@ mod tests {
TestData { TestData {
// All specified // All specified
grpchooks: grpc::Hooks { grpchooks: grpc::Hooks {
Prestart: protobuf::RepeatedField::from(Vec::from([ Prestart: Vec::from([
grpc::Hook { grpc::Hook {
Path: String::from("prestartpath"), Path: String::from("prestartpath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}, },
grpc::Hook { grpc::Hook {
Path: String::from("prestartpath2"), Path: String::from("prestartpath2"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg3"), String::from("arg4")]),
String::from("arg3"), Env: Vec::from([String::from("env3"), String::from("env4")]),
String::from("arg4"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env3"),
String::from("env4"),
])),
Timeout: 25, Timeout: 25,
..Default::default() ..Default::default()
}, },
])), ]),
Poststart: protobuf::RepeatedField::from(Vec::from([grpc::Hook { Poststart: Vec::from([grpc::Hook {
Path: String::from("poststartpath"), Path: String::from("poststartpath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
Poststop: protobuf::RepeatedField::from(Vec::from([grpc::Hook { Poststop: Vec::from([grpc::Hook {
Path: String::from("poststoppath"), Path: String::from("poststoppath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
CreateRuntime: protobuf::RepeatedField::from(Vec::from([grpc::Hook { CreateRuntime: Vec::from([grpc::Hook {
Path: String::from("createruntimepath"), Path: String::from("createruntimepath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
CreateContainer: protobuf::RepeatedField::from(Vec::from([grpc::Hook { CreateContainer: Vec::from([grpc::Hook {
Path: String::from("createcontainerpath"), Path: String::from("createcontainerpath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
StartContainer: protobuf::RepeatedField::from(Vec::from([grpc::Hook { StartContainer: Vec::from([grpc::Hook {
Path: String::from("startcontainerpath"), Path: String::from("startcontainerpath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
..Default::default() ..Default::default()
}, },
result: oci::Hooks { result: oci::Hooks {
@ -926,72 +879,42 @@ mod tests {
TestData { TestData {
// Prestart empty // Prestart empty
grpchooks: grpc::Hooks { grpchooks: grpc::Hooks {
Prestart: protobuf::RepeatedField::from(Vec::from([])), Prestart: Vec::from([]),
Poststart: protobuf::RepeatedField::from(Vec::from([grpc::Hook { Poststart: Vec::from([grpc::Hook {
Path: String::from("poststartpath"), Path: String::from("poststartpath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
Poststop: protobuf::RepeatedField::from(Vec::from([grpc::Hook { Poststop: Vec::from([grpc::Hook {
Path: String::from("poststoppath"), Path: String::from("poststoppath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
CreateRuntime: protobuf::RepeatedField::from(Vec::from([grpc::Hook { CreateRuntime: Vec::from([grpc::Hook {
Path: String::from("createruntimepath"), Path: String::from("createruntimepath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
CreateContainer: protobuf::RepeatedField::from(Vec::from([grpc::Hook { CreateContainer: Vec::from([grpc::Hook {
Path: String::from("createcontainerpath"), Path: String::from("createcontainerpath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
StartContainer: protobuf::RepeatedField::from(Vec::from([grpc::Hook { StartContainer: Vec::from([grpc::Hook {
Path: String::from("startcontainerpath"), Path: String::from("startcontainerpath"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}])), }]),
..Default::default() ..Default::default()
}, },
result: oci::Hooks { result: oci::Hooks {
@ -1063,11 +986,8 @@ mod tests {
grpcmount: grpc::Mount { grpcmount: grpc::Mount {
destination: String::from("destination"), destination: String::from("destination"),
source: String::from("source"), source: String::from("source"),
field_type: String::from("fieldtype"), type_: String::from("fieldtype"),
options: protobuf::RepeatedField::from(Vec::from([ options: Vec::from([String::from("option1"), String::from("option2")]),
String::from("option1"),
String::from("option2"),
])),
..Default::default() ..Default::default()
}, },
result: oci::Mount { result: oci::Mount {
@ -1081,8 +1001,8 @@ mod tests {
grpcmount: grpc::Mount { grpcmount: grpc::Mount {
destination: String::from("destination"), destination: String::from("destination"),
source: String::from("source"), source: String::from("source"),
field_type: String::from("fieldtype"), type_: String::from("fieldtype"),
options: protobuf::RepeatedField::from(Vec::new()), options: Vec::new(),
..Default::default() ..Default::default()
}, },
result: oci::Mount { result: oci::Mount {
@ -1096,8 +1016,8 @@ mod tests {
grpcmount: grpc::Mount { grpcmount: grpc::Mount {
destination: String::new(), destination: String::new(),
source: String::from("source"), source: String::from("source"),
field_type: String::from("fieldtype"), type_: String::from("fieldtype"),
options: protobuf::RepeatedField::from(Vec::from([String::from("option1")])), options: Vec::from([String::from("option1")]),
..Default::default() ..Default::default()
}, },
result: oci::Mount { result: oci::Mount {
@ -1111,8 +1031,8 @@ mod tests {
grpcmount: grpc::Mount { grpcmount: grpc::Mount {
destination: String::from("destination"), destination: String::from("destination"),
source: String::from("source"), source: String::from("source"),
field_type: String::new(), type_: String::new(),
options: protobuf::RepeatedField::from(Vec::from([String::from("option1")])), options: Vec::from([String::from("option1")]),
..Default::default() ..Default::default()
}, },
result: oci::Mount { result: oci::Mount {
@ -1172,27 +1092,15 @@ mod tests {
grpchook: &[ grpchook: &[
grpc::Hook { grpc::Hook {
Path: String::from("path"), Path: String::from("path"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg1"), String::from("arg2")]),
String::from("arg1"), Env: Vec::from([String::from("env1"), String::from("env2")]),
String::from("arg2"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env1"),
String::from("env2"),
])),
Timeout: 10, Timeout: 10,
..Default::default() ..Default::default()
}, },
grpc::Hook { grpc::Hook {
Path: String::from("path2"), Path: String::from("path2"),
Args: protobuf::RepeatedField::from(Vec::from([ Args: Vec::from([String::from("arg3"), String::from("arg4")]),
String::from("arg3"), Env: Vec::from([String::from("env3"), String::from("env4")]),
String::from("arg4"),
])),
Env: protobuf::RepeatedField::from(Vec::from([
String::from("env3"),
String::from("env4"),
])),
Timeout: 20, Timeout: 20,
..Default::default() ..Default::default()
}, },

View File

@ -1094,7 +1094,6 @@ fn parse_options(option_list: Vec<String>) -> HashMap<String, String> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use protobuf::RepeatedField;
use protocols::agent::FSGroup; use protocols::agent::FSGroup;
use std::fs::File; use std::fs::File;
use std::fs::OpenOptions; use std::fs::OpenOptions;
@ -2015,9 +2014,8 @@ mod tests {
mount_path: "rw_mount", mount_path: "rw_mount",
fs_group: Some(FSGroup { fs_group: Some(FSGroup {
group_id: 3000, group_id: 3000,
group_change_policy: FSGroupChangePolicy::Always, group_change_policy: FSGroupChangePolicy::Always.into(),
unknown_fields: Default::default(), ..Default::default()
cached_size: Default::default(),
}), }),
read_only: false, read_only: false,
expected_group_id: 3000, expected_group_id: 3000,
@ -2027,9 +2025,8 @@ mod tests {
mount_path: "ro_mount", mount_path: "ro_mount",
fs_group: Some(FSGroup { fs_group: Some(FSGroup {
group_id: 3000, group_id: 3000,
group_change_policy: FSGroupChangePolicy::OnRootMismatch, group_change_policy: FSGroupChangePolicy::OnRootMismatch.into(),
unknown_fields: Default::default(), ..Default::default()
cached_size: Default::default(),
}), }),
read_only: true, read_only: true,
expected_group_id: 3000, expected_group_id: 3000,
@ -2049,10 +2046,7 @@ mod tests {
let directory_mode = mount_dir.as_path().metadata().unwrap().permissions().mode(); let directory_mode = mount_dir.as_path().metadata().unwrap().permissions().mode();
let mut storage_data = Storage::new(); let mut storage_data = Storage::new();
if d.read_only { if d.read_only {
storage_data.set_options(RepeatedField::from_slice(&[ storage_data.set_options(vec!["foo".to_string(), "ro".to_string()]);
"foo".to_string(),
"ro".to_string(),
]));
} }
if let Some(fs_group) = d.fs_group.clone() { if let Some(fs_group) = d.fs_group.clone() {
storage_data.set_fs_group(fs_group); storage_data.set_fs_group(fs_group);