2
2
3
3
from smoke_tests import smoke_tests_utils
4
4
5
+ import sky
5
6
from sky .skylet import constants
6
7
7
8
9
+ def set_user (user_id : str , user_name : str , commands : List [str ]) -> List [str ]:
10
+ return [
11
+ f'export { constants .USER_ID_ENV_VAR } ="{ user_id } "; '
12
+ f'export { constants .USER_ENV_VAR } ="{ user_name } "; ' + cmd
13
+ for cmd in commands
14
+ ]
15
+
16
+
8
17
# ---------- Test multi-tenant ----------
9
18
def test_multi_tenant (generic_cloud : str ):
10
19
name = smoke_tests_utils .get_cluster_name ()
@@ -13,14 +22,6 @@ def test_multi_tenant(generic_cloud: str):
13
22
user_2 = 'abcdef13'
14
23
user_2_name = 'user2'
15
24
16
- def set_user (user_id : str , user_name : str ,
17
- commands : List [str ]) -> List [str ]:
18
- return [
19
- f'export { constants .USER_ID_ENV_VAR } ="{ user_id } "; '
20
- f'export { constants .USER_ENV_VAR } ="{ user_name } "; ' + cmd
21
- for cmd in commands
22
- ]
23
-
24
25
stop_test_cmds = [
25
26
'echo "==== Test multi-tenant cluster stop ===="' ,
26
27
* set_user (
@@ -94,3 +95,49 @@ def set_user(user_id: str, user_name: str,
94
95
f'sky down -y { name } -1 { name } -2' ,
95
96
)
96
97
smoke_tests_utils .run_one_test (test )
98
+
99
+
100
+ def test_multi_tenant_managed_jobs (generic_cloud : str ):
101
+ name = smoke_tests_utils .get_cluster_name ()
102
+ user_1 = 'abcdef12'
103
+ user_1_name = 'user1'
104
+ user_2 = 'abcdef13'
105
+ user_2_name = 'user2'
106
+
107
+ test = smoke_tests_utils .Test (
108
+ 'test_multi_tenant_managed_jobs' ,
109
+ [
110
+ 'echo "==== Test multi-tenant managed jobs ===="' ,
111
+ * set_user (user_1 , user_1_name , [
112
+ f'sky jobs launch -n { name } -1 --cloud { generic_cloud } --cpus 2+ tests/test_yamls/minimal.yaml -y' ,
113
+ f's=$(sky jobs queue) && echo "$s" && echo "$s" | grep { name } -1 | grep SUCCEEDED' ,
114
+ f's=$(sky jobs queue -u) && echo "$s" && echo "$s" | grep { user_1_name } | grep { name } -1 | grep SUCCEEDED' ,
115
+ ]), * set_user (user_2 , user_2_name , [
116
+ f's=$(sky jobs queue) && echo "$s" && echo "$s" | grep { name } -1 && exit 1 || true' ,
117
+ f's=$(sky jobs queue -u) && echo "$s" && echo "$s" | grep { user_1_name } | grep { name } -1 | grep SUCCEEDED' ,
118
+ f'sky jobs launch -n { name } -2 --cloud { generic_cloud } --cpus 2+ tests/test_yamls/minimal.yaml -y' ,
119
+ f's=$(sky jobs queue) && echo "$s" && echo "$s" | grep { name } -2 | grep SUCCEEDED' ,
120
+ f's=$(sky jobs queue -u) && echo "$s" && echo "$s" | grep { user_2_name } | grep { name } -2 | grep SUCCEEDED' ,
121
+ ]), 'echo "==== Test jobs controller cluster user ===="' ,
122
+ f's=$(sky status -u) && echo "$s" && echo "$s" | grep sky-jobs-controller- | grep -v { user_1_name } | grep -v { user_2_name } '
123
+ 'echo "==== Test controller down blocked by other users ===="' ,
124
+ * set_user (user_1 , user_1_name , [
125
+ f'sky jobs launch -n { name } -3 --cloud { generic_cloud } --cpus 2+ -y -d sleep 1000' ,
126
+ smoke_tests_utils .
127
+ get_cmd_wait_until_managed_job_status_contains_matching_job_name (
128
+ job_name = f'{ name } -3' ,
129
+ job_status = [
130
+ sky .ManagedJobStatus .PENDING ,
131
+ sky .ManagedJobStatus .SUBMITTED ,
132
+ sky .ManagedJobStatus .STARTING ,
133
+ sky .ManagedJobStatus .RUNNING
134
+ ],
135
+ timeout = 60 ),
136
+ ]), * set_user (user_2 , user_2_name , [
137
+ f'sky down sky-jobs-controller-\' *\' -y -p && exit 1 || true' ,
138
+ f'sky jobs cancel -y -n { name } -3' ,
139
+ ])
140
+ ],
141
+ f'sky jobs cancel -y -n { name } -1; sky jobs cancel -y -n { name } -2; sky jobs cancel -y -n { name } -3' ,
142
+ )
143
+ smoke_tests_utils .run_one_test (test )
0 commit comments