Add parsing test uuids from test result
Test uuids are parsed from subunit test results and posted to refstack API. Depends on git https://review.openstack.org/#/c/161760/ Change-Id: I04740e3b190cd2248aa09ebc7539963c21c1e140
This commit is contained in:
parent
748d259296
commit
da58c0828d
@ -31,15 +31,30 @@ class TempestSubunitTestResultPassOnly(testtools.TestResult):
|
|||||||
super(TempestSubunitTestResultPassOnly, self).__init__()
|
super(TempestSubunitTestResultPassOnly, self).__init__()
|
||||||
self.results = []
|
self.results = []
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_test_uuid(test):
|
||||||
|
attrs = None
|
||||||
|
try:
|
||||||
|
attrs = test.split('[')[1].split(']')[0].split(',')
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
if not attrs:
|
||||||
|
return
|
||||||
|
for attr in attrs:
|
||||||
|
if attr.startswith('id-'):
|
||||||
|
return '-'.join(attr.split('-')[1:])
|
||||||
|
|
||||||
def addSuccess(self, testcase):
|
def addSuccess(self, testcase):
|
||||||
"""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 [] from the test ID before appending it.
|
# Remove any [] from the test ID before appending it.
|
||||||
# Will leave in any () for now as they are the only thing discerning
|
# Will leave in any () for now as they are the only thing discerning
|
||||||
# certain test cases.
|
# certain test cases.
|
||||||
self.results.append(
|
test_result = {'name': str(re.sub('\[.*\]', '', testcase.id()))}
|
||||||
{'name': re.sub('\[.*\]', '', testcase.id())}
|
uuid = self.get_test_uuid(str(testcase.id()))
|
||||||
)
|
if uuid:
|
||||||
|
test_result['uuid'] = uuid
|
||||||
|
self.results.append(test_result)
|
||||||
|
|
||||||
def get_results(self):
|
def get_results(self):
|
||||||
return self.results
|
return self.results
|
||||||
|
@ -4,20 +4,13 @@ test: tempest.passed.test
|
|||||||
time: 2014-08-15 10:34:51.020584Z
|
time: 2014-08-15 10:34:51.020584Z
|
||||||
successful: tempest.passed.test [ multipart
|
successful: tempest.passed.test [ multipart
|
||||||
]
|
]
|
||||||
tags: -worker-0
|
|
||||||
time: 2014-08-15 10:34:57.543400Z
|
|
||||||
tags: worker-0
|
tags: worker-0
|
||||||
test: tempest.failed.test
|
time: 2014-08-15 10:34:58.010492Z
|
||||||
time: 2014-08-15 10:34:57.548225Z
|
tags: worker-0
|
||||||
failure: tempest.failed.test [ multipart
|
test: tempest.tagged_passed.test[gate,id-0146f675-ffbd-4208-b3a4-60eb628dbc5e]
|
||||||
Content-Type: text/x-traceback;charset="utf8",language="python"
|
time: 2014-08-15 10:34:58.020584Z
|
||||||
traceback
|
successful: tempest.tagged_passed.test[gate,id-0146f675-ffbd-4208-b3a4-60eb628dbc5e] [ multipart
|
||||||
2E4
|
|
||||||
Traceback (most recent call last):
|
|
||||||
File "/usr/lib/python2.7/some_file.py", line 2335, in exit
|
|
||||||
_sys.exit(status)
|
|
||||||
SystemExit: 2
|
|
||||||
0
|
|
||||||
]
|
]
|
||||||
tags: -worker-0
|
tags: -worker-0
|
||||||
|
time: 2014-08-15 10:34:58.543400Z
|
||||||
|
tags: worker-0
|
@ -2,7 +2,8 @@
|
|||||||
"duration_seconds": 0,
|
"duration_seconds": 0,
|
||||||
"cpid": "test-id",
|
"cpid": "test-id",
|
||||||
"results": [
|
"results": [
|
||||||
{"name": "tempest.passed.test"}
|
{"name": "tempest.passed.test"},
|
||||||
|
{"name": "tempest.tagged_passed.test",
|
||||||
|
"uuid": "0146f675-ffbd-4208-b3a4-60eb628dbc5e"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,7 +218,11 @@ 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 = [{'name': 'tempest.passed.test'}]
|
expected = [
|
||||||
|
{'name': 'tempest.passed.test'},
|
||||||
|
{'name': 'tempest.tagged_passed.test',
|
||||||
|
'uuid': '0146f675-ffbd-4208-b3a4-60eb628dbc5e'}
|
||||||
|
]
|
||||||
self.assertEqual(expected, results)
|
self.assertEqual(expected, results)
|
||||||
|
|
||||||
def test_post_results(self):
|
def test_post_results(self):
|
||||||
@ -230,7 +234,7 @@ class TestRefstackClient(unittest.TestCase):
|
|||||||
client.logger.info = MagicMock()
|
client.logger.info = MagicMock()
|
||||||
content = {'duration_seconds': 0,
|
content = {'duration_seconds': 0,
|
||||||
'cpid': 'test-id',
|
'cpid': 'test-id',
|
||||||
'results': [{'name': 'tempest.passed.test'}]}
|
'results': [{'name': 'tempest.passed.test', 'uid': None}]}
|
||||||
expected_response = json.dumps({'test_id': 42})
|
expected_response = json.dumps({'test_id': 42})
|
||||||
|
|
||||||
@httmock.urlmatch(netloc=r'(.*\.)?127.0.0.1$', path='/v1/results/')
|
@httmock.urlmatch(netloc=r'(.*\.)?127.0.0.1$', path='/v1/results/')
|
||||||
@ -372,10 +376,15 @@ class TestRefstackClient(unittest.TestCase):
|
|||||||
|
|
||||||
client.post_results = MagicMock()
|
client.post_results = MagicMock()
|
||||||
client.upload()
|
client.upload()
|
||||||
expected_json = {'duration_seconds': 0,
|
expected_json = {
|
||||||
'cpid': 'test-id',
|
'duration_seconds': 0,
|
||||||
'results': [{'name': 'tempest.passed.test'}]}
|
'cpid': 'test-id',
|
||||||
|
'results': [
|
||||||
|
{'name': 'tempest.passed.test'},
|
||||||
|
{'name': 'tempest.tagged_passed.test',
|
||||||
|
'uuid': '0146f675-ffbd-4208-b3a4-60eb628dbc5e'}
|
||||||
|
]
|
||||||
|
}
|
||||||
client.post_results.assert_called_with('http://api.test.org',
|
client.post_results.assert_called_with('http://api.test.org',
|
||||||
expected_json)
|
expected_json)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user