From 9facc2ff49a5130fae824dfa1a25fbd371073a7d Mon Sep 17 00:00:00 2001 From: "Petr \"Stone\" Hracek" Date: Tue, 26 Mar 2024 08:35:11 +0100 Subject: [PATCH] Add tests for dancer app with mysql database Signed-off-by: Petr "Stone" Hracek --- .../templates/dancer-mysql-persistent.json | 10 ++- tests/test_dancer_mysql.py | 66 +++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 tests/test_dancer_mysql.py diff --git a/openshift/templates/dancer-mysql-persistent.json b/openshift/templates/dancer-mysql-persistent.json index 0fb6a6a..9c65ccb 100644 --- a/openshift/templates/dancer-mysql-persistent.json +++ b/openshift/templates/dancer-mysql-persistent.json @@ -292,7 +292,8 @@ "name": "${DATABASE_SERVICE_NAME}", "annotations": { "description": "Defines how to deploy the database", - "template.alpha.openshift.io/wait-for-ready": "true" + "template.alpha.openshift.io/wait-for-ready": "true", + "image.openshift.io/triggers": "[{\"from\":{\"kind\":\"ImageStreamTag\",\"name\":\"mysql:${MYSQL_VERSION}\"},\"fieldPath\": \"spec.template.spec.containers[0].image\"}]" } }, "spec": { @@ -412,6 +413,13 @@ "required": true, "value": "5.30-ubi8" }, + { + "name": "MYSQL_VERSION", + "displayName": "Version of MySQL Image", + "description": "Version of MySQL image to be used (8.0-el8, 8.0-el9, or latest).", + "value": "8.0-el8", + "required": true + }, { "name": "MEMORY_LIMIT", "displayName": "Memory Limit", diff --git a/tests/test_dancer_mysql.py b/tests/test_dancer_mysql.py new file mode 100644 index 0000000..9de557c --- /dev/null +++ b/tests/test_dancer_mysql.py @@ -0,0 +1,66 @@ +import os + +import pytest +from pathlib import Path + +from container_ci_suite.openshift import OpenShiftAPI + +test_dir = Path(os.path.abspath(os.path.dirname(__file__))) + +VERSION=os.getenv("SINGLE_VERSION") +if not VERSION: + VERSION="5.32-ubi8" + +class TestDancerAppExTemplate: + + def setup_method(self): + self.oc_api = OpenShiftAPI(pod_name_prefix="dancer-example") + json_raw_file = self.oc_api.get_raw_url_for_json( + container="s2i-perl-container", dir="imagestreams", filename="perl-rhel.json" + ) + self.oc_api.import_is(path=json_raw_file, name="perl") + json_raw_file = self.oc_api.get_raw_url_for_json( + container="mysq-container", dir="imagestreams", filename="mysql-rhel.json" + ) + self.oc_api.import_is(path=json_raw_file, name="mysql") + + def teardown_method(self): + self.oc_api.delete_project() + + def test_template_inside_cluster(self): + expected_output = "Welcome to your Dancer application" + template_json = self.oc_api.get_raw_url_for_json( + container="dancer-ex", dir="openshift/templates", filename="dancer-mysql-persistent.json" + ) + assert self.oc_api.deploy_template( + template=template_json, name_in_template="dancer-example", expected_output=expected_output, + openshift_args=[ + "SOURCE_REPOSITORY_REF=master", + f"PERL_VERSION={VERSION}", + "NAME=dancer-example", + "MYSQL=8.0-el8" + ] + ) + assert self.oc_api.template_deployed(name_in_template="dancer-example") + assert self.oc_api.check_response_inside_cluster( + name_in_template="dancer-example", expected_output=expected_output + ) + + def test_template_by_request(self): + expected_output = "Welcome to your Dancer application" + template_json = self.oc_api.get_raw_url_for_json( + container="dancer-ex", dir="openshift/templates", filename="dancer-mysql-persistent.json" + ) + assert self.oc_api.deploy_template( + template=template_json, name_in_template="dancer-example", expected_output=expected_output, + openshift_args=[ + "SOURCE_REPOSITORY_REF=master", + f"PERL_VERSION={VERSION}", + "NAME=dancer-example", + "MYSQL=8.0-el8" + ] + ) + assert self.oc_api.template_deployed(name_in_template="dancer-example") + assert self.oc_api.check_response_outside_cluster( + name_in_template="dancer-example", expected_output=expected_output + )