mirror of
https://github.com/containers/youki
synced 2024-11-23 01:11:58 +01:00
Add domainname test (#1544)
* Add domainname test Signed-off-by: higuruchi <fumiya2324@gmail.com> * Fix error message from binary to string Signed-off-by: higuruchi <fumiya2324@gmail.com> * Update runc binary to v1.1.8 from 1.1.0 for domainname test Signed-off-by: higuruchi <fumiya2324@gmail.com> * Move missing domainname test Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com> * Add TODO comments for self-notes Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com> --------- Signed-off-by: higuruchi <fumiya2324@gmail.com> Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com> Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
This commit is contained in:
parent
2723aa446b
commit
c2e8670b37
37
Cargo.lock
generated
37
Cargo.lock
generated
@ -444,9 +444,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.4.14"
|
||||
version = "4.4.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33e92c5c1a78c62968ec57dbc2440366a2d6e5a23faf829970ff1585dc6b18e2"
|
||||
checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
@ -454,9 +454,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.4.14"
|
||||
version = "4.4.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f4323769dc8a61e2c39ad7dc26f6f2800524691a44d74fe3d1071a5c24db6370"
|
||||
checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
@ -466,9 +466,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap_complete"
|
||||
version = "4.4.6"
|
||||
version = "4.4.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "97aeaa95557bd02f23fbb662f981670c3d20c5a26e69f7354b28f57092437fcd"
|
||||
checksum = "eaf7dcb7c21d8ca1a2482ee0f1d341f437c9a7af6ca6da359dc5e1b164e98215"
|
||||
dependencies = [
|
||||
"clap",
|
||||
]
|
||||
@ -2339,9 +2339,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.10.62"
|
||||
version = "0.10.63"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671"
|
||||
checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8"
|
||||
dependencies = [
|
||||
"bitflags 2.4.2",
|
||||
"cfg-if",
|
||||
@ -2371,9 +2371,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.98"
|
||||
version = "0.9.99"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c1665caf8ab2dc9aef43d1c0023bd904633a6a05cb30b0ad59bec2ae986e57a7"
|
||||
checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
@ -2656,9 +2656,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.76"
|
||||
version = "1.0.78"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c"
|
||||
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
@ -3076,6 +3076,7 @@ name = "runtimetest"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"libc",
|
||||
"nc",
|
||||
"nix 0.27.1",
|
||||
"oci-spec",
|
||||
@ -3526,9 +3527,9 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7"
|
||||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.12.0"
|
||||
version = "1.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2593d31f82ead8df961d8bd23a64c2ccf2eb5dd34b0a34bfb4dd54011c72009e"
|
||||
checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
@ -4206,9 +4207,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "1.6.1"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
|
||||
checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
|
||||
|
||||
[[package]]
|
||||
name = "valuable"
|
||||
@ -5690,9 +5691,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "xattr"
|
||||
version = "1.2.0"
|
||||
version = "1.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "914566e6413e7fa959cc394fb30e563ba80f3541fbd40816d4c05a0fc3f2a0f1"
|
||||
checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
|
@ -1,6 +1,7 @@
|
||||
mod tests;
|
||||
mod utils;
|
||||
|
||||
use crate::tests::domainname::get_domainname_tests;
|
||||
use crate::tests::example::get_example_test;
|
||||
use crate::tests::hooks::get_hooks_tests;
|
||||
use crate::tests::hostname::get_hostname_test;
|
||||
@ -102,6 +103,8 @@ fn main() -> Result<()> {
|
||||
let ro_paths = get_ro_paths_test();
|
||||
let hostname = get_hostname_test();
|
||||
let mounts_recursive = get_mounts_recursive_test();
|
||||
#[allow(unused_variables)]
|
||||
let domainname = get_domainname_tests();
|
||||
let intel_rdt = get_intel_rdt_test();
|
||||
let sysctl = get_sysctl_test();
|
||||
#[allow(unused_variables)]
|
||||
@ -124,6 +127,7 @@ fn main() -> Result<()> {
|
||||
tm.add_test_group(Box::new(ro_paths));
|
||||
tm.add_test_group(Box::new(hostname));
|
||||
tm.add_test_group(Box::new(mounts_recursive));
|
||||
// tm.add_test_group(Box::new(domainname)); // TODO (YJDoc2) fix in #2616
|
||||
tm.add_test_group(Box::new(intel_rdt));
|
||||
tm.add_test_group(Box::new(sysctl));
|
||||
// tm.add_test_group(Box::new(scheduler));
|
||||
|
32
tests/contest/contest/src/tests/domainname/mod.rs
Normal file
32
tests/contest/contest/src/tests/domainname/mod.rs
Normal file
@ -0,0 +1,32 @@
|
||||
use crate::utils::test_inside_container;
|
||||
use oci_spec::runtime::{ProcessBuilder, Spec, SpecBuilder};
|
||||
use test_framework::{Test, TestGroup, TestResult};
|
||||
|
||||
fn get_spec(domainname: &str) -> Spec {
|
||||
SpecBuilder::default()
|
||||
.domainname(domainname)
|
||||
.process(
|
||||
ProcessBuilder::default()
|
||||
.args(vec![
|
||||
"runtimetest".to_string(),
|
||||
"domainname_test".to_string(),
|
||||
])
|
||||
.build()
|
||||
.expect("error in creating process config"),
|
||||
)
|
||||
.build()
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
fn set_domainname_test() -> TestResult {
|
||||
let spec = get_spec("domainname");
|
||||
test_inside_container(spec, &|_| Ok(()))
|
||||
}
|
||||
|
||||
pub fn get_domainname_tests() -> TestGroup {
|
||||
let mut tg = TestGroup::new("domainname_test");
|
||||
let set_domainname_test = Test::new("set_domainname_test", Box::new(set_domainname_test));
|
||||
tg.add(vec![Box::new(set_domainname_test)]);
|
||||
|
||||
tg
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
pub mod cgroups;
|
||||
pub mod domainname;
|
||||
pub mod example;
|
||||
pub mod hooks;
|
||||
pub mod hostname;
|
||||
|
@ -7,5 +7,6 @@ edition = "2021"
|
||||
oci-spec = { version = "0.6.4", features = ["runtime"] }
|
||||
nix = "0.27.1"
|
||||
anyhow = "1.0"
|
||||
libc = "0.2.139" # TODO (YJDoc2) upgrade to latest
|
||||
nc = "0.8.18"
|
||||
|
||||
|
@ -33,6 +33,7 @@ fn main() {
|
||||
"readonly_paths" => tests::validate_readonly_paths(&spec),
|
||||
"set_host_name" => tests::validate_hostname(&spec),
|
||||
"mounts_recursive" => tests::validate_mounts_recursive(&spec),
|
||||
"domainname_test" => tests::validate_domainname(&spec),
|
||||
"seccomp" => tests::validate_seccomp(&spec),
|
||||
"sysctl" => tests::validate_sysctl(&spec),
|
||||
"scheduler_policy_other" => tests::validate_scheduler_policy(&spec),
|
||||
|
@ -1,8 +1,10 @@
|
||||
use crate::utils::{self, test_read_access, test_write_access};
|
||||
use anyhow::{bail, Result};
|
||||
use libc::getdomainname;
|
||||
use nix::errno::Errno;
|
||||
use nix::unistd::getcwd;
|
||||
use oci_spec::runtime::{LinuxSchedulerPolicy, Spec};
|
||||
use std::ffi::CStr;
|
||||
use std::fs::{self, read_dir};
|
||||
use std::mem;
|
||||
use std::path::Path;
|
||||
@ -82,6 +84,34 @@ pub fn validate_hostname(spec: &Spec) {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn validate_domainname(spec: &Spec) {
|
||||
if let Some(expected_domainname) = spec.domainname() {
|
||||
if expected_domainname.is_empty() {
|
||||
return;
|
||||
}
|
||||
|
||||
const MAX_DOMAINNAME_SIZE: usize = 254;
|
||||
let actual_domainname: [i8; MAX_DOMAINNAME_SIZE] = [0; MAX_DOMAINNAME_SIZE];
|
||||
|
||||
// TODO (YJDoc2) : libc now has support for getdomainname, update this to use that
|
||||
let ret =
|
||||
unsafe { getdomainname(actual_domainname.as_ptr() as *mut i8, MAX_DOMAINNAME_SIZE) };
|
||||
if ret == -1 {
|
||||
eprintln!("Failed to get domainname");
|
||||
}
|
||||
|
||||
let actual_domainname_cstr =
|
||||
unsafe { CStr::from_ptr(actual_domainname.as_ptr() as *mut i8) };
|
||||
if actual_domainname_cstr.to_str().unwrap() != expected_domainname {
|
||||
eprintln!(
|
||||
"Unexpected domainname, expected: {:?} found: {:?}",
|
||||
expected_domainname,
|
||||
actual_domainname_cstr.to_str().unwrap()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Run argument test recursively for files after base_dir
|
||||
fn do_test_mounts_recursive(base_dir: &Path, test_fn: &dyn Fn(&Path) -> Result<()>) -> Result<()> {
|
||||
let dirs = read_dir(base_dir).unwrap();
|
||||
|
Loading…
Reference in New Issue
Block a user