cri-o/test
Nalin Dahyabhai a0b1da15a3 Expand image refs and handle refs with digests
If an image that we're pulling from a registry has a digest in its
reference, use that to construct the destination image's reference.
This should help us detect cases where the image has previously been
pulled.

When we have a filter to use when listing images, expand it into a
reference so that we can properly match against names of images that
we've previously stored using fully expanded references.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2017-04-27 14:13:02 -04:00
..
bin2img build: create a local GOPATH if none specified 2017-03-30 15:01:22 -05:00
checkseccomp build: create a local GOPATH if none specified 2017-03-30 15:01:22 -05:00
copyimg build: create a local GOPATH if none specified 2017-03-30 15:01:22 -05:00
testdata test: add tests for split std{err,out} 2017-04-12 21:59:25 +10:00
apparmor.bats test: enable tests in Travis 2017-01-19 19:14:46 +01:00
ctr.bats test: add tests for split std{err,out} 2017-04-12 21:59:25 +10:00
helpers.bash Merge pull request #462 from runcom/storage-tests 2017-04-21 16:59:20 +02:00
image.bats Expand image refs and handle refs with digests 2017-04-27 14:13:02 -04:00
network.bats tests: Install CNI configuration files by default 2017-04-10 17:36:34 +02:00
pod.bats test: enable tests in Travis 2017-01-19 19:14:46 +01:00
policy.json Integrate containers/storage 2017-01-18 10:23:30 -05:00
README.md tests: Install CNI configuration files by default 2017-04-10 17:36:34 +02:00
restore.bats test: enable tests in Travis 2017-01-19 19:14:46 +01:00
runtimeversion.bats test: fix runtimeversion test 2017-04-05 02:45:56 +10:00
seccomp.bats oci: make ExecSync with ExitCode != 0 act properly 2017-04-11 20:32:18 +10:00
test_runner.sh add tests skeleton 2016-09-24 00:37:07 +02:00

OCID Integration Tests

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

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/ocid/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 "ocic runtimeversion" {
	start_ocid
	ocic runtimeversion
	[ "$status" -eq 0 ]
}