Skip to content

Commit 1ad087d

Browse files
committed
More tests
1 parent c4dce51 commit 1ad087d

File tree

1 file changed

+155
-5
lines changed

1 file changed

+155
-5
lines changed

docs/design/acceptance_test.md

Lines changed: 155 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,17 +131,167 @@ Change the value of `spec.coordinators.count` from 4 to 1.
131131
- [ ] Three coordinators are removed (one by one)
132132
- [ ] The deployment must yield 6 `Pods`
133133

134+
### Test 3: Production environment
135+
136+
Production environment tests are only relevant if there are enough nodes
137+
available that `Pods` can be scheduled on.
138+
139+
The number of available nodes must be >= the maximum server count in
140+
any group.
141+
142+
### Test 3a: Create single server deployment in production environment
143+
144+
Create an `ArangoDeployment` of mode `Single` with an environment of `Production`.
145+
146+
- [ ] The deployment must start
147+
- [ ] The deployment must yield 1 `Pod`
148+
- [ ] The deployment must yield a `Service` named `<deployment-name>`
149+
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea`
150+
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
151+
152+
### Test 3b: Create active failover deployment in production environment
153+
154+
Create an `ArangoDeployment` of mode `ActiveFailover` with an environment of `Production`.
155+
156+
- [ ] The deployment must start
157+
- [ ] The deployment must yield 5 `Pods`
158+
- [ ] The deployment must yield a `Service` named `<deployment-name>`
159+
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea`
160+
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
161+
162+
### Test 3c: Create cluster deployment in production environment
163+
164+
Create an `ArangoDeployment` of mode `Cluster` with an environment of `Production`.
165+
166+
- [ ] The deployment must start
167+
- [ ] The deployment must yield 9 `Pods`
168+
- [ ] The deployment must yield a `Service` named `<deployment-name>`
169+
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea`
170+
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
171+
172+
### Test 3d: Create cluster deployment in production environment and scale it
173+
174+
Create an `ArangoDeployment` of mode `Cluster` with an environment of `Production`.
175+
176+
- [ ] The deployment must start
177+
- [ ] The deployment must yield 9 `Pods`
178+
- [ ] The deployment must yield a `Service` named `<deployment-name>`
179+
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea`
180+
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
181+
182+
Change the value of `spec.dbservers.count` from 3 to 4.
183+
184+
- [ ] Two dbservers are added
185+
- [ ] The deployment must yield 10 `Pods`
186+
187+
Change the value of `spec.coordinators.count` from 3 to 4.
188+
189+
- [ ] A coordinator is added
190+
- [ ] The deployment must yield 11 `Pods`
191+
192+
Change the value of `spec.dbservers.count` from 4 to 2.
193+
194+
- [ ] Three dbservers are removed (one by one)
195+
- [ ] The deployment must yield 9 `Pods`
196+
197+
Change the value of `spec.coordinators.count` from 4 to 1.
198+
199+
- [ ] Three coordinators are removed (one by one)
200+
- [ ] The deployment must yield 6 `Pods`
201+
202+
### Test 4a: Create cluster deployment with `ArangoLocalStorage` provided volumes
203+
204+
Ensure an `ArangoLocalStorage` is deployed.
205+
206+
Create an `ArangoDeployment` of mode `Cluster` with a `StorageClass` that is
207+
mapped to an `ArangoLocalStorage` provider.
208+
209+
- [ ] The deployment must start
210+
- [ ] The deployment must yield 9 `Pods`
211+
- [ ] The deployment must yield a `Service` named `<deployment-name>`
212+
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea`
213+
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
214+
215+
### Test 4b: Create cluster deployment with a platform provides `StorageClass`
216+
217+
This test only applies to platforms that provide their own `StorageClasses`.
218+
219+
Create an `ArangoDeployment` of mode `Cluster` with a `StorageClass` that is
220+
provided by the platform.
221+
222+
- [ ] The deployment must start
223+
- [ ] The deployment must yield 9 `Pods`
224+
- [ ] The deployment must yield a `Service` named `<deployment-name>`
225+
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea`
226+
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
227+
228+
### Test 5a: Test `Pod` resilience on single servers
229+
230+
Create an `ArangoDeployment` of mode `Single`.
231+
232+
- [ ] The deployment must start
233+
- [ ] The deployment must yield 1 `Pod`
234+
- [ ] The deployment must yield a `Service` named `<deployment-name>`
235+
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea`
236+
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
237+
238+
Delete the `Pod` of the deployment that contains the single server.
239+
240+
- [ ] The `Pod` must be restarted
241+
- [ ] After the `Pod` has restarted, the server must have the same data and be responsive again
242+
243+
### Test 5b: Test `Pod` resilience on active failover
244+
245+
Create an `ArangoDeployment` of mode `ActiveFailover`.
246+
247+
- [ ] The deployment must start
248+
- [ ] The deployment must yield 5 `Pods`
249+
- [ ] The deployment must yield a `Service` named `<deployment-name>`
250+
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea`
251+
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
252+
253+
Delete a `Pod` of the deployment that contains an agent.
254+
255+
- [ ] While the `Pod` is gone & restarted, the cluster must still respond to requests (R/W)
256+
- [ ] The `Pod` must be restarted
257+
258+
Delete a `Pod` of the deployment that contains a single server.
259+
260+
- [ ] While the `Pod` is gone & restarted, the cluster must still respond to requests (R/W)
261+
- [ ] The `Pod` must be restarted
262+
263+
### Test 5c: Test `Pod` resilience on clusters
264+
265+
Create an `ArangoDeployment` of mode `Cluster`.
266+
267+
- [ ] The deployment must start
268+
- [ ] The deployment must yield 9 `Pods`
269+
- [ ] The deployment must yield a `Service` named `<deployment-name>`
270+
- [ ] The deployment must yield a `Service` named `<deployment-name>-ea`
271+
- [ ] The `Service` named `<deployment-name>-ea` must be accessible from outside (LoadBalancer or NodePort) and show WebUI
272+
273+
Delete a `Pod` of the deployment that contains an agent.
274+
275+
- [ ] While the `Pod` is gone & restarted, the cluster must still respond to requests (R/W)
276+
- [ ] The `Pod` must be restarted
277+
278+
Delete a `Pod` of the deployment that contains a dbserver.
279+
280+
- [ ] While the `Pod` is gone & restarted, the cluster must still respond to requests (R/W), except
281+
for requests to collections with a replication factor of 1.
282+
- [ ] The `Pod` must be restarted
283+
284+
Delete a `Pod` of the deployment that contains an coordinator.
285+
286+
- [ ] While the `Pod` is gone & restarted, the cluster must still respond to requests (R/W), except
287+
requests targeting the restarting coordinator.
288+
- [ ] The `Pod` must be restarted
134289

135290
## Further ideas to be discussed
136291

137292
I just collect further things which I think are missing:
138293

139-
- test at least a cluster with local storage and without
140-
- test at least a cluster with production and development settings,
141-
note that this implies a minimal size of the kubernetes cluster,
142-
at least if we do all of the above tests
143294
- add resilience tests:
144-
- kill a pod, should come back (try all three types agent, coord, dbserver)
145295
- reboot a node, should come back, at least if nothing is ephemeral
146296
- kill a node permanently with replicated data, should recover and repair
147297
- kill a node if it contains non-replicated data

0 commit comments

Comments
 (0)