2020from ocp_utilities .operators import install_operator , uninstall_operator
2121
2222from tests .model_explainability .trustyai_service .trustyai_service_utils import (
23- TRUSTYAI_SERVICE_NAME ,
2423 wait_for_isvc_deployment_registered_by_trustyai_service ,
2524)
2625from tests .model_explainability .trustyai_service .utils import (
2726 get_cluster_service_version ,
2827 wait_for_mariadb_operator_deployments ,
28+ create_trustyai_service ,
2929 wait_for_mariadb_pods ,
30+ TRUSTYAI_SERVICE_NAME ,
3031)
3132
3233from utilities .constants import Timeout , KServeDeploymentType , ApiGroups , Labels , Ports
3334from utilities .inference_utils import create_isvc
3435from utilities .infra import update_configmap_data
3536
37+
3638OPENSHIFT_OPERATORS : str = "openshift-operators"
3739
40+ TAI_DATA_CONFIG = {"filename" : "data.csv" , "format" : "CSV" }
41+ TAI_METRICS_CONFIG = {"schedule" : "5s" }
42+ TAI_DB_STORAGE_CONFIG = {"format" : "DATABASE" , "size" : "1Gi" , "databaseConfigurations" : "db-credentials" }
3843MARIADB : str = "mariadb"
3944DB_CREDENTIALS_SECRET_NAME : str = "db-credentials"
4045DB_NAME : str = "trustyai_db"
4752LIGHTGBM : str = "lightgbm"
4853MLFLOW : str = "mlflow"
4954TIMEOUT_20MIN : int = 20 * Timeout .TIMEOUT_1MIN
55+ INVALID_TLS_CERTIFICATE : str = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJnRENDQVNlZ0F3SUJBZ0lRRGtTcXVuUWRzRmZwdi8zSm\
56+ 5TS2ZoVEFLQmdncWhrak9QUVFEQWpBVk1STXcKRVFZRFZRUURFd3B0WVhKcFlXUmlMV05oTUI0WERUSTFNRFF4TkRFME1EUXhOMW9YRFRJNE1EUXhNekUx\
57+ TURReApOMW93RlRFVE1CRUdBMVVFQXhNS2JXRnlhV0ZrWWkxallUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VICkEwSUFCQ2IxQ1IwUjV1akZ1QUR\
58+ Gd1NsazQzUUpmdDFmTFVnOWNJNyttZ0w3bVd3MmVLUXowL04ybm9KMGpJaDYKN0NnQ2syUW1jNTdWM1podkFWQzJoU2NEbWg2aldUQlhNQTRHQTFVZER3RU\
59+ Ivd1FFQXdJQ0JEQVBCZ05WSFJNQgpBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlNUa2tzSU9pL1pTbCtQRlJua2NQRlJ0QTRrMERBVkJnTlZIUkVFCkRqQ\
60+ U1nZ3B0WVhKcFlXUmlMV05oTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUI1Q2F6VW1WWUZQYTFkS2txUGkKbitKSEQvNVZTTGd4aHVPclgzUGcxQnlzQWlB\
61+ RmcvTXlNWW9CZUNrUVRWdS9rUkIwK2N2Qy9RMDB4NExvVGpJaQpGdCtKMGc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0t\
62+ LS0t" # pragma: allowlist secret
5063
5164
5265@pytest .fixture (scope = "class" )
@@ -66,18 +79,14 @@ def trustyai_service_with_pvc_storage(
6679 trustyai_service .clean_up ()
6780
6881 else :
69- with TrustyAIService (
82+ yield from create_trustyai_service (
7083 ** trustyai_service_kwargs ,
7184 storage = {"format" : "PVC" , "folder" : "/inputs" , "size" : "1Gi" },
72- data = {"filename" : "data.csv" , "format" : "CSV" },
73- metrics = {"schedule" : "5s" },
85+ metrics = TAI_METRICS_CONFIG ,
86+ data = TAI_DATA_CONFIG ,
87+ wait_for_replicas = True ,
7488 teardown = teardown_resources ,
75- ) as trustyai_service :
76- trustyai_deployment = Deployment (
77- namespace = model_namespace .name , name = TRUSTYAI_SERVICE_NAME , wait_for_resource = True
78- )
79- trustyai_deployment .wait_for_replicas ()
80- yield trustyai_service
89+ )
8190
8291
8392@pytest .fixture (scope = "class" )
@@ -89,18 +98,35 @@ def trustyai_service_with_db_storage(
8998 mariadb : MariaDB ,
9099 trustyai_db_ca_secret : None ,
91100) -> Generator [TrustyAIService , Any , Any ]:
92- with TrustyAIService (
101+ yield from create_trustyai_service (
93102 client = admin_client ,
94- name = TRUSTYAI_SERVICE_NAME ,
95103 namespace = model_namespace .name ,
96- storage = {"format" : "DATABASE" , "size" : "1Gi" , "databaseConfigurations" : "db-credentials" },
97- metrics = {"schedule" : "5s" },
98- ) as trustyai_service :
99- trustyai_deployment = Deployment (
100- namespace = model_namespace .name , name = TRUSTYAI_SERVICE_NAME , wait_for_resource = True
101- )
102- trustyai_deployment .wait_for_replicas ()
103- yield trustyai_service
104+ storage = TAI_DB_STORAGE_CONFIG ,
105+ metrics = TAI_METRICS_CONFIG ,
106+ wait_for_replicas = True ,
107+ )
108+
109+
110+ @pytest .fixture (scope = "class" )
111+ def trustyai_service_with_invalid_db_cert (
112+ admin_client : DynamicClient ,
113+ model_namespace : Namespace ,
114+ cluster_monitoring_config : ConfigMap ,
115+ user_workload_monitoring_config : ConfigMap ,
116+ mariadb : MariaDB ,
117+ trustyai_invalid_db_ca_secret : None ,
118+ ) -> Generator [TrustyAIService , None , None ]:
119+ """Create a TrustyAIService deployment with an invalid database certificate set as secret.
120+
121+ Yields: A secret with invalid database certificate set.
122+ """
123+ yield from create_trustyai_service (
124+ client = admin_client ,
125+ namespace = model_namespace .name ,
126+ storage = TAI_DB_STORAGE_CONFIG ,
127+ metrics = TAI_METRICS_CONFIG ,
128+ wait_for_replicas = False ,
129+ )
104130
105131
106132@pytest .fixture (scope = "session" )
@@ -229,7 +255,7 @@ def mariadb(
229255@pytest .fixture (scope = "class" )
230256def trustyai_db_ca_secret (
231257 admin_client : DynamicClient , model_namespace : Namespace , mariadb : MariaDB
232- ) -> Generator [None , Any , None ]:
258+ ) -> Generator [Secret , Any , None ]:
233259 mariadb_ca_secret = Secret (
234260 client = admin_client , name = f"{ mariadb .name } -ca" , namespace = model_namespace .name , ensure_exists = True
235261 )
@@ -238,8 +264,21 @@ def trustyai_db_ca_secret(
238264 name = f"{ TRUSTYAI_SERVICE_NAME } -db-ca" ,
239265 namespace = model_namespace .name ,
240266 data_dict = {"ca.crt" : mariadb_ca_secret .instance .data ["ca.crt" ]},
241- ):
242- yield
267+ ) as secret :
268+ yield secret
269+
270+
271+ @pytest .fixture (scope = "class" )
272+ def trustyai_invalid_db_ca_secret (
273+ admin_client : DynamicClient , model_namespace : Namespace , mariadb : MariaDB
274+ ) -> Generator [Secret , Any , None ]:
275+ with Secret (
276+ client = admin_client ,
277+ name = f"{ TRUSTYAI_SERVICE_NAME } -db-ca" ,
278+ namespace = model_namespace .name ,
279+ data_dict = {"ca.crt" : INVALID_TLS_CERTIFICATE },
280+ ) as secret :
281+ yield secret
243282
244283
245284@pytest .fixture (scope = "class" )
0 commit comments