Welcome to TestShift’s documentation!

TestShift aims to provide the means to validate OpenShift based infrastructures, for this purpose, TestShift is implemented as a pytest plugin, taking after Testinfra for inspiration.

Usage examples

def test_sdn_pods_exist(cluster):
    pod = cluster.Pod(label_selector="app=sdn")
    assert pod.exists

def test_etcd_pods_count(cluster):
    pod = cluster.Pod(label_selector="app=etcd")
    assert pod.count == 3

def test_performance_operator_is_running(cluster):
    pod = cluster.Pod(label_selector="name=performance-operator")
    assert pod.is_running

def test_marketplace_operator(cluster):
    pod = cluster.Pod(name="marketplace-operator-798dbd94c6-xqj6b")
    assert pod.is_running
    assert pod.count == 1

def test_performance_operator_deployment(cluster):
    deployment = cluster.Deployment(name="performance-operator")
    assert deployment.exists
    assert deployment.namespace == "openshift-performance-addon"

def test_node_properties_by_selector(cluster):
    node = cluster.Node(label_selector="node-role.kubernetes.io/worker-cnf=")
    assert node.count == 2

def test_node_properties_schedulable(cluster):
    node = cluster.Node("sjr-worker-0.sjr.deslab.net")
    assert node.schedulable == True
$ pytest --kubeconfig=/home/sjr/clusters/sjr/auth/kubeconfig tests -v
=========================================== test session starts ===========================================
platform linux -- Python 3.6.8, pytest-5.3.5, py-1.8.1, pluggy-0.13.1 -- /home/sjr/testshift/bin/python3.6
cachedir: .pytest_cache
rootdir: /home/sjr
plugins: testshift-0.9.3.dev5+g3f6558c
collected 7 items

tests/node_test.py::test_sdn_pods_exist[testshift] PASSED                                            [ 14%]
tests/node_test.py::test_etcd_pods_count[testshift] PASSED                                           [ 28%]
tests/node_test.py::test_performance_operator_is_running[testshift] PASSED                           [ 42%]
tests/node_test.py::test_marketplace_operator[testshift] PASSED                                      [ 57%]
tests/node_test.py::test_performance_operator_deployment[testshift] PASSED                           [ 71%]
tests/node_test.py::test_node_properties_by_selector[testshift] PASSED                               [ 85%]
tests/node_test.py::test_node_properties_schedulable[testshift] PASSED                               [100%]

============================================ 7 passed in 2.28s ============================================

API documentation

API documentation