mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
Tests from MSFT fork of kata-containers (#230)
Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
committed by
GitHub
parent
69d6426663
commit
e9cd6d6afc
49
tests/kata/data/pod-cm1/inputs.txt
Normal file
49
tests/kata/data/pod-cm1/inputs.txt
Normal file
File diff suppressed because one or more lines are too long
27
tests/kata/data/pod-cm1/outputs.json
Normal file
27
tests/kata/data/pod-cm1/outputs.json
Normal file
@@ -0,0 +1,27 @@
|
||||
[
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
]
|
||||
1796
tests/kata/data/pod-cm1/policy.rego
Normal file
1796
tests/kata/data/pod-cm1/policy.rego
Normal file
File diff suppressed because it is too large
Load Diff
119
tests/kata/data/pod-cm2/inputs.txt
Normal file
119
tests/kata/data/pod-cm2/inputs.txt
Normal file
File diff suppressed because one or more lines are too long
62
tests/kata/data/pod-cm2/outputs.json
Normal file
62
tests/kata/data/pod-cm2/outputs.json
Normal file
@@ -0,0 +1,62 @@
|
||||
[
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
]
|
||||
2114
tests/kata/data/pod-cm2/policy.rego
Normal file
2114
tests/kata/data/pod-cm2/policy.rego
Normal file
File diff suppressed because it is too large
Load Diff
153
tests/kata/data/pod-exec/inputs.txt
Normal file
153
tests/kata/data/pod-exec/inputs.txt
Normal file
File diff suppressed because one or more lines are too long
79
tests/kata/data/pod-exec/outputs.json
Normal file
79
tests/kata/data/pod-exec/outputs.json
Normal file
@@ -0,0 +1,79 @@
|
||||
[
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
]
|
||||
1808
tests/kata/data/pod-exec/policy.rego
Normal file
1808
tests/kata/data/pod-exec/policy.rego
Normal file
File diff suppressed because it is too large
Load Diff
53
tests/kata/data/pod-lifecycle/inputs.txt
Normal file
53
tests/kata/data/pod-lifecycle/inputs.txt
Normal file
File diff suppressed because one or more lines are too long
29
tests/kata/data/pod-lifecycle/outputs.json
Normal file
29
tests/kata/data/pod-lifecycle/outputs.json
Normal file
@@ -0,0 +1,29 @@
|
||||
[
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
]
|
||||
1806
tests/kata/data/pod-lifecycle/policy.rego
Normal file
1806
tests/kata/data/pod-lifecycle/policy.rego
Normal file
File diff suppressed because it is too large
Load Diff
139
tests/kata/data/pod-many-layers/inputs.txt
Normal file
139
tests/kata/data/pod-many-layers/inputs.txt
Normal file
File diff suppressed because one or more lines are too long
72
tests/kata/data/pod-many-layers/outputs.json
Normal file
72
tests/kata/data/pod-many-layers/outputs.json
Normal file
@@ -0,0 +1,72 @@
|
||||
[
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
]
|
||||
2926
tests/kata/data/pod-many-layers/policy.rego
Normal file
2926
tests/kata/data/pod-many-layers/policy.rego
Normal file
File diff suppressed because it is too large
Load Diff
48
tests/kata/data/pod-persistent-volumes/inputs.txt
Normal file
48
tests/kata/data/pod-persistent-volumes/inputs.txt
Normal file
File diff suppressed because one or more lines are too long
26
tests/kata/data/pod-persistent-volumes/outputs.json
Normal file
26
tests/kata/data/pod-persistent-volumes/outputs.json
Normal file
@@ -0,0 +1,26 @@
|
||||
[
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
]
|
||||
1866
tests/kata/data/pod-persistent-volumes/policy.rego
Normal file
1866
tests/kata/data/pod-persistent-volumes/policy.rego
Normal file
File diff suppressed because it is too large
Load Diff
109
tests/kata/data/pod-same-containers/inputs.txt
Normal file
109
tests/kata/data/pod-same-containers/inputs.txt
Normal file
File diff suppressed because one or more lines are too long
57
tests/kata/data/pod-same-containers/outputs.json
Normal file
57
tests/kata/data/pod-same-containers/outputs.json
Normal file
@@ -0,0 +1,57 @@
|
||||
[
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
]
|
||||
2299
tests/kata/data/pod-same-containers/policy.rego
Normal file
2299
tests/kata/data/pod-same-containers/policy.rego
Normal file
File diff suppressed because it is too large
Load Diff
54
tests/kata/data/web/inputs.txt
Normal file
54
tests/kata/data/web/inputs.txt
Normal file
File diff suppressed because one or more lines are too long
29
tests/kata/data/web/outputs.json
Normal file
29
tests/kata/data/web/outputs.json
Normal file
@@ -0,0 +1,29 @@
|
||||
[
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
]
|
||||
1865
tests/kata/data/web/policy.rego
Normal file
1865
tests/kata/data/web/policy.rego
Normal file
File diff suppressed because it is too large
Load Diff
51
tests/kata/data/web2/inputs.txt
Normal file
51
tests/kata/data/web2/inputs.txt
Normal file
File diff suppressed because one or more lines are too long
28
tests/kata/data/web2/outputs.json
Normal file
28
tests/kata/data/web2/outputs.json
Normal file
@@ -0,0 +1,28 @@
|
||||
[
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true,
|
||||
true
|
||||
]
|
||||
1865
tests/kata/data/web2/policy.rego
Normal file
1865
tests/kata/data/web2/policy.rego
Normal file
File diff suppressed because it is too large
Load Diff
@@ -3,12 +3,21 @@
|
||||
use regorus::*;
|
||||
|
||||
use std::path::Path;
|
||||
use std::time::Instant;
|
||||
|
||||
use anyhow::Result;
|
||||
use anyhow::{bail, Result};
|
||||
use clap::Parser;
|
||||
use walkdir::WalkDir;
|
||||
|
||||
fn run_kata_tests(tests_dir: &Path, generate: bool) -> Result<()> {
|
||||
fn run_kata_tests(
|
||||
tests_dir: &Path,
|
||||
name: &Option<String>,
|
||||
coverage: bool,
|
||||
generate: bool,
|
||||
) -> Result<()> {
|
||||
let mut num_tests = 0;
|
||||
let mut num_queries = 0;
|
||||
let mut total_time_ns = 0;
|
||||
for entry in WalkDir::new(tests_dir)
|
||||
.max_depth(1) // Do not recurse
|
||||
.sort_by_file_name()
|
||||
@@ -20,9 +29,17 @@ fn run_kata_tests(tests_dir: &Path, generate: bool) -> Result<()> {
|
||||
continue;
|
||||
}
|
||||
|
||||
// If specificed, only execute tests matching given name.
|
||||
if let Some(name) = name {
|
||||
if !path.ends_with(name) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
num_tests += 1;
|
||||
|
||||
let policy_file = path.join("policy.rego");
|
||||
let inputs_file = path.join("inputs.txt");
|
||||
let outputs_file = path.join("output.json");
|
||||
let outputs_file = path.join("outputs.json");
|
||||
|
||||
let mut engine = Engine::new();
|
||||
engine.add_policy_from_file(&policy_file)?;
|
||||
@@ -37,7 +54,7 @@ fn run_kata_tests(tests_dir: &Path, generate: bool) -> Result<()> {
|
||||
let mut results = if generate {
|
||||
vec![]
|
||||
} else {
|
||||
Value::from_json_str(&std::fs::read_to_string(&outputs_file)?)?
|
||||
Value::from_json_file(&outputs_file)?
|
||||
.as_array()?
|
||||
.iter()
|
||||
.cloned()
|
||||
@@ -63,12 +80,16 @@ fn run_kata_tests(tests_dir: &Path, generate: bool) -> Result<()> {
|
||||
|
||||
// Evaluate using engine.
|
||||
engine.set_input(input.clone());
|
||||
let start = Instant::now();
|
||||
let r = engine.eval_rule(rule.clone())?;
|
||||
total_time_ns += start.elapsed().as_nanos();
|
||||
|
||||
// Evaluate using fresh engine.
|
||||
let mut new_engine = engine_base.clone();
|
||||
new_engine.set_input(input);
|
||||
let start = Instant::now();
|
||||
let r_new = new_engine.eval_rule(rule)?;
|
||||
total_time_ns += start.elapsed().as_nanos();
|
||||
|
||||
// Ensure that both evaluations produced the same result.
|
||||
assert_eq!(r, r_new);
|
||||
@@ -79,19 +100,32 @@ fn run_kata_tests(tests_dir: &Path, generate: bool) -> Result<()> {
|
||||
let expected = results.pop().unwrap();
|
||||
assert_eq!(r, expected, "{lineno} failed in {}", inputs_file.display());
|
||||
}
|
||||
|
||||
num_queries += 2;
|
||||
}
|
||||
|
||||
if generate {
|
||||
std::fs::write(outputs_file, Value::from(results).to_json_str()?)?;
|
||||
}
|
||||
#[cfg(feature = "coverage")]
|
||||
{
|
||||
let report = engine.get_coverage_report()?;
|
||||
println!("{}", report.to_colored_string()?);
|
||||
|
||||
if coverage {
|
||||
#[cfg(feature = "coverage")]
|
||||
{
|
||||
let report = engine.get_coverage_report()?;
|
||||
println!("{}", report.to_colored_string()?);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if num_tests == 0 {
|
||||
bail!("no tests found");
|
||||
}
|
||||
|
||||
let millis = total_time_ns as f64 / 1000_000.0;
|
||||
println!("executed {num_queries} queries in {millis:2} millis");
|
||||
println!("time per query is {:2} millis", millis / num_queries as f64);
|
||||
println!("kata tests passed");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -103,6 +137,15 @@ struct Cli {
|
||||
#[clap(default_value = "tests/kata/data")]
|
||||
test_dir: String,
|
||||
|
||||
/// Name of a specific test
|
||||
#[arg(long, short)]
|
||||
name: Option<String>,
|
||||
|
||||
/// Display code coverage
|
||||
#[arg(long, short)]
|
||||
#[clap(default_value = "false")]
|
||||
coverage: bool,
|
||||
|
||||
/// Generate outputs instead of testing.
|
||||
#[arg(long, short)]
|
||||
#[clap(default_value = "false")]
|
||||
@@ -111,5 +154,10 @@ struct Cli {
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let cli = Cli::parse();
|
||||
run_kata_tests(&Path::new(&cli.test_dir), cli.generate)
|
||||
run_kata_tests(
|
||||
&Path::new(&cli.test_dir),
|
||||
&cli.name,
|
||||
cli.coverage,
|
||||
cli.generate,
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user