mirror of
https://github.com/containers/youki
synced 2024-11-22 17:02:00 +01:00
Refactor test dir structure (#2421)
* Move individual rust-oci-tests components in the tests dir We can use several things from test_framework and even integration_test for additional tests such as podman rootless and wasm tests Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com> * fix scripts and docs for the new dir structure Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com> --------- Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
This commit is contained in:
parent
2cc02491c0
commit
80f1f36ae9
@ -22,7 +22,9 @@ jobs:
|
||||
with:
|
||||
files: |
|
||||
.github/workflows/integration_tests_validation.yaml
|
||||
tests/rust-integration-tests/**
|
||||
tests/runtimetest/**
|
||||
tests/test_framework/**
|
||||
tests/integration_test/**
|
||||
files_ignore: |
|
||||
**.md
|
||||
- name: List all changed files
|
||||
|
@ -1,6 +1,6 @@
|
||||
[workspace]
|
||||
resolver = "2"
|
||||
members = ["tests/rust-integration-tests/*", "crates/*", "tools/*"]
|
||||
members = ["tests/runtimetest/","tests/integration_test/","tests/test_framework/","crates/*", "tools/*"]
|
||||
|
||||
[profile.release]
|
||||
lto = true
|
||||
|
@ -1,6 +1,6 @@
|
||||
# integration_test
|
||||
|
||||
**Note** that these tests resides in `/tests/rust-integration-tests/integration_test/` at the time of writing.
|
||||
**Note** that these tests resides in `/tests/integration_test/` at the time of writing.
|
||||
|
||||
This crate contains the Rust port of OCI-runtime tools integration tests, which are used to test if the runtime works as per the OCI spec or not. Initially youki used the original implementation of these test provided in the OCI repository [here](https://github.com/opencontainers/runtime-tools/tree/master/validation). But those tests are written in Go, which made the developers depend on two language environments Rust and Go to compile youki and test it. The Validation tests themselves also have an optional dependency on node js to parse their output, which can make it a third language dependency.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Runtime Test
|
||||
|
||||
**Note** that these tests resides in /tests/rust-integration-tests/runtimetest at the time of writing.
|
||||
**Note** that these tests resides in /tests/runtimetest at the time of writing.
|
||||
|
||||
This crate provides a binary which is used by integration tests to verify that the restrictions and constraints applied to the container are upheld by the container process, from inside the container process. This runs the tests one-by-one, and the failing test prints the error to the stderr.
|
||||
|
||||
|
@ -19,7 +19,7 @@ We will not go into detail here, but will explain how to write and add a new tes
|
||||
<p>
|
||||
|
||||
```rust,no_run,noplayground
|
||||
{{#include ../../../../tests/rust-integration-tests/integration_test/src/tests/example/hello_world.rs}}
|
||||
{{#include ../../../../tests/integration_test/src/tests/example/hello_world.rs}}
|
||||
```
|
||||
|
||||
</p>
|
||||
@ -33,31 +33,31 @@ We will not go into detail here, but will explain how to write and add a new tes
|
||||
Therefore, it is common practice here to write an OCI Runtime Spec that executes `runtimetest`.
|
||||
|
||||
```rust,no_run,noplayground
|
||||
{{#include ../../../../tests/rust-integration-tests/integration_test/src/tests/example/hello_world.rs:get_example_spec}}
|
||||
{{#include ../../../../tests/integration_test/src/tests/example/hello_world.rs:get_example_spec}}
|
||||
```
|
||||
|
||||
2. Prepare a function that returns a `TestResult`, which represents the result of the test.
|
||||
|
||||
```rust,no_run,noplayground
|
||||
{{#include ../../../../tests/rust-integration-tests/integration_test/src/tests/example/hello_world.rs:example_test}}
|
||||
{{#include ../../../../tests/integration_test/src/tests/example/hello_world.rs:example_test}}
|
||||
```
|
||||
|
||||
3. Create a `TestGroup` and register a test case you created
|
||||
|
||||
```rust,no_run,noplayground
|
||||
{{#include ../../../../tests/rust-integration-tests/integration_test/src/tests/example/hello_world.rs:get_example_test}}
|
||||
{{#include ../../../../tests/integration_test/src/tests/example/hello_world.rs:get_example_test}}
|
||||
```
|
||||
|
||||
4. Register the `TestGroup` you created to a `TestManager`
|
||||
|
||||
```rust,no_run,noplayground
|
||||
{{#include ../../../../tests/rust-integration-tests/integration_test/src/main.rs:register_example_test}}
|
||||
{{#include ../../../../tests/integration_test/src/main.rs:register_example_test}}
|
||||
```
|
||||
|
||||
5. Write the validation you want to run within a test container
|
||||
```rust,no_run,noplayground
|
||||
{{#include ../../../../tests/rust-integration-tests/runtimetest/src/main.rs:example_runtimetest_main}}
|
||||
{{#include ../../../../tests/runtimetest/src/main.rs:example_runtimetest_main}}
|
||||
```
|
||||
```rust,no_run,noplayground
|
||||
{{#include ../../../../tests/rust-integration-tests/runtimetest/src/tests.rs:example_hello_world}}
|
||||
{{#include ../../../../tests/runtimetest/src/tests.rs:example_hello_world}}
|
||||
```
|
||||
|
@ -1,6 +1,6 @@
|
||||
# test_framework
|
||||
|
||||
**Note** that these tests resides in /tests/rust-integration-tests/test_framework at the time of writing.
|
||||
**Note** that these tests resides in /tests/test_framework at the time of writing.
|
||||
|
||||
This crate contains the testing framework specifically developed for porting the OCI integration test to rust. This contains structs to represent the individual tests, group of tests and a test manager that has responsibility to run tests. This Also exposes traits which can be used to implement custom test structs or test group structs if needed.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Runtime Test
|
||||
|
||||
**Note** that these tests resides in /tests/rust-integration-tests/runtimetest at the time of writing.
|
||||
**Note** that these tests resides in /tests/runtimetest at the time of writing.
|
||||
|
||||
This crate provides a binary which is used by integration tests to verify that the restrictions and constraints applied to the container are upheld by the container process, from inside the container process. This runs the tests one-by-one, and the failing test prints the error to the stderr.
|
||||
|
||||
|
@ -20,7 +20,7 @@ ROOT=${2-$(git rev-parse --show-toplevel)}
|
||||
LOGFILE="${ROOT}/test.log"
|
||||
|
||||
if [ ! -f ${ROOT}/bundle.tar.gz ]; then
|
||||
cp ${ROOT}/tests/rust-integration-tests/integration_test/bundle.tar.gz ${ROOT}/bundle.tar.gz
|
||||
cp ${ROOT}/tests/integration_test/bundle.tar.gz ${ROOT}/bundle.tar.gz
|
||||
fi
|
||||
touch ${LOGFILE}
|
||||
|
||||
|
0
tests/rust-integration-tests/integration_test/.gitignore → tests/integration_test/.gitignore
vendored
0
tests/rust-integration-tests/integration_test/.gitignore → tests/integration_test/.gitignore
vendored
@ -7,8 +7,8 @@ edition = "2021"
|
||||
anyhow = "1.0"
|
||||
chrono = { version = "0.4", default-features = false, features = ["clock"] }
|
||||
flate2 = "1.0"
|
||||
libcgroups = { path = "../../../crates/libcgroups" }
|
||||
libcontainer = { path = "../../../crates/libcontainer" }
|
||||
libcgroups = { path = "../../crates/libcgroups" }
|
||||
libcontainer = { path = "../../crates/libcontainer" }
|
||||
nix = "0.27.1"
|
||||
num_cpus = "1.16"
|
||||
oci-spec = { version = "0.6.1", features = ["runtime"] }
|
0
tests/rust-integration-tests/integration_test/bundle.tar.gz → tests/integration_test/bundle.tar.gz
0
tests/rust-integration-tests/integration_test/bundle.tar.gz → tests/integration_test/bundle.tar.gz
0
tests/rust-integration-tests/integration_test/src/logger.rs → tests/integration_test/src/logger.rs
0
tests/rust-integration-tests/integration_test/src/logger.rs → tests/integration_test/src/logger.rs
@ -605,9 +605,9 @@ fn check_recursive_rsymfollow() -> TestResult {
|
||||
|
||||
/// this mount test how to work?
|
||||
/// 1. Create mount_options based on the mount properties of the test
|
||||
/// 2. Create OCI.Spec content, container one process is runtimetest,(runtimetest is cargo model, file path `tests/rust-integration-tests/runtimetest/`)
|
||||
/// 2. Create OCI.Spec content, container one process is runtimetest,(runtimetest is cargo model, file path `tests/runtimetest/`)
|
||||
/// 3. inside container to check if the actual mount matches the spec, (spec https://man7.org/linux/man-pages/man2/mount_setattr.2.html),
|
||||
/// eg. tests/rust-integration-tests/runtimetest/src/tests.rs
|
||||
/// eg. tests/runtimetest/src/tests.rs
|
||||
pub fn get_mounts_recursive_test() -> TestGroup {
|
||||
let rro_test = Test::new("rro_test", Box::new(check_recursive_readonly));
|
||||
let rnosuid_test = Test::new("rnosuid_test", Box::new(check_recursive_nosuid));
|
Loading…
Reference in New Issue
Block a user