2 Raise exceptions on osd coredumps or test err directories
7 from teuthology.orchestra import run
10 from teuthology import misc as teuthology
12 log = logging.getLogger(__name__)
14 @contextlib.contextmanager
15 def task(ctx, config):
17 Die if {testdir}/err exists or if an OSD dumps core
22 first_mon = teuthology.get_first_mon(ctx, config)
23 (mon,) = ctx.cluster.only(first_mon).remotes.iterkeys()
25 num_osds = teuthology.num_instances_of_type(ctx.cluster, 'osd')
26 log.info('num_osds is %s' % num_osds)
28 manager = ceph_manager.CephManager(
31 logger=log.getChild('ceph_manager'),
34 while len(manager.get_osd_status()['up']) < num_osds:
37 testdir = teuthology.get_testdir(ctx)
40 for i in range(num_osds):
41 (osd_remote,) = ctx.cluster.only('osd.%d' % i).remotes.iterkeys()
43 args = [ 'test', '-e', '{tdir}/err'.format(tdir=testdir) ],
47 exit_status = p.exitstatus
50 log.info("osd %d has an error" % i)
51 raise Exception("osd %d error" % i)
53 log_path = '/var/log/ceph/osd.%d.log' % (i)
57 'tail', '-1', log_path,
59 'grep', '-q', 'end dump'
64 exit_status = p.exitstatus
67 log.info("osd %d dumped core" % i)
68 raise Exception("osd %d dumped core" % i)