def test_close_one_of_two_open_machine_incident(self): event_metadata1 = EventMetadata(event_type="test", machine_serial_number="YOLOFOMO1") event_metadata1.machine = MockMetaMachine([self.mbu1], [self.tag1], "WINDOWS", "LAPTOP", serial_number="YOLOFOMO1") event1 = BaseEvent(event_metadata1, {"joe": "jackson"}) self.assertTrue(self.probe.test_event(event1)) machine_incident1, _ = update_or_create_open_machine_incident( self.probe_source, self.probe.get_matching_event_incident_severity(event1), event1.metadata.machine_serial_number, event1.metadata.uuid) event_metadata2 = EventMetadata(event_type="test", machine_serial_number="YOLOFOMO2") event_metadata2.machine = MockMetaMachine([self.mbu1], [self.tag1], "WINDOWS", "LAPTOP", serial_number="YOLOFOMO2") event2 = BaseEvent(event_metadata2, {"joe": "jackson"}) self.assertTrue(self.probe.test_event(event2)) machine_incident2, _ = update_or_create_open_machine_incident( self.probe_source, self.probe.get_matching_event_incident_severity(event2), event2.metadata.machine_serial_number, event2.metadata.uuid) # 2 machine incidents on 1 incident self.assertNotEqual(machine_incident1, machine_incident2) self.assertEqual(machine_incident1.serial_number, "YOLOFOMO1") self.assertEqual(machine_incident2.serial_number, "YOLOFOMO2") self.assertEqual(machine_incident1.incident, machine_incident2.incident) # close one machine incident machine_incident3, event_payloads = update_or_create_open_machine_incident( self.probe_source, 0, event2.metadata.machine_serial_number, event2.metadata.uuid) self.assertEqual(machine_incident3, machine_incident2) self.assertEqual(machine_incident3.incident, machine_incident2.incident) incident = machine_incident3.incident self.assertEqual(incident.status, STATUS_OPEN) self.assertEqual(machine_incident3.status, STATUS_CLOSED) machine_incident1.refresh_from_db() self.assertEqual(machine_incident1.status, STATUS_OPEN) self.assertEqual(len(event_payloads), 1) event_payload = event_payloads[0] self.assertEqual(event_payload["action"], "closed") self.assertEqual(event_payload["machine_incident"]["pk"], machine_incident3.pk) self.assertEqual(event_payload["machine_incident"]["status"], STATUS_CLOSED)
def test_same_open_machine_incident(self): event_metadata = EventMetadata(event_type="test", machine_serial_number="YOLOFOMO") event_metadata.machine = MockMetaMachine([self.mbu1], [self.tag1], "WINDOWS", "LAPTOP", serial_number="YOLOFOMO") event = BaseEvent(event_metadata, {"joe": "jackson"}) self.assertTrue(self.probe.test_event(event)) machine_incident1, _ = update_or_create_open_machine_incident( self.probe_source, self.probe.get_matching_event_incident_severity(event), event.metadata.machine_serial_number, event.metadata.uuid) machine_incident2, event_payloads = update_or_create_open_machine_incident( self.probe_source, self.probe.get_matching_event_incident_severity(event), event.metadata.machine_serial_number, event.metadata.uuid) self.assertEqual(machine_incident1, machine_incident2) self.assertEqual(len(event_payloads), 0)
def test_create_open_machine_incident(self): event_metadata = EventMetadata(event_type="test", machine_serial_number="YOLOFOMO") event_metadata.machine = MockMetaMachine([self.mbu1], [self.tag1], "WINDOWS", "LAPTOP", serial_number="YOLOFOMO") event = BaseEvent(event_metadata, {"joe": "jackson"}) self.assertTrue(self.probe.test_event(event)) machine_incident, event_payloads = update_or_create_open_machine_incident( self.probe_source, self.probe.get_matching_event_incident_severity(event), event.metadata.machine_serial_number, event.metadata.uuid) # machine incident self.assertEqual([machine_incident], list(MachineIncident.objects.all())) self.assertEqual(machine_incident.status, STATUS_OPEN) self.assertEqual(machine_incident.event_id, event.metadata.uuid) # incident incident = machine_incident.incident self.assertEqual([incident], list(Incident.objects.all())) self.assertEqual(incident.probe_source, self.probe_source) self.assertEqual(incident.name, "base probe") self.assertEqual(incident.status, STATUS_OPEN) self.assertEqual(incident.severity, SEVERITY_CRITICAL) self.assertEqual(incident.event_id, event.metadata.uuid) # event payloads self.assertEqual(len(event_payloads), 2) event_payload1, event_payload2 = event_payloads # incident event payload self.assertEqual(event_payload1["action"], "created") self.assertEqual(event_payload1["pk"], incident.pk) self.assertEqual(event_payload1.get("machine_incident"), None) # machine incident event payload self.assertEqual(event_payload2["action"], "created") self.assertEqual( event_payload2["machine_incident"], { "pk": machine_incident.pk, "status": machine_incident.status, "event_id": str(event.metadata.uuid) }) # meta machine self.assertEqual( MetaMachine("YOLOFOMO").max_incident_severity(), SEVERITY_CRITICAL)