Merge "Use a fake coverage module instead of real one."

This commit is contained in:
Jenkins 2013-02-27 00:40:07 +00:00 committed by Gerrit Code Review
commit 7414e5137f
4 changed files with 35 additions and 19 deletions

View File

@ -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():

View File

@ -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)

View File

@ -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.

View File

@ -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"