Skip to content

Commit

Permalink
Add tests written in Pytest for testing in OpenShift 4 environment
Browse files Browse the repository at this point in the history
Add test written in PyTest for testing
postgresql-container in OpenShift 4 environment

Similar pull request is here:
sclorg/mariadb-container#246

Signed-off-by: Petr "Stone" Hracek <phracek@redhat.com>
  • Loading branch information
phracek committed Jun 19, 2024
1 parent 0e4973c commit 07acf1d
Show file tree
Hide file tree
Showing 5 changed files with 190 additions and 0 deletions.
13 changes: 13 additions & 0 deletions test/run-openshift-pytest
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash
#
# IMAGE_NAME specifies a name of the candidate image used for testing.
# The image has to be available before this script is executed.
# VERSION specifies the major version of the MariaDB in format of X.Y
# OS specifies RHEL version (e.g. OS=rhel7)
#

THISDIR=$(dirname ${BASH_SOURCE[0]})

git show -s

cd "${THISDIR}" && python3 -m pytest --showlocals -vv test_postgresql_*.py
50 changes: 50 additions & 0 deletions test/test_postgresql_imagestream.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import os
import sys

import pytest

from container_ci_suite.openshift import OpenShiftAPI
from container_ci_suite.utils import check_variables

if not check_variables():
print("At least one variable from IMAGE_NAME, OS, SINGLE_VERSION is missing.")
sys.exit(1)


VERSION = os.getenv("SINGLE_VERSION")
IMAGE_NAME = os.getenv("IMAGE_NAME")
OS = os.getenv("TARGET")
TAGS = {
"rhel8": "-el8",
"rhel9": "-el9"
}
TAG = TAGS.get(OS, None)


class TestPostgreSQLImagestreamTemplate:

def setup_method(self):
self.oc_api = OpenShiftAPI(pod_name_prefix="postgresql", version=VERSION)

def teardown_method(self):
self.oc_api.delete_project()

@pytest.mark.parametrize(
"template",
[
"postgresql-ephemeral-template.json",
"postgresql-persistent-template.json"
]
)
def test_psql_imagestream_template(self, template):
os_name = ''.join(i for i in OS if not i.isdigit())
print(os.getcwd())
assert self.oc_api.deploy_image_stream_template(
imagestream_file=f"imagestreams/postgresql-{os_name}.json",
template_file=f"examples/{template}",
app_name=self.oc_api.pod_name_prefix,
openshift_args=[
f"POSTGRESQL__VERSION={VERSION}{TAG}"
]
)
assert self.oc_api.is_pod_running(pod_name_prefix=self.oc_api.pod_name_prefix)
46 changes: 46 additions & 0 deletions test/test_postgresql_imagestream_template.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import os
import sys

import pytest

from container_ci_suite.openshift import OpenShiftAPI
from container_ci_suite.utils import check_variables

if not check_variables():
print("At least one variable from IMAGE_NAME, OS, SINGLE_VERSION is missing.")
sys.exit(1)


VERSION = os.getenv("SINGLE_VERSION")
IMAGE_NAME = os.getenv("IMAGE_NAME")
OS = os.getenv("TARGET")
TAGS = {
"rhel8": "-el8",
"rhel9": "-el9"
}
TAG = TAGS.get(OS, None)


class TestPostgreSQLImagestreamTemplate:

def setup_method(self):
self.oc_api = OpenShiftAPI(pod_name_prefix="postgresql", version=VERSION)

def teardown_method(self):
self.oc_api.delete_project()

@pytest.mark.parametrize(
"template",
[
"postgresql-ephemeral-template.json",
"postgresql-persistent-template.json"
]
)
def test_psql_imagestream_template(self, template):
os_name = ''.join(i for i in OS if not i.isdigit())
assert self.oc_api.deploy_image_stream_template(
imagestream_file=f"imagestreams/postgresql-{os_name}.json",
template_file=f"examples/{template}",
app_name=self.oc_api.pod_name_prefix
)
assert self.oc_api.is_pod_running(pod_name_prefix=self.oc_api.pod_name_prefix)
26 changes: 26 additions & 0 deletions test/test_postgresql_latest_imagestreams.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import os
import sys

import pytest

from pathlib import Path

from container_ci_suite.imagestreams import ImageStreamChecker
from container_ci_suite.utils import check_variables

TEST_DIR = Path(os.path.abspath(os.path.dirname(__file__)))

if not check_variables():
print("At least one variable from IMAGE_NAME, OS, SINGLE_VERSION is missing.")
sys.exit(1)


class TestLatestImagestreams:

def setup_method(self):
self.isc = ImageStreamChecker(working_dir=TEST_DIR.parent)

def test_latest_imagestream(self):
self.latest_version = self.isc.get_latest_version()
assert self.latest_version != ""
self.isc.check_imagestreams(self.latest_version)
55 changes: 55 additions & 0 deletions test/test_postgresql_template.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import os
import sys

import pytest

from container_ci_suite.openshift import OpenShiftAPI
from container_ci_suite.utils import check_variables

if not check_variables():
print("At least one variable from IMAGE_NAME, OS, SINGLE_VERSION is missing.")
sys.exit(1)


VERSION = os.getenv("SINGLE_VERSION")
IMAGE_NAME = os.getenv("IMAGE_NAME")
OS = os.getenv("TARGET")


class TestPostgreSQLDeployTemplate:

def setup_method(self):
self.oc_api = OpenShiftAPI(pod_name_prefix="postgresql-testing", version=VERSION)

def teardown_method(self):
self.oc_api.delete_project()

@pytest.mark.parametrize(
"template",
[
"postgresql-ephemeral-template.json",
"postgresql-persistent-template.json"
]
)
def test_psql_template_inside_cluster(self, template):
short_version = VERSION.replace(".", "")
assert self.oc_api.deploy_template_with_image(
image_name=IMAGE_NAME,
template=f"examples/{template}",
name_in_template="postgresql",
openshift_args=[
f"POSTGRESQL_VERSION={VERSION}",
f"DATABASE_SERVICE_NAME={self.oc_api.pod_name_prefix}",
f"POSTGRESQL_USER=testu",
f"POSTGRESQL_PASSWORD=testp",
f"POSTGRESQL_DATABASE=testdb"
]
)

assert self.oc_api.is_pod_running(pod_name_prefix=self.oc_api.pod_name_prefix)
assert self.oc_api.check_command_internal(
image_name=f"registry.redhat.io/{OS}/postgresql-{short_version}",
service_name=self.oc_api.pod_name_prefix,
cmd="PGPASSWORD=testp pg_isready -t 15 -h <IP> -U testu -d testdb",
expected_output="accepting connections"
)

0 comments on commit 07acf1d

Please sign in to comment.