summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-02-27 00:40:07 +0000
committerGerrit Code Review <review@openstack.org>2013-02-27 00:40:07 +0000
commit7414e5137fca92389267f5362a713b566311cadc (patch)
tree357045d89caf28d2312d32cc9d3fa466ca62cc4e
parent48943ae82454597b083c86ceb55b9a79c83fe40b (diff)
parentce8cf3dcefb0a432381a4461b930a0a56ad22292 (diff)
downloadnova-7414e5137fca92389267f5362a713b566311cadc.tar.gz
nova-7414e5137fca92389267f5362a713b566311cadc.tar.xz
nova-7414e5137fca92389267f5362a713b566311cadc.zip
Merge "Use a fake coverage module instead of real one."
-rw-r--r--nova/api/openstack/compute/contrib/coverage_ext.py21
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_coverage_ext.py26
-rw-r--r--nova/tests/integrated/test_api_samples.py3
-rwxr-xr-xrun_tests.sh4
4 files changed, 35 insertions, 19 deletions
diff --git a/nova/api/openstack/compute/contrib/coverage_ext.py b/nova/api/openstack/compute/contrib/coverage_ext.py
index 6edf9244f..6eeb363f2 100644
--- a/nova/api/openstack/compute/contrib/coverage_ext.py
+++ b/nova/api/openstack/compute/contrib/coverage_ext.py
@@ -45,7 +45,6 @@ class CoverageController(object):
"""The Coverage report API controller for the OpenStack API."""
def __init__(self):
self.data_path = tempfile.mkdtemp(prefix='nova-coverage_')
- data_out = os.path.join(self.data_path, '.nova-coverage')
self.compute_api = compute_api.API()
self.network_api = network_api.API()
self.conductor_api = conductor_api.API()
@@ -55,14 +54,20 @@ class CoverageController(object):
self.cert_api = cert_api.CertAPI()
self.services = []
self.combine = False
- try:
- import coverage
- self.coverInst = coverage.coverage(data_file=data_out)
- self.has_coverage = True
- except ImportError:
- self.has_coverage = False
+ self._cover_inst = None
super(CoverageController, self).__init__()
+ @property
+ def coverInst(self):
+ if not self._cover_inst:
+ try:
+ import coverage
+ data_out = os.path.join(self.data_path, '.nova-coverage')
+ self._cover_inst = coverage.coverage(data_file=data_out)
+ except ImportError:
+ pass
+ return self._cover_inst
+
def _find_services(self, req):
"""Returns a list of services."""
context = req.environ['nova.context']
@@ -242,7 +247,7 @@ class CoverageController(object):
'report': self._report_coverage,
}
authorize(req.environ['nova.context'])
- if not self.has_coverage:
+ if not self.coverInst:
msg = _("Python coverage module is not installed.")
raise exc.HTTPServiceUnavailable(explanation=msg)
for action, data in body.iteritems():
diff --git a/nova/tests/api/openstack/compute/contrib/test_coverage_ext.py b/nova/tests/api/openstack/compute/contrib/test_coverage_ext.py
index 66a8a8f82..3c37fe10b 100644
--- a/nova/tests/api/openstack/compute/contrib/test_coverage_ext.py
+++ b/nova/tests/api/openstack/compute/contrib/test_coverage_ext.py
@@ -34,12 +34,27 @@ def fake_check_coverage(self):
return False
-def fake_xml_report(self, outfile):
- return
+class FakeCoverage(object):
+ def __init__(self, data_file=None):
+ self.started = False
+ return super(FakeCoverage, self).__init__()
+ def save(self):
+ pass
-def fake_report(self, file):
- return
+ def start(self):
+ self.started = True
+
+ def stop(self):
+ if not self.started:
+ raise AssertionError
+ self.started = False
+
+ def report(self, file):
+ pass
+
+ def xml_report(self, outfile):
+ pass
class CoverageExtensionTest(test.TestCase):
@@ -48,8 +63,7 @@ class CoverageExtensionTest(test.TestCase):
super(CoverageExtensionTest, self).setUp()
self.stubs.Set(telnetlib.Telnet, 'write', fake_telnet)
self.stubs.Set(telnetlib.Telnet, 'expect', fake_telnet)
- self.stubs.Set(coverage.coverage, 'report', fake_report)
- self.stubs.Set(coverage.coverage, 'xml_report', fake_xml_report)
+ self.stubs.Set(coverage, 'coverage', FakeCoverage)
self.admin_context = context.RequestContext('fakeadmin_0',
'fake',
is_admin=True)
diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py
index aaf22ff9d..a7f7b6d91 100644
--- a/nova/tests/integrated/test_api_samples.py
+++ b/nova/tests/integrated/test_api_samples.py
@@ -46,6 +46,7 @@ import nova.quota
from nova.scheduler import driver
from nova.servicegroup import api as service_group_api
from nova import test
+from nova.tests.api.openstack.compute.contrib import test_coverage_ext
from nova.tests.api.openstack.compute.contrib import test_fping
from nova.tests.api.openstack.compute.contrib import test_networks
from nova.tests.api.openstack.compute.contrib import test_services
@@ -760,7 +761,7 @@ class CoverageExtJsonTests(ApiSampleTestBase):
self.stubs.Set(coverage_ext.CoverageController, '_check_coverage',
_fake_check_coverage)
- self.stubs.Set(coverage.coverage, 'xml_report', _fake_xml_report)
+ self.stubs.Set(coverage, 'coverage', test_coverage_ext.FakeCoverage)
def test_start_coverage(self):
# Start coverage data collection.
diff --git a/run_tests.sh b/run_tests.sh
index 2b6eda900..29e723c7f 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -127,10 +127,6 @@ function run_tests {
fi
if [ $coverage -eq 1 ]; then
- # Do not test test_coverage_ext when gathering coverage.
- if [ "x$testrargs" = "x" ]; then
- testrargs="^(?!.*test.*coverage).*$"
- fi
TESTRTESTS="$TESTRTESTS --coverage"
else
TESTRTESTS="$TESTRTESTS --slowest"