summaryrefslogtreecommitdiff
path: root/test/README.md
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@gmail.com>2018-02-08 14:19:58 -0500
committerGitHub <noreply@github.com>2018-02-08 14:19:58 -0500
commit851bdc325124700448b035057055bd594981030a (patch)
tree902bea3952683afd6d4c75b210ee7386d49bccba /test/README.md
parent5529143877778ef8bcdd05179e279bb7d662b431 (diff)
parentc089cb9c9270aa4b367deb8c8c03cb05f8860a33 (diff)
downloadpodman-851bdc325124700448b035057055bd594981030a.tar.gz
podman-851bdc325124700448b035057055bd594981030a.tar.bz2
podman-851bdc325124700448b035057055bd594981030a.zip
Merge pull request #314 from baude/ginkgo_last
Final ginkgo migration
Diffstat (limited to 'test/README.md')
-rw-r--r--test/README.md115
1 files changed, 34 insertions, 81 deletions
diff --git a/test/README.md b/test/README.md
index 1dd2e3c76..78fb52cab 100644
--- a/test/README.md
+++ b/test/README.md
@@ -1,106 +1,59 @@
-# CRIO Integration Tests
+# Integration testing
-Integration tests provide end-to-end testing of CRIO.
+Our primary means of performing integration testing for libpod is with the
+[Ginkgo](https://github.com/onsi/ginkgo) BDD testing framework. This allows
+us to use native Golang to perform our tests and there is a strong affiliation
+between Ginkgo and the Go test framework.
-Note that integration tests do **not** replace unit tests.
+## Installing dependencies
+The dependencies for integration really consists of three things:
+* ginkgo binary
+* ginkgo sources
+* gomega sources
-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.
+The following instructions assume your GOPATH is ~/go. Adjust as needed for your
+environment.
-Integration tests are written in *bash* using the
-[bats](https://github.com/sstephenson/bats) framework.
-
-## Running integration tests
-
-### Containerized tests
-
-The easiest way to run integration tests is with Docker:
+### Installing ginko
+Fetch and build ginkgo with the following command:
```
-$ make integration
+GOPATH=~/go go get -u github.com/onsi/ginkgo/ginkgo
```
-
-To run a single test bucket:
+Now install the ginkgo binary into your path:
```
-$ make integration TESTFLAGS="runtimeversion.bats"
+install -D -m 755 "$GOPATH"/bin/ginkgo /usr/bin/
```
+You now have a ginkgo binary and its sources in your GOPATH.
-### On your host
-
-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)
-For example:
+### Install gomega sources
+The gomega sources can be simply installed with the command:
```
-$ cd ~/go/src/github.com
-$ git clone https://github.com/sstephenson/bats.git
-$ cd bats
-$ ./install.sh /usr/local
+GOPATH=~/go go get github.com/onsi/gomega/...
```
-You will also need to install the [CNI](https://github.com/containernetworking/cni) plugins as
-the the default pod test template runs without host networking:
+### Running the integration tests
-```
-$ 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/
-```
+You can run the entire suite of integration tests with the following command:
-Then you can run the tests on your host:
```
-$ sudo make localintegration
+GOPATH=~/go ginkgo -v tests/e2e/.
```
-To run a single test bucket:
-```
-$ make localintegration TESTFLAGS="runtimeversion.bats"
-```
+Note the trailing period on the command above. Also, **-v** invokes verbose mode. That
+switch is optional.
+
+You can run a single file of integration tests using the go test command:
-Or you can just run them directly using bats
```
-$ sudo bats test
+GOPATH=~/go go test -v tests/e2e/libpod_suite_test.go tests/e2e/your_test.go
```
-#### 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`:
+#### Run all tests like PAPR
+You can closely emulate the PAPR run for Fedora with the following command:
```
-make localintegration RUNTIME=cc-oci-runtime
+make integration.fedora
```
-## Writing integration tests
-
-[Helper functions]
-(https://github.com/kubernetes-incubator/crio/blob/master/test/helpers.bash)
-are provided in order to facilitate writing tests.
-
-```sh
-#!/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 ]
-}
-
-```
+This will run lint, git-validation, and gofmt tests and then execute unit and integration
+tests as well.