)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"f0f08995a640401959a2980882f371799235ec2b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sergey Nikitin \u003csnikitin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-13 18:08:01 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improved coverage for glance.api.v2.*"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added new tests for glance.api.v2.image_data, glance.api.v2.image_members,"},{"line_number":10,"context_line":"glance.api.v2.schemas, glance.api.v2.image_tags. Test coverage impoved to 100%."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F8%2F2g%3D","line":7,"updated":"2013-12-17 22:11:47.000000000","message":"It would be better to specify the module this patch improves the coverage for.","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"650f6d403325017e872ce24b28639409b846a89f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sergey Nikitin \u003csnikitin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-13 18:08:01 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improved coverage for glance.api.v2.*"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added new tests for glance.api.v2.image_data, glance.api.v2.image_members,"},{"line_number":10,"context_line":"glance.api.v2.schemas, glance.api.v2.image_tags. Test coverage impoved to 100%."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F84Ng%3D","line":7,"in_reply_to":"AAAATn%2F8%2F2g%3D","updated":"2014-06-25 12:19:38.000000000","message":"Tests was improved for several modules. The modules are specified in commit message.","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"f0f08995a640401959a2980882f371799235ec2b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"glance.api.v2.schemas, glance.api.v2.image_tags,"},{"line_number":11,"context_line":"glance.api.v2.images, glance.api.cached_images."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Also fixed error in usage in %s."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Part of blueprint improve-api-unit-tests"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAATn%2F8mdE%3D","line":13,"updated":"2013-12-24 16:03:48.000000000","message":"The fix should be separated from this patch","commit_id":"45d9a7248b8011746033f0562a97b4c8c9e341e5"},{"author":{"_account_id":8759,"name":"Arnaud Legendre","email":"arnaudleg@gmail.com","username":"arnaud"},"change_message_id":"4fb4c3032d75e745c7ec69034a1c052f9606f8c7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improved coverage for glance.api.*"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added new tests for glance.api.v2.image_data, glance.api.v2.image_members,"},{"line_number":10,"context_line":"glance.api.v2.schemas, glance.api.v2.image_tags,"},{"line_number":11,"context_line":"glance.api.v2.images, glance.api.cached_images."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAUH%2F%2FaJ4%3D","line":9,"updated":"2014-01-16 00:32:33.000000000","message":"Could you make this \u003c 72?","commit_id":"4707839faada60e8ddd05eda24e3d2edfb7e5b11"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"c9a3f61cd62385c6c8110a6c1e3a380c7f010a25","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improved coverage for glance.api.*"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added new tests for glance.api.v2.image_data, glance.api.v2.image_members,"},{"line_number":10,"context_line":"glance.api.v2.schemas, glance.api.v2.image_tags,"},{"line_number":11,"context_line":"glance.api.v2.images, glance.api.cached_images."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAUH%2F%2FGjY%3D","line":9,"in_reply_to":"AAAAUH%2F%2FaJ4%3D","updated":"2014-06-25 12:20:19.000000000","message":"Done","commit_id":"4707839faada60e8ddd05eda24e3d2edfb7e5b11"}],"glance/api/v2/image_data.py":[{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"f0f08995a640401959a2980882f371799235ec2b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                                                      request\u003dreq)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        except exception.ImageSizeLimitExceeded as e:"},{"line_number":104,"context_line":"            msg \u003d _(\"The incoming image is too large: %s\") % e"},{"line_number":105,"context_line":"            LOG.error(msg)"},{"line_number":106,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003dmsg,"},{"line_number":107,"context_line":"                                                      request\u003dreq)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F8%2F2Q%3D","line":104,"updated":"2013-12-17 22:11:47.000000000","message":"This looks like a fix of the bug you found. The change is not related to improving test coverage and should be done in a separate patch.","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"650f6d403325017e872ce24b28639409b846a89f","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                                                      request\u003dreq)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        except exception.ImageSizeLimitExceeded as e:"},{"line_number":104,"context_line":"            msg \u003d _(\"The incoming image is too large: %s\") % e"},{"line_number":105,"context_line":"            LOG.error(msg)"},{"line_number":106,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003dmsg,"},{"line_number":107,"context_line":"                                                      request\u003dreq)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_039d6dbb","line":104,"in_reply_to":"AAAATn%2F8%2F2Q%3D","updated":"2014-06-25 12:19:38.000000000","message":"Done","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"20f2426f80091a4c14e1073a4759cb53ae038794","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    @utils.mutating"},{"line_number":61,"context_line":"    def upload(self, req, image_id, data, size):"},{"line_number":62,"context_line":"        image_repo \u003d self.gateway.get_repo(req.context)"},{"line_number":63,"context_line":"        image \u003d None"},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            image \u003d image_repo.get(image_id)"},{"line_number":66,"context_line":"            image.status \u003d \u0027saving\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAXH%2F%2FiV0%3D","line":63,"updated":"2014-04-20 01:59:19.000000000","message":"Even valid addition shouldn\u0027t this be added on separate change. I don\u0027t see direct link with test coverage.\n\nSimilar mention on patch set 4 from Roman.","commit_id":"759c6128dd2662ca532577e4ea4252fb0f76dba1"}],"glance/tests/unit/v2/test_image_data_resource.py":[{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"f0f08995a640401959a2980882f371799235ec2b","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                          request, uuidutils.generate_uuid(), \u0027ABC\u0027, 3)"},{"line_number":191,"context_line":"        self.assertTrue(image.delete.called)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_upload_non_existent_image_raises_not_found_exception(self):"},{"line_number":194,"context_line":"        def fake_save(self):"},{"line_number":195,"context_line":"            raise exception.NotFound()"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F8%2FyY%3D","line":193,"updated":"2013-12-17 22:11:47.000000000","message":"s/existent/existing/","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"650f6d403325017e872ce24b28639409b846a89f","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                          request, uuidutils.generate_uuid(), \u0027ABC\u0027, 3)"},{"line_number":191,"context_line":"        self.assertTrue(image.delete.called)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_upload_non_existent_image_raises_not_found_exception(self):"},{"line_number":194,"context_line":"        def fake_save(self):"},{"line_number":195,"context_line":"            raise exception.NotFound()"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F84b0%3D","line":193,"in_reply_to":"AAAATn%2F8%2FyY%3D","updated":"2014-06-25 12:19:38.000000000","message":"Done","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"f0f08995a640401959a2980882f371799235ec2b","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        self.image_repo.result \u003d image"},{"line_number":203,"context_line":"        self.image_repo.save \u003d fake_save"},{"line_number":204,"context_line":"        image.delete \u003d fake_delete"},{"line_number":205,"context_line":"        self.assertRaises(webob.exc.HTTPGone, self.controller.upload,"},{"line_number":206,"context_line":"                          request, uuidutils.generate_uuid(), \u0027ABC\u0027, 3)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def test_upload_non_existent_image_before_save(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F8%2Fxw%3D","line":205,"updated":"2013-12-17 22:11:47.000000000","message":"Shouldn\u0027t that be webob.exc.HTTPNotFound?","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"650f6d403325017e872ce24b28639409b846a89f","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        self.image_repo.result \u003d image"},{"line_number":203,"context_line":"        self.image_repo.save \u003d fake_save"},{"line_number":204,"context_line":"        image.delete \u003d fake_delete"},{"line_number":205,"context_line":"        self.assertRaises(webob.exc.HTTPGone, self.controller.upload,"},{"line_number":206,"context_line":"                          request, uuidutils.generate_uuid(), \u0027ABC\u0027, 3)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def test_upload_non_existent_image_before_save(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F84bw%3D","line":205,"in_reply_to":"AAAATn%2F8%2Fxw%3D","updated":"2014-06-25 12:19:38.000000000","message":"Done","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"}],"glance/tests/unit/v2/test_image_members_resource.py":[{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"f0f08995a640401959a2980882f371799235ec2b","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        self.assertRaises(webob.exc.HTTPForbidden, self.controller.update,"},{"line_number":311,"context_line":"                          request, UUID2, TENANT4, status\u003d\u0027accepted\u0027)"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def test_update_non_existent_image(self):"},{"line_number":314,"context_line":"        request \u003d unit_test_utils.get_fake_request(tenant\u003dTENANT1)"},{"line_number":315,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound, self.controller.update,"},{"line_number":316,"context_line":"                          request, \u0027123\u0027, TENANT4, status\u003d\u0027accepted\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F8%2Fxc%3D","line":313,"updated":"2013-12-17 22:11:47.000000000","message":"s/existent/existing/","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"650f6d403325017e872ce24b28639409b846a89f","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        self.assertRaises(webob.exc.HTTPForbidden, self.controller.update,"},{"line_number":311,"context_line":"                          request, UUID2, TENANT4, status\u003d\u0027accepted\u0027)"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def test_update_non_existent_image(self):"},{"line_number":314,"context_line":"        request \u003d unit_test_utils.get_fake_request(tenant\u003dTENANT1)"},{"line_number":315,"context_line":"        self.assertRaises(webob.exc.HTTPNotFound, self.controller.update,"},{"line_number":316,"context_line":"                          request, \u0027123\u0027, TENANT4, status\u003d\u0027accepted\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F84bo%3D","line":313,"in_reply_to":"AAAATn%2F8%2Fxc%3D","updated":"2014-06-25 12:19:38.000000000","message":"Done","commit_id":"5b4d108d4b21352b674da50c73a208c026a6db56"}],"glance/tests/unit/v2/test_image_tags_resource.py":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"20f2426f80091a4c14e1073a4759cb53ae038794","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class TestImageTagsController(base.IsolatedUnitTest):"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super(TestImageTagsController, self).setUp()"},{"line_number":28,"context_line":"        self.db \u003d unit_test_utils.FakeDB()"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAXH%2F%2FiYQ%3D","side":"PARENT","line":25,"updated":"2014-04-20 01:59:19.000000000","message":"Why removing empty lines here while they are in place for the rest of the files touched?","commit_id":"70422c49267e224fd4f39dec6a228a86d41d29d7"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"20f2426f80091a4c14e1073a4759cb53ae038794","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class TestImagesSerializer(test_utils.BaseTestCase):"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(TestImagesSerializer, self).setUp()"},{"line_number":67,"context_line":"        self.serializer \u003d glance.api.v2.image_tags.ResponseSerializer()"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAXH%2F%2FiWc%3D","side":"PARENT","line":64,"updated":"2014-04-20 01:59:19.000000000","message":"Why removing empty lines here while they are in place for the rest of the files touched?","commit_id":"70422c49267e224fd4f39dec6a228a86d41d29d7"}]}
