Skip to content

Commit c2cfae3

Browse files
committed
Remove unused fixtures and other minor fixes
1 parent fd25458 commit c2cfae3

File tree

3 files changed

+44
-67
lines changed

3 files changed

+44
-67
lines changed

tests/model_explainability/lm_eval/conftest.py

Lines changed: 18 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,15 @@
1515
from ocp_resources.resource import ResourceEditor
1616
from pytest_testconfig import py_config
1717

18+
from tests.model_explainability.constants import MINIO_PORT, MINIO
19+
from tests.model_explainability.lm_eval.utils import MINIOADMIN
1820
from utilities.constants import Labels, Timeout, Annotations, Protocols
1921

2022
VLLM_EMULATOR: str = "vllm-emulator"
2123
VLLM_EMULATOR_PORT: int = 8000
2224
LMEVALJOB_NAME: str = "lmeval-test-job"
2325

2426

25-
@pytest.fixture(scope="function")
26-
def lmevaljob_hf_pod(admin_client: DynamicClient, lmevaljob_hf: LMEvalJob) -> Generator[Pod, Any, Any]:
27-
lmeval_pod = Pod(
28-
client=admin_client,
29-
namespace=lmevaljob_hf.namespace,
30-
name=lmevaljob_hf.name,
31-
)
32-
33-
# TODO: Check if we can rely on LMEvalJob instead of pod
34-
lmeval_pod.wait(timeout=Timeout.TIMEOUT_2MIN)
35-
36-
yield lmeval_pod
37-
38-
3927
@pytest.fixture(scope="function")
4028
def lmevaljob_hf(
4129
admin_client: DynamicClient, model_namespace: Namespace, patched_trustyai_operator_configmap_allow_online: ConfigMap
@@ -108,22 +96,6 @@ def lmevaljob_local_offline(
10896
yield job
10997

11098

111-
@pytest.fixture(scope="function")
112-
def lmevaljob_vllm_emulator_pod(
113-
admin_client: DynamicClient, lmevaljob_vllm_emulator: LMEvalJob
114-
) -> Generator[Pod, Any, Any]:
115-
lmeval_pod = Pod(
116-
client=admin_client,
117-
namespace=lmevaljob_vllm_emulator.namespace,
118-
name=lmevaljob_vllm_emulator.name,
119-
)
120-
121-
# TODO: Check if we can rely on LMEvalJob instead of pod
122-
lmeval_pod.wait(timeout=Timeout.TIMEOUT_2MIN)
123-
124-
yield lmeval_pod
125-
126-
12799
@pytest.fixture(scope="function")
128100
def lmevaljob_vllm_emulator(
129101
admin_client: DynamicClient,
@@ -316,12 +288,8 @@ def lmeval_minio_pvc(
316288
) -> Generator[PersistentVolumeClaim, Any, Any]:
317289
with PersistentVolumeClaim(
318290
client=admin_client,
319-
name="minio-pvc",
291+
name=f"{MINIO}-pvc",
320292
namespace=model_namespace.name,
321-
annotations={
322-
"helm.sh/hook": "pre-install",
323-
"helm.sh/hook-weight": "0",
324-
},
325293
accessmodes=PersistentVolumeClaim.AccessMode.RWO,
326294
size="10Gi",
327295
) as pvc:
@@ -334,28 +302,25 @@ def lmeval_minio_deployment(
334302
) -> Generator[Deployment, Any, Any]:
335303
with Deployment(
336304
client=admin_client,
337-
name="minio",
305+
name=MINIO,
338306
namespace=model_namespace.name,
339-
annotations={
340-
"helm.sh/hook": "pre-install",
341-
"helm.sh/hook-weight": "0",
342-
},
343307
replicas=1,
344-
selector={"matchLabels": {"app": "minio"}},
308+
selector={"matchLabels": {"app": MINIO}},
345309
template={
346-
"metadata": {"labels": {"app": "minio"}},
310+
"metadata": {"labels": {"app": MINIO}},
347311
"spec": {
348-
"volumes": [{"name": "minio-storage", "persistentVolumeClaim": {"claimName": "minio-pvc"}}],
312+
"volumes": [{"name": "minio-storage", "persistentVolumeClaim": {"claimName": lmeval_minio_pvc.name}}],
349313
"containers": [
350314
{
351-
"name": "minio",
352-
"image": "quay.io/minio/minio:latest",
315+
"name": MINIO,
316+
"image": "quay.io/minio/minio"
317+
"@sha256:46b3009bf7041eefbd90bd0d2b38c6ddc24d20a35d609551a1802c558c1c958f",
353318
"args": ["server", "/data", "--console-address", ":9001"],
354319
"env": [
355-
{"name": "MINIO_ROOT_USER", "value": "minioadmin"},
356-
{"name": "MINIO_ROOT_PASSWORD", "value": "minioadmin"},
320+
{"name": "MINIO_ROOT_USER", "value": MINIOADMIN},
321+
{"name": "MINIO_ROOT_PASSWORD", "value": MINIOADMIN},
357322
],
358-
"ports": [{"containerPort": 9000}, {"containerPort": 9001}],
323+
"ports": [{"containerPort": MINIO_PORT}, {"containerPort": 9001}],
359324
"volumeMounts": [{"name": "minio-storage", "mountPath": "/data"}],
360325
}
361326
],
@@ -381,7 +346,8 @@ def lmeval_minio_copy_pod(
381346
init_containers=[
382347
{
383348
"name": "copy-data",
384-
"image": "quay.io/ruimvieira/lmeval-assets-flan-arceasy:latest",
349+
"image": "quay.io/trustyai_testing/lmeval-assets-flan-arceasy"
350+
"@sha256:11cc9c2f38ac9cc26c4fab1a01a8c02db81c8f4801b5d2b2b90f90f91b97ac98",
385351
"command": ["/bin/sh", "-c"],
386352
"args": ["cp -r /mnt/data /shared"],
387353
"volumeMounts": [{"name": "shared-data", "mountPath": "/shared"}],
@@ -390,10 +356,10 @@ def lmeval_minio_copy_pod(
390356
containers=[
391357
{
392358
"name": "minio-uploader",
393-
"image": "quay.io/minio/mc:latest",
359+
"image": "quay.io/minio/mc@sha256:470f5546b596e16c7816b9c3fa7a78ce4076bb73c2c73f7faeec0c8043923123",
394360
"command": ["/bin/sh", "-c"],
395361
"args": [
396-
"mc alias set myminio http://minio:9000 minioadmin minioadmin &&\n"
362+
f"mc alias set myminio http://{minio_service.name}:{MINIO_PORT} {MINIOADMIN} {MINIOADMIN} &&\n"
397363
"mc mb --ignore-existing myminio/models &&\n"
398364
"mc cp --recursive /shared/data/ myminio/models"
399365
],
@@ -411,6 +377,7 @@ def lmevaljob_s3_offline(
411377
admin_client: DynamicClient,
412378
model_namespace: Namespace,
413379
lmeval_minio_deployment: Deployment,
380+
minio_service: Service,
414381
lmeval_minio_copy_pod: Pod,
415382
minio_data_connection: Secret,
416383
) -> Generator[LMEvalJob, Any, Any]:

tests/model_explainability/lm_eval/test_lm_eval.py

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import pytest
2-
from ocp_resources.lm_eval_job import LMEvalJob
32

43
from tests.model_explainability.constants import MINIO_PORT
5-
from tests.model_explainability.lm_eval.utils import verify_lmevaljob_running
6-
from utilities.constants import Timeout
4+
from tests.model_explainability.lm_eval.utils import verify_lmevaljob_running, wait_for_lmevaljob_state
75
from utilities.general import get_s3_secret_dict
86

7+
LMEVALJOB_COMPLETE_STATE: str = "Complete"
98
DATA_DICT: dict[str, str] = get_s3_secret_dict(
109
aws_access_key="minioadmin",
1110
aws_secret_access_key="minioadmin", # pragma: allowlist secret
@@ -25,9 +24,9 @@
2524
indirect=True,
2625
)
2726
@pytest.mark.smoke
28-
def test_lmeval_huggingface_model(admin_client, model_namespace, lmevaljob_hf_pod):
27+
def test_lmeval_huggingface_model(admin_client, model_namespace, lmevaljob_hf):
2928
"""Basic test that verifies that LMEval can run successfully pulling a model from HuggingFace."""
30-
lmevaljob_hf_pod.wait_for_status(status=lmevaljob_hf_pod.Status.SUCCEEDED, timeout=Timeout.TIMEOUT_10MIN)
29+
wait_for_lmevaljob_state(lmevaljob=lmevaljob_hf, state=LMEVALJOB_COMPLETE_STATE)
3130

3231

3332
@pytest.mark.parametrize(
@@ -96,11 +95,9 @@ def test_lmeval_local_offline_unitxt_tasks_flan_20newsgroups(
9695
],
9796
indirect=True,
9897
)
99-
def test_lmeval_vllm_emulator(admin_client, model_namespace, lmevaljob_vllm_emulator_pod):
98+
def test_lmeval_vllm_emulator(admin_client, model_namespace, lmevaljob_vllm_emulator):
10099
"""Basic test that verifies LMEval works with vLLM using a vLLM emulator for more efficient evaluation"""
101-
lmevaljob_vllm_emulator_pod.wait_for_status(
102-
status=lmevaljob_vllm_emulator_pod.Status.SUCCEEDED, timeout=Timeout.TIMEOUT_10MIN
103-
)
100+
wait_for_lmevaljob_state(lmevaljob=lmevaljob_vllm_emulator, state=LMEVALJOB_COMPLETE_STATE)
104101

105102

106103
@pytest.mark.parametrize(
@@ -116,12 +113,7 @@ def test_lmeval_vllm_emulator(admin_client, model_namespace, lmevaljob_vllm_emul
116113
def test_lmeval_s3_storage(
117114
admin_client,
118115
model_namespace,
119-
lmeval_minio_pvc,
120-
lmeval_minio_deployment,
121-
minio_service,
122-
lmeval_minio_copy_pod,
123-
minio_data_connection,
124116
lmevaljob_s3_offline,
125117
):
126118
"""Test to verify that LMEval works with a model stored in a S3 bucket"""
127-
lmevaljob_s3_offline.wait_for_status(status=LMEvalJob.Status.COMPLETED, timeout=Timeout.TIMEOUT_15MIN)
119+
wait_for_lmevaljob_state(lmevaljob=lmevaljob_s3_offline, state=LMEVALJOB_COMPLETE_STATE)

tests/model_explainability/lm_eval/utils.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
from kubernetes.dynamic import DynamicClient
22
from ocp_resources.lm_eval_job import LMEvalJob
33
from ocp_resources.pod import Pod
4-
4+
from timeout_sampler import TimeoutSampler
55

66
from utilities.constants import Timeout
77
from utilities.infra import check_pod_status_in_time
88
from simple_logger.logger import get_logger
99

1010

1111
LOGGER = get_logger(name=__name__)
12+
MINIOADMIN: str = "minioadmin"
1213

1314

1415
def verify_lmevaljob_running(client: DynamicClient, lmevaljob: LMEvalJob) -> None:
@@ -29,3 +30,20 @@ def verify_lmevaljob_running(client: DynamicClient, lmevaljob: LMEvalJob) -> Non
2930
lmevaljob_pod.wait_for_status(status=lmevaljob_pod.Status.RUNNING, timeout=Timeout.TIMEOUT_10MIN)
3031

3132
check_pod_status_in_time(pod=lmevaljob_pod, status={lmevaljob_pod.Status.RUNNING, lmevaljob_pod.Status.SUCCEEDED})
33+
34+
35+
def wait_for_lmevaljob_state(
36+
lmevaljob: LMEvalJob, state: str, wait_timeout: int = Timeout.TIMEOUT_15MIN, sleep: int = 5
37+
) -> None:
38+
LOGGER.info(f"Checking LMEvalJob state for {lmevaljob.name} to be {state}")
39+
40+
sampler = TimeoutSampler(
41+
wait_timeout=wait_timeout,
42+
sleep=sleep,
43+
func=lambda: lmevaljob.instance.status.state,
44+
)
45+
46+
for sample in sampler:
47+
if sample:
48+
if sample == state:
49+
return

0 commit comments

Comments
 (0)