def _create_mock_events(): gen_list = mock_sync.simple_zone_generators( 2, 4, snapshot_events=2, snap_vals={ DatasourceProperties.DATASOURCE_ACTION: DatasourceAction.INIT_SNAPSHOT }) gen_list += mock_sync.simple_host_generators( 2, 4, 4, snap_vals={ DatasourceProperties.DATASOURCE_ACTION: DatasourceAction.INIT_SNAPSHOT }) gen_list += mock_sync.simple_instance_generators( 4, 15, 15, snap_vals={ DatasourceProperties.DATASOURCE_ACTION: DatasourceAction.INIT_SNAPSHOT }) return mock_sync.generate_sequential_events_list(gen_list)
def test_create_entity_key(self): LOG.debug('Test get key from nova instance transformer') # Test setup spec_list = mock_sync.simple_instance_generators(host_num=1, vm_num=1, snapshot_events=1, update_events=0) instance_events = mock_sync.generate_random_events_list(spec_list) instance_transformer = self.transformers[NOVA_INSTANCE_DATASOURCE] for event in instance_events: # Test action observed_key = instance_transformer._create_entity_key(event) # Test assertions observed_key_fields = observed_key.split( TransformerBase.KEY_SEPARATOR) self.assertEqual(EntityCategory.RESOURCE, observed_key_fields[0]) self.assertEqual(NOVA_INSTANCE_DATASOURCE, observed_key_fields[1]) instance_id = tbase.extract_field_value(event, 'id') self.assertEqual(instance_id, observed_key_fields[2]) key_values = instance_transformer._key_values( NOVA_INSTANCE_DATASOURCE, instance_id) expected_key = tbase.build_key(key_values) self.assertEqual(expected_key, observed_key)
def test_snapshot_event_transform(self): LOG.debug('Test tactual transform action for ' 'snapshot and snapshot init events') # Test setup spec_list = mock_sync.simple_instance_generators(host_num=1, vm_num=1, snapshot_events=10, update_events=0) instance_events = mock_sync.generate_random_events_list(spec_list) for event in instance_events: # Test action wrapper = self.transformers[NOVA_INSTANCE_DATASOURCE].transform( event) # Test assertions self._validate_vertex_props(wrapper.vertex, event) self.assertEqual(1, len(wrapper.neighbors), 'Instance has only one host neighbor') host_neighbor = wrapper.neighbors[0] self._validate_host_neighbor(host_neighbor, event) datasource_action = event[DSProps.DATASOURCE_ACTION] if datasource_action == DatasourceAction.INIT_SNAPSHOT: self.assertEqual(GraphAction.CREATE_ENTITY, wrapper.action) elif datasource_action == DatasourceAction.SNAPSHOT: self.assertEqual(GraphAction.UPDATE_ENTITY, wrapper.action)
def test_snapshot_event_transform(self): LOG.debug('Test tactual transform action for ' 'snapshot and snapshot init events') # Test setup spec_list = mock_sync.simple_instance_generators(host_num=1, vm_num=1, snapshot_events=10, update_events=0) instance_events = mock_sync.generate_random_events_list(spec_list) for event in instance_events: # Test action wrapper = self.transformers[NOVA_INSTANCE_DATASOURCE].transform( event) # Test assertions self._validate_vertex_props(wrapper.vertex, event) self.assertEqual(1, len(wrapper.neighbors), 'Instance has only one host neighbor') host_neighbor = wrapper.neighbors[0] self._validate_host_neighbor(host_neighbor, event) datasource_action = event[DSProps.DATASOURCE_ACTION] if datasource_action == DatasourceAction.INIT_SNAPSHOT: self.assertEqual(GraphAction.CREATE_ENTITY, wrapper.action) elif datasource_action == DatasourceAction.SNAPSHOT: self.assertEqual(GraphAction.UPDATE_ENTITY, wrapper.action)
def test_update_event_transform(self): LOG.debug('Test tactual transform action for update events') # Test setup spec_list = mock_sync.simple_instance_generators(host_num=1, vm_num=1, snapshot_events=0, update_events=10) instance_events = mock_sync.generate_random_events_list(spec_list) for event in instance_events: # Test action wrapper = self.transformers[NOVA_INSTANCE_DATASOURCE].transform( event) # Test assertions self._validate_vertex_props(wrapper.vertex, event) # Validate the neighbors: only one valid host neighbor neighbors = wrapper.neighbors self.assertEqual(1, len(neighbors)) self._validate_host_neighbor(neighbors[0], event) event_type = event[DSProps.EVENT_TYPE] if event_type == 'compute.instance.delete.end': self.assertEqual(GraphAction.DELETE_ENTITY, wrapper.action) elif event_type == 'compute.instance.create.start': self.assertEqual(GraphAction.CREATE_ENTITY, wrapper.action) else: self.assertEqual(GraphAction.UPDATE_ENTITY, wrapper.action)
def _create_events(): spec_list = mock_sync.simple_instance_generators( host_num=1, vm_num=1, update_events=1, use_nova_versioned_format=True ) update_versioned_event = \ mock_sync.generate_random_events_list(spec_list)[0] spec_list = mock_sync.simple_instance_generators( host_num=1, vm_num=1, update_events=1, use_nova_versioned_format=False ) update_legacy_event = \ mock_sync.generate_random_events_list(spec_list)[0] return update_versioned_event, update_legacy_event
def test_update_event_transform(self): LOG.debug('Test tactual transform action for update events') # Test setup spec_list = mock_sync.simple_instance_generators(host_num=1, vm_num=1, snapshot_events=0, update_events=10) instance_events = mock_sync.generate_random_events_list(spec_list) for event in instance_events: # Test action wrapper = self.transformers[NOVA_INSTANCE_DATASOURCE].transform( event) # Test assertions self._validate_vertex_props(wrapper.vertex, event) # Validate the neighbors: only one valid host neighbor neighbors = wrapper.neighbors self.assertEqual(1, len(neighbors)) self._validate_host_neighbor(neighbors[0], event) event_type = event[DSProps.EVENT_TYPE] if event_type == 'compute.instance.delete.end': self.assertEqual(GraphAction.DELETE_ENTITY, wrapper.action) elif event_type == 'compute.instance.create.start': self.assertEqual(GraphAction.CREATE_ENTITY, wrapper.action) else: self.assertEqual(GraphAction.UPDATE_ENTITY, wrapper.action)
def _create_mock_events(): gen_list = mock_sync.simple_zone_generators( 2, 4, snapshot_events=2, snap_vals={'sync_mode': 'init_snapshot'}) gen_list += mock_sync.simple_host_generators( 2, 4, 4, snap_vals={'sync_mode': 'init_snapshot'}) gen_list += mock_sync.simple_instance_generators( 4, 15, 15, snap_vals={'sync_mode': 'init_snapshot'}) return mock_sync.generate_sequential_events_list(gen_list)
def test_update_event_transform(self): LOG.debug('Test actual transform action for update events') # Test setup spec_list = mock_sync.simple_instance_generators( host_num=1, vm_num=1, update_events=10, use_nova_versioned_format=False ) instance_events = mock_sync.generate_random_events_list(spec_list) self._test_update_event_transform(instance_events)
def _create_mock_events(self): gen_list = mock_driver.simple_zone_generators( self.NUM_ZONES, self.NUM_HOSTS, snapshot_events=self.NUM_ZONES, snap_vals={DSProps.SYNC_MODE: SyncMode.INIT_SNAPSHOT}) gen_list += mock_driver.simple_host_generators( self.NUM_ZONES, self.NUM_HOSTS, self.NUM_HOSTS, snap_vals={DSProps.SYNC_MODE: SyncMode.INIT_SNAPSHOT}) gen_list += mock_driver.simple_instance_generators( self.NUM_HOSTS, self.NUM_INSTANCES, self.NUM_INSTANCES, snap_vals={DSProps.SYNC_MODE: SyncMode.INIT_SNAPSHOT}) return mock_driver.generate_sequential_events_list(gen_list)
def _create_mock_events(self): gen_list = mock_sync.simple_zone_generators( self.NUM_ZONES, self.NUM_HOSTS, snapshot_events=self.NUM_ZONES, snap_vals={DSProps.SYNC_MODE: SyncMode.INIT_SNAPSHOT}) gen_list += mock_sync.simple_host_generators( self.NUM_ZONES, self.NUM_HOSTS, self.NUM_HOSTS, snap_vals={DSProps.SYNC_MODE: SyncMode.INIT_SNAPSHOT}) gen_list += mock_sync.simple_instance_generators( self.NUM_HOSTS, self.NUM_INSTANCES, self.NUM_INSTANCES, snap_vals={DSProps.SYNC_MODE: SyncMode.INIT_SNAPSHOT}) return mock_sync.generate_sequential_events_list(gen_list)
def _create_event(spec_type=None, sync_mode=None, event_type=None, properties=None): # generate event spec_list = mock_sync.simple_instance_generators(1, 1, 1) events_list = mock_sync.generate_random_events_list( spec_list) # update properties if sync_mode is not None: events_list[0][DSProps.SYNC_MODE] = sync_mode if event_type is not None: events_list[0][DSProps.EVENT_TYPE] = event_type if properties is not None: for key, value in properties.items(): events_list[0][key] = value return events_list[0]
def _create_mock_events(self): gen_list = mock_sync.simple_zone_generators( self.NUM_ZONES, self.NUM_HOSTS, snapshot_events=self.NUM_ZONES, snap_vals={DSProps.DATASOURCE_ACTION: DatasourceAction.INIT_SNAPSHOT}) gen_list += mock_sync.simple_host_generators( self.NUM_ZONES, self.NUM_HOSTS, self.NUM_HOSTS, snap_vals={DSProps.DATASOURCE_ACTION: DatasourceAction.INIT_SNAPSHOT}) gen_list += mock_sync.simple_instance_generators( self.NUM_HOSTS, self.NUM_INSTANCES, self.NUM_INSTANCES, snap_vals={DSProps.DATASOURCE_ACTION: DatasourceAction.INIT_SNAPSHOT}) return mock_sync.generate_sequential_events_list(gen_list)
def _create_event(spec_type=None, datasource_action=None, event_type=None, properties=None): # generate event spec_list = mock_sync.simple_instance_generators(1, 1, 1) events_list = mock_sync.generate_random_events_list(spec_list) # update properties if datasource_action is not None: events_list[0][DSProps.DATASOURCE_ACTION] = datasource_action if event_type is not None: events_list[0][DSProps.EVENT_TYPE] = event_type if properties is not None: for key, value in properties.items(): events_list[0][key] = value return events_list[0]
def _create_event(spec_type=None, sync_mode=None, event_type=None, properties=None): # generate event spec_list = mock_sync.simple_instance_generators(1, 1, 1) events_list = mock_sync.generate_random_events_list(spec_list) # update properties if sync_mode is not None: events_list[0][DSProps.SYNC_MODE] = sync_mode if event_type is not None: events_list[0][DSProps.EVENT_TYPE] = event_type if properties is not None: for key, value in properties.items(): events_list[0][key] = value return events_list[0]
def _create_mock_events(self): gen_list = mock_driver.simple_zone_generators( self.NUM_ZONES, self.NUM_HOSTS, snapshot_events=self.NUM_ZONES, snap_vals={DSProps.DATASOURCE_ACTION: DatasourceAction.INIT_SNAPSHOT}) gen_list += mock_driver.simple_host_generators( self.NUM_ZONES, self.NUM_HOSTS, self.NUM_HOSTS, snap_vals={DSProps.DATASOURCE_ACTION: DatasourceAction.INIT_SNAPSHOT}) gen_list += mock_driver.simple_instance_generators( self.NUM_HOSTS, self.NUM_INSTANCES, self.NUM_INSTANCES, snap_vals={DSProps.DATASOURCE_ACTION: DatasourceAction.INIT_SNAPSHOT}) return mock_driver.generate_sequential_events_list(gen_list)
def _create_event(spec_type=None, datasource_action=None, event_type=None, properties=None): # generate event spec_list = mock_sync.simple_instance_generators(1, 1, 1) events_list = mock_sync.generate_random_events_list( spec_list) # update properties if datasource_action is not None: events_list[0][DSProps.DATASOURCE_ACTION] = datasource_action if event_type is not None: events_list[0][DSProps.EVENT_TYPE] = event_type if properties is not None: for key, value in properties.items(): events_list[0][key] = value return events_list[0]
def test_extract_key(self): LOG.debug('Test get key from nova instance transformer') # Test setup spec_list = mock_sync.simple_instance_generators( host_num=1, vm_num=1, snapshot_events=1, update_events=0 ) instance_events = mock_sync.generate_random_events_list(spec_list) instance_transformer = self.transformers[NOVA_INSTANCE_DATASOURCE] for event in instance_events: # Test action observed_key = instance_transformer._create_entity_key(event) # Test assertions observed_key_fields = observed_key.split( TransformerBase.KEY_SEPARATOR) self.assertEqual(EntityCategory.RESOURCE, observed_key_fields[0]) self.assertEqual( NOVA_INSTANCE_DATASOURCE, observed_key_fields[1] ) instance_id = tbase.extract_field_value(event, 'id') self.assertEqual(instance_id, observed_key_fields[2]) key_values = instance_transformer._key_values( NOVA_INSTANCE_DATASOURCE, instance_id) expected_key = tbase.build_key(key_values) self.assertEqual(expected_key, observed_key)