66
66
export_env ,
67
67
)
68
68
69
+ from tests .unit_test_support import (
70
+ createClusterWithConfig ,
71
+ createTestDDP ,
72
+ createDDPJob_no_cluster ,
73
+ createClusterConfig ,
74
+ createDDPJob_with_cluster
75
+ )
76
+
69
77
import openshift
70
78
from openshift .selector import Selector
71
79
import ray
@@ -216,20 +224,7 @@ def test_auth_coverage():
216
224
217
225
218
226
def test_config_creation ():
219
- config = ClusterConfiguration (
220
- name = "unit-test-cluster" ,
221
- namespace = "ns" ,
222
- num_workers = 2 ,
223
- min_cpus = 3 ,
224
- max_cpus = 4 ,
225
- min_memory = 5 ,
226
- max_memory = 6 ,
227
- num_gpus = 7 ,
228
- instascale = True ,
229
- machine_types = ["cpu.small" , "gpu.large" ],
230
- image_pull_secrets = ["unit-test-pull-secret" ],
231
- dispatch_priority = "default" ,
232
- )
227
+ config = createClusterConfig ()
233
228
234
229
assert config .name == "unit-test-cluster" and config .namespace == "ns"
235
230
assert config .num_workers == 2
@@ -242,17 +237,15 @@ def test_config_creation():
242
237
assert config .machine_types == ["cpu.small" , "gpu.large" ]
243
238
assert config .image_pull_secrets == ["unit-test-pull-secret" ]
244
239
assert config .dispatch_priority == "default"
245
- return config
246
240
247
241
248
242
def test_cluster_creation ():
249
- cluster = Cluster ( test_config_creation () )
243
+ cluster = createClusterWithConfig ( )
250
244
assert cluster .app_wrapper_yaml == "unit-test-cluster.yaml"
251
245
assert cluster .app_wrapper_name == "unit-test-cluster"
252
246
assert filecmp .cmp (
253
247
"unit-test-cluster.yaml" , f"{ parent } /tests/test-case.yaml" , shallow = True
254
248
)
255
- return cluster
256
249
257
250
258
251
def test_default_cluster_creation (mocker ):
@@ -269,8 +262,6 @@ def test_default_cluster_creation(mocker):
269
262
assert cluster .app_wrapper_name == "unit-test-default-cluster"
270
263
assert cluster .config .namespace == "opendatahub"
271
264
272
- return cluster
273
-
274
265
275
266
def arg_check_apply_effect (group , version , namespace , plural , body , * args ):
276
267
assert group == "mcad.ibm.com"
@@ -306,7 +297,7 @@ def test_cluster_up_down(mocker):
306
297
"kubernetes.client.CustomObjectsApi.list_cluster_custom_object" ,
307
298
return_value = {"items" : []},
308
299
)
309
- cluster = test_cluster_creation ()
300
+ cluster = cluster = createClusterWithConfig ()
310
301
cluster .up ()
311
302
cluster .down ()
312
303
@@ -374,7 +365,7 @@ def test_cluster_uris(mocker):
374
365
side_effect = uri_retreival ,
375
366
)
376
367
377
- cluster = test_cluster_creation ()
368
+ cluster = cluster = createClusterWithConfig ()
378
369
assert cluster .cluster_uri () == "ray://unit-test-cluster-head-svc.ns.svc:10001"
379
370
assert (
380
371
cluster .cluster_dashboard_uri ()
@@ -421,7 +412,7 @@ def test_ray_job_wrapping(mocker):
421
412
"kubernetes.client.CustomObjectsApi.list_namespaced_custom_object" ,
422
413
side_effect = uri_retreival ,
423
414
)
424
- cluster = test_cluster_creation ()
415
+ cluster = cluster = createClusterWithConfig ()
425
416
426
417
mocker .patch (
427
418
"ray.job_submission.JobSubmissionClient._check_connection_and_version_with_url" ,
@@ -1771,7 +1762,7 @@ def test_wait_ready(mocker, capsys):
1771
1762
1772
1763
def test_jobdefinition_coverage ():
1773
1764
abstract = JobDefinition ()
1774
- cluster = Cluster ( test_config_creation () )
1765
+ cluster = createClusterWithConfig ( )
1775
1766
abstract ._dry_run (cluster )
1776
1767
abstract .submit (cluster )
1777
1768
@@ -1783,22 +1774,7 @@ def test_job_coverage():
1783
1774
1784
1775
1785
1776
def test_DDPJobDefinition_creation ():
1786
- ddp = DDPJobDefinition (
1787
- script = "test.py" ,
1788
- m = None ,
1789
- script_args = ["test" ],
1790
- name = "test" ,
1791
- cpu = 1 ,
1792
- gpu = 0 ,
1793
- memMB = 1024 ,
1794
- h = None ,
1795
- j = "2x1" ,
1796
- env = {"test" : "test" },
1797
- max_retries = 0 ,
1798
- mounts = [],
1799
- rdzv_port = 29500 ,
1800
- scheduler_args = {"requirements" : "test" },
1801
- )
1777
+ ddp = createTestDDP ()
1802
1778
assert ddp .script == "test.py"
1803
1779
assert ddp .m == None
1804
1780
assert ddp .script_args == ["test" ]
@@ -1813,7 +1789,6 @@ def test_DDPJobDefinition_creation():
1813
1789
assert ddp .mounts == []
1814
1790
assert ddp .rdzv_port == 29500
1815
1791
assert ddp .scheduler_args == {"requirements" : "test" }
1816
- return ddp
1817
1792
1818
1793
1819
1794
def test_DDPJobDefinition_dry_run (mocker ):
@@ -1827,8 +1802,8 @@ def test_DDPJobDefinition_dry_run(mocker):
1827
1802
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri" ,
1828
1803
return_value = "" ,
1829
1804
)
1830
- ddp = test_DDPJobDefinition_creation ()
1831
- cluster = Cluster ( test_config_creation () )
1805
+ ddp = createTestDDP ()
1806
+ cluster = createClusterWithConfig ( )
1832
1807
ddp_job = ddp ._dry_run (cluster )
1833
1808
assert type (ddp_job ) == AppDryRunInfo
1834
1809
assert ddp_job ._fmt is not None
@@ -1863,7 +1838,7 @@ def test_DDPJobDefinition_dry_run_no_cluster(mocker):
1863
1838
return_value = "opendatahub" ,
1864
1839
)
1865
1840
1866
- ddp = test_DDPJobDefinition_creation ()
1841
+ ddp = createTestDDP ()
1867
1842
ddp .image = "fake-image"
1868
1843
ddp_job = ddp ._dry_run_no_cluster ()
1869
1844
assert type (ddp_job ) == AppDryRunInfo
@@ -1900,7 +1875,7 @@ def test_DDPJobDefinition_dry_run_no_resource_args(mocker):
1900
1875
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri" ,
1901
1876
return_value = "" ,
1902
1877
)
1903
- cluster = Cluster ( test_config_creation () )
1878
+ cluster = createClusterWithConfig ( )
1904
1879
ddp = DDPJobDefinition (
1905
1880
script = "test.py" ,
1906
1881
m = None ,
@@ -1936,7 +1911,7 @@ def test_DDPJobDefinition_dry_run_no_cluster_no_resource_args(mocker):
1936
1911
return_value = "opendatahub" ,
1937
1912
)
1938
1913
1939
- ddp = test_DDPJobDefinition_creation ()
1914
+ ddp = createTestDDP ()
1940
1915
try :
1941
1916
ddp ._dry_run_no_cluster ()
1942
1917
assert 0 == 1
@@ -1988,8 +1963,8 @@ def test_DDPJobDefinition_submit(mocker):
1988
1963
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri" ,
1989
1964
return_value = "fake-dashboard-uri" ,
1990
1965
)
1991
- ddp_def = test_DDPJobDefinition_creation ()
1992
- cluster = Cluster ( test_config_creation () )
1966
+ ddp_def = createTestDDP ()
1967
+ cluster = createClusterWithConfig ( )
1993
1968
mocker .patch (
1994
1969
"codeflare_sdk.job.jobs.get_current_namespace" ,
1995
1970
side_effect = "opendatahub" ,
@@ -2019,13 +1994,13 @@ def test_DDPJob_creation(mocker):
2019
1994
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri" ,
2020
1995
return_value = "fake-dashboard-uri" ,
2021
1996
)
2022
- ddp_def = test_DDPJobDefinition_creation ()
2023
- cluster = Cluster ( test_config_creation () )
1997
+ ddp_def = createTestDDP ()
1998
+ cluster = createClusterWithConfig ( )
2024
1999
mocker .patch (
2025
2000
"codeflare_sdk.job.jobs.torchx_runner.schedule" ,
2026
2001
return_value = "fake-dashboard-url" ,
2027
2002
) # a fake app_handle
2028
- ddp_job = DDPJob (ddp_def , cluster )
2003
+ ddp_job = createDDPJob_with_cluster (ddp_def , cluster )
2029
2004
assert type (ddp_job ) == DDPJob
2030
2005
assert type (ddp_job .job_definition ) == DDPJobDefinition
2031
2006
assert type (ddp_job .cluster ) == Cluster
@@ -2038,11 +2013,10 @@ def test_DDPJob_creation(mocker):
2038
2013
assert type (job_info ._app ) == AppDef
2039
2014
assert type (job_info ._cfg ) == type (dict ())
2040
2015
assert type (job_info ._scheduler ) == type (str ())
2041
- return ddp_job
2042
2016
2043
2017
2044
2018
def test_DDPJob_creation_no_cluster (mocker ):
2045
- ddp_def = test_DDPJobDefinition_creation ()
2019
+ ddp_def = createTestDDP ()
2046
2020
ddp_def .image = "fake-image"
2047
2021
mocker .patch (
2048
2022
"codeflare_sdk.job.jobs.get_current_namespace" ,
@@ -2052,7 +2026,7 @@ def test_DDPJob_creation_no_cluster(mocker):
2052
2026
"codeflare_sdk.job.jobs.torchx_runner.schedule" ,
2053
2027
return_value = "fake-app-handle" ,
2054
2028
) # a fake app_handle
2055
- ddp_job = DDPJob (ddp_def , None )
2029
+ ddp_job = createDDPJob_no_cluster (ddp_def , None )
2056
2030
assert type (ddp_job ) == DDPJob
2057
2031
assert type (ddp_job .job_definition ) == DDPJobDefinition
2058
2032
assert ddp_job .cluster == None
@@ -2065,11 +2039,14 @@ def test_DDPJob_creation_no_cluster(mocker):
2065
2039
assert type (job_info ._app ) == AppDef
2066
2040
assert type (job_info ._cfg ) == type (dict ())
2067
2041
assert type (job_info ._scheduler ) == type (str ())
2068
- return ddp_job
2069
2042
2070
2043
2071
2044
def test_DDPJob_status (mocker ):
2072
- ddp_job = test_DDPJob_creation (mocker )
2045
+ # Setup the neccesary mock patches
2046
+ test_DDPJob_creation (mocker )
2047
+ ddp_def = createTestDDP ()
2048
+ cluster = createClusterWithConfig ()
2049
+ ddp_job = createDDPJob_with_cluster (ddp_def , cluster )
2073
2050
mocker .patch (
2074
2051
"codeflare_sdk.job.jobs.torchx_runner.status" , return_value = "fake-status"
2075
2052
)
@@ -2079,7 +2056,11 @@ def test_DDPJob_status(mocker):
2079
2056
2080
2057
2081
2058
def test_DDPJob_logs (mocker ):
2082
- ddp_job = test_DDPJob_creation (mocker )
2059
+ # Setup the neccesary mock patches
2060
+ test_DDPJob_creation (mocker )
2061
+ ddp_def = createTestDDP ()
2062
+ cluster = createClusterWithConfig ()
2063
+ ddp_job = createDDPJob_with_cluster (ddp_def , cluster )
2083
2064
mocker .patch (
2084
2065
"codeflare_sdk.job.jobs.torchx_runner.log_lines" , return_value = "fake-logs"
2085
2066
)
@@ -2093,7 +2074,11 @@ def arg_check_side_effect(*args):
2093
2074
2094
2075
2095
2076
def test_DDPJob_cancel (mocker ):
2096
- ddp_job = test_DDPJob_creation_no_cluster (mocker )
2077
+ # Setup the neccesary mock patches
2078
+ test_DDPJob_creation_no_cluster (mocker )
2079
+ ddp_def = createTestDDP ()
2080
+ ddp_def .image = "fake-image"
2081
+ ddp_job = createDDPJob_no_cluster (ddp_def , None )
2097
2082
mocker .patch (
2098
2083
"openshift.get_project_name" ,
2099
2084
return_value = "opendatahub" ,
0 commit comments