def test_event_list_with_filters(self): e1 = event_mod.Event(timeutils.utcnow(), 50, status='GOOD', context=self.ctx) e1.store(self.ctx) e2 = event_mod.Event(timeutils.utcnow(), 40, status='GOOD', context=self.ctx) e2.store(self.ctx) e3 = event_mod.Event(timeutils.utcnow(), 60, status='BAD', context=self.ctx) e3.store(self.ctx) result = self.eng.event_list(self.ctx, filters={'level': 50}) self.assertEqual(1, len(result)) result = self.eng.event_list(self.ctx, filters={'level': 10}) self.assertEqual(0, len(result)) filters = {'status': 'GOOD'} result = self.eng.event_list(self.ctx, filters=filters) self.assertEqual(2, len(result))
def test_event_init_with_entity(self): timestamp = timeutils.utcnow() x_cluster = cluster_mod.Cluster('fake-cluster', 0, 'fake-profile', id='FAKE_CLUSTER') event = EVENT.Event(timestamp, logging.CRITICAL, x_cluster, action="FAKE_ACTION", status="ACTIVE", status_reason="Recovered just now", user=self.context.user, project=self.context.project) self.assertEqual(timestamp, event.timestamp) self.assertIsNone(event.id) self.assertEqual(logging.CRITICAL, event.level) self.assertEqual(self.context.user, event.user) self.assertEqual(self.context.project, event.project) self.assertEqual('FAKE_ACTION', event.action) self.assertEqual('ACTIVE', event.status) self.assertEqual('Recovered just now', event.status_reason) self.assertEqual('FAKE_CLUSTER', event.obj_id) self.assertEqual('fake-cluster', event.obj_name) self.assertEqual('FAKE_CLUSTER', event.cluster_id) self.assertEqual('CLUSTER', event.obj_type)
def test_event_init(self): timestamp = timeutils.utcnow() kwargs = { 'id': 'FAKE-ID', 'user': '******', 'project': 'test-project', 'action': 'fake-action', 'status': 'ACTIVE', 'status_reason': 'Weather is clear', 'obj_id': 'FAKE-OBJ-ID', 'obj_type': 'CLUSTER-TYPE', 'obj_name': 'fake-cluster', 'cluster_id': 'FAKE-CLUSTER-ID', 'metadata': { 'foo': 'bar' }, } event = EVENT.Event(timestamp, logging.CRITICAL, **kwargs) self.assertEqual(timestamp, event.timestamp) self.assertEqual(logging.CRITICAL, event.level) self.assertEqual('FAKE-ID', event.id) self.assertEqual('test-user', event.user) self.assertEqual('test-project', event.project) self.assertEqual('fake-action', event.action) self.assertEqual('ACTIVE', event.status) self.assertEqual('Weather is clear', event.status_reason) self.assertEqual('FAKE-OBJ-ID', event.obj_id) self.assertEqual('CLUSTER-TYPE', event.obj_type) self.assertEqual('fake-cluster', event.obj_name) self.assertEqual('FAKE-CLUSTER-ID', event.cluster_id) self.assertEqual({'foo': 'bar'}, event.metadata)
def test_event_list(self): ts = timeutils.utcnow() e1 = event_mod.Event(ts, 50, status='GOOD', context=self.ctx) eid1 = e1.store(self.ctx) e2 = event_mod.Event(ts, 50, status='BAD', context=self.ctx) eid2 = e2.store(self.ctx) result = self.eng.event_list(self.ctx) self.assertIsInstance(result, list) statuses = [e['status'] for e in result] ids = [p['id'] for p in result] self.assertIn(e1.status, statuses) self.assertIn(e2.status, statuses) self.assertIn(eid1, ids) self.assertIn(eid2, ids)
def test_event_list_with_sort_dir(self): e1 = event_mod.Event(timeutils.utcnow(), 50, status='GOOD', context=self.ctx) e1.store(self.ctx) e2 = event_mod.Event(timeutils.utcnow(), 40, status='GOOD', context=self.ctx) e2.store(self.ctx) e3 = event_mod.Event(timeutils.utcnow(), 60, status='BAD', context=self.ctx) e3.store(self.ctx) # default by timestamp , ascending result = self.eng.event_list(self.ctx) self.assertEqual(e1.id, result[0]['id']) self.assertEqual(e2.id, result[1]['id']) # sort by created_time, descending result = self.eng.event_list(self.ctx, sort_dir='desc') self.assertEqual(e3.id, result[0]['id']) self.assertEqual(e2.id, result[1]['id']) # use name for sorting, descending result = self.eng.event_list(self.ctx, sort_keys=['name'], sort_dir='desc') self.assertEqual(e3.id, result[0]['id']) self.assertEqual(e1.id, result[2]['id']) # use permission for sorting ex = self.assertRaises(ValueError, self.eng.event_list, self.ctx, sort_dir='Bogus') self.assertEqual( "Unknown sort direction, must be one of: " "asc-nullsfirst, asc-nullslast, desc-nullsfirst, " "desc-nullslast", six.text_type(ex))
def test_event_list_with_sort_keys(self): e1 = event_mod.Event(timeutils.utcnow(), 50, status='GOOD', context=self.ctx) e1.store(self.ctx) e2 = event_mod.Event(timeutils.utcnow(), 40, status='GOOD', context=self.ctx) e2.store(self.ctx) e3 = event_mod.Event(timeutils.utcnow(), 60, status='BAD', context=self.ctx) e3.store(self.ctx) # default by timestamp result = self.eng.event_list(self.ctx) self.assertEqual(e1.id, result[0]['id']) self.assertEqual(e2.id, result[1]['id']) # use level for sorting result = self.eng.event_list(self.ctx, sort_keys=['level']) self.assertEqual(e2.id, result[0]['id']) self.assertEqual(e1.id, result[1]['id']) # use status for sorting result = self.eng.event_list(self.ctx, sort_keys=['status']) self.assertEqual(e3.id, result[2]['id']) # use level and status for sorting result = self.eng.event_list(self.ctx, sort_keys=['status', 'level']) self.assertEqual(e3.id, result[2]['id']) self.assertEqual(e2.id, result[0]['id']) self.assertEqual(e1.id, result[1]['id']) # unknown keys will be ignored result = self.eng.event_list(self.ctx, sort_keys=['duang']) self.assertIsNotNone(result)
def test_event_list_with_limit_marker(self): e1 = event_mod.Event(timeutils.utcnow(), 50, status='GOOD', context=self.ctx) e1.store(self.ctx) e2 = event_mod.Event(timeutils.utcnow(), 50, status='GOOD', context=self.ctx) e2.store(self.ctx) result = self.eng.event_list(self.ctx, limit=0) self.assertEqual(0, len(result)) result = self.eng.event_list(self.ctx, limit=1) self.assertEqual(1, len(result)) result = self.eng.event_list(self.ctx, limit=2) self.assertEqual(2, len(result)) result = self.eng.event_list(self.ctx, limit=3) self.assertEqual(2, len(result)) result = self.eng.event_list(self.ctx, marker=e1.id) self.assertEqual(1, len(result)) result = self.eng.event_list(self.ctx, marker=e2.id) self.assertEqual(0, len(result)) e3 = event_mod.Event(timeutils.utcnow(), 50, status='GOOD', context=self.ctx) e3.store(self.ctx) result = self.eng.event_list(self.ctx, limit=1, marker=e1.id) self.assertEqual(1, len(result)) result = self.eng.event_list(self.ctx, limit=2, marker=e1.id) self.assertEqual(2, len(result))
def test_event_find(self): e1 = event_mod.Event(timeutils.utcnow(), 50, status='GOOD', context=self.ctx) eid = e1.store(self.ctx) result = self.eng.event_find(self.ctx, eid) self.assertIsNotNone(result) # short id result = self.eng.event_find(self.ctx, eid[:5]) self.assertIsNotNone(result) # others ex = self.assertRaises(rpc.ExpectedException, self.eng.event_find, self.ctx, 'Bogus') self.assertEqual(exception.EventNotFound, ex.exc_info[0])
def test_event__infer_entity_data_clusteraction(self, mock_get): entity = mock.Mock(status='fake-status', status_reason='fake-reason', target='fake-cluster') entity.cluster = mock.Mock() entity.cluster.name = 'obj-name' mock_get.return_value = 'ClusterAction' event = EVENT.Event('timestamp', 'level', entity) self.assertEqual('timestamp', event.timestamp) self.assertEqual('level', event.level) self.assertEqual('obj-name', event.obj_name) self.assertEqual('fake-status', event.status) self.assertEqual('fake-reason', event.status_reason) self.assertEqual('CLUSTER', event.obj_type) self.assertEqual('fake-cluster', event.obj_id) self.assertEqual('fake-cluster', event.cluster_id) mock_get.assert_called_once_with(entity, fully_qualified=False)
def test_event__infer_entity_data_node(self, mock_get): entity = mock.Mock(id='obj-id', status='fake-status', status_reason='fake-reason', target='fake-target', cluster_id='cluster-id') entity.name = 'obj-name' mock_get.return_value = 'Node' event = EVENT.Event('timestamp', 'level', entity) self.assertEqual('timestamp', event.timestamp) self.assertEqual('level', event.level) self.assertEqual('obj-name', event.obj_name) self.assertEqual('fake-status', event.status) self.assertEqual('fake-reason', event.status_reason) self.assertEqual('NODE', event.obj_type) self.assertEqual('obj-id', event.obj_id) self.assertEqual('cluster-id', event.cluster_id) mock_get.assert_called_once_with(entity, fully_qualified=False)
def test_event__infer_entity_data_nodeaction(self, mock_get): entity = mock.Mock(status='fake-status', status_reason='fake-reason', target='fake-node') entity.node = mock.Mock() entity.node.name = 'obj-name' entity.node.cluster_id = CLUSTER_ID mock_get.return_value = 'NodeAction' event = EVENT.Event('timestamp', 'level', entity) self.assertEqual('timestamp', event.timestamp) self.assertEqual('level', event.level) self.assertEqual('obj-name', event.oname) self.assertEqual('fake-status', event.status) self.assertEqual('fake-reason', event.status_reason) self.assertEqual('NODE', event.otype) self.assertEqual('fake-node', event.oid) self.assertEqual(CLUSTER_ID, event.cluster_id) mock_get.assert_called_once_with(entity, fully_qualified=False)
def test_event_store(self): timestamp = timeutils.utcnow() kwargs = { 'user': self.context.user, 'project': self.context.project, 'action': 'fake-action', 'status': 'ACTIVE', 'status_reason': 'Weather is clear', 'obj_id': 'FAKE-CLUSTER-ID', 'obj_type': 'CLUSTER TYPE', 'obj_name': 'fake-cluster', 'cluster_id': 'FAKE-CLUSTER-ID', 'metadata': { 'foo': 'bar' }, } event = EVENT.Event(timestamp, logging.CRITICAL, **kwargs) self.assertIsNone(event.id) event_id = event.store(self.context) self.assertIsNotNone(event_id) self.assertEqual(event_id, event.id) result = db_api.event_get(self.context, event_id) self.assertIsNotNone(result) self.assertEqual(event_id, result.id) self.assertEqual(timestamp, result.timestamp) self.assertEqual(event.level, int(result.level)) self.assertEqual(event.user, result.user) self.assertEqual(event.project, result.project) self.assertEqual(event.action, result.action) self.assertEqual(event.status, result.status) self.assertEqual(event.status_reason, result.status_reason) self.assertEqual(event.obj_id, result.obj_id) self.assertEqual(event.obj_type, result.obj_type) self.assertEqual(event.obj_name, result.obj_name) self.assertEqual(event.cluster_id, result.cluster_id) self.assertEqual(event.metadata, result.meta_data)