Skip to content

Commit 48459da

Browse files
committed
Updated unit tests
1 parent 6c91bcd commit 48459da

File tree

1 file changed

+89
-16
lines changed

1 file changed

+89
-16
lines changed

tests/unit_test.py

+89-16
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,13 @@ def test_config_creation():
197197
return config
198198

199199

200-
def test_cluster_creation():
200+
def test_cluster_creation(mocker):
201+
mocker.patch(
202+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
203+
return_value={"spec": {"domain": ""}},
204+
)
201205
cluster = Cluster(test_config_creation())
206+
mocker.patch("kubernetes.config.load_kube_config", return_value="ignore")
202207
assert cluster.app_wrapper_yaml == "unit-test-cluster.yaml"
203208
assert cluster.app_wrapper_name == "unit-test-cluster"
204209
assert filecmp.cmp(
@@ -212,6 +217,10 @@ def test_default_cluster_creation(mocker):
212217
"codeflare_sdk.cluster.cluster.get_current_namespace",
213218
return_value="opendatahub",
214219
)
220+
mocker.patch(
221+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
222+
return_value={"spec": {"domain": ""}},
223+
)
215224
default_config = ClusterConfiguration(
216225
name="unit-test-default-cluster",
217226
)
@@ -254,7 +263,11 @@ def test_cluster_up_down(mocker):
254263
"kubernetes.client.CustomObjectsApi.delete_namespaced_custom_object",
255264
side_effect=arg_check_del_effect,
256265
)
257-
cluster = test_cluster_creation()
266+
mocker.patch(
267+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
268+
return_value={"spec": {"domain": ""}},
269+
)
270+
cluster = test_cluster_creation(mocker)
258271
cluster.up()
259272
cluster.down()
260273

@@ -318,11 +331,15 @@ def uri_retreival(group, version, namespace, plural, *args):
318331
def test_cluster_uris(mocker):
319332
mocker.patch("kubernetes.config.load_kube_config", return_value="ignore")
320333
mocker.patch(
321-
"kubernetes.client.CustomObjectsApi.list_namespaced_custom_object",
322-
side_effect=uri_retreival,
334+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
335+
return_value={"spec": {"domain": ""}},
336+
)
337+
mocker.patch(
338+
"kubernetes.client.NetworkingV1Api.list_namespaced_ingress",
339+
return_value=ingress_retrieval(),
323340
)
324341

