]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | |
2 | ||
e306af50 | 3 | from tasks.mgr.mgr_test_case import MgrTestCase |
11fdf7f2 TL |
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): | |
9f95a23c | 17 | super(TestCrash, self).setUp() |
11fdf7f2 TL |
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): | |
9f95a23c | 49 | for crash in self.crashes.values(): |
11fdf7f2 TL |
50 | self.mgr_cluster.mon_manager.raw_cluster_cmd_result( |
51 | 'crash', 'rm', crash['crash_id'] | |
52 | ) | |
53 | ||
54 | def test_info(self): | |
9f95a23c | 55 | for crash in self.crashes.values(): |
11fdf7f2 TL |
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 | ) | |
9f95a23c | 73 | for crash in self.crashes.values(): |
11fdf7f2 TL |
74 | self.assertIn(crash['crash_id'], retstr) |
75 | ||
76 | def test_rm(self): | |
e306af50 | 77 | crashid = next(iter(self.crashes.keys())) |
11fdf7f2 TL |
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) |