mirror of
https://github.com/containers/youki
synced 2024-11-22 17:02:00 +01:00
Merge pull request #2987 from saku3/add-test-process_oom_score_adj
add e2e test for process_oom_score_adj
This commit is contained in:
commit
fad458ffc7
@ -21,6 +21,7 @@ use crate::tests::linux_ns_itype::get_ns_itype_tests;
|
|||||||
use crate::tests::mounts_recursive::get_mounts_recursive_test;
|
use crate::tests::mounts_recursive::get_mounts_recursive_test;
|
||||||
use crate::tests::no_pivot::get_no_pivot_test;
|
use crate::tests::no_pivot::get_no_pivot_test;
|
||||||
use crate::tests::pidfile::get_pidfile_test;
|
use crate::tests::pidfile::get_pidfile_test;
|
||||||
|
use crate::tests::process_oom_score_adj::get_process_oom_score_adj_test;
|
||||||
use crate::tests::process_rlimits::get_process_rlimits_test;
|
use crate::tests::process_rlimits::get_process_rlimits_test;
|
||||||
use crate::tests::process_user::get_process_user_test;
|
use crate::tests::process_user::get_process_user_test;
|
||||||
use crate::tests::readonly_paths::get_ro_paths_test;
|
use crate::tests::readonly_paths::get_ro_paths_test;
|
||||||
@ -119,6 +120,7 @@ fn main() -> Result<()> {
|
|||||||
let process_user = get_process_user_test();
|
let process_user = get_process_user_test();
|
||||||
let process_rlimtis = get_process_rlimits_test();
|
let process_rlimtis = get_process_rlimits_test();
|
||||||
let no_pivot = get_no_pivot_test();
|
let no_pivot = get_no_pivot_test();
|
||||||
|
let process_oom_score_adj = get_process_oom_score_adj_test();
|
||||||
|
|
||||||
tm.add_test_group(Box::new(cl));
|
tm.add_test_group(Box::new(cl));
|
||||||
tm.add_test_group(Box::new(cc));
|
tm.add_test_group(Box::new(cc));
|
||||||
@ -145,6 +147,7 @@ fn main() -> Result<()> {
|
|||||||
tm.add_test_group(Box::new(process_user));
|
tm.add_test_group(Box::new(process_user));
|
||||||
tm.add_test_group(Box::new(process_rlimtis));
|
tm.add_test_group(Box::new(process_rlimtis));
|
||||||
tm.add_test_group(Box::new(no_pivot));
|
tm.add_test_group(Box::new(no_pivot));
|
||||||
|
tm.add_test_group(Box::new(process_oom_score_adj));
|
||||||
|
|
||||||
tm.add_test_group(Box::new(io_priority_test));
|
tm.add_test_group(Box::new(io_priority_test));
|
||||||
tm.add_cleanup(Box::new(cgroups::cleanup_v1));
|
tm.add_cleanup(Box::new(cgroups::cleanup_v1));
|
||||||
|
@ -11,6 +11,7 @@ pub mod linux_ns_itype;
|
|||||||
pub mod mounts_recursive;
|
pub mod mounts_recursive;
|
||||||
pub mod no_pivot;
|
pub mod no_pivot;
|
||||||
pub mod pidfile;
|
pub mod pidfile;
|
||||||
|
pub mod process_oom_score_adj;
|
||||||
pub mod process_rlimits;
|
pub mod process_rlimits;
|
||||||
pub mod process_user;
|
pub mod process_user;
|
||||||
pub mod readonly_paths;
|
pub mod readonly_paths;
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
mod process_oom_score_adj_test;
|
||||||
|
pub use process_oom_score_adj_test::get_process_oom_score_adj_test;
|
@ -0,0 +1,46 @@
|
|||||||
|
use anyhow::{Context, Ok, Result};
|
||||||
|
use oci_spec::runtime::{ProcessBuilder, Spec, SpecBuilder};
|
||||||
|
use rand::Rng;
|
||||||
|
use test_framework::{test_result, Test, TestGroup, TestResult};
|
||||||
|
|
||||||
|
use crate::utils::test_inside_container;
|
||||||
|
|
||||||
|
fn generate_random_number() -> i32 {
|
||||||
|
let mut rng = rand::thread_rng();
|
||||||
|
rng.gen_range(300..=700)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_spec() -> Result<Spec> {
|
||||||
|
let spec = SpecBuilder::default()
|
||||||
|
.process(
|
||||||
|
ProcessBuilder::default()
|
||||||
|
.args(vec![
|
||||||
|
"runtimetest".to_string(),
|
||||||
|
"process_oom_score_adj".to_string(),
|
||||||
|
])
|
||||||
|
.oom_score_adj(generate_random_number())
|
||||||
|
.build()
|
||||||
|
.expect("error in creating process config"),
|
||||||
|
)
|
||||||
|
.build()
|
||||||
|
.context("failed to build spec")?;
|
||||||
|
|
||||||
|
Ok(spec)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn process_oom_score_adj_test() -> TestResult {
|
||||||
|
let spec = test_result!(create_spec());
|
||||||
|
test_inside_container(spec, &|_| Ok(()))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_process_oom_score_adj_test() -> TestGroup {
|
||||||
|
let mut process_oom_score_adj_test_group = TestGroup::new("process_oom_score_adj");
|
||||||
|
|
||||||
|
let test = Test::new(
|
||||||
|
"process_oom_score_adj",
|
||||||
|
Box::new(process_oom_score_adj_test),
|
||||||
|
);
|
||||||
|
process_oom_score_adj_test_group.add(vec![Box::new(test)]);
|
||||||
|
|
||||||
|
process_oom_score_adj_test_group
|
||||||
|
}
|
@ -47,6 +47,7 @@ fn main() {
|
|||||||
"process_user" => tests::validate_process_user(&spec),
|
"process_user" => tests::validate_process_user(&spec),
|
||||||
"process_rlimits" => tests::validate_process_rlimits(&spec),
|
"process_rlimits" => tests::validate_process_rlimits(&spec),
|
||||||
"no_pivot" => tests::validate_rootfs(),
|
"no_pivot" => tests::validate_rootfs(),
|
||||||
|
"process_oom_score_adj" => tests::validate_process_oom_score_adj(&spec),
|
||||||
_ => eprintln!("error due to unexpected execute test name: {execute_test}"),
|
_ => eprintln!("error due to unexpected execute test name: {execute_test}"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -689,3 +689,18 @@ pub fn validate_rootfs() {
|
|||||||
eprintln!("error due to rootfs want {expected:?}, got {entries:?}");
|
eprintln!("error due to rootfs want {expected:?}, got {entries:?}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn validate_process_oom_score_adj(spec: &Spec) {
|
||||||
|
let process = spec.process().as_ref().unwrap();
|
||||||
|
let expected_value = process.oom_score_adj().unwrap();
|
||||||
|
|
||||||
|
let pid = std::process::id();
|
||||||
|
let oom_score_adj_path = format!("/proc/{}/oom_score_adj", pid);
|
||||||
|
|
||||||
|
let actual_value = fs::read_to_string(oom_score_adj_path)
|
||||||
|
.unwrap_or_else(|_| panic!("Failed to read file content"));
|
||||||
|
|
||||||
|
if actual_value.trim() != expected_value.to_string() {
|
||||||
|
eprintln!("Unexpected oom_score_adj, expected: {expected_value} found: {actual_value}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user