@@ -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+ )
0 commit comments