Update functionality of coverage extension.

Change If1aa25fc7237e9bb5100d2a4a8e560f0a68eba61 adds additional
functionality to the coverage extension. Mainly returning the
data file path for the 'stop' action and adding support for
generating html reports. This commit adds support for this new
functionality.

Change-Id: Icd147350d5c038f6b9c8063e77a75370eb8422e9
This commit is contained in:
Matthew Treinish 2013-01-03 17:11:06 -05:00
parent fba20df12c
commit 6f580661f6
5 changed files with 12 additions and 7 deletions

View File

@ -20,7 +20,7 @@ from novaclient import base
class Coverage(base.Resource):
def __repr__(self):
return "<Coverage: %s>" % self.name
return "<Coverage: %s>" % self.name
class CoverageManager(base.ManagerWithFind):
@ -41,7 +41,7 @@ class CoverageManager(base.ManagerWithFind):
url = '/os-coverage/action'
return self.api.client.post(url, body=body)
def report(self, filename, xml=False):
def report(self, filename, xml=False, html=True):
body = {
'report': {
'file': filename,
@ -49,6 +49,8 @@ class CoverageManager(base.ManagerWithFind):
}
if xml:
body['report']['xml'] = True
elif html:
body['report']['html'] = True
self.run_hooks('modify_body_for_action', body)
url = '/os-coverage/action'
return self.api.client.post(url, body=body)

View File

@ -2307,8 +2307,8 @@ def do_coverage_start(cs, args):
def do_coverage_stop(cs, args):
"""Stop Nova coverage reporting"""
cs.coverage.stop()
print "Coverage collection stopped"
out = cs.coverage.stop()
print "Coverage data file path: %s" % out[-1]['path']
@utils.arg('filename', metavar='<filename>', help='report filename')

View File

@ -1347,8 +1347,10 @@ class FakeHTTPClient(base_client.HTTPClient):
return (202, {}, None)
def post_os_coverage_action(self, body, **kw):
if 'report' not in body:
if 'start' in body:
return (200, {}, None)
elif 'stop' in body:
return (200, {}, {'path': '/tmp/tmpdir/'})
else:
return (200, {}, {
'path': '/tmp/tmpdir/' + body['report']['file']

View File

@ -34,7 +34,8 @@ class CoverageTest(utils.TestCase):
def test_stop_coverage(self):
c = cs.coverage.stop()
cs.assert_called('POST', '/os-coverage/action')
return_dict = {'path': '/tmp/tmpdir/report'}
cs.assert_called_anytime('POST', '/os-coverage/action')
def test_report_coverage(self):
c = cs.coverage.report('report')

View File

@ -650,7 +650,7 @@ class ShellTest(utils.TestCase):
def test_coverage_stop(self):
self.run_command('coverage-stop')
self.assert_called('POST', '/os-coverage/action')
self.assert_called_anytime('POST', '/os-coverage/action')
def test_coverage_report(self):
self.run_command('coverage-report report')