def afterSetUp(self): super(testEventMigrate, self).afterSetUp() self.zeneventmigrate = ZenEventMigrate(app=self.app, connect=True) # Initialize config self.zeneventmigrate.config = ConfigParser() self.zeneventmigrate.config.add_section(self.zeneventmigrate.config_section) # Don't save state to disk self.zeneventmigrate._storeConfig = lambda *x: None # Don't show progress messages self.zeneventmigrate._progress = lambda *x: None
class testEventMigrate(BaseTestCase): def afterSetUp(self): super(testEventMigrate, self).afterSetUp() self.zeneventmigrate = ZenEventMigrate(app=self.app, connect=True) # Initialize config self.zeneventmigrate.config = ConfigParser() self.zeneventmigrate.config.add_section( self.zeneventmigrate.config_section) # Don't save state to disk self.zeneventmigrate._storeConfig = lambda *x: None # Don't show progress messages self.zeneventmigrate._progress = lambda *x: None def testMigrateSameDeviceClass(self): """ Tests that an event sent when a device belongs to a new device class is tagged with the original device class from the migrated event. """ devices = self.dmd.Devices original = devices.createOrganizer("/Server/Solaris") original_guid = IGlobalIdentifier(original).getGUID() updated = devices.createOrganizer("/Server/SSH/Solaris") updated_guid = IGlobalIdentifier(updated).getGUID() updated.createInstance('test-solaris10.zenoss.loc') evt = { 'dedupid': "test-solaris10.zenoss.loc|SUNWxscreensaver-hacks|/Change/Set||2|calling function " "'setProductKey' with 'SUNWxscreensaver-hacks' on object SUNWxscreensaver-hacks", 'evid': "0002aaaf-e10f-4348-a7b8-ae12573e560a", 'device': "test-solaris10.zenoss.loc", 'component': "SUNWxscreensaver-hacks", 'eventClass': "/Change/Set", 'eventKey': "", 'summary': "calling function 'setProductKey' with 'SUNWxscreensaver-hacks' on object SUNWxscreensaver-hacks", 'message': "calling function 'setProductKey' with 'SUNWxscreensaver-hacks' on object SUNWxscreensaver-hacks", 'severity': 2, 'eventState': 0, 'eventClassKey': "", 'eventGroup': "", 'stateChange': datetime(2011, 6, 8, 13, 24, 20), 'firstTime': 1307557460.044, 'lastTime': 1307557460.044, 'count': 1, 'prodState': 1000, 'suppid': '', 'manager': '', 'agent': 'ApplyDataMap', 'DeviceClass': '/Server/Solaris', 'Location': '', 'Systems': '|', 'DeviceGroups': '|', 'ipAddress': '10.175.211.23', 'facility': 'unknown', 'priority': -1, 'ntevid': 0, 'ownerid': '', 'deletedTime': datetime(2011, 6, 8, 13, 24, 20), 'clearid': None, 'DevicePriority': 3, 'eventClassMapping': '', 'monitor': '', } events = [evt] queries = { r'^SELECT COUNT\(\*\) AS num_rows FROM status': repeat([{ 'num_rows': len(events) }]), r'^SELECT \* FROM status': [events].__iter__(), r'^SELECT evid, name, value FROM detail': repeat([]), r'^SELECT \* FROM log WHERE evid IN': repeat([]), } conn = MockConnection(queries) mock_publisher = MockPublisher() self.zeneventmigrate._migrate_events(conn, mock_publisher, True) self.assertEquals(1, len(mock_publisher.msgs)) event_summary = mock_publisher.msgs[0] event_occurrence = event_summary.occurrence[0] for d in event_occurrence.details: if d.name == EventProxy.DEVICE_CLASS_DETAIL_KEY: self.assertEquals([original.getOrganizerName()], d.value) device_class_tags = set() for t in event_occurrence.tags: if t.type == AddDeviceContextAndTagsPipe.DEVICE_DEVICECLASS_TAG_KEY: device_class_tags.update(t.uuid) self.assertTrue(original_guid in device_class_tags, msg="Event wasn't tagged with original device class") self.assertFalse(updated_guid in device_class_tags, msg="Event was tagged with new device class") def testMigrateSameLocation(self): """ Tests that an event sent when a device belongs to a new location is tagged with the original location from the migrated event. """ devices = self.dmd.Devices locations = self.dmd.Locations original = locations.createOrganizer("/Austin") original_guid = IGlobalIdentifier(original).getGUID() updated = locations.createOrganizer("/Annapolis") updated_guid = IGlobalIdentifier(updated).getGUID() device_class = devices.createOrganizer( "/Server/Windows/WMI/Active Directory/2008") device = device_class.createInstance('test-win2008-ad.zenoss.loc') device.setLocation(updated.getOrganizerName()) evt = { 'dedupid': "test-win2008-ad.zenoss.loc|zeneventlog|/Status/Wmi||4|\n Could not read the Windows" " event log (ExecNotificationQuery on test-win2008-ad.zenoss.loc (DOS code 0x800700a4)). C", 'evid': "00049aee-b0bc-4621-8393-9b0cf831afc4", 'device': "test-win2008-ad.zenoss.loc", 'component': "zeneventlog", 'eventClass': "/Status/Wmi", 'eventKey': "", 'summary': "Could not read the Windows event log (ExecNotificationQuery on test-win2008-ad.zenoss.loc (DOS" " code 0x800700a4)). C", 'message': "Could not read the Windows event log (ExecNotificationQuery on test-win2008-ad.zenoss.loc (DOS" " code 0x800700a4)). Check your username/password settings and verify network connectivity.", 'severity': 4, 'eventState': 0, 'eventClassKey': "", 'eventGroup': "", 'stateChange': datetime(2011, 6, 9, 22, 39, 48), 'firstTime': 1307677188.839, 'lastTime': 1307677188.839, 'count': 1, 'prodState': 1000, 'suppid': '', 'manager': 'pwarren-dev.zenoss.loc', 'agent': 'zeneventlog', 'DeviceClass': '/Server/Windows/WMI/Active Directory/2008', 'Location': '/Austin', 'Systems': '|', 'DeviceGroups': '|', 'ipAddress': '10.175.211.197', 'facility': 'unknown', 'priority': -1, 'ntevid': 0, 'ownerid': '', 'deletedTime': datetime(2011, 6, 9, 22, 39, 48), 'clearid': '947d299f-cc25-4250-a8de-b8fd8bc2b06d', 'DevicePriority': 3, 'eventClassMapping': '', 'monitor': 'localhost', } events = [evt] queries = { r'^SELECT COUNT\(\*\) AS num_rows FROM status': repeat([{ 'num_rows': len(events) }]), r'^SELECT \* FROM status': [events].__iter__(), r'^SELECT evid, name, value FROM detail': repeat([]), r'^SELECT \* FROM log WHERE evid IN': repeat([]), } conn = MockConnection(queries) mock_publisher = MockPublisher() self.zeneventmigrate._migrate_events(conn, mock_publisher, True) self.assertEquals(1, len(mock_publisher.msgs)) event_summary = mock_publisher.msgs[0] event_occurrence = event_summary.occurrence[0] for d in event_occurrence.details: if d.name == EventProxy.DEVICE_LOCATION_DETAIL_KEY: self.assertEquals([original.getOrganizerName()], d.value) device_location_tags = set() for t in event_occurrence.tags: if t.type == AddDeviceContextAndTagsPipe.DEVICE_LOCATION_TAG_KEY: device_location_tags.update(t.uuid) self.assertTrue(original_guid in device_location_tags, msg="Event wasn't tagged with original location") self.assertFalse(updated_guid in device_location_tags, msg="Event was tagged with new location") def testMigrateSameGroups(self): """ Tests that an event sent when a device belongs to new device groups is tagged with the original device groups from the migrated event. """ devices = self.dmd.Devices groups = self.dmd.Groups group_first = groups.createOrganizer('/First') group_second = groups.createOrganizer('/Second') group_third = groups.createOrganizer('/Third') group_first_nested = groups.createOrganizer('/First/FirstNested') group_fourth = groups.createOrganizer('/Fourth') group_fifth = groups.createOrganizer('/Fifth') device_class = devices.createOrganizer("/Server/Linux") device = device_class.createInstance('pwarren-dev.zenoss.loc') device.setGroups( [group_fourth.getOrganizerName(), group_fifth.getOrganizerName()]) evt = { 'dedupid': "pwarren-dev.zenoss.loc|snmpd|||2|Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'evid': "0015e762-1983-40ad-a966-d2a66ee40fd9", 'device': "pwarren-dev.zenoss.loc", 'component': "snmpd", 'eventClass': "/Unknown", 'eventKey': "", 'summary': "Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'message': "Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'severity': 2, 'eventState': 0, 'eventClassKey': "snmpd", 'eventGroup': "syslog", 'stateChange': datetime(2011, 6, 13, 3, 10, 13), 'firstTime': 1307952609.997, 'lastTime': 1307952609.997, 'count': 1, 'prodState': 1000, 'suppid': '', 'manager': 'pwarren-dev.zenoss.loc', 'agent': 'zensyslog', 'DeviceClass': '/Server/Linux', 'Location': '/Austin', 'Systems': '|/Production|/Development', 'DeviceGroups': '|/First|/Second|/Third|/First/FirstNested', 'ipAddress': '10.175.210.74', 'facility': 'nfacilit', 'priority': 6, 'ntevid': 0, 'ownerid': '', 'deletedTime': datetime(2011, 6, 13, 7, 11, 8), 'clearid': None, 'DevicePriority': 3, 'eventClassMapping': '', 'monitor': 'localhost', } events = [evt] queries = { r'^SELECT COUNT\(\*\) AS num_rows FROM status': repeat([{ 'num_rows': len(events) }]), r'^SELECT \* FROM status': [events].__iter__(), r'^SELECT evid, name, value FROM detail': repeat([]), r'^SELECT \* FROM log WHERE evid IN': repeat([]), } conn = MockConnection(queries) mock_publisher = MockPublisher() self.zeneventmigrate._migrate_events(conn, mock_publisher, True) self.assertEquals(1, len(mock_publisher.msgs)) event_summary = mock_publisher.msgs[0] event_occurrence = event_summary.occurrence[0] expected_group_names = set([ g.getOrganizerName() for g in [group_first, group_second, group_third, group_first_nested] ]) found_group_names = set() for d in event_occurrence.details: if d.name == EventProxy.DEVICE_GROUPS_DETAIL_KEY: found_group_names.update(d.value) diff_names = expected_group_names - found_group_names self.assertEquals(0, len(diff_names)) expected_group_tags = set([ IGlobalIdentifier(g).getGUID() for g in [group_first, group_second, group_third, group_first_nested] ]) found_group_tags = set() for t in event_occurrence.tags: if t.type == AddDeviceContextAndTagsPipe.DEVICE_GROUPS_TAG_KEY: found_group_tags.update(t.uuid) diff_tags = expected_group_tags - found_group_tags self.assertEquals(0, len(diff_tags)) def testMigrateSameSystems(self): """ Tests that an event sent when a device belongs to new systems is tagged with the original systems from the migrated event. """ devices = self.dmd.Devices groups = self.dmd.Systems system_production = groups.createOrganizer('/Production') system_development = groups.createOrganizer('/Development') system_additional = groups.createOrganizer('/Additional') system_preprod = groups.createOrganizer('/PreProduction') device_class = devices.createOrganizer("/Server/Linux") device = device_class.createInstance('pwarren-dev.zenoss.loc') device.setSystems([ system_additional.getOrganizerName(), system_preprod.getOrganizerName() ]) evt = { 'dedupid': "pwarren-dev.zenoss.loc|snmpd|||2|Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'evid': "0015e762-1983-40ad-a966-d2a66ee40fd9", 'device': "pwarren-dev.zenoss.loc", 'component': "snmpd", 'eventClass': "/Unknown", 'eventKey': "", 'summary': "Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'message': "Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'severity': 2, 'eventState': 0, 'eventClassKey': "snmpd", 'eventGroup': "syslog", 'stateChange': datetime(2011, 6, 13, 3, 10, 13), 'firstTime': 1307952609.997, 'lastTime': 1307952609.997, 'count': 1, 'prodState': 1000, 'suppid': '', 'manager': 'pwarren-dev.zenoss.loc', 'agent': 'zensyslog', 'DeviceClass': '/Server/Linux', 'Location': '/Austin', 'Systems': '|/Production|/Development', 'DeviceGroups': '|/First|/Second|/Third|/First/FirstNested', 'ipAddress': '10.175.210.74', 'facility': 'nfacilit', 'priority': 6, 'ntevid': 0, 'ownerid': '', 'deletedTime': datetime(2011, 6, 13, 7, 11, 8), 'clearid': None, 'DevicePriority': 3, 'eventClassMapping': '', 'monitor': 'localhost', } events = [evt] queries = { r'^SELECT COUNT\(\*\) AS num_rows FROM status': repeat([{ 'num_rows': len(events) }]), r'^SELECT \* FROM status': [events].__iter__(), r'^SELECT evid, name, value FROM detail': repeat([]), r'^SELECT \* FROM log WHERE evid IN': repeat([]), } conn = MockConnection(queries) mock_publisher = MockPublisher() self.zeneventmigrate._migrate_events(conn, mock_publisher, True) self.assertEquals(1, len(mock_publisher.msgs)) event_summary = mock_publisher.msgs[0] event_occurrence = event_summary.occurrence[0] expected_system_names = set([ s.getOrganizerName() for s in [system_development, system_production] ]) found_system_names = set() for d in event_occurrence.details: if d.name == EventProxy.DEVICE_SYSTEMS_DETAIL_KEY: found_system_names.update(d.value) diff_names = expected_system_names - found_system_names self.assertEquals(0, len(diff_names)) expected_system_tags = set([ IGlobalIdentifier(s).getGUID() for s in [system_development, system_production] ]) found_system_tags = set() for t in event_occurrence.tags: if t.type == AddDeviceContextAndTagsPipe.DEVICE_SYSTEMS_TAG_KEY: found_system_tags.update(t.uuid) diff_tags = expected_system_tags - found_system_tags self.assertEquals(0, len(diff_tags))
class testEventMigrate(BaseTestCase): def afterSetUp(self): super(testEventMigrate, self).afterSetUp() self.zeneventmigrate = ZenEventMigrate(app=self.app, connect=True) # Initialize config self.zeneventmigrate.config = ConfigParser() self.zeneventmigrate.config.add_section(self.zeneventmigrate.config_section) # Don't save state to disk self.zeneventmigrate._storeConfig = lambda *x: None # Don't show progress messages self.zeneventmigrate._progress = lambda *x: None def testMigrateSameDeviceClass(self): """ Tests that an event sent when a device belongs to a new device class is tagged with the original device class from the migrated event. """ devices = self.dmd.Devices original = devices.createOrganizer("/Server/Solaris") original_guid = IGlobalIdentifier(original).getGUID() updated = devices.createOrganizer("/Server/SSH/Solaris") updated_guid = IGlobalIdentifier(updated).getGUID() updated.createInstance('test-solaris10.zenoss.loc') evt = { 'dedupid': "test-solaris10.zenoss.loc|SUNWxscreensaver-hacks|/Change/Set||2|calling function " "'setProductKey' with 'SUNWxscreensaver-hacks' on object SUNWxscreensaver-hacks", 'evid': "0002aaaf-e10f-4348-a7b8-ae12573e560a", 'device': "test-solaris10.zenoss.loc", 'component': "SUNWxscreensaver-hacks", 'eventClass': "/Change/Set", 'eventKey': "", 'summary': "calling function 'setProductKey' with 'SUNWxscreensaver-hacks' on object SUNWxscreensaver-hacks", 'message': "calling function 'setProductKey' with 'SUNWxscreensaver-hacks' on object SUNWxscreensaver-hacks", 'severity': 2, 'eventState': 0, 'eventClassKey': "", 'eventGroup': "", 'stateChange': datetime(2011, 6, 8, 13, 24, 20), 'firstTime': 1307557460.044, 'lastTime': 1307557460.044, 'count': 1, 'prodState': 1000, 'suppid': '', 'manager': '', 'agent': 'ApplyDataMap', 'DeviceClass': '/Server/Solaris', 'Location': '', 'Systems': '|', 'DeviceGroups': '|', 'ipAddress': '10.175.211.23', 'facility': 'unknown', 'priority': -1, 'ntevid': 0, 'ownerid': '', 'deletedTime': datetime(2011, 6, 8, 13, 24, 20), 'clearid': None, 'DevicePriority': 3, 'eventClassMapping': '', 'monitor': '', } events = [evt] queries = { r'^SELECT COUNT\(\*\) AS num_rows FROM status': repeat([{ 'num_rows': len(events) }]), r'^SELECT \* FROM status': [events].__iter__(), r'^SELECT evid, name, value FROM detail': repeat([]), r'^SELECT \* FROM log WHERE evid IN': repeat([]), } conn = MockConnection(queries) mock_publisher = MockPublisher() self.zeneventmigrate._migrate_events(conn, mock_publisher, True) self.assertEquals(1, len(mock_publisher.msgs)) event_summary = mock_publisher.msgs[0] event_occurrence = event_summary.occurrence[0] for d in event_occurrence.details: if d.name == EventProxy.DEVICE_CLASS_DETAIL_KEY: self.assertEquals([original.getOrganizerName()], d.value) device_class_tags = set() for t in event_occurrence.tags: if t.type == AddDeviceContextAndTagsPipe.DEVICE_DEVICECLASS_TAG_KEY: device_class_tags.update(t.uuid) self.assertTrue(original_guid in device_class_tags, msg="Event wasn't tagged with original device class") self.assertFalse(updated_guid in device_class_tags, msg="Event was tagged with new device class") def testMigrateSameLocation(self): """ Tests that an event sent when a device belongs to a new location is tagged with the original location from the migrated event. """ devices = self.dmd.Devices locations = self.dmd.Locations original = locations.createOrganizer("/Austin") original_guid = IGlobalIdentifier(original).getGUID() updated = locations.createOrganizer("/Annapolis") updated_guid = IGlobalIdentifier(updated).getGUID() device_class = devices.createOrganizer("/Server/Windows/WMI/Active Directory/2008") device = device_class.createInstance('test-win2008-ad.zenoss.loc') device.setLocation(updated.getOrganizerName()) evt = { 'dedupid': "test-win2008-ad.zenoss.loc|zeneventlog|/Status/Wmi||4|\n Could not read the Windows" " event log (ExecNotificationQuery on test-win2008-ad.zenoss.loc (DOS code 0x800700a4)). C", 'evid': "00049aee-b0bc-4621-8393-9b0cf831afc4", 'device': "test-win2008-ad.zenoss.loc", 'component': "zeneventlog", 'eventClass': "/Status/Wmi", 'eventKey': "", 'summary': "Could not read the Windows event log (ExecNotificationQuery on test-win2008-ad.zenoss.loc (DOS" " code 0x800700a4)). C", 'message': "Could not read the Windows event log (ExecNotificationQuery on test-win2008-ad.zenoss.loc (DOS" " code 0x800700a4)). Check your username/password settings and verify network connectivity.", 'severity': 4, 'eventState': 0, 'eventClassKey': "", 'eventGroup': "", 'stateChange': datetime(2011, 6, 9, 22, 39, 48), 'firstTime': 1307677188.839, 'lastTime': 1307677188.839, 'count': 1, 'prodState': 1000, 'suppid': '', 'manager': 'pwarren-dev.zenoss.loc', 'agent': 'zeneventlog', 'DeviceClass': '/Server/Windows/WMI/Active Directory/2008', 'Location': '/Austin', 'Systems': '|', 'DeviceGroups': '|', 'ipAddress': '10.175.211.197', 'facility': 'unknown', 'priority': -1, 'ntevid': 0, 'ownerid': '', 'deletedTime': datetime(2011, 6, 9, 22, 39, 48), 'clearid': '947d299f-cc25-4250-a8de-b8fd8bc2b06d', 'DevicePriority': 3, 'eventClassMapping': '', 'monitor': 'localhost', } events = [evt] queries = { r'^SELECT COUNT\(\*\) AS num_rows FROM status': repeat([{ 'num_rows': len(events) }]), r'^SELECT \* FROM status': [events].__iter__(), r'^SELECT evid, name, value FROM detail': repeat([]), r'^SELECT \* FROM log WHERE evid IN': repeat([]), } conn = MockConnection(queries) mock_publisher = MockPublisher() self.zeneventmigrate._migrate_events(conn, mock_publisher, True) self.assertEquals(1, len(mock_publisher.msgs)) event_summary = mock_publisher.msgs[0] event_occurrence = event_summary.occurrence[0] for d in event_occurrence.details: if d.name == EventProxy.DEVICE_LOCATION_DETAIL_KEY: self.assertEquals([original.getOrganizerName()], d.value) device_location_tags = set() for t in event_occurrence.tags: if t.type == AddDeviceContextAndTagsPipe.DEVICE_LOCATION_TAG_KEY: device_location_tags.update(t.uuid) self.assertTrue(original_guid in device_location_tags, msg="Event wasn't tagged with original location") self.assertFalse(updated_guid in device_location_tags, msg="Event was tagged with new location") def testMigrateSameGroups(self): """ Tests that an event sent when a device belongs to new device groups is tagged with the original device groups from the migrated event. """ devices = self.dmd.Devices groups = self.dmd.Groups group_first = groups.createOrganizer('/First') group_second = groups.createOrganizer('/Second') group_third = groups.createOrganizer('/Third') group_first_nested = groups.createOrganizer('/First/FirstNested') group_fourth = groups.createOrganizer('/Fourth') group_fifth = groups.createOrganizer('/Fifth') device_class = devices.createOrganizer("/Server/Linux") device = device_class.createInstance('pwarren-dev.zenoss.loc') device.setGroups([group_fourth.getOrganizerName(), group_fifth.getOrganizerName()]) evt = { 'dedupid': "pwarren-dev.zenoss.loc|snmpd|||2|Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'evid': "0015e762-1983-40ad-a966-d2a66ee40fd9", 'device': "pwarren-dev.zenoss.loc", 'component': "snmpd", 'eventClass': "/Unknown", 'eventKey': "", 'summary': "Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'message': "Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'severity': 2, 'eventState': 0, 'eventClassKey': "snmpd", 'eventGroup': "syslog", 'stateChange': datetime(2011, 6, 13, 3, 10, 13), 'firstTime': 1307952609.997, 'lastTime': 1307952609.997, 'count': 1, 'prodState': 1000, 'suppid': '', 'manager': 'pwarren-dev.zenoss.loc', 'agent': 'zensyslog', 'DeviceClass': '/Server/Linux', 'Location': '/Austin', 'Systems': '|/Production|/Development', 'DeviceGroups': '|/First|/Second|/Third|/First/FirstNested', 'ipAddress': '10.175.210.74', 'facility': 'nfacilit', 'priority': 6, 'ntevid': 0, 'ownerid': '', 'deletedTime': datetime(2011, 6, 13, 7, 11, 8), 'clearid': None, 'DevicePriority': 3, 'eventClassMapping': '', 'monitor': 'localhost', } events = [evt] queries = { r'^SELECT COUNT\(\*\) AS num_rows FROM status': repeat([{ 'num_rows': len(events) }]), r'^SELECT \* FROM status': [events].__iter__(), r'^SELECT evid, name, value FROM detail': repeat([]), r'^SELECT \* FROM log WHERE evid IN': repeat([]), } conn = MockConnection(queries) mock_publisher = MockPublisher() self.zeneventmigrate._migrate_events(conn, mock_publisher, True) self.assertEquals(1, len(mock_publisher.msgs)) event_summary = mock_publisher.msgs[0] event_occurrence = event_summary.occurrence[0] expected_group_names = set([g.getOrganizerName() for g in [group_first, group_second, group_third, group_first_nested]]) found_group_names = set() for d in event_occurrence.details: if d.name == EventProxy.DEVICE_GROUPS_DETAIL_KEY: found_group_names.update(d.value) diff_names = expected_group_names - found_group_names self.assertEquals(0, len(diff_names)) expected_group_tags = set([IGlobalIdentifier(g).getGUID() for g in [group_first, group_second, group_third, group_first_nested]]) found_group_tags = set() for t in event_occurrence.tags: if t.type == AddDeviceContextAndTagsPipe.DEVICE_GROUPS_TAG_KEY: found_group_tags.update(t.uuid) diff_tags = expected_group_tags - found_group_tags self.assertEquals(0, len(diff_tags)) def testMigrateSameSystems(self): """ Tests that an event sent when a device belongs to new systems is tagged with the original systems from the migrated event. """ devices = self.dmd.Devices groups = self.dmd.Systems system_production = groups.createOrganizer('/Production') system_development = groups.createOrganizer('/Development') system_additional = groups.createOrganizer('/Additional') system_preprod = groups.createOrganizer('/PreProduction') device_class = devices.createOrganizer("/Server/Linux") device = device_class.createInstance('pwarren-dev.zenoss.loc') device.setSystems([system_additional.getOrganizerName(), system_preprod.getOrganizerName()]) evt = { 'dedupid': "pwarren-dev.zenoss.loc|snmpd|||2|Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'evid': "0015e762-1983-40ad-a966-d2a66ee40fd9", 'device': "pwarren-dev.zenoss.loc", 'component': "snmpd", 'eventClass': "/Unknown", 'eventKey': "", 'summary': "Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'message': "Received SNMP packet(s) from UDP: [10.175.210.74]:48219", 'severity': 2, 'eventState': 0, 'eventClassKey': "snmpd", 'eventGroup': "syslog", 'stateChange': datetime(2011, 6, 13, 3, 10, 13), 'firstTime': 1307952609.997, 'lastTime': 1307952609.997, 'count': 1, 'prodState': 1000, 'suppid': '', 'manager': 'pwarren-dev.zenoss.loc', 'agent': 'zensyslog', 'DeviceClass': '/Server/Linux', 'Location': '/Austin', 'Systems': '|/Production|/Development', 'DeviceGroups': '|/First|/Second|/Third|/First/FirstNested', 'ipAddress': '10.175.210.74', 'facility': 'nfacilit', 'priority': 6, 'ntevid': 0, 'ownerid': '', 'deletedTime': datetime(2011, 6, 13, 7, 11, 8), 'clearid': None, 'DevicePriority': 3, 'eventClassMapping': '', 'monitor': 'localhost', } events = [evt] queries = { r'^SELECT COUNT\(\*\) AS num_rows FROM status': repeat([{ 'num_rows': len(events) }]), r'^SELECT \* FROM status': [events].__iter__(), r'^SELECT evid, name, value FROM detail': repeat([]), r'^SELECT \* FROM log WHERE evid IN': repeat([]), } conn = MockConnection(queries) mock_publisher = MockPublisher() self.zeneventmigrate._migrate_events(conn, mock_publisher, True) self.assertEquals(1, len(mock_publisher.msgs)) event_summary = mock_publisher.msgs[0] event_occurrence = event_summary.occurrence[0] expected_system_names = set([s.getOrganizerName() for s in [system_development, system_production]]) found_system_names = set() for d in event_occurrence.details: if d.name == EventProxy.DEVICE_SYSTEMS_DETAIL_KEY: found_system_names.update(d.value) diff_names = expected_system_names - found_system_names self.assertEquals(0, len(diff_names)) expected_system_tags = set([IGlobalIdentifier(s).getGUID() for s in [system_development, system_production]]) found_system_tags = set() for t in event_occurrence.tags: if t.type == AddDeviceContextAndTagsPipe.DEVICE_SYSTEMS_TAG_KEY: found_system_tags.update(t.uuid) diff_tags = expected_system_tags - found_system_tags self.assertEquals(0, len(diff_tags))