Merge pull request #338 from sameo/topic/alternate-runtime
Select alternate runtimes for host integration tests
This commit is contained in:
commit
89e4c54995
2 changed files with 37 additions and 13 deletions
|
@ -13,25 +13,21 @@ Integration tests are written in *bash* using the
|
||||||
|
|
||||||
## Running integration tests
|
## Running integration tests
|
||||||
|
|
||||||
|
### Containerized tests
|
||||||
|
|
||||||
The easiest way to run integration tests is with Docker:
|
The easiest way to run integration tests is with Docker:
|
||||||
```
|
```
|
||||||
$ make integration
|
$ make integration
|
||||||
```
|
```
|
||||||
Alternatively, you can run integration tests directly on your host through make:
|
|
||||||
```
|
|
||||||
$ sudo make localintegration
|
|
||||||
```
|
|
||||||
Or you can just run them directly using bats
|
|
||||||
```
|
|
||||||
$ sudo bats test
|
|
||||||
```
|
|
||||||
To run a single test bucket:
|
To run a single test bucket:
|
||||||
```
|
```
|
||||||
$ make integration TESTFLAGS="runtimeversion.bats"
|
$ make integration TESTFLAGS="runtimeversion.bats"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### On your host
|
||||||
|
|
||||||
To run them on your host, you will need to setup a development environment plus
|
To run the integration tests on your host, you will first need to setup a development environment plus
|
||||||
[bats](https://github.com/sstephenson/bats#installing-bats-from-source)
|
[bats](https://github.com/sstephenson/bats#installing-bats-from-source)
|
||||||
For example:
|
For example:
|
||||||
```
|
```
|
||||||
|
@ -41,6 +37,33 @@ $ cd bats
|
||||||
$ ./install.sh /usr/local
|
$ ./install.sh /usr/local
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Then you can run the tests on your host:
|
||||||
|
```
|
||||||
|
$ sudo make localintegration
|
||||||
|
```
|
||||||
|
|
||||||
|
To run a single test bucket:
|
||||||
|
```
|
||||||
|
$ make localintegration TESTFLAGS="runtimeversion.bats"
|
||||||
|
```
|
||||||
|
|
||||||
|
Or you can just run them directly using bats
|
||||||
|
```
|
||||||
|
$ sudo bats test
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Runtime selection
|
||||||
|
Tests on the host will run with `runc` as the default runtime.
|
||||||
|
However you can select other OCI compatible runtimes by setting
|
||||||
|
the `RUNTIME` environment variable.
|
||||||
|
|
||||||
|
For example one could use the [Clear Containers](https://github.com/01org/cc-oci-runtime/wiki/Installation)
|
||||||
|
runtime instead of `runc`:
|
||||||
|
|
||||||
|
```
|
||||||
|
make localintegration RUNTIME=cc-oci-runtime
|
||||||
|
```
|
||||||
|
|
||||||
## Writing integration tests
|
## Writing integration tests
|
||||||
|
|
||||||
[Helper functions]
|
[Helper functions]
|
||||||
|
|
|
@ -21,9 +21,10 @@ PAUSE_BINARY=${PAUSE_BINARY:-${OCID_ROOT}/cri-o/pause/pause}
|
||||||
SECCOMP_PROFILE=${SECCOMP_PROFILE:-${OCID_ROOT}/cri-o/seccomp.json}
|
SECCOMP_PROFILE=${SECCOMP_PROFILE:-${OCID_ROOT}/cri-o/seccomp.json}
|
||||||
# Name of the default apparmor profile.
|
# Name of the default apparmor profile.
|
||||||
APPARMOR_PROFILE=${APPARMOR_PROFILE:-ocid-default}
|
APPARMOR_PROFILE=${APPARMOR_PROFILE:-ocid-default}
|
||||||
# Path of the runc binary.
|
# Runtime
|
||||||
RUNC_PATH=$(command -v runc || true)
|
RUNTIME=${RUNTIME:-runc}
|
||||||
RUNC_BINARY=${RUNC_PATH:-/usr/local/sbin/runc}
|
RUNTIME_PATH=$(command -v $RUNTIME || true)
|
||||||
|
RUNTIME_BINARY=${RUNTIME_PATH:-/usr/local/sbin/runc}
|
||||||
# Path of the apparmor_parser binary.
|
# Path of the apparmor_parser binary.
|
||||||
APPARMOR_PARSER_BINARY=${APPARMOR_PARSER_BINARY:-/sbin/apparmor_parser}
|
APPARMOR_PARSER_BINARY=${APPARMOR_PARSER_BINARY:-/sbin/apparmor_parser}
|
||||||
# Path of the apparmor profile for test.
|
# Path of the apparmor profile for test.
|
||||||
|
@ -135,7 +136,7 @@ function start_ocid() {
|
||||||
"$BIN2IMG_BINARY" --root "$TESTDIR/ocid" --runroot "$TESTDIR/ocid-run" --source-binary "$PAUSE_BINARY"
|
"$BIN2IMG_BINARY" --root "$TESTDIR/ocid" --runroot "$TESTDIR/ocid-run" --source-binary "$PAUSE_BINARY"
|
||||||
fi
|
fi
|
||||||
"$COPYIMG_BINARY" --root "$TESTDIR/ocid" --runroot "$TESTDIR/ocid-run" --image-name=redis --import-from=dir:"$ARTIFACTS_PATH"/redis-image --add-name=docker://docker.io/library/redis:latest --signature-policy="$INTEGRATION_ROOT"/policy.json
|
"$COPYIMG_BINARY" --root "$TESTDIR/ocid" --runroot "$TESTDIR/ocid-run" --image-name=redis --import-from=dir:"$ARTIFACTS_PATH"/redis-image --add-name=docker://docker.io/library/redis:latest --signature-policy="$INTEGRATION_ROOT"/policy.json
|
||||||
"$OCID_BINARY" --conmon "$CONMON_BINARY" --listen "$OCID_SOCKET" --runtime "$RUNC_BINARY" --root "$TESTDIR/ocid" --runroot "$TESTDIR/ocid-run" --seccomp-profile "$seccomp" --apparmor-profile "$apparmor" --cni-config-dir "$OCID_CNI_CONFIG" --signature-policy "$INTEGRATION_ROOT"/policy.json config >$OCID_CONFIG
|
"$OCID_BINARY" --conmon "$CONMON_BINARY" --listen "$OCID_SOCKET" --runtime "$RUNTIME_BINARY" --root "$TESTDIR/ocid" --runroot "$TESTDIR/ocid-run" --seccomp-profile "$seccomp" --apparmor-profile "$apparmor" --cni-config-dir "$OCID_CNI_CONFIG" --signature-policy "$INTEGRATION_ROOT"/policy.json config >$OCID_CONFIG
|
||||||
"$OCID_BINARY" --debug --config "$OCID_CONFIG" & OCID_PID=$!
|
"$OCID_BINARY" --debug --config "$OCID_CONFIG" & OCID_PID=$!
|
||||||
wait_until_reachable
|
wait_until_reachable
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue