]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | """ |
2 | test_stress_watch task | |
3 | """ | |
4 | import contextlib | |
5 | import logging | |
7c673cae FG |
6 | |
7 | from teuthology.orchestra import run | |
e306af50 | 8 | from teuthology.task import proc_thrasher |
7c673cae FG |
9 | |
10 | log = logging.getLogger(__name__) | |
11 | ||
12 | ||
13 | @contextlib.contextmanager | |
14 | def task(ctx, config): | |
15 | """ | |
16 | Run test_stress_watch | |
17 | ||
18 | The config should be as follows: | |
19 | ||
20 | test_stress_watch: | |
21 | clients: [client list] | |
22 | ||
23 | example: | |
24 | ||
25 | tasks: | |
26 | - ceph: | |
27 | - test_stress_watch: | |
28 | clients: [client.0] | |
29 | - interactive: | |
30 | """ | |
31 | log.info('Beginning test_stress_watch...') | |
32 | assert isinstance(config, dict), \ | |
33 | "please list clients to run on" | |
34 | testwatch = {} | |
35 | ||
36 | remotes = [] | |
37 | ||
38 | for role in config.get('clients', ['client.0']): | |
f67539c2 | 39 | assert isinstance(role, str) |
7c673cae FG |
40 | PREFIX = 'client.' |
41 | assert role.startswith(PREFIX) | |
42 | id_ = role[len(PREFIX):] | |
9f95a23c | 43 | (remote,) = ctx.cluster.only(role).remotes.keys() |
7c673cae FG |
44 | remotes.append(remote) |
45 | ||
46 | args =['CEPH_CLIENT_ID={id_}'.format(id_=id_), | |
47 | 'CEPH_ARGS="{flags}"'.format(flags=config.get('flags', '')), | |
48 | 'daemon-helper', | |
49 | 'kill', | |
50 | 'multi_stress_watch foo foo' | |
51 | ] | |
52 | ||
53 | log.info("args are %s" % (args,)) | |
54 | ||
55 | proc = proc_thrasher.ProcThrasher({}, remote, | |
56 | args=[run.Raw(i) for i in args], | |
57 | logger=log.getChild('testwatch.{id}'.format(id=id_)), | |
58 | stdin=run.PIPE, | |
59 | wait=False | |
60 | ) | |
61 | proc.start() | |
62 | testwatch[id_] = proc | |
63 | ||
64 | try: | |
65 | yield | |
66 | finally: | |
67 | log.info('joining watch_notify_stress') | |
9f95a23c | 68 | for i in testwatch.values(): |
7c673cae | 69 | i.join() |