def testEventChunking(self): opts = self.createOptions(eventflushchunksize=5) eqm = EventQueueManager(opts, log) events = [] for i in range(10): events.append(createTestEvent(device="dev%d" % i)) eqm.addEvent(events[-1]) perf_events = [] for i in range(10): perf_events.append(createTestEvent(device="perfdev%d" % i)) eqm.addPerformanceEvent(perf_events[-1]) heartbeat_events = [createTestEvent(eventClass="/Heartbeat")] eqm.addHeartbeatEvent(heartbeat_events[-1]) sent_event_chunks = [] def send_events(events): sent_event_chunks.append(events) eqm.sendEvents(send_events) self.assertEquals(5, len(sent_event_chunks)) # First chunk should be heartbeat + 4 perf self.assertEquals(heartbeat_events + perf_events[:4], sent_event_chunks[0]) # Second chunk should be 5 perf self.assertEquals(perf_events[4:9], sent_event_chunks[1]) # Third chunk should be 1 perf + 4 events self.assertEquals(perf_events[9:] + events[0:4], sent_event_chunks[2]) # Fourth chunk should be 5 events self.assertEquals(events[4:9], sent_event_chunks[3]) # Fifth chunk should be 1 event self.assertEquals(events[9:], sent_event_chunks[4])
def testRestoreEvents(self): opts = self.createOptions(eventflushchunksize=5) eqm = EventQueueManager(opts, log) events = [] for i in range(10): events.append(createTestEvent(device='dev%d' % i)) eqm.addEvent(events[-1]) perf_events = [] for i in range(7): perf_events.append(createTestEvent(device='perfdev%d' % i)) eqm.addPerformanceEvent(perf_events[-1]) sent_event_chunks = [] def send_events(events): # Send an exception on the second batch if len(sent_event_chunks) == 1: raise Exception('Test Exception') sent_event_chunks.append(events) results = [] def finished_events(result): results.append(result) d = eqm.sendEvents(send_events) d.addBoth(finished_events) # Verify the first chunk was sent self.assertEquals(1, len(results)) self.assertTrue(isinstance(results[0], failure.Failure)) self.assertEquals(1, len(sent_event_chunks)) self.assertEquals(sent_event_chunks[0], perf_events[:5]) # Verify the second chunk (which threw an exception) was added back to # queues. self.assertEquals(perf_events[5:], list(eqm.perf_event_queue)) self.assertEquals(events, list(eqm.event_queue))
def testEventChunking(self): opts = self.createOptions(eventflushchunksize=5) eqm = EventQueueManager(opts, log) events = [] for i in range(10): events.append(createTestEvent(device='dev%d' % i)) eqm.addEvent(events[-1]) perf_events = [] for i in range(10): perf_events.append(createTestEvent(device='perfdev%d' % i)) eqm.addPerformanceEvent(perf_events[-1]) heartbeat_events = [createTestEvent(eventClass='/Heartbeat')] eqm.addHeartbeatEvent(heartbeat_events[-1]) sent_event_chunks = [] def send_events(events): sent_event_chunks.append(events) eqm.sendEvents(send_events) self.assertEquals(5, len(sent_event_chunks)) # First chunk should be heartbeat + 4 perf self.assertEquals(heartbeat_events + perf_events[:4], sent_event_chunks[0]) # Second chunk should be 5 perf self.assertEquals(perf_events[4:9], sent_event_chunks[1]) # Third chunk should be 1 perf + 4 events self.assertEquals(perf_events[9:] + events[0:4], sent_event_chunks[2]) # Fourth chunk should be 5 events self.assertEquals(events[4:9], sent_event_chunks[3]) # Fifth chunk should be 1 event self.assertEquals(events[9:], sent_event_chunks[4])
def testRestoreEvents(self): opts = self.createOptions(eventflushchunksize=5) eqm = EventQueueManager(opts, log) events = [] for i in range(10): events.append(createTestEvent(device='dev%d' % i)) eqm.addEvent(events[-1]) perf_events = [] for i in range(7): perf_events.append(createTestEvent(device='perfdev%d' % i)) eqm.addPerformanceEvent(perf_events[-1]) sent_event_chunks = [] def send_events(events): # Send an exception on the second batch if len(sent_event_chunks) == 1: raise Exception('Test Exception') sent_event_chunks.append(events) results = [] def finished_events(result): results.append(result) d = eqm.sendEvents(send_events) d.addBoth(finished_events) # Verify the first chunk was sent self.assertEquals(1, len(results)) self.assertTrue(isinstance(results[0], failure.Failure)) self.assertEquals(1, len(sent_event_chunks)) self.assertEquals(sent_event_chunks[0], perf_events[:5]) # Verify the second chunk (which threw an exception) was added back to # queues. self.assertEquals(perf_events[5:], list(eqm.perf_event_queue)) self.assertEquals(events, list(eqm.event_queue))