summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMatthew Sherborne <msherborne@gmail.com>2013-05-03 10:29:45 +1000
committerMatthew Sherborne <msherborne@gmail.com>2013-05-10 22:10:49 +1000
commit1f2aba5f706f882663e770bc8dac031627c91f39 (patch)
treefb0781f5c478bb80e30cf1f1485733462b1ca831 /tests
parent6a4800d8cc36812835dca796895bafec940b2ce5 (diff)
downloadoslo-1f2aba5f706f882663e770bc8dac031627c91f39.tar.gz
oslo-1f2aba5f706f882663e770bc8dac031627c91f39.tar.xz
oslo-1f2aba5f706f882663e770bc8dac031627c91f39.zip
Renames filter to base_filter and weight to base_weight
filter is a python builtin function so importing it pollutes ones name space. It is now renamed to base_filter. We also rename weight to base_weight, just to be consistent in the naming conventions. We add a test for base_filter. Fixes bug 1175829 Change-Id: I46e0fa696d2f39081b5568c701b0a70c54f271ab
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/scheduler/test_base_filter.py129
-rw-r--r--tests/unit/scheduler/test_weights.py5
2 files changed, 132 insertions, 2 deletions
diff --git a/tests/unit/scheduler/test_base_filter.py b/tests/unit/scheduler/test_base_filter.py
new file mode 100644
index 0000000..680e0de
--- /dev/null
+++ b/tests/unit/scheduler/test_base_filter.py
@@ -0,0 +1,129 @@
+# Copyright (c) 2013 OpenStack Foundation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import mox
+
+from openstack.common.scheduler import base_filter
+
+from tests import utils
+
+
+class TestBaseFilter(utils.BaseTestCase):
+
+ def setUp(self):
+ super(TestBaseFilter, self).setUp()
+ self.filter = base_filter.BaseFilter()
+ self.mox = mox.Mox()
+
+ def test_filter_one_is_called(self):
+ filters = [1, 2, 3, 4]
+ filter_properties = {'x': 'y'}
+ self.mox.StubOutWithMock(self.filter, '_filter_one')
+
+ self.filter._filter_one(1, filter_properties).AndReturn(False)
+ self.filter._filter_one(2, filter_properties).AndReturn(True)
+ self.filter._filter_one(3, filter_properties).AndReturn(True)
+ self.filter._filter_one(4, filter_properties).AndReturn(False)
+
+ self.mox.ReplayAll()
+
+ result = list(self.filter.filter_all(filters, filter_properties))
+ self.assertEqual([2, 3], result)
+
+
+class FakeExtension(object):
+
+ def __init__(self, plugin):
+ self.plugin = plugin
+
+
+class BaseFakeFilter(base_filter.BaseFilter):
+ pass
+
+
+class FakeFilter1(BaseFakeFilter):
+ """
+ * Should be included in the output of all_classes
+ * It derives from BaseFakeFilter
+ * AND
+ * It has a fake entry point defined (is returned by fake ExtensionManager)
+ """
+
+
+class FakeFilter2(BaseFakeFilter):
+ """
+ * Should be NOT included in all_classes
+ * Derives from BaseFakeFilter
+ * BUT
+ * It has no entry point
+ """
+
+
+class FakeFilter3(base_filter.BaseFilter):
+ """
+ * Should NOT be included
+ * Does NOT derive from BaseFakeFilter
+ """
+ pass
+
+
+class FakeFilter4(BaseFakeFilter):
+ """
+ Should be included
+ * Derives from BaseFakeFilter
+ * AND
+ * It has an entrypoint
+ """
+ pass
+
+
+class FakeFilter5(BaseFakeFilter):
+ """
+ Should NOT be included
+ * Derives from BaseFakeFilter
+ * BUT
+ * It has NO entrypoint
+ """
+ pass
+
+
+class FakeExtensionManager(list):
+
+ def __init__(self, namespace):
+ classes = [FakeFilter1, FakeFilter3, FakeFilter4]
+ exts = map(FakeExtension, classes)
+ super(FakeExtensionManager, self).__init__(exts)
+ self.namespace = namespace
+
+
+class TestBaseFilterHandler(utils.BaseTestCase):
+
+ def setUp(self):
+ super(TestBaseFilterHandler, self).setUp()
+ self.stubs.Set(base_filter.extension, 'ExtensionManager',
+ FakeExtensionManager)
+ self.handler = base_filter.BaseFilterHandler(BaseFakeFilter,
+ 'fake_filters')
+
+ def test_get_all_classes(self):
+ # In order for a FakeFilter to be returned by get_all_classes, it has
+ # to comply with these rules:
+ # * It must be derived from BaseFakeFilter
+ # AND
+ # * It must have a python entrypoint assigned (returned by
+ # FakeExtensionManager)
+ expected = [FakeFilter1, FakeFilter4]
+ result = self.handler.get_all_classes()
+ self.assertEqual(expected, result)
diff --git a/tests/unit/scheduler/test_weights.py b/tests/unit/scheduler/test_weights.py
index d539ab3..21d3f3e 100644
--- a/tests/unit/scheduler/test_weights.py
+++ b/tests/unit/scheduler/test_weights.py
@@ -16,7 +16,7 @@
Tests For Scheduler weights.
"""
-from openstack.common.scheduler import weight
+from openstack.common.scheduler import base_weight
from tests.unit import fakes
from tests import utils
@@ -24,7 +24,8 @@ from tests import utils
class TestWeightHandler(utils.BaseTestCase):
def test_get_all_classes(self):
namespace = "openstack.common.tests.fakes.weights"
- handler = weight.BaseWeightHandler(weight.BaseWeigher, namespace)
+ handler = base_weight.BaseWeightHandler(
+ base_weight.BaseWeigher, namespace)
classes = handler.get_all_classes()
self.assertTrue(fakes.FakeWeigher1 in classes)
self.assertTrue(fakes.FakeWeigher2 in classes)