Skip to content

Commit 16cd5b7

Browse files
committed
testsuite: cover local-only join/leave
Problem: there is no test coverage that demonstrates that groups.join and groups.leave RPCs fail with a helpful error when they are used remotely. Add a couple tests to t0027-broker-groups.t.
1 parent e5ee200 commit 16cd5b7

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

t/scripts/groups.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,16 +120,25 @@ def join(args):
120120
"""
121121
h = flux.Flux()
122122

123-
h.rpc("groups.join", {"name": args.name}).get()
123+
h.rpc("groups.join", {"name": args.name}, nodeid=args.rank).get()
124124
if args.dubjoin:
125-
h.rpc("groups.join", {"name": args.name}).get()
125+
h.rpc("groups.join", {"name": args.name}, nodeid=args.rank).get()
126126

127127
if args.leave:
128-
h.rpc("groups.leave", {"name": args.name}).get()
128+
h.rpc("groups.leave", {"name": args.name}, nodeid=args.rank).get()
129129
if args.dubleave:
130130
h.rpc("groups.leave", {"name": args.name}).get()
131131

132132

133+
def leave(args):
134+
"""
135+
Leave group.
136+
"""
137+
h = flux.Flux()
138+
139+
h.rpc("groups.leave", {"name": args.name}, nodeid=args.rank).get()
140+
141+
133142
LOGGER = logging.getLogger("groups")
134143

135144

@@ -183,15 +192,28 @@ def main():
183192
# join
184193
join_parser = subparsers.add_parser(
185194
"join",
186-
usage="groups join [--dubjoin] [--leave] [--dubleave] name",
195+
usage="groups join [--rank N] [--dubjoin] [--leave] [--dubleave] name",
187196
formatter_class=flux.util.help_formatter(),
188197
)
189198
join_parser.add_argument("--dubjoin", action="store_true")
190199
join_parser.add_argument("--leave", action="store_true")
191200
join_parser.add_argument("--dubleave", action="store_true")
201+
join_parser.add_argument("--rank", type=int, default=flux.constants.FLUX_NODEID_ANY)
192202
join_parser.add_argument("name")
193203
join_parser.set_defaults(func=join)
194204

205+
# leave
206+
leave_parser = subparsers.add_parser(
207+
"leave",
208+
usage="groups leave [--rank N] name",
209+
formatter_class=flux.util.help_formatter(),
210+
)
211+
leave_parser.add_argument(
212+
"--rank", type=int, default=flux.constants.FLUX_NODEID_ANY
213+
)
214+
leave_parser.add_argument("name")
215+
leave_parser.set_defaults(func=leave)
216+
195217
args = parser.parse_args()
196218
args.func(args)
197219

t/t0027-broker-groups.t

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ test_expect_success 'groups.get on rank > 0 fails with reasonable error' '
3030
grep "only available on rank 0" test0.err
3131
'
3232

33+
test_expect_success 'nonlocal groups.join fails with appropriate error' '
34+
test_must_fail ${GROUPSCMD} join --rank 1 foo 2>rmtjoin.err &&
35+
grep "restricted to the local broker" rmtjoin.err
36+
'
37+
test_expect_success 'nonlocal groups.leave fails with appropriate error' '
38+
test_must_fail ${GROUPSCMD} leave --rank 1 foo 2>rmtleave.err &&
39+
grep "restricted to the local broker" rmtleave.err
40+
'
41+
3342
badjoin() {
3443
flux python -c "import flux; print(flux.Flux().rpc(\"groups.join\").get())"
3544
}

0 commit comments

Comments
 (0)