Switch to focal in travis-ci gates
[functest-kubernetes.git] / README.md
1 # Functest
2
3 Network virtualization has dramatically modified our architectures which asks
4 for more automation and powerful testing tools like Functest, a collection of
5 state-of-the-art virtual infrastructure test suites, including automatic VNF
6 testing (cf.
7 [[1]](https://www.linuxfoundation.org/press-release/2019/05/opnfv-hunter-delivers-test-tools-ci-cd-framework-to-enable-common-nfvi-for-verifying-vnfs/)).
8
9 In context of OPNFV, Functest verifies any kind of OpenStack and Kubernetes
10 deployments including production environments. It conforms to upstream rules
11 and integrates smoothly lots of the test cases available in the opensource
12 market. It includes about 3000+ functional tests and 3 hours upstream API and
13 dataplane benchmarks. It’s completed by Virtual Network Function deployments
14 and testing (vIMS, vRouter and vEPC) to ensure that the platforms meet Network
15 Functions Virtualization requirements. Raspberry PI is also supported to verify
16 datacenters as the lowest cost (50 euros hardware and software included).
17
18 | Functest releases | Kubernetes releases           |
19 |-------------------|-------------------------------|
20 | Hunter            | v1.13                         |
21 | Iruya             | v1.15                         |
22 | Jerma             | v1.17                         |
23 | Kali              | v1.19                         |
24 | Leguer            | v1.20                         |
25 | v1.21             | v1.21                         |
26 | **Master**        | **v1.22.0-alpha.1 (rolling)** |
27
28 ## Prepare your environment
29
30 cat env
31 ```
32 DEPLOY_SCENARIO=k8s-XXX
33 ```
34
35 ## Run healthcheck suite
36
37 ```bash
38 sudo docker run --env-file env \
39     -v $(pwd)/config:/root/.kube/config \
40     opnfv/functest-kubernetes-healthcheck
41 ```
42
43 ```
44 +-------------------+------------------+---------------------+------------------+----------------+
45 |     TEST CASE     |     PROJECT      |         TIER        |     DURATION     |     RESULT     |
46 +-------------------+------------------+---------------------+------------------+----------------+
47 |     k8s_quick     |     functest     |     healthcheck     |      00:18       |      PASS      |
48 |     k8s_smoke     |     functest     |     healthcheck     |      01:14       |      PASS      |
49 +-------------------+------------------+---------------------+------------------+----------------+
50 ```
51
52 ## Run smoke suite
53
54 ```bash
55 sudo docker run --env-file env \
56     -v $(pwd)/config:/root/.kube/config \
57     opnfv/functest-kubernetes-smoke
58 ```
59
60 ```
61 +----------------------------------+------------------+---------------+------------------+----------------+
62 |            TEST CASE             |     PROJECT      |      TIER     |     DURATION     |     RESULT     |
63 +----------------------------------+------------------+---------------+------------------+----------------+
64 |        xrally_kubernetes         |     functest     |     smoke     |      13:00       |      PASS      |
65 |         k8s_conformance          |     functest     |     smoke     |      16:31       |      PASS      |
66 |      k8s_conformance_serial      |     functest     |     smoke     |      15:34       |      PASS      |
67 |        sig_api_machinery         |     functest     |     smoke     |      09:01       |      PASS      |
68 |     sig_api_machinery_serial     |     functest     |     smoke     |      01:24       |      PASS      |
69 |             sig_apps             |     functest     |     smoke     |      03:45       |      PASS      |
70 |         sig_apps_serial          |     functest     |     smoke     |      00:31       |      PASS      |
71 |             sig_auth             |     functest     |     smoke     |      09:04       |      PASS      |
72 |             sig_cli              |     functest     |     smoke     |      03:01       |      PASS      |
73 |          sig_cli_serial          |     functest     |     smoke     |      00:05       |      PASS      |
74 |      sig_cluster_lifecycle       |     functest     |     smoke     |      00:26       |      PASS      |
75 |       sig_instrumentation        |     functest     |     smoke     |      00:03       |      PASS      |
76 |           sig_network            |     functest     |     smoke     |      05:43       |      PASS      |
77 |        sig_network_serial        |     functest     |     smoke     |      11:14       |      PASS      |
78 |             sig_node             |     functest     |     smoke     |      28:03       |      PASS      |
79 |      sig_scheduling_serial       |     functest     |     smoke     |      08:03       |      PASS      |
80 |           sig_storage            |     functest     |     smoke     |      09:17       |      PASS      |
81 |        sig_storage_serial        |     functest     |     smoke     |      02:40       |      PASS      |
82 +----------------------------------+------------------+---------------+------------------+----------------+
83 ```
84
85 ## Run security suite
86
87 ```bash
88 sudo docker run --env-file env \
89     -v $(pwd)/config:/root/.kube/config \
90     opnfv/functest-kubernetes-security
91 ```
92
93 ```
94 +---------------------------+------------------+------------------+------------------+----------------+
95 |         TEST CASE         |     PROJECT      |       TIER       |     DURATION     |     RESULT     |
96 +---------------------------+------------------+------------------+------------------+----------------+
97 |        kube_hunter        |     functest     |     security     |      00:19       |      PASS      |
98 |     kube_bench_master     |     functest     |     security     |      00:02       |      PASS      |
99 |      kube_bench_node      |     functest     |     security     |      00:01       |      PASS      |
100 +---------------------------+------------------+------------------+------------------+----------------+
101 ```
102
103 ## Run benchmarking suite
104
105 ```bash
106 sudo docker run --env-file env \
107     -v $(pwd)/config:/root/.kube/config \
108     opnfv/functest-kubernetes-benchmarking
109 ```
110
111 ```
112 +--------------------------------+------------------+----------------------+------------------+----------------+
113 |           TEST CASE            |     PROJECT      |         TIER         |     DURATION     |     RESULT     |
114 +--------------------------------+------------------+----------------------+------------------+----------------+
115 |     xrally_kubernetes_full     |     functest     |     benchmarking     |      33:07       |      PASS      |
116 +--------------------------------+------------------+----------------------+------------------+----------------+
117 ```
118
119 ## Run cnf suite
120
121 ```bash
122 sudo docker run --env-file env \
123     -v $(pwd)/config:/root/.kube/config \
124     opnfv/functest-kubernetes-cnf
125 ```
126
127 ```
128 +-----------------------+------------------+--------------+------------------+----------------+
129 |       TEST CASE       |     PROJECT      |     TIER     |     DURATION     |     RESULT     |
130 +-----------------------+------------------+--------------+------------------+----------------+
131 |        k8s_vims       |     functest     |     cnf      |      09:06       |      PASS      |
132 |       helm_vims       |     functest     |     cnf      |      08:54       |      PASS      |
133 |     cnf_testsuite     |     functest     |     cnf      |      00:00       |      SKIP      |
134 +-----------------------+------------------+--------------+------------------+----------------+
135 ```
136
137
138 ## Use on air gap environments (no access to Internet)
139
140 To test a Kubernetes without access to Internet, repository mirrors needs to be
141 provided.
142
143 Currently, all tests supports this feature except cnf conformance.
144
145 There's two ways for providing the repository mirrors:
146
147 - Give an environment variable (`MIRROR_REPO`) which gives a repository with
148   all needed images.
149 - Gives an environment variable per needed repo:
150   - `DOCKERHUB_REPO` for DockerHub repository (`docker.io`)
151   - `GCR_REPO` for Google Cloud repository (`gcr.io`)
152   - `K8S_GCR_REPO` for Kubernetes repository (`k8s.gcr.io`)
153   - `QUAY_REPO` for Quay repository (`quay.io`)
154
155 All needed images are given in
156 [functest-kubernetes/ci/images.txt](functest-kubernetes/ci/images.txt)
157
158 For e2e tests, `docker.io` is hardcoded. it does mean that you'll have to set up
159 a mirror on docker. An example on how to set it up on docker daemon is provided
160 here:
161 [daemon-configuration-file](
162 https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file)