def test_get_filtered_objects(self): filter_objs_initial = ['initial', 'filter1', 'objects1'] filter_objs_second = ['second', 'filter2', 'objects2'] filter_objs_last = ['last', 'filter3', 'objects3'] spec_obj = objects.RequestSpec() def _fake_base_loader_init(*args, **kwargs): pass self.stub_out('nova.loadables.BaseLoader.__init__', _fake_base_loader_init) filt1_mock = mock.Mock(Filter1) filt1_mock.run_filter_for_index.return_value = True filt1_mock.filter_all.return_value = filter_objs_second filt2_mock = mock.Mock(Filter2) filt2_mock.run_filter_for_index.return_value = True filt2_mock.filter_all.return_value = filter_objs_last filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_mocks = [filt1_mock, filt2_mock] result = filter_handler.get_filtered_objects(filter_mocks, filter_objs_initial, spec_obj) self.assertEqual(filter_objs_last, result) filt1_mock.filter_all.assert_called_once_with(filter_objs_initial, spec_obj) filt2_mock.filter_all.assert_called_once_with(filter_objs_second, spec_obj)
def test_get_filtered_objects_for_index(self): """Test that we don't call a filter when its run_filter_for_index() method returns false """ filter_objs_initial = ['initial', 'filter1', 'objects1'] filter_objs_second = ['second', 'filter2', 'objects2'] spec_obj = objects.RequestSpec() def _fake_base_loader_init(*args, **kwargs): pass self.stub_out('nova.loadables.BaseLoader.__init__', _fake_base_loader_init) filt1_mock = mock.Mock(Filter1) filt1_mock.run_filter_for_index.return_value = True filt1_mock.filter_all.return_value = filter_objs_second filt2_mock = mock.Mock(Filter2) filt2_mock.run_filter_for_index.return_value = False filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_mocks = [filt1_mock, filt2_mock] result = filter_handler.get_filtered_objects(filter_mocks, filter_objs_initial, spec_obj) self.assertEqual(filter_objs_second, result) filt1_mock.filter_all.assert_called_once_with(filter_objs_initial, spec_obj) filt2_mock.filter_all.assert_not_called()
def test_get_filtered_objects_none_response(self): filter_objs_initial = ['initial', 'filter1', 'objects1'] filter_properties = 'fake_filter_properties' def _fake_base_loader_init(*args, **kwargs): pass self.stubs.Set(loadables.BaseLoader, '__init__', _fake_base_loader_init) filt1_mock = self.mox.CreateMock(Filter1) filt2_mock = self.mox.CreateMock(Filter2) self.mox.StubOutWithMock(sys.modules[__name__], 'Filter1', use_mock_anything=True) self.mox.StubOutWithMock(filt1_mock, 'filter_all') # Shouldn't be called. self.mox.StubOutWithMock(sys.modules[__name__], 'Filter2', use_mock_anything=True) self.mox.StubOutWithMock(filt2_mock, 'filter_all') Filter1().AndReturn(filt1_mock) filt1_mock.filter_all(filter_objs_initial, filter_properties).AndReturn(None) self.mox.ReplayAll() filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_classes = [Filter1, Filter2] result = filter_handler.get_filtered_objects(filter_classes, filter_objs_initial, filter_properties) self.assertEqual(None, result)
def test_get_filtered_objects_none_response(self): filter_objs_initial = ['initial', 'filter1', 'objects1'] spec_obj = objects.RequestSpec() def _fake_base_loader_init(*args, **kwargs): pass self.stubs.Set(loadables.BaseLoader, '__init__', _fake_base_loader_init) filt1_mock = self.mox.CreateMock(Filter1) filt2_mock = self.mox.CreateMock(Filter2) self.mox.StubOutWithMock(sys.modules[__name__], 'Filter1', use_mock_anything=True) self.mox.StubOutWithMock(filt1_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt1_mock, 'filter_all') # Shouldn't be called. self.mox.StubOutWithMock(sys.modules[__name__], 'Filter2', use_mock_anything=True) self.mox.StubOutWithMock(filt2_mock, 'filter_all') filt1_mock.run_filter_for_index(0).AndReturn(True) filt1_mock.filter_all(filter_objs_initial, spec_obj).AndReturn(None) self.mox.ReplayAll() filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_mocks = [filt1_mock, filt2_mock] result = filter_handler.get_filtered_objects(filter_mocks, filter_objs_initial, spec_obj) self.assertIsNone(result)
def test_get_filtered_objects(self): filter_objs_initial = ['initial', 'filter1', 'objects1'] filter_objs_second = ['second', 'filter2', 'objects2'] filter_objs_last = ['last', 'filter3', 'objects3'] filter_properties = 'fake_filter_properties' def _fake_base_loader_init(*args, **kwargs): pass self.stubs.Set(loadables.BaseLoader, '__init__', _fake_base_loader_init) filt1_mock = self.mox.CreateMock(Filter1) filt2_mock = self.mox.CreateMock(Filter2) self.mox.StubOutWithMock(sys.modules[__name__], 'Filter1', use_mock_anything=True) self.mox.StubOutWithMock(filt1_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt1_mock, 'filter_all') self.mox.StubOutWithMock(sys.modules[__name__], 'Filter2', use_mock_anything=True) self.mox.StubOutWithMock(filt2_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt2_mock, 'filter_all') filt1_mock.run_filter_for_index(0).AndReturn(True) # PF9: pass in filter_errors dict to handle scheduler errors filt1_mock.filter_all(filter_objs_initial, filter_properties, filter_errors={}).AndReturn(filter_objs_second) filt2_mock.run_filter_for_index(0).AndReturn(True) filt2_mock.filter_all(filter_objs_second, filter_properties, filter_errors={}).AndReturn(filter_objs_last) self.mox.ReplayAll() filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_mocks = [filt1_mock, filt2_mock] result = filter_handler.get_filtered_objects(filter_mocks, filter_objs_initial, filter_properties) self.assertEqual(filter_objs_last, result)
def test_get_filtered_objects_for_index(self): """Test that we don't call a filter when its run_filter_for_index() method returns false """ filter_objs_initial = ['initial', 'filter1', 'objects1'] filter_objs_second = ['second', 'filter2', 'objects2'] filter_properties = 'fake_filter_properties' def _fake_base_loader_init(*args, **kwargs): pass self.stubs.Set(loadables.BaseLoader, '__init__', _fake_base_loader_init) filt1_mock = self.mox.CreateMock(Filter1) filt2_mock = self.mox.CreateMock(Filter2) self.mox.StubOutWithMock(sys.modules[__name__], 'Filter1', use_mock_anything=True) self.mox.StubOutWithMock(filt1_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt1_mock, 'filter_all') self.mox.StubOutWithMock(sys.modules[__name__], 'Filter2', use_mock_anything=True) self.mox.StubOutWithMock(filt2_mock, 'run_filter_for_index') self.mox.StubOutWithMock(filt2_mock, 'filter_all') Filter1().AndReturn(filt1_mock) filt1_mock.run_filter_for_index(0).AndReturn(True) filt1_mock.filter_all(filter_objs_initial, filter_properties).AndReturn(filter_objs_second) Filter2().AndReturn(filt2_mock) # return false so filter_all will not be called filt2_mock.run_filter_for_index(0).AndReturn(False) self.mox.ReplayAll() filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_classes = [Filter1, Filter2] result = filter_handler.get_filtered_objects(filter_classes, filter_objs_initial, filter_properties)
def test_get_filtered_objects_none_response(self): filter_objs_initial = ['initial', 'filter1', 'objects1'] spec_obj = objects.RequestSpec() def _fake_base_loader_init(*args, **kwargs): pass self.stub_out('nova.loadables.BaseLoader.__init__', _fake_base_loader_init) filt1_mock = mock.Mock(Filter1) filt1_mock.run_filter_for_index.return_value = True filt1_mock.filter_all.return_value = None filt2_mock = mock.Mock(Filter2) filter_handler = filters.BaseFilterHandler(filters.BaseFilter) filter_mocks = [filt1_mock, filt2_mock] result = filter_handler.get_filtered_objects(filter_mocks, filter_objs_initial, spec_obj) self.assertIsNone(result) filt1_mock.filter_all.assert_called_once_with(filter_objs_initial, spec_obj) filt2_mock.filter_all.assert_not_called()
def setUp(self): super(FiltersTestCase, self).setUp() with mock.patch.object(loadables.BaseLoader, "__init__") as mock_load: mock_load.return_value = None self.filter_handler = filters.BaseFilterHandler(filters.BaseFilter)