Add api_version parameter for API sample test base class

When adds new microversion for nova REST API, we need add api sample
test. This patch adds new parameter to pass the requested API version.

For example to test v2.2 version of host API. It only adds new test
function in HostsSampleJsonTest:

    def test_host_get_v22(self):
        response = self._do_get('os-hosts/%s' % self.compute.host,
                                api_version='2.2')
        subs = self._get_regexes()
        self._verify_response('host-get-resp-2-2', subs, response, 200)

'api_version' is used to specifiy the requested version. And provide
template file for this version API's response.

Partially implements blueprint api-microversions

Change-Id: I58ccb82e8614aed2f2f0f33bd76d31adce141fd4
This commit is contained in:
He Jie Xu
2015-02-04 17:48:46 +08:00
parent 4f59f773e4
commit 7b31f12bd0

View File

@@ -271,25 +271,30 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase):
'int': '[0-9]+',
}
def _get_response(self, url, method, body=None, strip_version=False):
def _get_response(self, url, method, body=None, strip_version=False,
api_version=None):
headers = {}
headers['Content-Type'] = 'application/' + self.ctype
headers['Accept'] = 'application/' + self.ctype
if api_version:
headers['X-OpenStack-Compute-API-Version'] = api_version
return self.api.api_request(url, body=body, method=method,
headers=headers, strip_version=strip_version)
def _do_get(self, url, strip_version=False):
return self._get_response(url, 'GET', strip_version=strip_version)
def _do_get(self, url, strip_version=False, api_version=None):
return self._get_response(url, 'GET', strip_version=strip_version,
api_version=api_version)
def _do_post(self, url, name, subs, method='POST'):
def _do_post(self, url, name, subs, method='POST', api_version=None):
body = self._read_template(name) % subs
sample = self._get_sample(name)
if self.generate_samples and not os.path.exists(sample):
self._write_sample(name, body)
return self._get_response(url, method, body)
return self._get_response(url, method, body, api_version=api_version)
def _do_put(self, url, name, subs):
return self._do_post(url, name, subs, method='PUT')
def _do_put(self, url, name, subs, api_version=None):
return self._do_post(url, name, subs, method='PUT',
api_version=api_version)
def _do_delete(self, url):
return self._get_response(url, 'DELETE')
def _do_delete(self, url, api_version=None):
return self._get_response(url, 'DELETE', api_version=api_version)