summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Treinish <treinish@linux.vnet.ibm.com>2012-12-14 15:04:50 -0500
committerMatthew Treinish <treinish@linux.vnet.ibm.com>2012-12-20 15:39:20 -0500
commit2655ac9f3cce45d3d3b5f7d38dd8c617ed1de070 (patch)
tree59ebb70d8068ca512b8abe09123bf3a076d687dc
parent67d188cf4a9a61902ab7109b9a80b5b52dfa4d07 (diff)
downloadnova-2655ac9f3cce45d3d3b5f7d38dd8c617ed1de070.tar.gz
nova-2655ac9f3cce45d3d3b5f7d38dd8c617ed1de070.tar.xz
nova-2655ac9f3cce45d3d3b5f7d38dd8c617ed1de070.zip
Add API samples tests for the coverage extension.
Partially implements blueprint nova-api-samples Fixes bug 1089531 Change-Id: I5b287ea210f275a0c316a28d6dc3614d107aff05
-rw-r--r--doc/api_samples/os-coverage/coverage-report-post-req.json5
-rw-r--r--doc/api_samples/os-coverage/coverage-report-post-req.xml4
-rw-r--r--doc/api_samples/os-coverage/coverage-report-post-resp.json3
-rw-r--r--doc/api_samples/os-coverage/coverage-report-post-resp.xml2
-rw-r--r--doc/api_samples/os-coverage/coverage-start-combine-post-req.json5
-rw-r--r--doc/api_samples/os-coverage/coverage-start-combine-post-req.xml4
-rw-r--r--doc/api_samples/os-coverage/coverage-start-post-req.json4
-rw-r--r--doc/api_samples/os-coverage/coverage-start-post-req.xml2
-rw-r--r--doc/api_samples/os-coverage/coverage-stop-post-req.json4
-rw-r--r--doc/api_samples/os-coverage/coverage-stop-post-req.xml2
-rw-r--r--doc/api_samples/os-coverage/coverage-xml-report-post-req.json6
-rw-r--r--doc/api_samples/os-coverage/coverage-xml-report-post-req.xml5
-rw-r--r--doc/api_samples/os-coverage/coverage-xml-report-post-resp.json3
-rw-r--r--doc/api_samples/os-coverage/coverage-xml-report-post-resp.xml2
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-report-post-req.json.tpl5
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-report-post-req.xml.tpl4
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-report-post-resp.json.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-report-post-resp.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-start-combine-post-req.json.tpl5
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-start-combine-post-req.xml.tpl4
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-start-post-req.json.tpl4
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-start-post-req.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-stop-post-req.json.tpl4
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-stop-post-req.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-req.json.tpl6
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-req.xml.tpl5
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-resp.json.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-resp.xml.tpl2
-rw-r--r--nova/tests/integrated/test_api_samples.py71
29 files changed, 172 insertions, 1 deletions
diff --git a/doc/api_samples/os-coverage/coverage-report-post-req.json b/doc/api_samples/os-coverage/coverage-report-post-req.json
new file mode 100644
index 000000000..cb16cfc85
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-report-post-req.json
@@ -0,0 +1,5 @@
+{
+ "report" : {
+ "file" : "report"
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-report-post-req.xml b/doc/api_samples/os-coverage/coverage-report-post-req.xml
new file mode 100644
index 000000000..1cc9b7433
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-report-post-req.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<report>
+ <file>report</file>
+</report> \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-report-post-resp.json b/doc/api_samples/os-coverage/coverage-report-post-resp.json
new file mode 100644
index 000000000..e7db3076a
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-report-post-resp.json
@@ -0,0 +1,3 @@
+{
+ "path": "/tmp/tmpV0Pno7/nova-coverage_D8L8SB/report"
+} \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-report-post-resp.xml b/doc/api_samples/os-coverage/coverage-report-post-resp.xml
new file mode 100644
index 000000000..8b7188ad0
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-report-post-resp.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<path>/tmp/tmpAqRtz5/nova-coverage_Iqja9E/report</path> \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-start-combine-post-req.json b/doc/api_samples/os-coverage/coverage-start-combine-post-req.json
new file mode 100644
index 000000000..6d41ba598
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-start-combine-post-req.json
@@ -0,0 +1,5 @@
+{
+ "start" : {
+ "combine": true
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-start-combine-post-req.xml b/doc/api_samples/os-coverage/coverage-start-combine-post-req.xml
new file mode 100644
index 000000000..10489b3be
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-start-combine-post-req.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<start>
+ <combine>True</combine>
+</start> \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-start-post-req.json b/doc/api_samples/os-coverage/coverage-start-post-req.json
new file mode 100644
index 000000000..8e5ef033c
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-start-post-req.json
@@ -0,0 +1,4 @@
+{
+ "start" : {
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-start-post-req.xml b/doc/api_samples/os-coverage/coverage-start-post-req.xml
new file mode 100644
index 000000000..398971d54
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-start-post-req.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<start></start> \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-stop-post-req.json b/doc/api_samples/os-coverage/coverage-stop-post-req.json
new file mode 100644
index 000000000..57de88191
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-stop-post-req.json
@@ -0,0 +1,4 @@
+{
+ "stop" : {
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-stop-post-req.xml b/doc/api_samples/os-coverage/coverage-stop-post-req.xml
new file mode 100644
index 000000000..7092c81e2
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-stop-post-req.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<stop></stop> \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-xml-report-post-req.json b/doc/api_samples/os-coverage/coverage-xml-report-post-req.json
new file mode 100644
index 000000000..bcbe0c4a0
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-xml-report-post-req.json
@@ -0,0 +1,6 @@
+{
+ "report": {
+ "xml": true,
+ "file": "report"
+ }
+}
diff --git a/doc/api_samples/os-coverage/coverage-xml-report-post-req.xml b/doc/api_samples/os-coverage/coverage-xml-report-post-req.xml
new file mode 100644
index 000000000..62e5bc6f4
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-xml-report-post-req.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<report>
+ <file>report</file>
+ <xml>True</xml>
+</report> \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-xml-report-post-resp.json b/doc/api_samples/os-coverage/coverage-xml-report-post-resp.json
new file mode 100644
index 000000000..0648b2ebc
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-xml-report-post-resp.json
@@ -0,0 +1,3 @@
+{
+ "path": "/tmp/tmp6kdYaa/nova-coverage_TOTUbz/report"
+} \ No newline at end of file
diff --git a/doc/api_samples/os-coverage/coverage-xml-report-post-resp.xml b/doc/api_samples/os-coverage/coverage-xml-report-post-resp.xml
new file mode 100644
index 000000000..72f584003
--- /dev/null
+++ b/doc/api_samples/os-coverage/coverage-xml-report-post-resp.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<path>/tmp/tmp4j87bp/nova-coverage_7ViTA7/report</path> \ No newline at end of file
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-req.json.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-req.json.tpl
new file mode 100644
index 000000000..c228b05f0
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-req.json.tpl
@@ -0,0 +1,5 @@
+{
+ "report" : {
+ "file" : "%(filename)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-req.xml.tpl
new file mode 100644
index 000000000..02b8fc97c
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-req.xml.tpl
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<report>
+ <file>%(filename)s</file>
+</report>
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-resp.json.tpl
new file mode 100644
index 000000000..6cdd1f37d
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-resp.json.tpl
@@ -0,0 +1,3 @@
+{
+ "path" : "%(path)s"
+}
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-resp.xml.tpl
new file mode 100644
index 000000000..51b9773d3
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-report-post-resp.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<path>%(path)s</path>
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-start-combine-post-req.json.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-start-combine-post-req.json.tpl
new file mode 100644
index 000000000..296049df9
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-start-combine-post-req.json.tpl
@@ -0,0 +1,5 @@
+{
+ "start" : {
+ "combine": true
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-start-combine-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-start-combine-post-req.xml.tpl
new file mode 100644
index 000000000..11bdb44f9
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-start-combine-post-req.xml.tpl
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<start>
+ <combine>True</combine>
+</start>
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-start-post-req.json.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-start-post-req.json.tpl
new file mode 100644
index 000000000..a046b9207
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-start-post-req.json.tpl
@@ -0,0 +1,4 @@
+{
+ "start" : {
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-start-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-start-post-req.xml.tpl
new file mode 100644
index 000000000..aeaff102a
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-start-post-req.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<start></start>
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-stop-post-req.json.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-stop-post-req.json.tpl
new file mode 100644
index 000000000..c46e49cca
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-stop-post-req.json.tpl
@@ -0,0 +1,4 @@
+{
+ "stop" : {
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-stop-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-stop-post-req.xml.tpl
new file mode 100644
index 000000000..1dd5c7bc7
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-stop-post-req.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<stop></stop>
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-req.json.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-req.json.tpl
new file mode 100644
index 000000000..906d629ed
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-req.json.tpl
@@ -0,0 +1,6 @@
+{
+ "report": {
+ "xml": true,
+ "file": "%(filename)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-req.xml.tpl
new file mode 100644
index 000000000..902e0e537
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-req.xml.tpl
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<report>
+ <file>%(filename)s</file>
+ <xml>True</xml>
+</report>
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-resp.json.tpl
new file mode 100644
index 000000000..6cdd1f37d
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-resp.json.tpl
@@ -0,0 +1,3 @@
+{
+ "path" : "%(path)s"
+}
diff --git a/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-resp.xml.tpl
new file mode 100644
index 000000000..65f5e16bc
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-coverage/coverage-xml-report-post-resp.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<path>%(path)s</path>
diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py
index a9fbb8fe3..ab6770a23 100644
--- a/nova/tests/integrated/test_api_samples.py
+++ b/nova/tests/integrated/test_api_samples.py
@@ -21,8 +21,10 @@ import re
import urllib
import uuid as uuid_lib
+from coverage import coverage
from lxml import etree
+from nova.api.openstack.compute.contrib import coverage_ext
# Import extensions to pull in osapi_compute_extension CONF option used below.
from nova.api.openstack.compute import extensions
from nova.cloudpipe.pipelib import CloudPipe
@@ -353,7 +355,6 @@ class ApiSamplesTrap(ApiSampleTestBase):
do_not_approve_additions.append('NMN')
do_not_approve_additions.append('OS-FLV-DISABLED')
do_not_approve_additions.append('os-config-drive')
- do_not_approve_additions.append('os-coverage')
do_not_approve_additions.append('os-create-server-ext')
do_not_approve_additions.append('os-fixed-ips')
do_not_approve_additions.append('os-flavor-access')
@@ -719,6 +720,74 @@ class LimitsSampleXmlTest(LimitsSampleJsonTest):
ctype = 'xml'
+class CoverageExtJsonTests(ApiSampleTestBase):
+ extension_name = ("nova.api.openstack.compute.contrib.coverage_ext."
+ "Coverage_ext")
+
+ def setUp(self):
+ super(CoverageExtJsonTests, self).setUp()
+
+ def _fake_check_coverage(self):
+ return False
+
+ def _fake_xml_report(self, outfile=None):
+ return
+
+ self.stubs.Set(coverage_ext.CoverageController, '_check_coverage',
+ _fake_check_coverage)
+ self.stubs.Set(coverage, 'xml_report', _fake_xml_report)
+
+ def test_start_coverage(self):
+ """Start coverage data collection"""
+ subs = {}
+ response = self._do_post('os-coverage/action',
+ 'coverage-start-post-req', subs)
+ self.assertEqual(response.status, 200)
+
+ def test_start_coverage_combine(self):
+ """Start coverage data collection"""
+ subs = {}
+ response = self._do_post('os-coverage/action',
+ 'coverage-start-combine-post-req', subs)
+ self.assertEqual(response.status, 200)
+
+ def test_stop_coverage(self):
+ """Stop coverage data collection"""
+ subs = {}
+ response = self._do_post('os-coverage/action',
+ 'coverage-stop-post-req', subs)
+ self.assertEqual(response.status, 200)
+
+ def test_report_coverage(self):
+ """Generate a coverage report"""
+ subs = {
+ 'filename': 'report',
+ 'path': '/.*/report',
+ }
+ response = self._do_post('os-coverage/action',
+ 'coverage-report-post-req', subs)
+ self.assertEqual(response.status, 200)
+ subs.update(self._get_regexes())
+ return self._verify_response('coverage-report-post-resp',
+ subs, response)
+
+ def test_xml_report_coverage(self):
+ subs = {
+ 'filename': 'report',
+ 'path': '/.*/report',
+ }
+ response = self._do_post('os-coverage/action',
+ 'coverage-xml-report-post-req', subs)
+ self.assertEqual(response.status, 200)
+ subs.update(self._get_regexes())
+ return self._verify_response('coverage-xml-report-post-resp',
+ subs, response)
+
+
+class CoverageExtXmlTests(CoverageExtJsonTests):
+ ctype = "xml"
+
+
class ServersActionsJsonTest(ServersSampleBase):
def _test_server_action(self, uuid, action,
subs={}, resp_tpl=None, code=202):