Updating tests results format according to spec
Spec: https://github.com/stackforge/refstack/blob/master/specs/approved/api-v1.md Update patch: https://review.openstack.org/#/c/146680/ Change-Id: I75c62090a45d742b88acdfe080e24d62658976ce
This commit is contained in:
parent
38e6276737
commit
9403991171
@ -168,8 +168,11 @@ class RefstackClient:
|
|||||||
self.logger.debug('API request content: %s ' % content)
|
self.logger.debug('API request content: %s ' % content)
|
||||||
try:
|
try:
|
||||||
url = '%s/v1/results/' % self.args.url
|
url = '%s/v1/results/' % self.args.url
|
||||||
|
headers = {'Content-type': 'application/json'}
|
||||||
|
|
||||||
response = requests.post(url, data={'data': json.dumps(content)})
|
response = requests.post(url,
|
||||||
|
data=json.dumps(content),
|
||||||
|
headers=headers)
|
||||||
self.logger.info(url + " Response: " + str(response.text))
|
self.logger.info(url + " Response: " + str(response.text))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.logger.critical('Failed to post %s - %s ' % (url, e))
|
self.logger.critical('Failed to post %s - %s ' % (url, e))
|
||||||
|
@ -35,7 +35,9 @@ class TempestSubunitTestResultPassOnly(testtools.TestResult):
|
|||||||
"""Overwrite super class method for additional data processing."""
|
"""Overwrite super class method for additional data processing."""
|
||||||
super(TempestSubunitTestResultPassOnly, self).addSuccess(testcase)
|
super(TempestSubunitTestResultPassOnly, self).addSuccess(testcase)
|
||||||
# Remove any [] and () from the test ID before appending it.
|
# Remove any [] and () from the test ID before appending it.
|
||||||
self.results.append(re.sub('[\(\[].*[\]\)]', '', testcase.id()))
|
self.results.append(
|
||||||
|
{'name': re.sub('[\(\[].*[\]\)]', '', testcase.id())}
|
||||||
|
)
|
||||||
|
|
||||||
def get_results(self):
|
def get_results(self):
|
||||||
return self.results
|
return self.results
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"duration_seconds": 0,
|
"duration_seconds": 0,
|
||||||
"cpid": "test-id",
|
"cpid": "test-id",
|
||||||
"results": [
|
"results": [
|
||||||
"tempest.passed.test"
|
{"name": "tempest.passed.test"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,10 +20,12 @@ import os
|
|||||||
import tempfile
|
import tempfile
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
import httmock
|
||||||
import mock
|
import mock
|
||||||
from mock import MagicMock
|
from mock import MagicMock
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
|
|
||||||
import refstack_client.refstack_client as rc
|
import refstack_client.refstack_client as rc
|
||||||
|
|
||||||
|
|
||||||
@ -55,7 +57,7 @@ class TestRefstackClient(unittest.TestCase):
|
|||||||
argv = ['test',
|
argv = ['test',
|
||||||
'-c', conf_file_name,
|
'-c', conf_file_name,
|
||||||
'--test-cases', 'tempest.api.compute',
|
'--test-cases', 'tempest.api.compute',
|
||||||
'--url', '0.0.0.0']
|
'--url', 'http://127.0.0.1']
|
||||||
if verbose:
|
if verbose:
|
||||||
argv.append(verbose)
|
argv.append(verbose)
|
||||||
return argv
|
return argv
|
||||||
@ -216,7 +218,7 @@ class TestRefstackClient(unittest.TestCase):
|
|||||||
client = rc.RefstackClient(args)
|
client = rc.RefstackClient(args)
|
||||||
subunit_file = self.test_path + "/.testrepository/0"
|
subunit_file = self.test_path + "/.testrepository/0"
|
||||||
results = client.get_passed_tests(subunit_file)
|
results = client.get_passed_tests(subunit_file)
|
||||||
expected = ['tempest.passed.test']
|
expected = [{'name': 'tempest.passed.test'}]
|
||||||
self.assertEqual(expected, results)
|
self.assertEqual(expected, results)
|
||||||
|
|
||||||
def test_run_tempest(self):
|
def test_run_tempest(self):
|
||||||
@ -232,20 +234,29 @@ class TestRefstackClient(unittest.TestCase):
|
|||||||
return_value=MagicMock(returncode=0))
|
return_value=MagicMock(returncode=0))
|
||||||
self.patch("os.path.isfile", return_value=True)
|
self.patch("os.path.isfile", return_value=True)
|
||||||
self.mock_keystone()
|
self.mock_keystone()
|
||||||
client.get_passed_tests = MagicMock(return_value=['test'])
|
client.get_passed_tests = MagicMock(return_value=[{'name': 'test'}])
|
||||||
client.post_results = MagicMock()
|
client.logger.info = MagicMock()
|
||||||
client._save_json_results = MagicMock()
|
client._save_json_results = MagicMock()
|
||||||
client.test()
|
|
||||||
|
expected_content = json.dumps({'test_id': 42})
|
||||||
|
|
||||||
|
@httmock.urlmatch(netloc=r'(.*\.)?127.0.0.1$', path='/v1/results/')
|
||||||
|
def refstack_api_mock(url, request):
|
||||||
|
return expected_content
|
||||||
|
|
||||||
|
with httmock.HTTMock(refstack_api_mock):
|
||||||
|
client.test()
|
||||||
|
|
||||||
mock_popen.assert_called_with(
|
mock_popen.assert_called_with(
|
||||||
('%s/run_tempest.sh' % self.test_path, '-C', self.conf_file_name,
|
('%s/run_tempest.sh' % self.test_path, '-C', self.conf_file_name,
|
||||||
'-V', '-t', '--', 'tempest.api.compute'),
|
'-V', '-t', '--', 'tempest.api.compute'),
|
||||||
stderr=None
|
stderr=None
|
||||||
)
|
)
|
||||||
|
|
||||||
expected_content = {'duration_seconds': mock.ANY,
|
client.logger.info.assert_called_with(
|
||||||
'cpid': 'test-id',
|
'http://127.0.0.1/v1/results/ Response: '
|
||||||
'results': ['test']}
|
'%s' % expected_content
|
||||||
client.post_results.assert_called_with('0.0.0.0', expected_content)
|
)
|
||||||
|
|
||||||
def test_run_tempest_offline(self):
|
def test_run_tempest_offline(self):
|
||||||
"""
|
"""
|
||||||
@ -319,7 +330,7 @@ class TestRefstackClient(unittest.TestCase):
|
|||||||
client.upload()
|
client.upload()
|
||||||
expected_json = {'duration_seconds': 0,
|
expected_json = {'duration_seconds': 0,
|
||||||
'cpid': 'test-id',
|
'cpid': 'test-id',
|
||||||
'results': ['tempest.passed.test']}
|
'results': [{'name': 'tempest.passed.test'}]}
|
||||||
|
|
||||||
client.post_results.assert_called_with('http://api.test.org',
|
client.post_results.assert_called_with('http://api.test.org',
|
||||||
expected_json)
|
expected_json)
|
||||||
|
@ -7,3 +7,4 @@ testrepository>=0.0.18
|
|||||||
testtools>=0.9.34
|
testtools>=0.9.34
|
||||||
mock
|
mock
|
||||||
coverage
|
coverage
|
||||||
|
httmock
|
Loading…
Reference in New Issue
Block a user