Skip to content

Commit 9977f3d

Browse files
committed
add multi-user jobs smoke test
1 parent 52af969 commit 9977f3d

File tree

1 file changed

+55
-8
lines changed

1 file changed

+55
-8
lines changed

tests/smoke_tests/test_api_server.py

+55-8
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,18 @@
22

33
from smoke_tests import smoke_tests_utils
44

5+
import sky
56
from sky.skylet import constants
67

78

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+
817
# ---------- Test multi-tenant ----------
918
def test_multi_tenant(generic_cloud: str):
1019
name = smoke_tests_utils.get_cluster_name()
@@ -13,14 +22,6 @@ def test_multi_tenant(generic_cloud: str):
1322
user_2 = 'abcdef13'
1423
user_2_name = 'user2'
1524

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-
2425
stop_test_cmds = [
2526
'echo "==== Test multi-tenant cluster stop ===="',
2627
*set_user(
@@ -94,3 +95,49 @@ def set_user(user_id: str, user_name: str,
9495
f'sky down -y {name}-1 {name}-2',
9596
)
9697
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

Comments
 (0)