diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5bd32428..b2533b22 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,9 +23,22 @@ jobs: sudo apt-get install build-essential python3-dev pip install -r requirements.txt - name: Run unit tests - run: python -m unittest discover -s tests + run: python -m coverage run -a -m unittest discover -s tests - name: Run CI run: ./CI/run.sh + - name: Collect coverage report + run: | + python -m coverage html + - name: Publish coverage report to job summary + run: | + pip install html2text + html2text --ignore-images --ignore-links -b 0 htmlcov/index.html >> $GITHUB_STEP_SUMMARY + - name: Upload coverage data + uses: actions/upload-artifact@v3 + with: + name: coverage + path: htmlcov + if-no-files-found: error - name: Build the Docker images run: docker build --no-cache -t quay.io/chaos-kubox/krkn containers/ - name: Login in quay diff --git a/CI/tests/test_app_outages.sh b/CI/tests/test_app_outages.sh index d2cb4dd7..ade2cfe5 100755 --- a/CI/tests/test_app_outages.sh +++ b/CI/tests/test_app_outages.sh @@ -12,7 +12,7 @@ function functional_test_app_outage { export scenario_file="CI/scenarios/app_outage.yaml" export post_config="" envsubst < CI/config/common_test_config.yaml > CI/config/app_outage.yaml - python3 run_kraken.py -c CI/config/app_outage.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/app_outage.yaml echo "App outage scenario test: Success" } diff --git a/CI/tests/test_container.sh b/CI/tests/test_container.sh index 82c7f790..0a92a0b5 100755 --- a/CI/tests/test_container.sh +++ b/CI/tests/test_container.sh @@ -14,7 +14,7 @@ function functional_test_container_crash { export post_config="" envsubst < CI/config/common_test_config.yaml > CI/config/container_config.yaml - python3 run_kraken.py -c CI/config/container_config.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/container_config.yaml echo "Container scenario test: Success" } diff --git a/CI/tests/test_cpu_hog.sh b/CI/tests/test_cpu_hog.sh index 9116afa8..0ab06c71 100755 --- a/CI/tests/test_cpu_hog.sh +++ b/CI/tests/test_cpu_hog.sh @@ -13,8 +13,8 @@ function functional_test_litmus_cpu { export post_config="- CI/scenarios/node_cpu_hog_engine_node.yaml" envsubst < CI/config/common_test_config.yaml > CI/config/litmus_config.yaml envsubst < CI/scenarios/node_cpu_hog_engine.yaml > CI/scenarios/node_cpu_hog_engine_node.yaml - python3 run_kraken.py -c CI/config/litmus_config.yaml - echo "Litmus scenario $1 test: Success" + python3 -m coverage run -a run_kraken.py -c CI/config/litmus_config.yaml + echo "Litmus scenario test: Success" } functional_test_litmus_cpu diff --git a/CI/tests/test_io_hog.sh b/CI/tests/test_io_hog.sh index 340b87ec..d4ce24e8 100755 --- a/CI/tests/test_io_hog.sh +++ b/CI/tests/test_io_hog.sh @@ -13,8 +13,8 @@ function functional_test_litmus_io { export post_config="- CI/scenarios/node_io_engine_node.yaml" envsubst < CI/config/common_test_config.yaml > CI/config/litmus_config.yaml envsubst < CI/scenarios/node_io_engine.yaml > CI/scenarios/node_io_engine_node.yaml - python3 run_kraken.py -c CI/config/litmus_config.yaml - echo "Litmus scenario $1 test: Success" + python3 -m coverage run -a run_kraken.py -c CI/config/litmus_config.yaml + echo "Litmus scenario test: Success" } functional_test_litmus_io diff --git a/CI/tests/test_mem_hog.sh b/CI/tests/test_mem_hog.sh index ad60648e..98832cf0 100755 --- a/CI/tests/test_mem_hog.sh +++ b/CI/tests/test_mem_hog.sh @@ -13,7 +13,7 @@ function functional_test_litmus_mem { export post_config="- CI/scenarios/node_mem_engine_node.yaml" envsubst < CI/config/common_test_config.yaml > CI/config/litmus_config.yaml envsubst < CI/scenarios/node_mem_engine.yaml > CI/scenarios/node_mem_engine_node.yaml - python3 run_kraken.py -c CI/config/litmus_config.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/litmus_config.yaml echo "Litmus scenario $1 test: Success" } diff --git a/CI/tests/test_namespace.sh b/CI/tests/test_namespace.sh index 73581b0f..c0a711ff 100755 --- a/CI/tests/test_namespace.sh +++ b/CI/tests/test_namespace.sh @@ -11,7 +11,7 @@ function funtional_test_namespace_deletion { export post_config="" envsubst < CI/config/common_test_config.yaml > CI/config/namespace_config.yaml - python3 run_kraken.py -c CI/config/namespace_config.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/namespace_config.yaml echo $? echo "Namespace scenario test: Success" } diff --git a/CI/tests/test_net_chaos.sh b/CI/tests/test_net_chaos.sh index 1273b664..ede2af35 100755 --- a/CI/tests/test_net_chaos.sh +++ b/CI/tests/test_net_chaos.sh @@ -12,7 +12,7 @@ function functional_test_network_chaos { export scenario_file="CI/scenarios/network_chaos.yaml" export post_config="" envsubst < CI/config/common_test_config.yaml > CI/config/network_chaos.yaml - python3 run_kraken.py -c CI/config/network_chaos.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/network_chaos.yaml echo "Network Chaos test: Success" } diff --git a/CI/tests/test_nodes.sh b/CI/tests/test_nodes.sh index d4ff3bfc..64f3d9c7 100755 --- a/CI/tests/test_nodes.sh +++ b/CI/tests/test_nodes.sh @@ -13,7 +13,7 @@ function funtional_test_node_crash { export post_config="" envsubst < CI/config/common_test_config.yaml > CI/config/node_config.yaml - python3 run_kraken.py -c CI/config/node_config.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/node_config.yaml echo "Node scenario test: Success" } diff --git a/CI/tests/test_pods.sh b/CI/tests/test_pods.sh index 880e8b75..45087c66 100755 --- a/CI/tests/test_pods.sh +++ b/CI/tests/test_pods.sh @@ -11,7 +11,7 @@ function funtional_test_pod_deletion { export post_config="" envsubst < CI/config/common_test_config.yaml > CI/config/pod_config.yaml - python3 run_kraken.py -c CI/config/pod_config.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/pod_config.yaml echo $? echo "Pod scenario test: Success" } diff --git a/CI/tests/test_shut_down.sh b/CI/tests/test_shut_down.sh index d80d6642..b404bf0a 100755 --- a/CI/tests/test_shut_down.sh +++ b/CI/tests/test_shut_down.sh @@ -12,7 +12,7 @@ function functional_test_shut_down { export scenario_file="- CI/scenarios/cluster_shut_down_scenario.yml" export post_config="" envsubst < CI/config/common_test_config.yaml > CI/config/shut_down.yaml - python3 run_kraken.py -c CI/config/shut_down.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/shut_down.yaml echo "Cluster shut down scenario test: Success" } diff --git a/CI/tests/test_time.sh b/CI/tests/test_time.sh index 65c2dd4e..96f28285 100755 --- a/CI/tests/test_time.sh +++ b/CI/tests/test_time.sh @@ -12,7 +12,7 @@ function functional_test_time_scenario { export post_config="" envsubst < CI/config/common_test_config.yaml > CI/config/time_config.yaml - python3 run_kraken.py -c CI/config/time_config.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/time_config.yaml echo "Time scenario test: Success" } diff --git a/CI/tests/test_zone.sh b/CI/tests/test_zone.sh index 2a6ed553..e5d0224e 100755 --- a/CI/tests/test_zone.sh +++ b/CI/tests/test_zone.sh @@ -13,7 +13,7 @@ function functional_test_zone_crash { export post_config="" envsubst < CI/config/common_test_config.yaml > CI/config/zone3_config.yaml envsubst < CI/scenarios/zone_outage.yaml > CI/scenarios/zone_outage_env.yaml - python3 run_kraken.py -c CI/config/zone3_config.yaml + python3 -m coverage run -a run_kraken.py -c CI/config/zone3_config.yaml echo "zone3 scenario test: Success" } diff --git a/requirements.txt b/requirements.txt index e8165ddb..f092abb7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +coverage datetime pyfiglet PyYAML>=5.1