Example #1
0
    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)
Example #2
0
    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()
Example #3
0
    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)
Example #4
0
    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)
Example #6
0
    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)
Example #7
0
    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()
Example #8
0
 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)