summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_coverage_ext.py190
-rw-r--r--nova/tests/fake_policy.py1
-rw-r--r--nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl8
-rw-r--r--nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl3
4 files changed, 202 insertions, 0 deletions
diff --git a/nova/tests/api/openstack/compute/contrib/test_coverage_ext.py b/nova/tests/api/openstack/compute/contrib/test_coverage_ext.py
new file mode 100644
index 000000000..e7d00e68a
--- /dev/null
+++ b/nova/tests/api/openstack/compute/contrib/test_coverage_ext.py
@@ -0,0 +1,190 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2012 IBM
+#
+# 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 os.path
+import telnetlib
+
+from coverage import coverage
+import webob
+
+from nova.api.openstack.compute.contrib import coverage_ext
+from nova import context
+from nova import exception
+from nova.openstack.common import jsonutils
+from nova import test
+from nova.tests.api.openstack import fakes
+
+
+def fake_telnet(self, data):
+ return
+
+
+def fake_check_coverage(self):
+ return False
+
+
+def fake_xml_report(self, outfile):
+ return
+
+
+def fake_report(self, file):
+ return
+
+
+class CoverageExtensionTest(test.TestCase):
+
+ def setUp(self):
+ super(CoverageExtensionTest, self).setUp()
+ self.stubs.Set(telnetlib.Telnet, 'write', fake_telnet)
+ self.stubs.Set(telnetlib.Telnet, 'expect', fake_telnet)
+ self.stubs.Set(coverage, 'report', fake_report)
+ self.stubs.Set(coverage, 'xml_report', fake_xml_report)
+ self.admin_context = context.RequestContext('fakeadmin_0',
+ 'fake',
+ is_admin=True)
+ self.user_context = context.RequestContext('fakeadmin_0',
+ 'fake',
+ is_admin=False)
+
+ def test_not_admin(self):
+ body = {'start': {}}
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.user_context))
+ self.assertEqual(res.status_int, 403)
+
+ def test_start_coverage_action(self):
+ body = {'start': {}}
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.admin_context))
+ self.assertEqual(res.status_int, 200)
+
+ def test_stop_coverage_action(self):
+ self.stubs.Set(coverage_ext.CoverageController,
+ '_check_coverage', fake_check_coverage)
+ body = {'stop': {}}
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.admin_context))
+ self.assertEqual(res.status_int, 200)
+
+ def test_report_coverage_action_file(self):
+ self.stubs.Set(coverage_ext.CoverageController,
+ '_check_coverage', fake_check_coverage)
+ self.test_start_coverage_action()
+ body = {
+ 'report': {
+ 'file': 'coverage-unit-test.report',
+ },
+ }
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.admin_context))
+ self.assertEqual(res.status_int, 200)
+ resp_dict = jsonutils.loads(res.body)
+ self.assertTrue('path' in resp_dict)
+ self.assertTrue('coverage-unit-test.report' in resp_dict['path'])
+
+ def test_report_coverage_action_xml_file(self):
+ self.stubs.Set(coverage_ext.CoverageController,
+ '_check_coverage', fake_check_coverage)
+ body = {
+ 'report': {
+ 'file': 'coverage-xml-unit-test.report',
+ 'xml': 'True',
+ },
+ }
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.admin_context))
+ self.assertEqual(res.status_int, 200)
+ resp_dict = jsonutils.loads(res.body)
+ self.assertTrue('path' in resp_dict)
+ self.assertTrue('coverage-xml-unit-test.report' in resp_dict['path'])
+
+ def test_report_coverage_action_nofile(self):
+ self.stubs.Set(coverage_ext.CoverageController,
+ '_check_coverage', fake_check_coverage)
+ body = {'report': {}}
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.admin_context))
+ self.assertEqual(res.status_int, 400)
+
+ def test_coverage_bad_body(self):
+ body = {}
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.admin_context))
+ self.assertEqual(res.status_int, 400)
+
+ def test_coverage_report_bad_path(self):
+ self.stubs.Set(coverage_ext.CoverageController,
+ '_check_coverage', fake_check_coverage)
+ body = {
+ 'report': {
+ 'file': '/tmp/coverage-xml-unit-test.report',
+ }
+ }
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.admin_context))
+ self.assertEqual(res.status_int, 400)
+
+ def test_stop_coverage_action_nostart(self):
+ body = {'stop': {}}
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.admin_context))
+ self.assertEqual(res.status_int, 404)
+
+ def test_report_coverage_action_nostart(self):
+ body = {'stop': {}}
+ req = webob.Request.blank('/v2/fake/os-coverage/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app(
+ fake_auth_context=self.admin_context))
+ self.assertEqual(res.status_int, 404)
diff --git a/nova/tests/fake_policy.py b/nova/tests/fake_policy.py
index b3ae0fa17..ae0383fe0 100644
--- a/nova/tests/fake_policy.py
+++ b/nova/tests/fake_policy.py
@@ -109,6 +109,7 @@ policy_data = """
"compute_extension:config_drive": "",
"compute_extension:console_output": "",
"compute_extension:consoles": "",
+ "compute_extension:coverage_ext": "is_admin:True",
"compute_extension:createserverext": "",
"compute_extension:deferred_delete": "",
"compute_extension:disk_config": "",
diff --git a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl
index 65cbb4889..09131ffb0 100644
--- a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl
+++ b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl
@@ -129,6 +129,14 @@
"updated": "%(timestamp)s"
},
{
+ "alias": "os-coverage",
+ "description": "%(text)s",
+ "links": [],
+ "name": "Coverage",
+ "namespace": "http://docs.openstack.org/compute/ext/coverage/api/v2",
+ "updated": "%(timestamp)s"
+ },
+ {
"alias": "os-create-server-ext",
"description": "%(text)s",
"links": [],
diff --git a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl
index bdef0266c..8241a1792 100644
--- a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl
+++ b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl
@@ -48,6 +48,9 @@
<extension alias="os-consoles" updated="%(timestamp)s" namespace="http://docs.openstack.org/compute/ext/os-consoles/api/v2" name="Consoles">
<description>%(text)s</description>
</extension>
+ <extension alias="os-coverage" updated="%(timestamp)s" namespace="http://docs.openstack.org/compute/ext/coverage/api/v2" name="Coverage">
+ <description>%(text)s</description>
+ </extension>
<extension alias="os-create-server-ext" updated="%(timestamp)s" namespace="http://docs.openstack.org/compute/ext/createserverext/api/v1.1" name="Createserverext">
<description>%(text)s</description>
</extension>