]> git.proxmox.com Git - ceph.git/blob - ceph/qa/tasks/mgr/test_crash.py
149221e9f6075403e77b24359019d3cff99ac7fa
[ceph.git] / ceph / qa / tasks / mgr / test_crash.py
1
2
3 from mgr_test_case import MgrTestCase
4
5 import json
6 import logging
7 import datetime
8
9 log = logging.getLogger(__name__)
10 UUID = 'd5775432-0742-44a3-a435-45095e32e6b1'
11 DATEFMT = '%Y-%m-%d %H:%M:%S.%f'
12
13
14 class TestCrash(MgrTestCase):
15
16 def setUp(self):
17 super(TestCrash, self).setUp()
18 self.setup_mgrs()
19 self._load_module('crash')
20
21 # Whip up some crash data
22 self.crashes = dict()
23 now = datetime.datetime.utcnow()
24
25 for i in (0, 1, 3, 4, 8):
26 timestamp = now - datetime.timedelta(days=i)
27 timestamp = timestamp.strftime(DATEFMT) + 'Z'
28 crash_id = '_'.join((timestamp, UUID)).replace(' ', '_')
29 self.crashes[crash_id] = {
30 'crash_id': crash_id, 'timestamp': timestamp,
31 }
32
33 self.assertEqual(
34 0,
35 self.mgr_cluster.mon_manager.raw_cluster_cmd_result(
36 'crash', 'post', '-i', '-',
37 stdin=json.dumps(self.crashes[crash_id]),
38 )
39 )
40
41 retstr = self.mgr_cluster.mon_manager.raw_cluster_cmd(
42 'crash', 'ls',
43 )
44 log.warning("setUp: crash ls returns %s" % retstr)
45
46 self.oldest_crashid = crash_id
47
48 def tearDown(self):
49 for crash in self.crashes.values():
50 self.mgr_cluster.mon_manager.raw_cluster_cmd_result(
51 'crash', 'rm', crash['crash_id']
52 )
53
54 def test_info(self):
55 for crash in self.crashes.values():
56 log.warning('test_info: crash %s' % crash)
57 retstr = self.mgr_cluster.mon_manager.raw_cluster_cmd(
58 'crash', 'ls'
59 )
60 log.warning('ls output: %s' % retstr)
61 retstr = self.mgr_cluster.mon_manager.raw_cluster_cmd(
62 'crash', 'info', crash['crash_id'],
63 )
64 log.warning('crash info output: %s' % retstr)
65 crashinfo = json.loads(retstr)
66 self.assertIn('crash_id', crashinfo)
67 self.assertIn('timestamp', crashinfo)
68
69 def test_ls(self):
70 retstr = self.mgr_cluster.mon_manager.raw_cluster_cmd(
71 'crash', 'ls',
72 )
73 for crash in self.crashes.values():
74 self.assertIn(crash['crash_id'], retstr)
75
76 def test_rm(self):
77 crashid = self.crashes.keys()[0]
78 self.assertEqual(
79 0,
80 self.mgr_cluster.mon_manager.raw_cluster_cmd_result(
81 'crash', 'rm', crashid,
82 )
83 )
84
85 retstr = self.mgr_cluster.mon_manager.raw_cluster_cmd(
86 'crash', 'ls',
87 )
88 self.assertNotIn(crashid, retstr)
89
90 def test_stat(self):
91 retstr = self.mgr_cluster.mon_manager.raw_cluster_cmd(
92 'crash', 'stat',
93 )
94 self.assertIn('5 crashes recorded', retstr)
95 self.assertIn('4 older than 1 days old:', retstr)
96 self.assertIn('3 older than 3 days old:', retstr)
97 self.assertIn('1 older than 7 days old:', retstr)
98
99 def test_prune(self):
100 self.assertEqual(
101 0,
102 self.mgr_cluster.mon_manager.raw_cluster_cmd_result(
103 'crash', 'prune', '5'
104 )
105 )
106 retstr = self.mgr_cluster.mon_manager.raw_cluster_cmd(
107 'crash', 'ls',
108 )
109 self.assertNotIn(self.oldest_crashid, retstr)