Activity log for bug #1819851

Date Who What changed Old value New value Message
2019-03-13 08:53:43 Zhangdaming bug added bug
2019-03-13 18:16:47 Zhangdaming description Details: I have tested server side directly by hand. I find there is 'transfer-encoding' header in response only when it is persistent connection。 I have checked the source test code, the test add "Connection:close" in the request explicitly,function as below def request(self, url, method, *args, **kwargs): class Response(dict): def __init__(self, info): for key, value in info.getheaders().items(): # We assume HTTP header name to be string, not random # bytes, thus ensure we have string keys. self[six.u(key).lower()] = value self.status = info.status self['status'] = str(self.status) self.reason = info.reason self.version = info.version self['content-location'] = url original_headers = kwargs.get('headers', {}) new_headers = dict(original_headers, connection='close') new_kwargs = dict(kwargs, headers=new_headers) # Follow up to 5 redirections. Don't raise an exception if # it's exceeded but return the HTTP 3XX response instead. retry = urllib3.util.Retry(raise_on_redirect=False, redirect=5) r = super(ClosingHttp, self).request(method, url, retries=retry, *args, **new_kwargs) return Response(r), r.data function from "tempest.lib.common.http.ClosingHttp#request" So I think it is not suitable to check 'transfer-encoding' header in test case 'tempest.api.object_storage.test_object_slo.ObjectSloTest.test_delete_large_object' function as below: def test_delete_large_object(self): # delete static large object using multipart manifest object_name = self._create_large_object() params_del = {'multipart-manifest': 'delete'} resp, _ = self.object_client.delete_object( self.container_name, object_name, params=params_del) # When deleting SLO using multipart manifest, the response contains # not 'content-length' but 'transfer-encoding' header. This is the # special case, therefore the existence of response headers is checked # outside of custom matcher. self.assertIn('transfer-encoding', resp) self.assertIn('content-type', resp) self.assertIn('x-trans-id', resp) self.assertIn('date', resp) function from "tempest.api.object_storage.test_object_slo.ObjectSloTest#test_delete_large_object" Other information: 1.tempest version:18.0.0 https://github.com/openstack/tempest/releases 2.test case name tempest.api.object_storage.test_object_slo.ObjectSloTest.test_delete_large_object[id-87b6dfa1-abe9-404d-8bf0-6c3751e6aa77] 3.client side debug log Traceback (most recent call last): File "/home/tempest/refstack-client/.tempest/tempest/common/utils/__init__.py", line 107, in wrapper return func(*func_args, **func_kwargs) File "/home/tempest/refstack-client/.tempest/tempest/api/object_storage/test_object_slo.py", line 167, in test_delete_large_object self.assertIn('transfer-encoding', resp) File "/home/tempest/refstack-client/.tempest/.venv/local/lib/python2.7/site-packages/testtools/testcase.py", line 417, in assertIn self.assertThat(haystack, Contains(needle), message) File "/home/tempest/refstack-client/.tempest/.venv/local/lib/python2.7/site-packages/testtools/testcase.py", line 498, in assertThat raise mismatch_error testtools.matchers._impl.MismatchError: 'transfer-encoding' not in {'status': '200', 'content-location': 'https://swift.eu-de.otc.t-systems.com/v1/AUTH_e88b9cf6908b493fa7c5fd853f306df6/tempest-TestContainer-1214636738/tempest-TestObject-694206116?multipart-manifest=delete', u'connection': 'close', u'x-trans-id': 'tx05210000016974ad0aa80-3c39a872f5', u'date': 'Wed, 13 Mar 2019 01:31:31 GMT', u'content-type': 'text/plain'} 0^M ] tags: -worker-0 4. server side header infomation Connection:close Accept-Encoding:identity X-Auth-Token:<omitted> Host:swift.xx.xx.xx.com Details: I have tested server side directly by hand. I find there is 'transfer-encoding' header in response only when it is persistent connection。 I have checked the source test code, the test add "Connection:close" in the request explicitly,function as below def request(self, url, method, *args, **kwargs):         class Response(dict):             def __init__(self, info):                 for key, value in info.getheaders().items():                     # We assume HTTP header name to be string, not random                     # bytes, thus ensure we have string keys.                     self[six.u(key).lower()] = value                 self.status = info.status                 self['status'] = str(self.status)                 self.reason = info.reason                 self.version = info.version                 self['content-location'] = url         original_headers = kwargs.get('headers', {})         new_headers = dict(original_headers, connection='close')         new_kwargs = dict(kwargs, headers=new_headers)         # Follow up to 5 redirections. Don't raise an exception if         # it's exceeded but return the HTTP 3XX response instead.         retry = urllib3.util.Retry(raise_on_redirect=False, redirect=5)         r = super(ClosingHttp, self).request(method, url, retries=retry,                                              *args, **new_kwargs)         return Response(r), r.data function from "tempest.lib.common.http.ClosingHttp#request" So I think it is not suitable to check 'transfer-encoding' header in test case 'tempest.api.object_storage.test_object_slo.ObjectSloTest.test_delete_large_object' function as below:     def test_delete_large_object(self):         # delete static large object using multipart manifest         object_name = self._create_large_object()         params_del = {'multipart-manifest': 'delete'}         resp, _ = self.object_client.delete_object(             self.container_name,             object_name,             params=params_del)         # When deleting SLO using multipart manifest, the response contains         # not 'content-length' but 'transfer-encoding' header. This is the         # special case, therefore the existence of response headers is checked         # outside of custom matcher.         self.assertIn('transfer-encoding', resp)         self.assertIn('content-type', resp)         self.assertIn('x-trans-id', resp)         self.assertIn('date', resp) function from "tempest.api.object_storage.test_object_slo.ObjectSloTest#test_delete_large_object" Other information: 1.tempest version:18.0.0 https://github.com/openstack/tempest/releases 2.test case name tempest.api.object_storage.test_object_slo.ObjectSloTest.test_delete_large_object[id-87b6dfa1-abe9-404d-8bf0-6c3751e6aa77] 3.client side debug log Traceback (most recent call last):   File "/home/tempest/refstack-client/.tempest/tempest/common/utils/__init__.py", line 107, in wrapper     return func(*func_args, **func_kwargs)   File "/home/tempest/refstack-client/.tempest/tempest/api/object_storage/test_object_slo.py", line 167, in test_delete_large_object     self.assertIn('transfer-encoding', resp)   File "/home/tempest/refstack-client/.tempest/.venv/local/lib/python2.7/site-packages/testtools/testcase.py", line 417, in assertIn     self.assertThat(haystack, Contains(needle), message)   File "/home/tempest/refstack-client/.tempest/.venv/local/lib/python2.7/site-packages/testtools/testcase.py", line 498, in assertThat     raise mismatch_error testtools.matchers._impl.MismatchError: 'transfer-encoding' not in {'status': '200', 'content-location': 'https://swift.xx.xx.xx.com/v1/AUTH_e88b9cf6908b493fa7c5fd853f306df6/tempest-TestContainer-1214636738/tempest-TestObject-694206116?multipart-manifest=delete', u'connection': 'close', u'x-trans-id': 'tx05210000016974ad0aa80-3c39a872f5', u'date': 'Wed, 13 Mar 2019 01:31:31 GMT', u'content-type': 'text/plain'} 0^M ] tags: -worker-0 4. server side header infomation Connection:close Accept-Encoding:identity X-Auth-Token:<omitted> Host:swift.xx.xx.xx.com
2019-08-16 19:08:13 Ghanshyam Mann tempest: status New Incomplete
2019-10-16 04:17:33 Launchpad Janitor tempest: status Incomplete Expired
2020-06-17 15:46:29 Thomas Morin tempest: status Expired Confirmed
2020-06-17 16:16:33 OpenStack Infra tempest: status Confirmed In Progress
2020-06-17 16:16:33 OpenStack Infra tempest: assignee Thomas Morin (tmmorin-orange)
2020-06-17 19:19:53 Thomas Morin bug added subscriber Cédric OLLIVIER
2020-06-17 19:20:12 Thomas Morin bug added subscriber Le Trocquer
2020-07-02 20:22:29 OpenStack Infra tempest: status In Progress Fix Released