)]}'
{"test/probe/test_container_merge_policy_index.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"33e73a46c65c7d7e0cbea69cc5b9b1e444161548","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            self.fail(\u0027could not HEAD /%s/%s/%s/ from policy %s \u0027"},{"line_number":62,"context_line":"                      \u0027after %s seconds.\u0027 % ("},{"line_number":63,"context_line":"                          self.account, self.container_name, self.object_name,"},{"line_number":64,"context_line":"                          int(policy_index), TIMEOUT))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_merge_storage_policy_index(self):"},{"line_number":67,"context_line":"        # generic split brain"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_7b9c68c0","line":64,"range":{"start_line":64,"start_character":30,"end_line":64,"end_character":42},"updated":"2016-06-03 18:25:11.000000000","message":"So we *only* use this for the error message? I was wondering why an external client would ever need to (or even could) know this...","commit_id":"685c6f29d7c3a9bb51fe22906b3cb134b6f3a51a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"33e73a46c65c7d7e0cbea69cc5b9b1e444161548","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        for server in Manager([\u0027container-reconciler\u0027]).servers:"},{"line_number":405,"context_line":"            conf_files.extend(server.conf_files())"},{"line_number":406,"context_line":"        conf_file \u003d conf_files[0]"},{"line_number":407,"context_line":"        int_client \u003d InternalClient(conf_file, \u0027probe-test\u0027, 3)"},{"line_number":408,"context_line":"        int_client.get_object_metadata("},{"line_number":409,"context_line":"            self.account, self.container_name, self.object_name,"},{"line_number":410,"context_line":"            headers\u003d{\u0027X-Backend-Storage-Policy-Index\u0027: int(new_policy)})"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_bb5410fe","line":407,"range":{"start_line":407,"start_character":8,"end_line":407,"end_character":18},"updated":"2016-06-03 18:25:11.000000000","message":"Good call.","commit_id":"685c6f29d7c3a9bb51fe22906b3cb134b6f3a51a"}],"test/probe/test_empty_device_handoff.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"81e59337f9130a5edd7b69274684626583937c21","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.assertEqual(odata, direct_get_data,"},{"line_number":109,"context_line":"                         \u0027Direct object GET did not return expected data, \u0027"},{"line_number":110,"context_line":"                         \u0027expected: %s, got: %s\u0027"},{"line_number":111,"context_line":"                         % (repr(direct_get_data), repr(odata)))"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Assert container listing (via proxy and directly) has container/obj"},{"line_number":114,"context_line":"        objs \u003d [o[\u0027name\u0027] for o in"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_d4b3804b","line":111,"updated":"2016-05-18 21:25:41.000000000","message":"How much extra value do we get from this error message over the default assertEquals message?","commit_id":"8cd139c8c4b9e8ef133477c88fefa0c2cd188bc5"},{"author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"change_message_id":"b5600e2369d86d666bfc13c3ad9ae5636ec40c36","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.assertEqual(odata, direct_get_data,"},{"line_number":109,"context_line":"                         \u0027Direct object GET did not return expected data, \u0027"},{"line_number":110,"context_line":"                         \u0027expected: %s, got: %s\u0027"},{"line_number":111,"context_line":"                         % (repr(direct_get_data), repr(odata)))"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Assert container listing (via proxy and directly) has container/obj"},{"line_number":114,"context_line":"        objs \u003d [o[\u0027name\u0027] for o in"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_4492929f","line":111,"in_reply_to":"dab17558_d4b3804b","updated":"2016-05-19 13:17:40.000000000","message":"I see that this way, you preserve the same detail in the error message as before in that it is very clear which value was expected versus actual.  \n\nusing the default would be something like: \nAssertionError: \u0027\\xfd\\xcf\\x8c\\xca\\xb8!\u0027 !\u003d \u0027VERIFY\u0027\n\nwhat this error looks like before patch : \nDirect object GET did not return VERIFY, instead it returned: \u0027\\x03\\xa1+\\xff\\xd1\\xba\u0027","commit_id":"8cd139c8c4b9e8ef133477c88fefa0c2cd188bc5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"eef605468c2672e2ccf7170f92b78ce2b5cb3486","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.assertEqual(odata, direct_get_data,"},{"line_number":109,"context_line":"                         \u0027Direct object GET did not return expected data, \u0027"},{"line_number":110,"context_line":"                         \u0027expected: %s, got: %s\u0027"},{"line_number":111,"context_line":"                         % (repr(direct_get_data), repr(odata)))"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Assert container listing (via proxy and directly) has container/obj"},{"line_number":114,"context_line":"        objs \u003d [o[\u0027name\u0027] for o in"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_84c4815f","line":111,"in_reply_to":"dab17558_d4b3804b","updated":"2016-05-19 15:49:35.000000000","message":"Very little, will fix but I will reverse the order of the args so the default message gets the expected and actual the right way round.","commit_id":"8cd139c8c4b9e8ef133477c88fefa0c2cd188bc5"}],"test/probe/test_object_handoff.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"81e59337f9130a5edd7b69274684626583937c21","unresolved":false,"context_lines":[{"line_number":313,"context_line":"            failed_primary, opart, self.account, container_name,"},{"line_number":314,"context_line":"            object_name, headers\u003dreq_headers)"},{"line_number":315,"context_line":"        self.assertEqual(headers[\u0027X-Object-Sysmeta-EC-Etag\u0027],"},{"line_number":316,"context_line":"                         old_backend_etag)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        # we have 1 primary with wrong old etag, and we should have 5 with"},{"line_number":319,"context_line":"        # new etag plus a handoff with the new etag, so killing 2 other"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_8af9c882","line":316,"updated":"2016-05-18 21:25:41.000000000","message":"I think we\u0027ve lost an assertion that X-Object-Sysmeta-EC-Etag gets translated back to Etag here, but I\u0027m fairly confident that unit tests cover this already.","commit_id":"8cd139c8c4b9e8ef133477c88fefa0c2cd188bc5"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"eef605468c2672e2ccf7170f92b78ce2b5cb3486","unresolved":false,"context_lines":[{"line_number":313,"context_line":"            failed_primary, opart, self.account, container_name,"},{"line_number":314,"context_line":"            object_name, headers\u003dreq_headers)"},{"line_number":315,"context_line":"        self.assertEqual(headers[\u0027X-Object-Sysmeta-EC-Etag\u0027],"},{"line_number":316,"context_line":"                         old_backend_etag)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        # we have 1 primary with wrong old etag, and we should have 5 with"},{"line_number":319,"context_line":"        # new etag plus a handoff with the new etag, so killing 2 other"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab6814e_1a274865","line":316,"in_reply_to":"dab17558_8af9c882","updated":"2016-05-19 15:49:35.000000000","message":"We can\u0027t assert that anymore in this test because if crypto is in the pipeline then X-Object-Sysmeta-EC-Etag !\u003d client Etag. In that scenario X-Object-Sysmeta-Crypto-Etag \u003d\u003d client Etag.\n\nI\u0027m not sure this test ever asserted that a HEAD via proxy returned an ETag equal to X-Object-Sysmeta-EC-Etag, just the other way around that the X-Object-Sysmeta-EC-Etag after a PUT equal the sent body etag.","commit_id":"8cd139c8c4b9e8ef133477c88fefa0c2cd188bc5"}]}
