Merge "Treat subunit as binary under python3"
This commit is contained in:
commit
55cfa6a890
@ -2,3 +2,4 @@ python-subunit>=0.0.18
|
|||||||
testtools>=0.9.30
|
testtools>=0.9.30
|
||||||
testrepository>=0.0.18
|
testrepository>=0.0.18
|
||||||
subunit2sql>=0.8.0
|
subunit2sql>=0.8.0
|
||||||
|
six
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
|
import six
|
||||||
import subunit
|
import subunit
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@ -134,13 +135,22 @@ class FileProvider(SubunitProvider):
|
|||||||
if index != 0:
|
if index != 0:
|
||||||
raise IndexError("Index out of bounds: %d" % index)
|
raise IndexError("Index out of bounds: %d" % index)
|
||||||
|
|
||||||
return open(self.path, "r")
|
# Subunit is a binary protocol we need to ensure we read
|
||||||
|
# the contents as binary. On python3 this requires we open
|
||||||
|
# the file in binary mode otherwise it will be encoded.
|
||||||
|
return open(self.path, "rb")
|
||||||
|
|
||||||
|
|
||||||
class StandardInputProvider(SubunitProvider):
|
class StandardInputProvider(SubunitProvider):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.buffer = BytesIO()
|
self.buffer = BytesIO()
|
||||||
shutil.copyfileobj(sys.stdin, self.buffer)
|
# Subunit is a binary protocol we need to ensure we read
|
||||||
|
# the contents as binary. On python3 this requires we use
|
||||||
|
# the stdin.buffer object as stdin is encoded otherwise.
|
||||||
|
if six.PY3:
|
||||||
|
shutil.copyfileobj(sys.stdin.buffer, self.buffer)
|
||||||
|
else:
|
||||||
|
shutil.copyfileobj(sys.stdin, self.buffer)
|
||||||
self.buffer.seek(0)
|
self.buffer.seek(0)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
11
stackviz/tests/fixtures/tempest.subunit
vendored
Normal file
11
stackviz/tests/fixtures/tempest.subunit
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
³+@‡[–å\5€@ttempest.api.compute.admin.test_agents.AgentsAdminTestJSON.test_create_agent[id-1fc6bdc8-0b6d-4cc7-9f30-9b04fabe5b90]2h-³+pI£[–ú\bH@ttempest.api.compute.admin.test_agents.AgentsAdminTestJSON.test_create_agent[id-1fc6bdc8-0b6d-4cc7-9f30-9b04fabe5b90]text/plain;charset=utf8pythonlogging:''Hñ2018-09-28 02:46:35,903 26441 INFO [tempest.lib.common.rest_client] Request (AgentsAdminTestJSON:test_create_agent): 200 POST https://10.210.196.239/compute/v2.1/os-agents 0.275s
|
||||||
|
2018-09-28 02:46:35,903 26441 DEBUG [tempest.lib.common.rest_client] Request - Headers: {'Accept': 'application/json', 'Content-Type': 'application/json', 'X-Auth-Token': '<omitted>'}
|
||||||
|
Body: {"agent": {"md5hash": "add6bb58e139be103324d04d82d8f545", "url": "xxx://xxxx/xxx/xxx", "version": "7.0", "architecture": "tempest-x86-1736555698", "hypervisor": "kvm", "os": "win"}}
|
||||||
|
Response - Headers: {'server': 'Apache/2.4.18 (Ubuntu)', 'date': 'Fri, 28 Sep 2018 02:46:35 GMT', 'content-location': 'https://10.210.196.239/compute/v2.1/os-agents', 'connection': 'close', 'openstack-api-version': 'compute 2.1', 'x-openstack-nova-api-version': '2.1', 'status': '200', 'content-length': '196', 'vary': 'OpenStack-API-Version,X-OpenStack-Nova-API-Version', 'x-compute-request-id': 'req-bc16c3df-13bf-4b96-bf7c-fcc243ee6a35', 'x-openstack-request-id': 'req-bc16c3df-13bf-4b96-bf7c-fcc243ee6a35', 'content-type': 'application/json'}
|
||||||
|
Body: b'{"agent": {"md5hash": "add6bb58e139be103324d04d82d8f545", "hypervisor": "kvm", "url": "xxx://xxxx/xxx/xxx", "os": "win", "version": "7.0", "architecture": "tempest-x86-1736555698", "agent_id": 1}}'
|
||||||
|
2018-09-28 02:46:35,977 26441 INFO [tempest.lib.common.rest_client] Request (AgentsAdminTestJSON:_run_cleanups): 200 DELETE https://10.210.196.239/compute/v2.1/os-agents/1 0.068s
|
||||||
|
2018-09-28 02:46:35,978 26441 DEBUG [tempest.lib.common.rest_client] Request - Headers: {'Accept': 'application/json', 'Content-Type': 'application/json', 'X-Auth-Token': '<omitted>'}
|
||||||
|
Body: None
|
||||||
|
Response - Headers: {'server': 'Apache/2.4.18 (Ubuntu)', 'date': 'Fri, 28 Sep 2018 02:46:35 GMT', 'content-location': 'https://10.210.196.239/compute/v2.1/os-agents/1', 'connection': 'close', 'openstack-api-version': 'compute 2.1', 'x-openstack-nova-api-version': '2.1', 'status': '200', 'content-length': '0', 'vary': 'OpenStack-API-Version,X-OpenStack-Nova-API-Version', 'x-compute-request-id': 'req-78d28bbe-3990-44d9-a117-dc8512f2a62c', 'x-openstack-request-id': 'req-78d28bbe-3990-44d9-a117-dc8512f2a62c', 'content-type': 'application/json'}
|
||||||
|
Body: b''
|
||||||
|
N¬<11>³+ƒ@‘[–ú\bH@ttempest.api.compute.admin.test_agents.AgentsAdminTestJSON.test_create_agent[id-1fc6bdc8-0b6d-4cc7-9f30-9b04fabe5b90]worker-3ö¶6‚
|
@ -21,10 +21,43 @@ test_stackviz
|
|||||||
Tests for `stackviz` module.
|
Tests for `stackviz` module.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os.path
|
||||||
|
import sys # noqa for monkeypatching below
|
||||||
|
|
||||||
|
import fixtures
|
||||||
|
|
||||||
|
import stackviz.export as export
|
||||||
|
from stackviz.parser import tempest_subunit
|
||||||
from stackviz.tests import base
|
from stackviz.tests import base
|
||||||
|
|
||||||
|
|
||||||
class TestStackviz(base.TestCase):
|
class TestStackviz(base.TestCase):
|
||||||
|
|
||||||
def test_something(self):
|
def test_export_file(self):
|
||||||
pass
|
tmp_fixture = self.useFixture(fixtures.TempDir())
|
||||||
|
output_dir = tmp_fixture.path
|
||||||
|
subunit_path = os.path.join(os.path.dirname(__file__),
|
||||||
|
'fixtures', 'tempest.subunit')
|
||||||
|
providers = tempest_subunit.get_providers(None, [subunit_path], None)
|
||||||
|
export.export_tempest(list(providers.values())[0], output_dir, False)
|
||||||
|
output_file = os.path.join(output_dir,
|
||||||
|
'tempest.subunit-0-details.json')
|
||||||
|
j = json.load(open(output_file))
|
||||||
|
assert "tempest.api.compute.admin" \
|
||||||
|
".test_agents.AgentsAdminTestJSON.test_create_agent" in j
|
||||||
|
|
||||||
|
def test_export_stdin(self):
|
||||||
|
tmp_fixture = self.useFixture(fixtures.TempDir())
|
||||||
|
output_dir = tmp_fixture.path
|
||||||
|
subunit_path = os.path.join(os.path.dirname(__file__),
|
||||||
|
'fixtures', 'tempest.subunit')
|
||||||
|
subunit_stream = open(subunit_path)
|
||||||
|
with fixtures.MonkeyPatch('sys.stdin', subunit_stream):
|
||||||
|
providers = tempest_subunit.get_providers(None, None, True)
|
||||||
|
export.export_tempest(list(providers.values())[0],
|
||||||
|
output_dir, False)
|
||||||
|
output_file = os.path.join(output_dir, 'stdin-0-details.json')
|
||||||
|
j = json.load(open(output_file))
|
||||||
|
assert "tempest.api.compute.admin" \
|
||||||
|
".test_agents.AgentsAdminTestJSON.test_create_agent" in j
|
||||||
|
@ -10,3 +10,4 @@ discover
|
|||||||
sphinx>=1.6.2 # BSD
|
sphinx>=1.6.2 # BSD
|
||||||
oslotest>=1.2.0 # Apache-2.0
|
oslotest>=1.2.0 # Apache-2.0
|
||||||
openstackdocstheme>=1.17.0 # Apache-2.0
|
openstackdocstheme>=1.17.0 # Apache-2.0
|
||||||
|
fixtures
|
||||||
|
Loading…
Reference in New Issue
Block a user