Skip to content

Commit 0856638

Browse files
feat: Added drift tests using DB storage (opendatahub-io#400)
* faet: drift test case modified: tests/model_explainability/trustyai_service/drift/test_drift.py modified: tests/model_explainability/trustyai_service/fairness/test_fairness.py modified: tests/model_explainability/trustyai_service/drift/test_drift.py modified: tests/model_explainability/trustyai_service/fairness/test_fairness.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent e86bc4c commit 0856638

2 files changed

Lines changed: 135 additions & 4 deletions

File tree

tests/model_explainability/trustyai_service/drift/test_drift.py

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,134 @@ def test_drift_metric_delete(
151151
token=current_client_token,
152152
metric_name=metric_name,
153153
)
154+
155+
156+
@pytest.mark.parametrize(
157+
"model_namespace, minio_pod, minio_data_connection",
158+
[
159+
pytest.param(
160+
{"name": "test-drift"},
161+
MinIo.PodConfig.MODEL_MESH_MINIO_CONFIG,
162+
{"bucket": MinIo.Buckets.MODELMESH_EXAMPLE_MODELS},
163+
)
164+
],
165+
indirect=True,
166+
)
167+
@pytest.mark.usefixtures("minio_pod")
168+
class TestDriftMetricsWithDBStorage:
169+
"""
170+
Verifies all the basic operations with a drift metric (meanshift, kstest, approxkstest and fouriermmd)
171+
available in TrustyAI, using MariaDB storage.
172+
173+
1. Send data to the model and verify that TrustyAI registers the observations.
174+
2. Apply name mappings
175+
3. Send metric request (meanshift, kstest, approxkstest and fouriermmd) and verify the response.
176+
4. Send metric scheduling request and verify the response.
177+
5. Send metric deletion request and verify that the scheduled metric has been deleted.
178+
"""
179+
180+
def test_drift_send_inference_and_verify_trustyai_service_with_db_storage(
181+
self,
182+
admin_client,
183+
current_client_token,
184+
model_namespace,
185+
trustyai_service_with_db_storage,
186+
gaussian_credit_model,
187+
isvc_getter_token,
188+
) -> None:
189+
send_inferences_and_verify_trustyai_service_registered(
190+
client=admin_client,
191+
token=current_client_token,
192+
data_path=f"{DRIFT_BASE_DATA_PATH}/data_batches",
193+
trustyai_service=trustyai_service_with_db_storage,
194+
inference_service=gaussian_credit_model,
195+
inference_config=OPENVINO_KSERVE_INFERENCE_CONFIG,
196+
inference_token=isvc_getter_token,
197+
)
198+
199+
def test_upload_data_to_trustyai_service_with_db_storage(
200+
self,
201+
admin_client,
202+
minio_data_connection,
203+
current_client_token,
204+
trustyai_service_with_db_storage,
205+
) -> None:
206+
verify_upload_data_to_trustyai_service(
207+
client=admin_client,
208+
trustyai_service=trustyai_service_with_db_storage,
209+
token=current_client_token,
210+
data_path=f"{DRIFT_BASE_DATA_PATH}/training_data.json",
211+
)
212+
213+
@pytest.mark.parametrize("metric_name", DRIFT_METRICS)
214+
def test_drift_metric_request_with_db_storage(
215+
self,
216+
admin_client,
217+
current_client_token,
218+
trustyai_service_with_db_storage,
219+
gaussian_credit_model,
220+
metric_name,
221+
):
222+
verify_trustyai_service_metric_request(
223+
client=admin_client,
224+
trustyai_service=trustyai_service_with_db_storage,
225+
token=current_client_token,
226+
metric_name=metric_name,
227+
json_data={
228+
"modelId": gaussian_credit_model.name,
229+
"referenceTag": "TRAINING",
230+
},
231+
)
232+
233+
@pytest.mark.parametrize("metric_name", DRIFT_METRICS)
234+
def test_drift_metric_schedule_with_db_storage(
235+
self,
236+
admin_client,
237+
current_client_token,
238+
trustyai_service_with_db_storage,
239+
gaussian_credit_model,
240+
metric_name,
241+
):
242+
verify_trustyai_service_metric_scheduling_request(
243+
client=admin_client,
244+
trustyai_service=trustyai_service_with_db_storage,
245+
token=current_client_token,
246+
metric_name=metric_name,
247+
json_data={
248+
"modelId": gaussian_credit_model.name,
249+
"referenceTag": "TRAINING",
250+
},
251+
)
252+
253+
@pytest.mark.parametrize("metric_name", DRIFT_METRICS)
254+
def test_drift_metric_prometheus_with_db_storage(
255+
self,
256+
admin_client,
257+
model_namespace,
258+
trustyai_service_with_db_storage,
259+
gaussian_credit_model,
260+
prometheus,
261+
metric_name,
262+
):
263+
validate_metrics_field(
264+
prometheus=prometheus,
265+
metrics_query=f'trustyai_{metric_name}{{namespace="{model_namespace.name}"}}',
266+
expected_value=metric_name.upper(),
267+
field_getter=partial(get_metric_label, label_name="metricName"),
268+
)
269+
270+
@pytest.mark.parametrize("metric_name", DRIFT_METRICS)
271+
def test_drift_metric_delete_with_db_storage(
272+
self,
273+
admin_client,
274+
minio_data_connection,
275+
current_client_token,
276+
trustyai_service_with_db_storage,
277+
metric_name,
278+
):
279+
verify_trustyai_service_metric_delete_request(
280+
client=admin_client,
281+
trustyai_service=trustyai_service_with_db_storage,
282+
token=current_client_token,
283+
metric_name=metric_name,
284+
)

tests/model_explainability/trustyai_service/fairness/test_fairness.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ def get_fairness_request_json_data(isvc: InferenceService) -> dict[str, Any]:
6464
@pytest.mark.usefixtures("minio_pod")
6565
class TestFairnessMetricsWithPVCStorage:
6666
"""
67-
Verifies all the basic operations with a fairness metric (spd) available in TrustyAI, using PVC storage.
67+
Verifies all the basic operations with a fairness metric (spd and dir) available in TrustyAI, using PVC storage.
6868
6969
1. Send data to the model and verify that TrustyAI registers the observations.
7070
2. Apply name mappings
71-
3. Send metric request (spd) and verify the response.
71+
3. Send metric request (spd and dir) and verify the response.
7272
4. Send metric scheduling request and verify the response.
7373
5. Send metric deletion request and verify that the scheduled metric has been deleted.
7474
"""
@@ -165,11 +165,11 @@ def test_fairness_metric_delete_with_pvc_storage(
165165
@pytest.mark.usefixtures("minio_pod")
166166
class TestFairnessMetricsWithDBStorage:
167167
"""
168-
Verifies all the basic operations with a fairness metric (spd) available in TrustyAI, using MariaDB storage.
168+
Verifies all the basic operations with a fairness metric (spd and dir) available in TrustyAI, using MariaDB storage.
169169
170170
1. Send data to the model and verify that TrustyAI registers the observations.
171171
2. Apply name mappings
172-
3. Send metric request (spd) and verify the response.
172+
3. Send metric request (spd and dir) and verify the response.
173173
4. Send metric scheduling request and verify the response.
174174
5. Send metric deletion request and verify that the scheduled metric has been deleted.
175175
"""

0 commit comments

Comments
 (0)