def test_create_index_for_fingerprints(self): """Test create index for fingerprints.""" fingerprints = [{ 'id': 1, 'os_release': 'RHEL 7', 'bios_uuid': '1234' }, { 'id': 2, 'os_release': 'RHEL 7', 'bios_uuid': '2345' }, { 'id': 3, 'os_release': 'RHEL 6' }] # Test that unique id not in objects index, no_key_found = _create_index_for_fingerprints( 'bios_uuid', fingerprints, False) self.assertIsNone(no_key_found[0].get(FINGERPRINT_GLOBAL_ID_KEY)) # Tests with unique id in objects index, no_key_found = _create_index_for_fingerprints( 'bios_uuid', fingerprints) self.assertEqual(len(no_key_found), 1) self.assertEqual(no_key_found[0]['id'], 3) self.assertIsNotNone(no_key_found[0].get(FINGERPRINT_GLOBAL_ID_KEY)) self.assertEqual(len(index.keys()), 2) self.assertIsNotNone(index.get('1234')) self.assertIsNotNone(index.get('2345'))
def test_remove_duplicate_fingerprints(self): """Test remove duplicate fingerprints created by index.""" fingerprints = [{ 'id': 1, 'os_release': 'RHEL 7', 'mac_addresses': ['1234', '2345'] }, { 'id': 2, 'os_release': 'RHEL 7', 'mac_addresses': ['9876', '8765'] }, { 'id': 3, 'os_release': 'RHEL 6' }] index, no_key_found = _create_index_for_fingerprints( 'mac_addresses', fingerprints) self.assertEqual(len(no_key_found), 1) self.assertEqual(no_key_found[0]['id'], 3) self.assertIsNotNone(no_key_found[0].get(FINGERPRINT_GLOBAL_ID_KEY)) self.assertEqual(len(index.keys()), 4) self.assertIsNotNone(index.get('1234')) self.assertIsNotNone(index.get('2345')) self.assertIsNotNone(index.get('9876')) self.assertIsNotNone(index.get('8765')) # deplicate but leave unique key leave_key_list = list(index.values()) unique_list = _remove_duplicate_fingerprints( [FINGERPRINT_GLOBAL_ID_KEY], leave_key_list) self.assertEqual(len(unique_list), 2) self.assertIsNotNone(unique_list[0].get(FINGERPRINT_GLOBAL_ID_KEY)) # same test, but add value that doesn't have key leave_key_list = list(index.values()) leave_key_list.append({'id': 3, 'os_release': 'RHEL 6'}) unique_list = _remove_duplicate_fingerprints( [FINGERPRINT_GLOBAL_ID_KEY], leave_key_list) self.assertEqual(len(unique_list), 3) # now pass flag to strip id key remove_key_list = list(index.values()) unique_list = _remove_duplicate_fingerprints( [FINGERPRINT_GLOBAL_ID_KEY], remove_key_list, True) self.assertEqual(len(unique_list), 2) self.assertIsNone(unique_list[0].get(FINGERPRINT_GLOBAL_ID_KEY))