forked from opendatahub-io/opendatahub-tests
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_trustyai_service.py
More file actions
143 lines (131 loc) · 4.53 KB
/
test_trustyai_service.py
File metadata and controls
143 lines (131 loc) · 4.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import pytest
from ocp_resources.namespace import Namespace
from ocp_resources.trustyai_service import TrustyAIService
from tests.model_explainability.trustyai_service.constants import (
DRIFT_BASE_DATA_PATH,
TRUSTYAI_DB_MIGRATION_PATCH,
)
from tests.model_explainability.trustyai_service.service.utils import (
patch_trustyai_service_cr,
wait_for_trustyai_db_migration_complete_log,
)
from tests.model_explainability.trustyai_service.trustyai_service_utils import (
TrustyAIServiceMetrics,
verify_trustyai_service_metric_scheduling_request,
verify_upload_data_to_trustyai_service,
)
from tests.model_explainability.trustyai_service.utils import (
validate_trustyai_service_db_conn_failure,
validate_trustyai_service_images,
)
from utilities.constants import MinIo
@pytest.mark.tier1
@pytest.mark.parametrize(
"model_namespace",
[
pytest.param(
{"name": "test-trustyai-service-invalid-db-cert"},
)
],
indirect=True,
)
def test_trustyai_service_with_invalid_db_cert(
admin_client,
current_client_token,
model_namespace: Namespace,
trustyai_service_with_invalid_db_cert,
):
"""Test to make sure TrustyAIService pod fails when incorrect database TLS certificate is used."""
validate_trustyai_service_db_conn_failure(
client=admin_client,
namespace=model_namespace,
label_selector=f"app.kubernetes.io/instance={trustyai_service_with_invalid_db_cert.name}",
)
@pytest.mark.smoke
@pytest.mark.parametrize(
"model_namespace, trustyai_service",
[
pytest.param(
{"name": "test-validate-trustyai-service-images"},
{"storage": "pvc"},
)
],
indirect=True,
)
def test_validate_trustyai_service_image(
admin_client,
model_namespace: Namespace,
related_images_refs: set[str],
trustyai_service: TrustyAIService,
trustyai_operator_configmap,
):
return validate_trustyai_service_images(
client=admin_client,
related_images_refs=related_images_refs,
model_namespace=model_namespace,
label_selector=f"app.kubernetes.io/instance={trustyai_service.name}",
trustyai_operator_configmap=trustyai_operator_configmap,
)
@pytest.mark.tier1
@pytest.mark.parametrize(
"model_namespace, minio_pod, minio_data_connection, trustyai_service",
[
pytest.param(
{"name": "test-trustyai-db-migration"},
MinIo.PodConfig.MODEL_MESH_MINIO_CONFIG,
{"bucket": MinIo.Buckets.MODELMESH_EXAMPLE_MODELS},
{"storage": "pvc"},
)
],
indirect=True,
)
@pytest.mark.usefixtures("minio_pod")
@pytest.mark.rawdeployment
def test_trustyai_service_db_migration(
admin_client,
current_client_token,
mariadb,
trustyai_db_ca_secret,
trustyai_service,
gaussian_credit_model,
) -> None:
"""Verify if TrustyAI DB Migration works as expected.
This test initializes TrustyAI Service with PVC Storage at first with a database on standby but the service is not
configured to use it.
Data is uploaded to the PVC, then the TrustyAI CR is patched to trigger a migration from PVC to DB storage.
config.
Then waits for the migration success entry in the container logs and patches the service again to remove PVC config.
Finally, a metric is scheduled and checked if the service works as expected post migration.
Args:
admin_client: DynamicClient
current_client_token: RedactedString
mariadb: MariaDB
trustyai_db_ca_secret: None
trustyai_service: TrustyAIService
gaussian_credit_model: Generator[InferenceService, Any, Any]
Returns:
None
"""
verify_upload_data_to_trustyai_service(
client=admin_client,
trustyai_service=trustyai_service,
token=current_client_token,
data_path=f"{DRIFT_BASE_DATA_PATH}/training_data.json",
)
trustyai_db_migration_patched_service = patch_trustyai_service_cr(
trustyai_service=trustyai_service, patches=TRUSTYAI_DB_MIGRATION_PATCH
)
wait_for_trustyai_db_migration_complete_log(
client=admin_client,
trustyai_service=trustyai_db_migration_patched_service,
)
verify_trustyai_service_metric_scheduling_request(
client=admin_client,
trustyai_service=trustyai_db_migration_patched_service,
token=current_client_token,
metric_name=TrustyAIServiceMetrics.Drift.MEANSHIFT,
json_data={
"modelId": gaussian_credit_model.name,
"referenceTag": "TRAINING",
},
)