generated from validatedpatterns/multicloud-gitops
-
Notifications
You must be signed in to change notification settings - Fork 68
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #122 from validatedpatterns/run_tests
Add files for external testing
- Loading branch information
Showing
4 changed files
with
159 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# Running tests | ||
|
||
## Prerequisites | ||
|
||
* Openshift clusters with multicluster-devsecops pattern installed | ||
* prod and devel clusters are managed via rhacm | ||
* kubeconfig files for Openshift clusters | ||
* oc client installed at ~/oc_client/oc | ||
|
||
## Steps | ||
|
||
* create python3 venv, clone multicluster-devsecops repository | ||
* export KUBECONFIG=\<path to hub kubeconfig file> | ||
* export KUBECONFIG_PROD=\<path to prod kubeconfig file> | ||
* export KUBECONFIG_DEVEL=\<path to devel kubeconfig file> | ||
* export INFRA_PROVIDER=\<infra platform description> | ||
* (optional) export WORKSPACE=\<dir to save test results to> (defaults to /tmp) | ||
* cd multicluster-devsecops/tests/interop | ||
* pip install -r requirements.txt | ||
* ./run_tests.sh | ||
|
||
## Results | ||
|
||
* results .xml files will be placed at $WORKSPACE | ||
* test logs will be placed at $WORKSPACE/.results/test_execution_logs/ | ||
* CI badge file will be placed at $WORKSPACE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
import json | ||
import os | ||
import subprocess | ||
from datetime import datetime | ||
|
||
from junitparser import JUnitXml | ||
|
||
oc = os.environ["HOME"] + "/oc_client/oc" | ||
|
||
ci_badge = { | ||
"schemaVersion": 1, | ||
"label": "Community test", | ||
"message": "", | ||
"color": "red", | ||
"openshiftVersion": "", | ||
"infraProvider": os.environ.get("INFRA_PROVIDER"), | ||
"patternName": os.environ.get("PATTERN_NAME"), | ||
"patternRepo": "", | ||
"patternBranch": "", | ||
"date": datetime.today().strftime("%Y-%m-%d"), | ||
"testSource": "Community", | ||
"debugInfo": None, | ||
} | ||
|
||
|
||
def get_openshift_version(): | ||
try: | ||
version_ret = subprocess.run([oc, "version", "-o", "json"], capture_output=True) | ||
version_out = version_ret.stdout.decode("utf-8") | ||
openshift_version = json.loads(version_out)["openshiftVersion"] | ||
major_minor = ".".join(openshift_version.split(".")[:-1]) | ||
return openshift_version, major_minor | ||
except KeyError as e: | ||
print("KeyError:" + str(e)) | ||
return None | ||
|
||
|
||
if __name__ == "__main__": | ||
versions = get_openshift_version() | ||
ci_badge["openshiftVersion"] = versions[0] | ||
|
||
pattern_repo = subprocess.run( | ||
["git", "config", "--get", "remote.origin.url"], capture_output=True, text=True | ||
) | ||
pattern_branch = subprocess.run( | ||
["git", "branch", "--show-current"], capture_output=True, text=True | ||
) | ||
|
||
ci_badge["patternRepo"] = pattern_repo.stdout.strip() | ||
ci_badge["patternBranch"] = pattern_branch.stdout.strip() | ||
|
||
# Check each xml file for failures | ||
results_dir = os.environ.get("WORKSPACE") | ||
failures = 0 | ||
|
||
for file in os.listdir(results_dir): | ||
if file.startswith("test_") and file.endswith(".xml"): | ||
with open(os.path.join(results_dir, file), "r") as result_file: # type: ignore | ||
xml = JUnitXml.fromfile(result_file) # type: ignore | ||
for suite in xml: | ||
for case in suite: | ||
if case.result: | ||
failures += 1 | ||
|
||
# Determine badge color from results | ||
if failures == 0: | ||
ci_badge["color"] = "green" | ||
|
||
# For now we assume `message` is the same as patternBranch | ||
ci_badge["message"] = ci_badge["patternBranch"] | ||
|
||
ci_badge_json_basename = ( | ||
os.environ.get("PATTERN_SHORTNAME") # type: ignore | ||
+ "-" | ||
+ os.environ.get("INFRA_PROVIDER") | ||
+ "-" | ||
+ versions[1] | ||
+ "-stable-badge.json" | ||
) | ||
ci_badge_json_filename = os.path.join(results_dir, ci_badge_json_basename) # type: ignore | ||
print(f"Creating CI badge file at: {ci_badge_json_filename}") | ||
|
||
with open(ci_badge_json_filename, "w") as ci_badge_file: | ||
json.dump(ci_badge, ci_badge_file) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
pytest | ||
kubernetes | ||
openshift | ||
openshift-python-wrapper | ||
junitparser | ||
git+https://github.com/validatedpatterns/vp-qe-test-common.git@development#egg=vp-qe-test-common |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
#!/usr/bin/bash | ||
|
||
export EXTERNAL_TEST="true" | ||
export PATTERN_NAME="MulticlusterDevSecOps" | ||
export PATTERN_SHORTNAME="devsecops" | ||
|
||
if [ -z "${KUBECONFIG}" ]; then | ||
echo "No kubeconfig file set for hub cluster" | ||
exit 1 | ||
fi | ||
|
||
if [ -z "${KUBECONFIG_PROD}" ]; then | ||
echo "No kubeconfig file set for prod cluster" | ||
exit 1 | ||
fi | ||
|
||
if [ -z "${KUBECONFIG_DEVEL}" ]; then | ||
echo "No kubeconfig file set for devel cluster" | ||
exit 1 | ||
fi | ||
|
||
if [ -z "${INFRA_PROVIDER}" ]; then | ||
echo "INFRA_PROVIDER is not defined" | ||
exit 1 | ||
fi | ||
|
||
if [ -z "${WORKSPACE}" ]; then | ||
export WORKSPACE=/tmp | ||
fi | ||
|
||
pytest -lv --disable-warnings test_subscription_status_hub.py --kubeconfig $KUBECONFIG --junit-xml $WORKSPACE/test_subscription_status_hub.xml | ||
|
||
pytest -lv --disable-warnings test_subscription_status_devel.py --kubeconfig $KUBECONFIG_DEVEL --junit-xml $WORKSPACE/test_subscription_status_devel.xml | ||
|
||
pytest -lv --disable-warnings test_subscription_status_prod.py --kubeconfig $KUBECONFIG_PROD --junit-xml $WORKSPACE/test_subscription_status_prod.xml | ||
|
||
pytest -lv --disable-warnings test_validate_hub_site_components.py --kubeconfig $KUBECONFIG --junit-xml $WORKSPACE/test_validate_hub_site_components.xml | ||
|
||
pytest -lv --disable-warnings test_validate_devel_site_components.py --kubeconfig $KUBECONFIG_DEVEL --junit-xml $WORKSPACE/test_validate_devel_site_components.xml | ||
|
||
pytest -lv --disable-warnings test_validate_prod_site_components.py --kubeconfig $KUBECONFIG_PROD --junit-xml $WORKSPACE/test_validate_prod_site_components.xml | ||
|
||
python3 create_ci_badge.py |