Todo

  • Add X-ray reports

BDD Testing of cluster-k8s

The SKA follows a BDD pattern wherever it is applicable. This kubernetes cluster provisioning repository includes a few Gherkin tests that enable an interface between python code written by developers (using pytest) and natural language scenarios that can be written by Business Owners, Product Owners, Testers and the like, using pytest-bdd.

Testing-harness

The following files and directories are relevant at the time of writing (this may not be kept up to date):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  ../test-harness/
  ├── Makefile
  ├── README.md
  ├── cucumber.json
  ├── features
  │   ├── auth.feature
  │   ├── ceph.feature
  │   ├── cluster.feature
  │   ├── dns.feature
  │   ├── etcd.feature
  │   ├── networking.feature
  │   ├── resources.feature
  │   ├── sandbox.feature
  │   └── skampi.feature
  ├── resources
  ...
  │   └── skampi_values.json
  ├── setup.cfg
  ├── test-requirements.txt
  └── tests
      ├── conftest.py
      ├── test_auth.py
      ├── test_ceph.py
      ├── test_cluster.py
      ├── test_dns.py
      ├── test_etcd.py
      ├── test_networking.py
      ├── test_resources.py
      └── test_skampi.py

Refer to the line numbers. Each feature, with name <feature_name>, has a corresponding <feature_name>.feature file under the features/ directory, and a test_<feature_name>.py under the /tests/ directory.

At the bottom of the python file where the test functions are developed, we include a line that links the feature file to the test file. As an example, the skampi feature is described here:

The feature is written in Gherkin language:

<features/skampi.feature>

Feature: SKAMPI
    Install skampi and smoke test it

Scenario: Install skampi and smoke test it
    Given a Kubernetes cluster with KUBECONFIG .kube/config
    When I install the chart at stable/etcd-operator with name etcd0 with values file resources/etcd_values.json
    And I install the chart at https://gitlab.com/ska-telescope/skampi/-/raw/master/repository/skampi-0.1.0.tgz with name test2 with values file resources/skampi_values.json
    Then after 10 minutes all pods are running

We will not include the full file here, but under the /tests/ directory there is a corresponding python file named test_skampi.py. The test_ prefix ensures that pytest picks it up as part of the test suite.

The last line in this file is of importance:

scenarios('../features/skampi.feature')

This pulls the scenarios from the .feature file and links each test function to a corresponding line in the Scenario description.

Additional and helper code is added to the resources/ directory.