summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-05-31 01:17:54 +0000
committerGerrit Code Review <review@openstack.org>2012-05-31 01:17:54 +0000
commit069f8f3ea4ac20271cddca0c3e209ef0af8cd0d6 (patch)
tree44663b4d1ae5c1e95ae9a2737a94ce0aef8c2860 /nova/tests
parent3c2719350c14f0f453eb0ef95482c2cc19d710e8 (diff)
parent14c01e09b68b367d708c6ddd6f3d4e440687727c (diff)
Merge "Add scheduler filter for trustedness of a host"
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/scheduler/test_host_filters.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/nova/tests/scheduler/test_host_filters.py b/nova/tests/scheduler/test_host_filters.py
index 22a162aa2..b7a5402c8 100644
--- a/nova/tests/scheduler/test_host_filters.py
+++ b/nova/tests/scheduler/test_host_filters.py
@@ -15,17 +15,45 @@
Tests For Scheduler Host Filters.
"""
+import httplib
import json
+import stubout
from nova import context
from nova import exception
from nova import flags
from nova.scheduler import filters
+from nova.scheduler.filters.trusted_filter import AttestationService
from nova import test
from nova.tests.scheduler import fakes
from nova import utils
+DATA = ''
+
+
+def stub_out_https_backend(stubs):
+ """
+ Stubs out the httplib.HTTPRequest.getresponse to return
+ faked-out data instead of grabbing actual contents of a resource
+
+ The stubbed getresponse() returns an iterator over
+ the data "I am a teapot, short and stout\n"
+
+ :param stubs: Set of stubout stubs
+ """
+
+ class FakeHTTPResponse(object):
+
+ def read(self):
+ return DATA
+
+ def fake_do_request(self, *args, **kwargs):
+ return httplib.OK, FakeHTTPResponse()
+
+ stubs.Set(AttestationService, '_do_request', fake_do_request)
+
+
class TestFilter(filters.BaseHostFilter):
pass
@@ -40,6 +68,8 @@ class HostFiltersTestCase(test.TestCase):
def setUp(self):
super(HostFiltersTestCase, self).setUp()
+ self.stubs = stubout.StubOutForTesting()
+ stub_out_https_backend(self.stubs)
self.context = context.RequestContext('fake', 'fake')
self.json_query = json.dumps(
['and', ['>=', '$free_ram_mb', 1024],
@@ -586,6 +616,57 @@ class HostFiltersTestCase(test.TestCase):
filter_properties = {'scheduler_hints': {'query': json.dumps(raw)}}
self.assertTrue(filt_cls.host_passes(host, filter_properties))
+ def test_trusted_filter_default_passes(self):
+ self._stub_service_is_up(True)
+ filt_cls = self.class_map['TrustedFilter']()
+ filter_properties = {'instance_type': {'memory_mb': 1024}}
+ host = fakes.FakeHostState('host1', 'compute', {})
+ self.assertTrue(filt_cls.host_passes(host, filter_properties))
+
+ def test_trusted_filter_trusted_and_trusted_passes(self):
+ global DATA
+ DATA = '{"hosts":[{"host_name":"host1","trust_lvl":"trusted"}]}'
+ self._stub_service_is_up(True)
+ filt_cls = self.class_map['TrustedFilter']()
+ extra_specs = {'trusted_host': 'trusted'}
+ filter_properties = {'instance_type': {'memory_mb': 1024,
+ 'extra_specs': extra_specs}}
+ host = fakes.FakeHostState('host1', 'compute', {})
+ self.assertTrue(filt_cls.host_passes(host, filter_properties))
+
+ def test_trusted_filter_trusted_and_untrusted_fails(self):
+ global DATA
+ DATA = '{"hosts":[{"host_name":"host1","trust_lvl":"untrusted"}]}'
+ self._stub_service_is_up(True)
+ filt_cls = self.class_map['TrustedFilter']()
+ extra_specs = {'trusted_host': 'trusted'}
+ filter_properties = {'instance_type': {'memory_mb': 1024,
+ 'extra_specs': extra_specs}}
+ host = fakes.FakeHostState('host1', 'compute', {})
+ self.assertFalse(filt_cls.host_passes(host, filter_properties))
+
+ def test_trusted_filter_untrusted_and_trusted_fails(self):
+ global DATA
+ DATA = '{"hosts":[{"host_name":"host1","trust_lvl":"trusted"}]}'
+ self._stub_service_is_up(True)
+ filt_cls = self.class_map['TrustedFilter']()
+ extra_specs = {'trusted_host': 'untrusted'}
+ filter_properties = {'instance_type': {'memory_mb': 1024,
+ 'extra_specs': extra_specs}}
+ host = fakes.FakeHostState('host1', 'compute', {})
+ self.assertFalse(filt_cls.host_passes(host, filter_properties))
+
+ def test_trusted_filter_untrusted_and_untrusted_passes(self):
+ global DATA
+ DATA = '{"hosts":[{"host_name":"host1","trust_lvl":"untrusted"}]}'
+ self._stub_service_is_up(True)
+ filt_cls = self.class_map['TrustedFilter']()
+ extra_specs = {'trusted_host': 'untrusted'}
+ filter_properties = {'instance_type': {'memory_mb': 1024,
+ 'extra_specs': extra_specs}}
+ host = fakes.FakeHostState('host1', 'compute', {})
+ self.assertTrue(filt_cls.host_passes(host, filter_properties))
+
def test_core_filter_passes(self):
filt_cls = self.class_map['CoreFilter']()
filter_properties = {'instance_type': {'vcpus': 1}}