cri-o/test
Mrunal Patel 17db40dcda test: Test for OOM condition in a loop
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
2017-10-24 11:25:46 -07:00
..
bin2img
checkseccomp
copyimg
hooks
testdata
apparmor.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
cgroups.bats
crio_secrets.bats Fix logic flaw in secrets mount 2017-10-17 13:55:29 -04:00
ctr.bats test: Test for OOM condition in a loop 2017-10-24 11:25:46 -07:00
helpers.bash
hooks.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
image.bats
image_volume.bats
inspect.bats
kpod_diff.bats
kpod_export.bats Also refactor setting flags for running kpod 2017-09-29 16:37:07 -04:00
kpod_history.bats
kpod_images.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
kpod_inspect.bats
kpod_kill.bats
kpod_load.bats
kpod_logs.bats
kpod_mount.bats
kpod_pause.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
kpod_ps.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
kpod_pull.bats
kpod_push.bats
kpod_rename.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
kpod_rm.bats
kpod_save.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
kpod_stats.bats
kpod_stop.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
kpod_tag.bats Continue switching from libkpod to libpod 2017-10-10 11:22:09 -04:00
kpod_version.bats
kpod_wait.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
network.bats Correct our usage of the bats run helper 2017-10-12 17:54:47 -04:00
pod.bats
policy.json
README.md
redhat_sigstore.yaml
registries.conf
restore.bats
runtimeversion.bats
seccomp.bats
selinux.bats
test_runner.sh

CRIO Integration Tests

Integration tests provide end-to-end testing of CRIO.

Note that integration tests do not replace unit tests.

As a rule of thumb, code should be tested thoroughly with unit tests. Integration tests on the other hand are meant to test a specific feature end to end.

Integration tests are written in bash using the bats framework.

Running integration tests

Containerized tests

The easiest way to run integration tests is with Docker:

$ make integration

To run a single test bucket:

$ make integration TESTFLAGS="runtimeversion.bats"

On your host

To run the integration tests on your host, you will first need to setup a development environment plus bats For example:

$ cd ~/go/src/github.com
$ git clone https://github.com/sstephenson/bats.git
$ cd bats
$ ./install.sh /usr/local

You will also need to install the CNI plugins as the the default pod test template runs without host networking:

$ go get github.com/containernetworking/cni
$ cd "$GOPATH/src/github.com/containernetworking/cni"
$ git checkout -q d4bbce1865270cd2d2be558d6a23e63d314fe769
$ ./build.sh \
$ mkdir -p /opt/cni/bin \
$ cp bin/* /opt/cni/bin/

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 runtime instead of runc:

make localintegration RUNTIME=cc-oci-runtime

Writing integration tests

[Helper functions] (https://github.com/kubernetes-incubator/crio/blob/master/test/helpers.bash) are provided in order to facilitate writing tests.

#!/usr/bin/env bats

# This will load the helpers.
load helpers

# setup is called at the beginning of every test.
function setup() {
}

# teardown is called at the end of every test.
function teardown() {
	cleanup_test
}

@test "crioctl runtimeversion" {
	start_crio
	crioctl runtimeversion
	[ "$status" -eq 0 ]
}