tree: c74ef51fb814813bd0fa1af8e4ebc8ad3baf79a6 [path history] [tgz]
  1. testdata/
  2. cgroups.bats
  3. checkpoint.bats
  4. create.bats
  5. debug.bats
  6. delete.bats
  7. events.bats
  8. exec.bats
  9. help.bats
  10. helpers.bash
  11. kill.bats
  12. list.bats
  13. pause.bats
  15. root.bats
  16. spec.bats
  17. start_detached.bats
  18. start_hello.bats
  19. state.bats
  20. update.bats
  21. version.bats

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/
$ git clone
$ cd bats
$ ./ /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] ( 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 is called at the end of every test.
function teardown() {

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

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