)]}'
{"tempest/api/object_storage/test_object_services.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"c1bab22153ce7140dd62d1fa84645e8f143eabdc","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.assertIn(\u0027status\u0027, resp)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027100\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        resp \u003d self.custom_object_client.create_object_continue("},{"line_number":162,"context_line":"            self.container_name,"},{"line_number":163,"context_line":"            object_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FVgY%3D","line":160,"updated":"2014-04-15 09:59:00.000000000","message":"Can we assert the Headers like others here?","commit_id":"1140aa5fe1d258e41d50aa122482d9f97020562b"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"3167f128411198b843e3d4589db4882d86e74811","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.assertIn(\u0027status\u0027, resp)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027100\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        resp \u003d self.custom_object_client.create_object_continue("},{"line_number":162,"context_line":"            self.container_name,"},{"line_number":163,"context_line":"            object_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FfQI%3D","line":160,"in_reply_to":"AAAAW3%2F%2FVgY%3D","updated":"2014-04-21 11:23:46.000000000","message":"RFC2616 section 10.1 says (Informational 1xx) \"This class of status code indicates a provisional response, consisting only of the Status-Line and optional headers, and is terminated by an empty line\".\nhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.1\n\nNo response headers are included with 100 response in Swift. Therefore, it is OK.","commit_id":"1140aa5fe1d258e41d50aa122482d9f97020562b"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"c1bab22153ce7140dd62d1fa84645e8f143eabdc","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            self.container_name,"},{"line_number":163,"context_line":"            object_name,"},{"line_number":164,"context_line":"            data,"},{"line_number":165,"context_line":"            metadata\u003dNone)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":168,"context_line":"    def test_create_object_with_transfer_encoding(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FVgE%3D","line":165,"updated":"2014-04-15 09:59:00.000000000","message":"Can we assert the \u0027resp\u0027?","commit_id":"1140aa5fe1d258e41d50aa122482d9f97020562b"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"3167f128411198b843e3d4589db4882d86e74811","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            self.container_name,"},{"line_number":163,"context_line":"            object_name,"},{"line_number":164,"context_line":"            data,"},{"line_number":165,"context_line":"            metadata\u003dNone)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":168,"context_line":"    def test_create_object_with_transfer_encoding(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FfOo%3D","line":165,"in_reply_to":"AAAAW3%2F%2FVgE%3D","updated":"2014-04-21 11:23:46.000000000","message":"This test case just tests that the request with expect continue returns 100 response code. However, rfc 2616 sec 8.2.3 says \"A client MUST NOT send an Expect request-header field with the \"100-continue\" expectation if it does not intend to send a request body\".\n\nThe purpose of this statement is just to complete sending a request body. Therefore, I think any assert statement is not necessary here.","commit_id":"1140aa5fe1d258e41d50aa122482d9f97020562b"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"804ebbe4212c23d904d78d85ebeaa532ed541ba4","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027100\u0027)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        resp \u003d self.custom_object_client.create_object_continue("},{"line_number":164,"context_line":"            self.container_name,"},{"line_number":165,"context_line":"            object_name,"},{"line_number":166,"context_line":"            data,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ae8d1ca_072daa46","line":163,"updated":"2014-05-28 10:10:20.000000000","message":"Anything to check here ?","commit_id":"938682bce7a00b5de6c7657debb6159e76d72439"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"e331c7d1695b0d56849ee604136f7380866c8ac6","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027100\u0027)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        resp \u003d self.custom_object_client.create_object_continue("},{"line_number":164,"context_line":"            self.container_name,"},{"line_number":165,"context_line":"            object_name,"},{"line_number":166,"context_line":"            data,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ae8d1ca_7c3a80ce","line":163,"in_reply_to":"3ae8d1ca_072daa46","updated":"2014-05-28 11:02:29.000000000","message":"RFC2616 section 10.1.1 says (100 Continue) \"The client SHOULD continue with its request\". http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.1.1\n\nTherefore, this request is sent to simulate a client\u0027s real behavior. But, main purpose of this test code is to check 100 response, so there are no assert statements here.","commit_id":"938682bce7a00b5de6c7657debb6159e76d72439"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"804ebbe4212c23d904d78d85ebeaa532ed541ba4","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            contents\u003dStringIO.StringIO(data),"},{"line_number":178,"context_line":"            chunk_size\u003d512)"},{"line_number":179,"context_line":"        self.assertEqual(status, 201)"},{"line_number":180,"context_line":"        self.assertHeaders(resp_headers, \u0027Object\u0027, \u0027PUT\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":183,"context_line":"    def test_create_object_with_x_fresh_metadata(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ae8d1ca_e7eefeeb","line":180,"updated":"2014-05-28 10:10:20.000000000","message":"In some tests you download the file after the upload. Why do you do it only in some cases ?","commit_id":"938682bce7a00b5de6c7657debb6159e76d72439"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"e331c7d1695b0d56849ee604136f7380866c8ac6","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            contents\u003dStringIO.StringIO(data),"},{"line_number":178,"context_line":"            chunk_size\u003d512)"},{"line_number":179,"context_line":"        self.assertEqual(status, 201)"},{"line_number":180,"context_line":"        self.assertHeaders(resp_headers, \u0027Object\u0027, \u0027PUT\u0027)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":183,"context_line":"    def test_create_object_with_x_fresh_metadata(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ae8d1ca_3c7d586f","line":180,"in_reply_to":"3ae8d1ca_e7eefeeb","updated":"2014-05-28 11:02:29.000000000","message":"Oops. In this test (and some other tests) we should check a content of uploaded file. \n\nThanks.","commit_id":"938682bce7a00b5de6c7657debb6159e76d72439"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"804ebbe4212c23d904d78d85ebeaa532ed541ba4","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                                         object_name,"},{"line_number":281,"context_line":"                                         data,"},{"line_number":282,"context_line":"                                         metadata\u003dmetadata_add)"},{"line_number":283,"context_line":"        metadata_remove \u003d {\u0027X-Remove-Object-Meta-test-meta\u0027: \u0027\u0027}"},{"line_number":284,"context_line":"        resp, _ \u003d self.object_client.create_object("},{"line_number":285,"context_line":"            self.container_name,"},{"line_number":286,"context_line":"            object_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ae8d1ca_b9c89a75","line":283,"updated":"2014-05-28 10:10:20.000000000","message":"Just for my understanding, what\u0027s the difference between this test and the previous one ? Ie what\u0027s the difference between setting a non empty value for X-Object-Meta-test-meta and setting an empty value for X-Object-Meta-test-meta ?\n\nBoth tests seem to clear the metadata key \"test-meta\", right ?","commit_id":"938682bce7a00b5de6c7657debb6159e76d72439"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"e331c7d1695b0d56849ee604136f7380866c8ac6","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                                         object_name,"},{"line_number":281,"context_line":"                                         data,"},{"line_number":282,"context_line":"                                         metadata\u003dmetadata_add)"},{"line_number":283,"context_line":"        metadata_remove \u003d {\u0027X-Remove-Object-Meta-test-meta\u0027: \u0027\u0027}"},{"line_number":284,"context_line":"        resp, _ \u003d self.object_client.create_object("},{"line_number":285,"context_line":"            self.container_name,"},{"line_number":286,"context_line":"            object_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ae8d1ca_4f5d0821","line":283,"in_reply_to":"3ae8d1ca_b9c89a75","updated":"2014-05-28 11:02:29.000000000","message":"Those are different literally. Just testing the case with an empty value and with a non empty value.\n\nBoth tests are important to check API stability from the viewpoint of boundary value analysis.","commit_id":"938682bce7a00b5de6c7657debb6159e76d72439"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"31bf8755e3b870ef01228b47ab6d3efa2b9a61bd","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            object_name,"},{"line_number":96,"context_line":"            data,"},{"line_number":97,"context_line":"            metadata\u003dmetadata)"},{"line_number":98,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":99,"context_line":"        self.assertHeaders(resp, \u0027Object\u0027, \u0027PUT\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        resp, body \u003d self.object_client.get_object("}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_c425e25c","line":98,"updated":"2014-06-05 12:54:54.000000000","message":"usually self.assertEqual(expected, actual)","commit_id":"76932bee325efd3be3acccd16b95d7422f16467b"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"c5dbae5af4a3925f0edca479b4c225635ce1579d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            object_name,"},{"line_number":96,"context_line":"            data,"},{"line_number":97,"context_line":"            metadata\u003dmetadata)"},{"line_number":98,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":99,"context_line":"        self.assertHeaders(resp, \u0027Object\u0027, \u0027PUT\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        resp, body \u003d self.object_client.get_object("}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_d9868db8","line":98,"in_reply_to":"1ae5cdf2_c425e25c","updated":"2014-06-06 06:12:16.000000000","message":"Oh, almost all assertEqual statements in Swift tests are defined in this way... \n\nI will write patches to reverse those values soon after this patch is accepted. I think it is better to separate patches.","commit_id":"76932bee325efd3be3acccd16b95d7422f16467b"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"916902d738aceb72cc31854d1d6c55a43c9b4566","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            object_name,"},{"line_number":96,"context_line":"            data,"},{"line_number":97,"context_line":"            metadata\u003dmetadata)"},{"line_number":98,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":99,"context_line":"        self.assertHeaders(resp, \u0027Object\u0027, \u0027PUT\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        resp, body \u003d self.object_client.get_object("}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_dc791b30","line":98,"in_reply_to":"1ae5cdf2_d9868db8","updated":"2014-06-06 06:35:58.000000000","message":"ok","commit_id":"76932bee325efd3be3acccd16b95d7422f16467b"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"31bf8755e3b870ef01228b47ab6d3efa2b9a61bd","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            object_name,"},{"line_number":104,"context_line":"            metadata\u003dNone)"},{"line_number":105,"context_line":"        self.assertIn(\u0027content-disposition\u0027, resp)"},{"line_number":106,"context_line":"        self.assertEqual(resp[\u0027content-disposition\u0027], \u0027inline\u0027)"},{"line_number":107,"context_line":"        self.assertEqual(body, data)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_04234a56","line":106,"updated":"2014-06-05 12:54:54.000000000","message":"ditto","commit_id":"76932bee325efd3be3acccd16b95d7422f16467b"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"31bf8755e3b870ef01228b47ab6d3efa2b9a61bd","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            object_name,"},{"line_number":123,"context_line":"            data,"},{"line_number":124,"context_line":"            metadata\u003dmetadata)"},{"line_number":125,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027201\u0027)"},{"line_number":126,"context_line":"        self.assertHeaders(resp, \u0027Object\u0027, \u0027PUT\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # download compressed object"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_241e860c","line":125,"updated":"2014-06-05 12:54:54.000000000","message":"ditto","commit_id":"76932bee325efd3be3acccd16b95d7422f16467b"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"31bf8755e3b870ef01228b47ab6d3efa2b9a61bd","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        self.assertIn(\u0027status\u0027, resp)"},{"line_number":170,"context_line":"        self.assertEqual(resp[\u0027status\u0027], \u0027100\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        resp \u003d self.custom_object_client.create_object_continue("},{"line_number":173,"context_line":"            self.container_name,"},{"line_number":174,"context_line":"            object_name,"},{"line_number":175,"context_line":"            data,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_84d67a26","line":172,"updated":"2014-06-05 12:54:54.000000000","message":"unused variable \"resp\"","commit_id":"76932bee325efd3be3acccd16b95d7422f16467b"}]}