325-
cluster = test_cluster_creation()
342+
cluster = test_cluster_creation(mocker)
326343
assert cluster.cluster_uri() == "ray://unit-test-cluster-head-svc.ns.svc:10001"
327344
assert (
328345
cluster.cluster_dashboard_uri()
@@ -363,13 +380,38 @@ def ray_addr(self, *args):
363380
return self._address
364381

365382

383+
def ingress_retrieval():
384+
mock_ingress = client.V1Ingress(
385+
metadata={"name": "mock-ingress-1"},
386+
spec={
387+
"rules": [
388+
{
389+
"host": "ray-dashboard-unit-test-cluster-ns.apps.cluster.awsroute.org",
390+
"http": {
391+
"paths": [
392+
{
393+
"path": "/",
394+
"backend": {
395+
"service_name": "unit-test-cluster-head-svc"
396+
},
397+
}
398+
]
399+
},
400+
}
401+
]
402+
},
403+
)
404+
mock_ingress_list = client.V1IngressList(items=[mock_ingress])
405+
return mock_ingress_list
406+
407+
366408
def test_ray_job_wrapping(mocker):
367409
mocker.patch("kubernetes.config.load_kube_config", return_value="ignore")
368410
mocker.patch(
369-
"kubernetes.client.CustomObjectsApi.list_namespaced_custom_object",
370-
side_effect=uri_retreival,
411+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
412+
return_value={"spec": {"domain": ""}},
371413
)
372-
cluster = test_cluster_creation()
414+
cluster = test_cluster_creation(mocker)
373415

374416
mocker.patch(
375417
"ray.job_submission.JobSubmissionClient._check_connection_and_version_with_url",
@@ -455,6 +497,10 @@ def test_print_appwrappers(capsys):
455497

456498

457499
def test_ray_details(mocker, capsys):
500+
mocker.patch(
501+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
502+
return_value={"spec": {"domain": ""}},
503+
)
458504
ray1 = RayCluster(
459505
name="raytest1",
460506
status=RayClusterStatus.READY,
@@ -1512,6 +1558,10 @@ def get_aw_obj(group, version, namespace, plural):
15121558

15131559
def test_get_cluster(mocker):
15141560
mocker.patch("kubernetes.config.load_kube_config", return_value="ignore")
1561+
mocker.patch(
1562+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
1563+
return_value={"spec": {"domain": ""}},
1564+
)
15151565
mocker.patch(
15161566
"kubernetes.client.CustomObjectsApi.list_namespaced_custom_object",
15171567
side_effect=get_ray_obj,
@@ -1540,6 +1590,9 @@ def test_list_clusters(mocker, capsys):
15401590
"kubernetes.client.CustomObjectsApi.list_namespaced_custom_object",
15411591
side_effect=get_obj_none,
15421592
)
1593+
mocker.patch(
1594+
"kubernetes.client.NetworkingV1Api.list_namespaced_ingress",
1595+
)
15431596
list_all_clusters("ns")
15441597
captured = capsys.readouterr()
15451598
assert captured.out == (
@@ -1612,6 +1665,10 @@ def test_list_queue(mocker, capsys):
16121665

16131666
def test_cluster_status(mocker):
16141667
mocker.patch("kubernetes.config.load_kube_config", return_value="ignore")
1668+
mocker.patch(
1669+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
1670+
return_value={"spec": {"domain": ""}},
1671+
)
16151672
fake_aw = AppWrapper(
16161673
"test", AppWrapperStatus.FAILED, can_run=True, job_state="unused"
16171674
)
@@ -1690,6 +1747,10 @@ def test_cluster_status(mocker):
16901747

16911748

16921749
def test_wait_ready(mocker, capsys):
1750+
mocker.patch(
1751+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
1752+
return_value={"spec": {"domain": ""}},
1753+
)
16931754
mocker.patch("kubernetes.config.load_kube_config", return_value="ignore")
16941755
mocker.patch("codeflare_sdk.cluster.cluster._app_wrapper_status", return_value=None)
16951756
mocker.patch("codeflare_sdk.cluster.cluster._ray_cluster_status", return_value=None)
@@ -1717,7 +1778,11 @@ def test_wait_ready(mocker, capsys):
17171778
)
17181779

17191780

1720-
def test_jobdefinition_coverage():
1781+
def test_jobdefinition_coverage(mocker):
1782+
mocker.patch(
1783+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
1784+
return_value={"spec": {"domain": ""}},
1785+
)
17211786
abstract = JobDefinition()
17221787
cluster = Cluster(test_config_creation())
17231788
abstract._dry_run(cluster)
@@ -1730,7 +1795,11 @@ def test_job_coverage():
17301795
abstract.logs()
17311796

17321797

1733-
def test_DDPJobDefinition_creation():
1798+
def test_DDPJobDefinition_creation(mocker):
1799+
mocker.patch(
1800+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
1801+
return_value={"spec": {"domain": ""}},
1802+
)
17341803
ddp = DDPJobDefinition(
17351804
script="test.py",
17361805
m=None,
@@ -1775,7 +1844,7 @@ def test_DDPJobDefinition_dry_run(mocker):
17751844
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri",
17761845
return_value="",
17771846
)
1778-
ddp = test_DDPJobDefinition_creation()
1847+
ddp = test_DDPJobDefinition_creation(mocker)
17791848
cluster = Cluster(test_config_creation())
17801849
ddp_job = ddp._dry_run(cluster)
17811850
assert type(ddp_job) == AppDryRunInfo
@@ -1811,7 +1880,7 @@ def test_DDPJobDefinition_dry_run_no_cluster(mocker):
18111880
return_value="opendatahub",
18121881
)
18131882

1814-
ddp = test_DDPJobDefinition_creation()
1883+
ddp = test_DDPJobDefinition_creation(mocker)
18151884
ddp.image = "fake-image"
18161885
ddp_job = ddp._dry_run_no_cluster()
18171886
assert type(ddp_job) == AppDryRunInfo
@@ -1844,6 +1913,10 @@ def test_DDPJobDefinition_dry_run_no_resource_args(mocker):
18441913
Test that the dry run correctly gets resources from the cluster object
18451914
when the job definition does not specify resources.
18461915
"""
1916+
mocker.patch(
1917+
"kubernetes.client.CustomObjectsApi.get_cluster_custom_object",
1918+
return_value={"spec": {"domain": ""}},
1919+
)
18471920
mocker.patch(
18481921
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri",
18491922
return_value="",
@@ -1884,7 +1957,7 @@ def test_DDPJobDefinition_dry_run_no_cluster_no_resource_args(mocker):
18841957
return_value="opendatahub",
18851958
)
18861959

1887-
ddp = test_DDPJobDefinition_creation()
1960+
ddp = test_DDPJobDefinition_creation(mocker)
18881961
try:
18891962
ddp._dry_run_no_cluster()
18901963
assert 0 == 1
@@ -1936,7 +2009,7 @@ def test_DDPJobDefinition_submit(mocker):
19362009
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri",
19372010
return_value="fake-dashboard-uri",
19382011
)
1939-
ddp_def = test_DDPJobDefinition_creation()
2012+
ddp_def = test_DDPJobDefinition_creation(mocker)
19402013
cluster = Cluster(test_config_creation())
19412014
mocker.patch(
19422015
"codeflare_sdk.job.jobs.get_current_namespace",
@@ -1967,7 +2040,7 @@ def test_DDPJob_creation(mocker):
19672040
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri",
19682041
return_value="fake-dashboard-uri",
19692042
)
1970-
ddp_def = test_DDPJobDefinition_creation()
2043+
ddp_def = test_DDPJobDefinition_creation(mocker)
19712044
cluster = Cluster(test_config_creation())
19722045
mocker.patch(
19732046
"codeflare_sdk.job.jobs.torchx_runner.schedule",
@@ -1990,7 +2063,7 @@ def test_DDPJob_creation(mocker):
19902063

19912064

19922065
def test_DDPJob_creation_no_cluster(mocker):
1993-
ddp_def = test_DDPJobDefinition_creation()
2066+
ddp_def = test_DDPJobDefinition_creation(mocker)
19942067
ddp_def.image = "fake-image"
19952068
mocker.patch(
19962069
"codeflare_sdk.job.jobs.get_current_namespace",

0 commit comments

Comments
 (0)