Skip to content

Commit 8e2e9e8

Browse files
committed
Writing acceptance test doc
1 parent 1aa8ce3 commit 8e2e9e8

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

docs/design/acceptance_test.md

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# Acceptance test for kube-arangodb operator on specific Kubernetes platform
2+
3+
This acceptance test plan describes all test scenario's that must be executed
4+
succesfully in order to consider the kube-arangodb operator production ready
5+
on a specific Kubernetes setup (from now on we'll call a Kubernetes setup a platform).
6+
7+
## Platform parameters
8+
9+
Before the test, record the following parameters for the platform the test is executed on.
10+
11+
- Name of the platform
12+
- Version of the platform
13+
- Upstream Kubernetes version used by the platform
14+
- Number of nodes used by the Kubernetes cluster
15+
- `StorageClasses` provided by the platform (run `kubectl get storageclass`)
16+
- Does the platform use RBAC?
17+
- Does the platform support services of type `LoadBalancer`?
18+
19+
If one of the above questions can have multiple answers (e.g. different Kubernetes versions)
20+
then make the platform more specific. E.g. consider "GKE with Kubernetes 1.10.2" a platform
21+
instead of "GKE" which can have version "1.8", "1.9" & "1.10.2".
22+
23+
## Platform preparations
24+
25+
Before the tests can be run, the platform has to be prepared.
26+
27+
### Deploy the ArangoDB operators
28+
29+
Deploy the following ArangoDB operators:
30+
31+
- `ArangoDeployment` operator
32+
- `ArangoDeploymentReplication` operator
33+
- `ArangoLocalStorage` operator
34+
35+
To do so, follow the [instructions in the manual](../Manual/Deployment/Kubernetes/Usage.md).
36+
37+
### `PersistentVolume` provider
38+
39+
If the platform does not provide a `PersistentVolume` provider, create one by running:
40+
41+
```bash
42+
kubectl apply -f examples/arango-local-storage.yaml
43+
```
44+
45+
## Basis tests
46+
47+
The basis tests are executed on every platform with various images:
48+
49+
Run the following tests for the following images:
50+
51+
- Community 3.3.10
52+
- Enterprise 3.3.10
53+
54+
### Test 1: Create single server deployment
55+
56+
Create an `ArangoDeployment` of mode `Single`.
57+
58+
- [ ] The deployment must start
59+
- [ ] The deployment
60+
61+
## Scenario's
62+
63+
The following test scenario's must be covered by automated tests:
64+
65+
- Creating 1 deployment (all modes, all environments, all storage engines)
66+
- Creating multiple deployments (all modes, all environments, all storage engines),
67+
controlling each individually
68+
- Creating deployment with/without authentication
69+
- Creating deployment with/without TLS
70+
71+
- Updating deployment wrt:
72+
- Number of servers (scaling, up/down)
73+
- Image version (upgrading, downgrading within same minor version range (e.g. 3.2.x))
74+
- Immutable fields (should be reset automatically)
75+
76+
- Resilience:
77+
- Delete individual pods
78+
- Delete individual PVCs
79+
- Delete individual Services
80+
- Delete Node
81+
- Restart Node
82+
- API server unavailable
83+
84+
- Persistent Volumes:
85+
- hint: RBAC file might need to be changed
86+
- hint: get info via - client-go.CoreV1()
87+
- Number of volumes should stay in reasonable bounds
88+
- For some cases it might be possible to check that, the amount before and after the test stays the same
89+
- A Cluster start should need 6 Volumes (DBServer + Agents)
90+
- The release of a volume-claim should result in a release of the volume
91+
92+
## Test environments
93+
94+
- Kubernetes clusters
95+
- Single node
96+
- Multi node
97+
- Access control mode (RBAC, ...)
98+
- Persistent volumes ...

0 commit comments

Comments
 (0)