Skip to content

Commit 74487b6

Browse files
committed
add multi-user jobs smoke test
1 parent 52af969 commit 74487b6

File tree

1 file changed

+57
-8
lines changed

1 file changed

+57
-8
lines changed

tests/smoke_tests/test_api_server.py

Lines changed: 57 additions & 8 deletions
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,51 @@ 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+
]),
122+
'echo "==== Test jobs controller cluster user ===="',
123+
f's=$(sky status -u) && echo "$s" && echo "$s" | grep sky-jobs-controller- | grep -v {user_1_name} | grep -v {user_2_name}',
124+
'echo "==== Test controller down blocked by other users ===="',
125+
*set_user(user_1, user_1_name, [
126+
f'sky jobs launch -n {name}-3 --cloud {generic_cloud} --cpus 2+ -y -d sleep 1000',
127+
smoke_tests_utils.
128+
get_cmd_wait_until_managed_job_status_contains_matching_job_name(
129+
job_name=f'{name}-3',
130+
job_status=[
131+
sky.ManagedJobStatus.PENDING,
132+
sky.ManagedJobStatus.SUBMITTED,
133+
sky.ManagedJobStatus.STARTING,
134+
sky.ManagedJobStatus.RUNNING
135+
],
136+
timeout=60),
137+
]),
138+
*set_user(user_2, user_2_name, [
139+
f'controller=$(sky status -u | grep sky-jobs-controller- | awk \'{{print $1}}\') && echo "$controller" && echo delete | sky down "$controller" && exit 1 || true',
140+
f'sky jobs cancel -y -n {name}-3',
141+
])
142+
],
143+
f'sky jobs cancel -y -n {name}-1; sky jobs cancel -y -n {name}-2; sky jobs cancel -y -n {name}-3',
144+
)
145+
smoke_tests_utils.run_one_test(test)

0 commit comments

Comments
 (0)