64
64
export_env ,
65
65
)
66
66
67
+ from tests .unit_test_support import (
68
+ createClusterWithConfig ,
69
+ createTestDDP ,
70
+ createDDPJob_no_cluster ,
71
+ createClusterConfig ,
72
+ createDDPJob_with_cluster
73
+ )
74
+
67
75
import openshift
68
76
from openshift .selector import Selector
69
77
import ray
@@ -170,19 +178,7 @@ def test_auth_coverage():
170
178
171
179
172
180
def test_config_creation ():
173
- config = ClusterConfiguration (
174
- name = "unit-test-cluster" ,
175
- namespace = "ns" ,
176
- num_workers = 2 ,
177
- min_cpus = 3 ,
178
- max_cpus = 4 ,
179
- min_memory = 5 ,
180
- max_memory = 6 ,
181
- num_gpus = 7 ,
182
- instascale = True ,
183
- machine_types = ["cpu.small" , "gpu.large" ],
184
- image_pull_secrets = ["unit-test-pull-secret" ],
185
- )
181
+ config = createClusterConfig ()
186
182
187
183
assert config .name == "unit-test-cluster" and config .namespace == "ns"
188
184
assert config .num_workers == 2
@@ -194,17 +190,15 @@ def test_config_creation():
194
190
assert config .instascale
195
191
assert config .machine_types == ["cpu.small" , "gpu.large" ]
196
192
assert config .image_pull_secrets == ["unit-test-pull-secret" ]
197
- return config
198
193
199
194
200
195
def test_cluster_creation ():
201
- cluster = Cluster ( test_config_creation () )
196
+ cluster = createClusterWithConfig ( )
202
197
assert cluster .app_wrapper_yaml == "unit-test-cluster.yaml"
203
198
assert cluster .app_wrapper_name == "unit-test-cluster"
204
199
assert filecmp .cmp (
205
200
"unit-test-cluster.yaml" , f"{ parent } /tests/test-case.yaml" , shallow = True
206
201
)
207
- return cluster
208
202
209
203
210
204
def test_default_cluster_creation (mocker ):
@@ -221,8 +215,6 @@ def test_default_cluster_creation(mocker):
221
215
assert cluster .app_wrapper_name == "unit-test-default-cluster"
222
216
assert cluster .config .namespace == "opendatahub"
223
217
224
- return cluster
225
-
226
218
227
219
def arg_check_apply_effect (group , version , namespace , plural , body , * args ):
228
220
assert group == "mcad.ibm.com"
@@ -254,7 +246,7 @@ def test_cluster_up_down(mocker):
254
246
"kubernetes.client.CustomObjectsApi.delete_namespaced_custom_object" ,
255
247
side_effect = arg_check_del_effect ,
256
248
)
257
- cluster = test_cluster_creation ()
249
+ cluster = cluster = createClusterWithConfig ()
258
250
cluster .up ()
259
251
cluster .down ()
260
252
@@ -322,7 +314,7 @@ def test_cluster_uris(mocker):
322
314
side_effect = uri_retreival ,
323
315
)
324
316
325
- cluster = test_cluster_creation ()
317
+ cluster = cluster = createClusterWithConfig ()
326
318
assert cluster .cluster_uri () == "ray://unit-test-cluster-head-svc.ns.svc:10001"
327
319
assert (
328
320
cluster .cluster_dashboard_uri ()
@@ -369,7 +361,7 @@ def test_ray_job_wrapping(mocker):
369
361
"kubernetes.client.CustomObjectsApi.list_namespaced_custom_object" ,
370
362
side_effect = uri_retreival ,
371
363
)
372
- cluster = test_cluster_creation ()
364
+ cluster = cluster = createClusterWithConfig ()
373
365
374
366
mocker .patch (
375
367
"ray.job_submission.JobSubmissionClient._check_connection_and_version_with_url" ,
@@ -1719,7 +1711,7 @@ def test_wait_ready(mocker, capsys):
1719
1711
1720
1712
def test_jobdefinition_coverage ():
1721
1713
abstract = JobDefinition ()
1722
- cluster = Cluster ( test_config_creation () )
1714
+ cluster = createClusterWithConfig ( )
1723
1715
abstract ._dry_run (cluster )
1724
1716
abstract .submit (cluster )
1725
1717
@@ -1731,22 +1723,7 @@ def test_job_coverage():
1731
1723
1732
1724
1733
1725
def test_DDPJobDefinition_creation ():
1734
- ddp = DDPJobDefinition (
1735
- script = "test.py" ,
1736
- m = None ,
1737
- script_args = ["test" ],
1738
- name = "test" ,
1739
- cpu = 1 ,
1740
- gpu = 0 ,
1741
- memMB = 1024 ,
1742
- h = None ,
1743
- j = "2x1" ,
1744
- env = {"test" : "test" },
1745
- max_retries = 0 ,
1746
- mounts = [],
1747
- rdzv_port = 29500 ,
1748
- scheduler_args = {"requirements" : "test" },
1749
- )
1726
+ ddp = createTestDDP ()
1750
1727
assert ddp .script == "test.py"
1751
1728
assert ddp .m == None
1752
1729
assert ddp .script_args == ["test" ]
@@ -1761,7 +1738,6 @@ def test_DDPJobDefinition_creation():
1761
1738
assert ddp .mounts == []
1762
1739
assert ddp .rdzv_port == 29500
1763
1740
assert ddp .scheduler_args == {"requirements" : "test" }
1764
- return ddp
1765
1741
1766
1742
1767
1743
def test_DDPJobDefinition_dry_run (mocker ):
@@ -1775,8 +1751,8 @@ def test_DDPJobDefinition_dry_run(mocker):
1775
1751
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri" ,
1776
1752
return_value = "" ,
1777
1753
)
1778
- ddp = test_DDPJobDefinition_creation ()
1779
- cluster = Cluster ( test_config_creation () )
1754
+ ddp = createTestDDP ()
1755
+ cluster = createClusterWithConfig ( )
1780
1756
ddp_job = ddp ._dry_run (cluster )
1781
1757
assert type (ddp_job ) == AppDryRunInfo
1782
1758
assert ddp_job ._fmt is not None
@@ -1811,7 +1787,7 @@ def test_DDPJobDefinition_dry_run_no_cluster(mocker):
1811
1787
return_value = "opendatahub" ,
1812
1788
)
1813
1789
1814
- ddp = test_DDPJobDefinition_creation ()
1790
+ ddp = createTestDDP ()
1815
1791
ddp .image = "fake-image"
1816
1792
ddp_job = ddp ._dry_run_no_cluster ()
1817
1793
assert type (ddp_job ) == AppDryRunInfo
@@ -1848,7 +1824,7 @@ def test_DDPJobDefinition_dry_run_no_resource_args(mocker):
1848
1824
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri" ,
1849
1825
return_value = "" ,
1850
1826
)
1851
- cluster = Cluster ( test_config_creation () )
1827
+ cluster = createClusterWithConfig ( )
1852
1828
ddp = DDPJobDefinition (
1853
1829
script = "test.py" ,
1854
1830
m = None ,
@@ -1884,7 +1860,7 @@ def test_DDPJobDefinition_dry_run_no_cluster_no_resource_args(mocker):
1884
1860
return_value = "opendatahub" ,
1885
1861
)
1886
1862
1887
- ddp = test_DDPJobDefinition_creation ()
1863
+ ddp = createTestDDP ()
1888
1864
try :
1889
1865
ddp ._dry_run_no_cluster ()
1890
1866
assert 0 == 1
@@ -1936,8 +1912,8 @@ def test_DDPJobDefinition_submit(mocker):
1936
1912
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri" ,
1937
1913
return_value = "fake-dashboard-uri" ,
1938
1914
)
1939
- ddp_def = test_DDPJobDefinition_creation ()
1940
- cluster = Cluster ( test_config_creation () )
1915
+ ddp_def = createTestDDP ()
1916
+ cluster = createClusterWithConfig ( )
1941
1917
mocker .patch (
1942
1918
"codeflare_sdk.job.jobs.get_current_namespace" ,
1943
1919
side_effect = "opendatahub" ,
@@ -1967,13 +1943,13 @@ def test_DDPJob_creation(mocker):
1967
1943
"codeflare_sdk.cluster.cluster.Cluster.cluster_dashboard_uri" ,
1968
1944
return_value = "fake-dashboard-uri" ,
1969
1945
)
1970
- ddp_def = test_DDPJobDefinition_creation ()
1971
- cluster = Cluster ( test_config_creation () )
1946
+ ddp_def = createTestDDP ()
1947
+ cluster = createClusterWithConfig ( )
1972
1948
mocker .patch (
1973
1949
"codeflare_sdk.job.jobs.torchx_runner.schedule" ,
1974
1950
return_value = "fake-dashboard-url" ,
1975
1951
) # a fake app_handle
1976
- ddp_job = DDPJob (ddp_def , cluster )
1952
+ ddp_job = createDDPJob_with_cluster (ddp_def , cluster )
1977
1953
assert type (ddp_job ) == DDPJob
1978
1954
assert type (ddp_job .job_definition ) == DDPJobDefinition
1979
1955
assert type (ddp_job .cluster ) == Cluster
@@ -1986,11 +1962,10 @@ def test_DDPJob_creation(mocker):
1986
1962
assert type (job_info ._app ) == AppDef
1987
1963
assert type (job_info ._cfg ) == type (dict ())
1988
1964
assert type (job_info ._scheduler ) == type (str ())
1989
- return ddp_job
1990
1965
1991
1966
1992
1967
def test_DDPJob_creation_no_cluster (mocker ):
1993
- ddp_def = test_DDPJobDefinition_creation ()
1968
+ ddp_def = createTestDDP ()
1994
1969
ddp_def .image = "fake-image"
1995
1970
mocker .patch (
1996
1971
"codeflare_sdk.job.jobs.get_current_namespace" ,
@@ -2000,7 +1975,7 @@ def test_DDPJob_creation_no_cluster(mocker):
2000
1975
"codeflare_sdk.job.jobs.torchx_runner.schedule" ,
2001
1976
return_value = "fake-app-handle" ,
2002
1977
) # a fake app_handle
2003
- ddp_job = DDPJob (ddp_def , None )
1978
+ ddp_job = createDDPJob_no_cluster (ddp_def , None )
2004
1979
assert type (ddp_job ) == DDPJob
2005
1980
assert type (ddp_job .job_definition ) == DDPJobDefinition
2006
1981
assert ddp_job .cluster == None
@@ -2013,11 +1988,14 @@ def test_DDPJob_creation_no_cluster(mocker):
2013
1988
assert type (job_info ._app ) == AppDef
2014
1989
assert type (job_info ._cfg ) == type (dict ())
2015
1990
assert type (job_info ._scheduler ) == type (str ())
2016
- return ddp_job
2017
1991
2018
1992
2019
1993
def test_DDPJob_status (mocker ):
2020
- ddp_job = test_DDPJob_creation (mocker )
1994
+ # Setup the neccesary mock patches
1995
+ test_DDPJob_creation (mocker )
1996
+ ddp_def = createTestDDP ()
1997
+ cluster = createClusterWithConfig ()
1998
+ ddp_job = createDDPJob_with_cluster (ddp_def , cluster )
2021
1999
mocker .patch (
2022
2000
"codeflare_sdk.job.jobs.torchx_runner.status" , return_value = "fake-status"
2023
2001
)
@@ -2027,7 +2005,11 @@ def test_DDPJob_status(mocker):
2027
2005
2028
2006
2029
2007
def test_DDPJob_logs (mocker ):
2030
- ddp_job = test_DDPJob_creation (mocker )
2008
+ # Setup the neccesary mock patches
2009
+ test_DDPJob_creation (mocker )
2010
+ ddp_def = createTestDDP ()
2011
+ cluster = createClusterWithConfig ()
2012
+ ddp_job = createDDPJob_with_cluster (ddp_def , cluster )
2031
2013
mocker .patch (
2032
2014
"codeflare_sdk.job.jobs.torchx_runner.log_lines" , return_value = "fake-logs"
2033
2015
)
@@ -2041,7 +2023,11 @@ def arg_check_side_effect(*args):
2041
2023
2042
2024
2043
2025
def test_DDPJob_cancel (mocker ):
2044
- ddp_job = test_DDPJob_creation_no_cluster (mocker )
2026
+ # Setup the neccesary mock patches
2027
+ test_DDPJob_creation_no_cluster (mocker )
2028
+ ddp_def = createTestDDP ()
2029
+ ddp_def .image = "fake-image"
2030
+ ddp_job = createDDPJob_no_cluster (ddp_def , None )
2045
2031
mocker .patch (
2046
2032
"openshift.get_project_name" ,
2047
2033
return_value = "opendatahub" ,
0 commit comments