Skip to content

Commit dfda296

Browse files
rnetserMilind Waykole
authored andcommitted
[model server] Add inference service config tests (opendatahub-io#182)
* Create size-labeler.yml * Delete .github/workflows/size-labeler.yml * model mesh - add auth tests * xx * feat: add env vars in isvc * feat: add env vars in isvc * feat: add env vars in isvc * feat: add env vars in isvc * feat: add env vars in isvc * fix: fix protocol * fix: deployments * fix: update timeout * fix: update timeout * feat: add replicas test * feat: unity configs * fix: rename fixtures and constants * fix: address comment * fix: extend onstants * fix: fix strings * fix: update imports * fix: timeout update * fix: fix annotation * fix: address comments * fix: address comment
1 parent 0e36cd1 commit dfda296

26 files changed

+604
-151
lines changed

tests/model_explainability/conftest.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
from ocp_resources.service import Service
99

1010
from tests.model_explainability.constants import MINIO, MINIO_PORT
11-
12-
OPENDATAHUB_IO: str = "opendatahub.io"
11+
from utilities.constants import ApiGroups, Labels
1312

1413

1514
@pytest.fixture(scope="class")
@@ -43,11 +42,11 @@ def minio_data_connection(
4342
namespace=model_namespace.name,
4443
data_dict=request.param["data-dict"],
4544
label={
46-
f"{OPENDATAHUB_IO}/dashboard": "true",
47-
f"{OPENDATAHUB_IO}/managed": "true",
45+
Labels.OpenDataHub.DASHBOARD: "true",
46+
Labels.OpenDataHubIo.MANAGED: "true",
4847
},
4948
annotations={
50-
f"{OPENDATAHUB_IO}/connection-type": "s3",
49+
f"{ApiGroups.OPENDATAHUB_IO}/connection-type": "s3",
5150
"openshift.io/display-name": "Minio Data Connection",
5251
},
5352
) as minio_secret:

tests/model_explainability/trustyai_service/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
from utilities.infra import update_configmap_data
2828

2929
MINIO: str = "minio"
30-
OPENDATAHUB_IO: str = "opendatahub.io"
3130
OPENSHIFT_OPERATORS: str = "openshift-operators"
3231

3332
MARIADB: str = "mariadb"

tests/model_explainability/trustyai_service/drift/conftest.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from tests.model_explainability.trustyai_service.trustyai_service_utils import (
1414
wait_for_isvc_deployment_registered_by_trustyai_service,
1515
)
16-
from utilities.constants import KServeDeploymentType, Ports, Timeout, Labels
16+
from utilities.constants import ApiGroups, KServeDeploymentType, Ports, Timeout, Labels
1717
from utilities.inference_utils import create_isvc
1818

1919
MLSERVER: str = "mlserver"
@@ -62,9 +62,9 @@ def mlserver_runtime(
6262
supported_model_formats=supported_model_formats,
6363
protocol_versions=["v2"],
6464
annotations={
65-
"opendatahub.io/accelerator-name": "",
66-
"opendatahub.io/recommended-accelerators": '["nvidia.com/gpu"]',
67-
"opendatahub.io/template-display-name": "KServe MLServer",
65+
f"{ApiGroups.OPENDATAHUB_IO}/accelerator-name": "",
66+
f"{ApiGroups.OPENDATAHUB_IO}/recommended-accelerators": '["nvidia.com/gpu"]',
67+
f"{ApiGroups.OPENDATAHUB_IO}/template-display-name": "KServe MLServer",
6868
"prometheus.kserve.io/path": "/metrics",
6969
"prometheus.io/port": str(Ports.REST_PORT),
7070
"openshift.io/display-name": "mlserver-1.x",
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from utilities.constants import (
2+
KServeDeploymentType,
3+
ModelAndFormat,
4+
ModelFormat,
5+
ModelInferenceRuntime,
6+
ModelStoragePath,
7+
ModelVersion,
8+
)
9+
10+
KSERVE_RUNTIME_PARAMS = {
11+
"runtime-name": ModelInferenceRuntime.OPENVINO_KSERVE_RUNTIME,
12+
"model-format": {ModelAndFormat.OPENVINO_IR: ModelVersion.OPSET1},
13+
}
14+
SERVERLESS_ISVC_PARAMS = {
15+
"name": ModelFormat.OPENVINO,
16+
"model-version": ModelVersion.OPSET1,
17+
"model-dir": ModelStoragePath.KSERVE_OPENVINO_EXAMPLE_MODEL,
18+
"deployment-mode": KServeDeploymentType.SERVERLESS,
19+
}

tests/model_serving/model_server/components/kserve_dsc_deployment_mode/test_kserve_dsc_default_deployment_mode.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,7 @@ def test_isvc_contains_serverless_deployment_mode(
5050
ovms_inference_service,
5151
):
5252
"""Verify that default deployment mode is set to serverless in inference service."""
53-
assert (
54-
ovms_inference_service.instance.metadata.annotations[Annotations.KserveIo.DEPLOYMENT_MODE]
55-
== KServeDeploymentType.SERVERLESS
56-
)
53+
assert ovms_inference_service.instance.status.deploymentMode == KServeDeploymentType.SERVERLESS
5754

5855
def test_kserve_dsc_serverless_default_deployment_mode(
5956
self, default_deployment_mode_in_dsc, ovms_inference_service
@@ -83,10 +80,7 @@ def test_isvc_on_dsc_default_deployment_mode_change_to_raw(
8380
ovms_inference_service,
8481
):
8582
"""Verify that Serverless isvc not changed after dsc default deployment mode is changed to raw"""
86-
assert (
87-
ovms_inference_service.instance.metadata.annotations[Annotations.KserveIo.DEPLOYMENT_MODE]
88-
== KServeDeploymentType.SERVERLESS
89-
)
83+
assert ovms_inference_service.instance.status.deploymentMode == KServeDeploymentType.SERVERLESS
9084

9185
@pytest.mark.parametrize(
9286
"patched_default_deployment_mode_in_dsc",

tests/model_serving/model_server/components/model_mesh_kserve_co_exist/test_model_mesh_kserve_inference_co_exist.py

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,50 @@
11
import pytest
22

3+
from tests.model_serving.model_server.components.constants import KSERVE_RUNTIME_PARAMS, SERVERLESS_ISVC_PARAMS
34
from tests.model_serving.model_server.utils import verify_inference_response
45
from utilities.constants import (
5-
ModelAndFormat,
6-
ModelFormat,
7-
ModelInferenceRuntime,
86
ModelStoragePath,
9-
ModelVersion,
107
Protocols,
118
)
129
from utilities.inference_utils import Inference
1310
from utilities.manifests.openvino import OPENVINO_INFERENCE_CONFIG, OPENVINO_KSERVE_INFERENCE_CONFIG
1411

1512
pytestmark = [pytest.mark.serverless, pytest.mark.modelmesh, pytest.mark.sanity]
1613

17-
KSERVE_RUNTIME_PARAMS = {
18-
"runtime-name": ModelInferenceRuntime.OPENVINO_KSERVE_RUNTIME,
19-
"model-format": {ModelAndFormat.OPENVINO_IR: ModelVersion.OPSET1},
20-
}
21-
KSERVE_ISVC_PARAMS = {
22-
"name": ModelFormat.OPENVINO,
23-
"model-version": ModelVersion.OPSET1,
24-
"model-dir": ModelStoragePath.KSERVE_OPENVINO_EXAMPLE_MODEL,
25-
}
2614
MODELMESH_ISVC_PARAMS = {
2715
"model-path": ModelStoragePath.OPENVINO_EXAMPLE_MODEL,
2816
"modelmesh-enabled": True,
2917
}
3018

3119

3220
@pytest.mark.parametrize(
33-
"model_namespace, openvino_kserve_serving_runtime, ovms_serverless_inference_service, "
21+
"model_namespace, openvino_kserve_serving_runtime, ovms_kserve_inference_service, "
3422
"http_s3_openvino_model_mesh_inference_service",
3523
[
3624
pytest.param(
3725
{"name": "serverless-model-mesh-openvino", "modelmesh-enabled": True},
3826
KSERVE_RUNTIME_PARAMS,
39-
KSERVE_ISVC_PARAMS,
27+
SERVERLESS_ISVC_PARAMS,
4028
MODELMESH_ISVC_PARAMS,
4129
)
4230
],
4331
indirect=True,
4432
)
4533
class TestOpenVINOServerlessModelMesh:
4634
def test_serverless_openvino_created_before_model_mesh_ns_rest_inference(
47-
self, ovms_serverless_inference_service, http_s3_openvino_model_mesh_inference_service
35+
self, ovms_kserve_inference_service, http_s3_openvino_model_mesh_inference_service
4836
):
4937
"""Verify that Serverless model can be queried when running with modelmesh inference service"""
5038
verify_inference_response(
51-
inference_service=ovms_serverless_inference_service,
39+
inference_service=ovms_kserve_inference_service,
5240
inference_config=OPENVINO_KSERVE_INFERENCE_CONFIG,
5341
inference_type=Inference.INFER,
5442
protocol=Protocols.HTTPS,
5543
use_default_query=True,
5644
)
5745

5846
def test_model_mesh_openvino_created_after_serverless_in_namespace_rest_inference(
59-
self, ovms_serverless_inference_service, http_s3_openvino_model_mesh_inference_service
47+
self, ovms_kserve_inference_service, http_s3_openvino_model_mesh_inference_service
6048
):
6149
"""Verify that modelmesh model can be queried when running with kserve inference service"""
6250
verify_inference_response(
@@ -70,20 +58,20 @@ def test_model_mesh_openvino_created_after_serverless_in_namespace_rest_inferenc
7058

7159
@pytest.mark.parametrize(
7260
"model_namespace, http_s3_openvino_model_mesh_inference_service, openvino_kserve_serving_runtime, "
73-
"ovms_serverless_inference_service, ",
61+
"ovms_kserve_inference_service, ",
7462
[
7563
pytest.param(
7664
{"name": "model-mesh-serverless-openvino", "modelmesh-enabled": True},
7765
MODELMESH_ISVC_PARAMS,
7866
KSERVE_RUNTIME_PARAMS,
79-
KSERVE_ISVC_PARAMS,
67+
SERVERLESS_ISVC_PARAMS,
8068
)
8169
],
8270
indirect=True,
8371
)
8472
class TestOpenVINOModelMeshServerless:
8573
def test_model_mesh_openvino_created_before_serverless_in_namespace_rest_inference(
86-
self, http_s3_openvino_model_mesh_inference_service, ovms_serverless_inference_service
74+
self, http_s3_openvino_model_mesh_inference_service, ovms_kserve_inference_service
8775
):
8876
"""Verify that modelmesh model can be queried when running with kserve inference service"""
8977
verify_inference_response(
@@ -95,11 +83,11 @@ def test_model_mesh_openvino_created_before_serverless_in_namespace_rest_inferen
9583
)
9684

9785
def test_serverless_openvino_created_after_model_mesh_ns_rest_inference(
98-
self, http_s3_openvino_model_mesh_inference_service, ovms_serverless_inference_service
86+
self, http_s3_openvino_model_mesh_inference_service, ovms_kserve_inference_service
9987
):
10088
"""Verify that Serverless model can be queried when running with modelmesh inference service"""
10189
verify_inference_response(
102-
inference_service=ovms_serverless_inference_service,
90+
inference_service=ovms_kserve_inference_service,
10391
inference_config=OPENVINO_KSERVE_INFERENCE_CONFIG,
10492
inference_type=Inference.INFER,
10593
protocol=Protocols.HTTPS,

tests/model_serving/model_server/components/raw_deployment_serverless_co_exist/test_raw_deployment_serverless_inference_co_exist.py

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import pytest
22

3+
from tests.model_serving.model_server.components.constants import KSERVE_RUNTIME_PARAMS, SERVERLESS_ISVC_PARAMS
34
from tests.model_serving.model_server.utils import verify_inference_response
45
from utilities.constants import (
56
KServeDeploymentType,
6-
ModelAndFormat,
77
ModelFormat,
88
ModelInferenceRuntime,
99
ModelName,
1010
ModelStoragePath,
11-
ModelVersion,
1211
Protocols,
1312
RuntimeTemplates,
1413
)
@@ -20,16 +19,6 @@
2019

2120
pytestmark = [pytest.mark.serverless, pytest.mark.rawdeployment, pytest.mark.sanity]
2221

23-
24-
SERVERLESS_RUNTIME_PARAMS = {
25-
"runtime-name": ModelInferenceRuntime.OPENVINO_KSERVE_RUNTIME,
26-
"model-format": {ModelAndFormat.OPENVINO_IR: ModelVersion.OPSET1},
27-
}
28-
SERVERLESS_ISVC_PARAMS = {
29-
"name": ModelFormat.OPENVINO,
30-
"model-version": ModelVersion.OPSET1,
31-
"model-dir": ModelStoragePath.KSERVE_OPENVINO_EXAMPLE_MODEL,
32-
}
3322
RAW_RUNTIME_PARAMS = {
3423
"name": f"{Protocols.HTTP}-{ModelInferenceRuntime.CAIKIT_STANDALONE_RUNTIME}".lower(),
3524
"template-name": RuntimeTemplates.CAIKIT_STANDALONE_SERVING,
@@ -44,12 +33,12 @@
4433

4534

4635
@pytest.mark.parametrize(
47-
"model_namespace, openvino_kserve_serving_runtime, ovms_serverless_inference_service, "
36+
"model_namespace, openvino_kserve_serving_runtime, ovms_kserve_inference_service, "
4837
"serving_runtime_from_template, s3_models_inference_service",
4938
[
5039
pytest.param(
5140
{"name": "serverless-raw-deployment"},
52-
SERVERLESS_RUNTIME_PARAMS,
41+
KSERVE_RUNTIME_PARAMS,
5342
SERVERLESS_ISVC_PARAMS,
5443
RAW_RUNTIME_PARAMS,
5544
RAW_ISVC_PARAMS,
@@ -59,11 +48,11 @@
5948
)
6049
class TestServerlessRawInternalDeploymentInferenceCoExist:
6150
def test_serverless_openvino_created_before_raw_internal_deployment_caikit_inference(
62-
self, ovms_serverless_inference_service, s3_models_inference_service
51+
self, ovms_kserve_inference_service, s3_models_inference_service
6352
):
6453
"""Verify that Serverless model can be queried when running with raw deployment inference service"""
6554
verify_inference_response(
66-
inference_service=ovms_serverless_inference_service,
55+
inference_service=ovms_kserve_inference_service,
6756
inference_config=OPENVINO_KSERVE_INFERENCE_CONFIG,
6857
inference_type=Inference.INFER,
6958
protocol=Protocols.HTTPS,
@@ -72,7 +61,7 @@ def test_serverless_openvino_created_before_raw_internal_deployment_caikit_infer
7261

7362
def test_raw_internal_deployment_caikit_created_after_serverless_in_namespace_rest_inference(
7463
self,
75-
ovms_serverless_inference_service,
64+
ovms_kserve_inference_service,
7665
s3_models_inference_service,
7766
):
7867
"""Verify that raw deployment model can be queried when running with kserve inference service"""
@@ -87,12 +76,12 @@ def test_raw_internal_deployment_caikit_created_after_serverless_in_namespace_re
8776

8877

8978
@pytest.mark.parametrize(
90-
"model_namespace, openvino_kserve_serving_runtime, ovms_serverless_inference_service, "
79+
"model_namespace, openvino_kserve_serving_runtime, ovms_kserve_inference_service, "
9180
"serving_runtime_from_template, s3_models_inference_service",
9281
[
9382
pytest.param(
9483
{"name": "serverless-raw-ext-deployment"},
95-
SERVERLESS_RUNTIME_PARAMS,
84+
KSERVE_RUNTIME_PARAMS,
9685
SERVERLESS_ISVC_PARAMS,
9786
RAW_RUNTIME_PARAMS,
9887
{**RAW_ISVC_PARAMS, "external-route": True},
@@ -102,11 +91,11 @@ def test_raw_internal_deployment_caikit_created_after_serverless_in_namespace_re
10291
)
10392
class TestServerlessRawExternalDeploymentInferenceCoExist:
10493
def test_serverless_openvino_created_before_raw_external_deployment_caikit_inference(
105-
self, ovms_serverless_inference_service, s3_models_inference_service
94+
self, ovms_kserve_inference_service, s3_models_inference_service
10695
):
10796
"""Verify that Serverless model can be queried when running with raw deployment inference service"""
10897
verify_inference_response(
109-
inference_service=ovms_serverless_inference_service,
98+
inference_service=ovms_kserve_inference_service,
11099
inference_config=OPENVINO_KSERVE_INFERENCE_CONFIG,
111100
inference_type=Inference.INFER,
112101
protocol=Protocols.HTTPS,
@@ -115,7 +104,7 @@ def test_serverless_openvino_created_before_raw_external_deployment_caikit_infer
115104

116105
def test_raw_external_deployment_caikit_created_after_serverless_in_namespace_rest_inference(
117106
self,
118-
ovms_serverless_inference_service,
107+
ovms_kserve_inference_service,
119108
s3_models_inference_service,
120109
):
121110
"""Verify that raw deployment model can be queried when running with kserve inference service"""
@@ -131,13 +120,13 @@ def test_raw_external_deployment_caikit_created_after_serverless_in_namespace_re
131120

132121
@pytest.mark.parametrize(
133122
"model_namespace, serving_runtime_from_template, s3_models_inference_service,"
134-
"openvino_kserve_serving_runtime, ovms_serverless_inference_service",
123+
"openvino_kserve_serving_runtime, ovms_kserve_inference_service",
135124
[
136125
pytest.param(
137126
{"name": "raw-deployment-serverless"},
138127
RAW_RUNTIME_PARAMS,
139128
RAW_ISVC_PARAMS,
140-
SERVERLESS_RUNTIME_PARAMS,
129+
KSERVE_RUNTIME_PARAMS,
141130
SERVERLESS_ISVC_PARAMS,
142131
)
143132
],
@@ -147,7 +136,7 @@ class TestRawInternalDeploymentServerlessInferenceCoExist:
147136
def test_raw_internal_deployment_caikit_created_before_serverless_openvino_in_namespace_rest_inference(
148137
self,
149138
s3_models_inference_service,
150-
ovms_serverless_inference_service,
139+
ovms_kserve_inference_service,
151140
):
152141
"""Verify that raw deployment model can be queried when running with kserve inference service"""
153142
verify_inference_response(
@@ -162,11 +151,11 @@ def test_raw_internal_deployment_caikit_created_before_serverless_openvino_in_na
162151
def test_serverless_openvino_created_after_raw_internal_deployment_caikit_ns_rest_inference(
163152
self,
164153
s3_models_inference_service,
165-
ovms_serverless_inference_service,
154+
ovms_kserve_inference_service,
166155
):
167156
"""Verify that Serverless model can be queried when running with raw deployment exists"""
168157
verify_inference_response(
169-
inference_service=ovms_serverless_inference_service,
158+
inference_service=ovms_kserve_inference_service,
170159
inference_config=OPENVINO_KSERVE_INFERENCE_CONFIG,
171160
inference_type=Inference.INFER,
172161
protocol=Protocols.HTTPS,
@@ -176,13 +165,13 @@ def test_serverless_openvino_created_after_raw_internal_deployment_caikit_ns_res
176165

177166
@pytest.mark.parametrize(
178167
"model_namespace, serving_runtime_from_template, s3_models_inference_service,"
179-
"openvino_kserve_serving_runtime, ovms_serverless_inference_service",
168+
"openvino_kserve_serving_runtime, ovms_kserve_inference_service",
180169
[
181170
pytest.param(
182171
{"name": "raw-etx-deployment-serverless"},
183172
RAW_RUNTIME_PARAMS,
184173
{**RAW_ISVC_PARAMS, "external-route": True},
185-
SERVERLESS_RUNTIME_PARAMS,
174+
KSERVE_RUNTIME_PARAMS,
186175
SERVERLESS_ISVC_PARAMS,
187176
),
188177
],
@@ -192,7 +181,7 @@ class TestRawExternalDeploymentServerlessInferenceCoExist:
192181
def test_raw_external_deployment_caikit_created_before_serverless_openvino_in_namespace_rest_inference(
193182
self,
194183
s3_models_inference_service,
195-
ovms_serverless_inference_service,
184+
ovms_kserve_inference_service,
196185
):
197186
"""Verify that raw deployment model can be queried when running with kserve inference service"""
198187
verify_inference_response(
@@ -205,11 +194,11 @@ def test_raw_external_deployment_caikit_created_before_serverless_openvino_in_na
205194
)
206195

207196
def test_serverless_openvino_created_after_raw_external_deployment_caikit_ns_rest_inference(
208-
self, s3_models_inference_service, ovms_serverless_inference_service
197+
self, s3_models_inference_service, ovms_kserve_inference_service
209198
):
210199
"""Verify that Serverless model can be queried when running with raw deployment exists"""
211200
verify_inference_response(
212-
inference_service=ovms_serverless_inference_service,
201+
inference_service=ovms_kserve_inference_service,
213202
inference_config=OPENVINO_KSERVE_INFERENCE_CONFIG,
214203
inference_type=Inference.INFER,
215204
protocol=Protocols.HTTPS,

0 commit comments

Comments
 (0)