runc/tests/integration
Qiang Huang e3ba943b6d Merge pull request #1173 from WeiZhang555/update-rt-resources
Allow update rt_period_us and rt_runtime_us
2016-11-07 11:05:45 +08:00
..
testdata
README.md Updating README for starting the container 2016-06-05 14:41:58 +05:30
cgroups.bats Merge pull request #972 from brauner/2016-08-05/add_requires_for_cgroups_kmem 2016-08-12 18:50:59 +10:00
checkpoint.bats
create.bats Employ jq and state command to make sure that pid-file contains the right information 2016-10-25 15:48:38 +08:00
debug.bats
delete.bats [integration] add testcases for `runc delete` command 2016-09-23 15:35:50 +08:00
events.bats
exec.bats add test cases for exec command 2016-11-04 14:15:47 +08:00
help.bats remove duplicate test command on integration 2016-09-19 11:18:38 +00:00
helpers.bash tests: add requires cgroups_kmem 2016-08-10 15:17:22 +02:00
kill.bats Fix signal handling for unit tests 2016-05-31 11:10:47 -07:00
list.bats add test cases for list command 2016-10-20 16:45:34 +08:00
mask.bats tests: mask: use test paths rather than /sys 2016-10-19 05:59:50 +11:00
pause.bats pause and resume multi-containers 2016-10-17 19:44:08 +08:00
ps.bats Add integration test for ps command 2016-09-29 18:33:32 +08:00
root.bats Fix signal handling for unit tests 2016-05-31 11:10:47 -07:00
spec.bats Update spec config path 2016-09-11 16:48:12 -07:00
start.bats Fix all typos found by misspell 2016-10-29 14:14:42 +08:00
start_detached.bats Employ jq and state command to make sure that pid-file contains the right information 2016-10-25 15:48:38 +08:00
start_hello.bats tests: add tests with {u,g}id != 0 2016-06-18 12:16:42 +10:00
state.bats Fix signal handling for unit tests 2016-05-31 11:10:47 -07:00
update.bats Allow update rt_period_us and rt_runtime_us 2016-11-04 18:57:22 +08:00
version.bats

README.md

runc Integration Tests

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

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

The easiest way to run integration tests is with Docker:

$ 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 tests/integration

To run a single test bucket:

$ make integration TESTFLAGS="/checkpoint.bats"

To run them on your host, you will 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

Note: There are known issues running the integration tests using devicemapper as a storage driver, make sure that your docker daemon is using aufs if you want to successfully run the integration tests.

Writing integration tests

[helper functions] (https://github.com/opencontainers/runc/blob/master/test/integration/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() {
  # see functions teardown_hello and setup_hello in helpers.bash, used to
  # create a pristine environment for running your tests
  teardown_hello
  setup_hello
}

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

@test "this is a simple test" {
  runc run containerid
  # "The runc macro" automatically populates $status, $output and $lines.
  # Please refer to bats documentation to find out more.
  [ "$status" -eq 0 ]

  # check expected output
  [[ "${output}" == *"Hello"* ]]
}