)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"b40625372a5983e686fa7826634ad6667bafefd7","unresolved":false,"context_lines":[{"line_number":11,"context_line":"for a fuse-based FS mounted at the correct location."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Also, for the unit test, we slowly try to use mock instead of mox."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I055858e66db09fe7c5b1688c9fa05077948f342d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3afb71cf_a85013d5","line":14,"updated":"2015-06-09 08:52:29.000000000","message":"Please add the bp or bug link if possible.","commit_id":"9a058235492b1a163d401060b6301ddc28905367"}],"cinder/tests/unit/test_scality.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1b217dcf695446e530721ce79508e93f4375c636","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            kwargs.pop(\u0027run_as_root\u0027)"},{"line_number":107,"context_line":"        except KeyError:"},{"line_number":108,"context_line":"            pass"},{"line_number":109,"context_line":"        # We don\u0027t want to perform an actual mount"},{"line_number":110,"context_line":"        if cmd.startswith(\"mount\"):"},{"line_number":111,"context_line":"            return None"},{"line_number":112,"context_line":"        utils.execute(cmd, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_cb831655","line":109,"updated":"2015-06-17 15:57:18.000000000","message":"This is usually done with mock... but, you don\u0027t really want this method to ever call utils.execute().  You can just convert this whole method to \"pass\" to make things simpler and safe for the unit tests.","commit_id":"add6bead4fed497dc40afe096cff6c326a1a4c4a"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"28487e5ccb419ea7827c6aacbdecc6f873cc2b1f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            kwargs.pop(\u0027run_as_root\u0027)"},{"line_number":107,"context_line":"        except KeyError:"},{"line_number":108,"context_line":"            pass"},{"line_number":109,"context_line":"        # We don\u0027t want to perform an actual mount"},{"line_number":110,"context_line":"        if cmd.startswith(\"mount\"):"},{"line_number":111,"context_line":"            return None"},{"line_number":112,"context_line":"        utils.execute(cmd, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_9b0e9c8a","line":109,"in_reply_to":"fa32b979_cb831655","updated":"2015-06-18 09:49:07.000000000","message":"Thanks, good suggestion. I managed to remove 10 lines of code with this, always a good thing.","commit_id":"add6bead4fed497dc40afe096cff6c326a1a4c4a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"24586476f244bf24941d86971b5caedb69c24d3d","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                               side_effect\u003dfake_mounts) as mock_get_mounts:"},{"line_number":166,"context_line":"            self._driver.do_setup(None)"},{"line_number":167,"context_line":"        self.assertEqual(2, mock_get_mounts.call_count)"},{"line_number":168,"context_line":"        self.assertTrue(os.path.isdir(voldir_path))"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def test_local_path(self):"},{"line_number":171,"context_line":"        \"\"\"Expected behaviour for local_path.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_a5596f5d","line":168,"updated":"2015-06-22 18:35:36.000000000","message":"This change is good for the bug it\u0027s fixing, but this test still really needs some re-work in another patch.  It should not be creating directories in /tmp/.  All operations that manipulate files/dirs while running unit tests should be mocked out.","commit_id":"44393dd2826bbaffbed21217b0859b6ed1c46bda"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"19e827d4dbedeaa322f7dd4b90d24132a8209fc4","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                               side_effect\u003dfake_mounts) as mock_get_mounts:"},{"line_number":166,"context_line":"            self._driver.do_setup(None)"},{"line_number":167,"context_line":"        self.assertEqual(2, mock_get_mounts.call_count)"},{"line_number":168,"context_line":"        self.assertTrue(os.path.isdir(voldir_path))"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def test_local_path(self):"},{"line_number":171,"context_line":"        \"\"\"Expected behaviour for local_path.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_e870aea6","line":168,"in_reply_to":"fa32b979_a5596f5d","updated":"2015-06-22 18:39:18.000000000","message":"Wrote https://bugs.launchpad.net/cinder/+bug/1467637 for follow-up.","commit_id":"44393dd2826bbaffbed21217b0859b6ed1c46bda"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"11b3d9c457c0f7a92c36537057cf8f9ede9082b1","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                               side_effect\u003dfake_mounts) as mock_get_mounts:"},{"line_number":166,"context_line":"            self._driver.do_setup(None)"},{"line_number":167,"context_line":"        self.assertEqual(2, mock_get_mounts.call_count)"},{"line_number":168,"context_line":"        self.assertTrue(os.path.isdir(voldir_path))"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def test_local_path(self):"},{"line_number":171,"context_line":"        \"\"\"Expected behaviour for local_path.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_58403ea5","line":168,"in_reply_to":"fa32b979_e870aea6","updated":"2015-06-24 07:50:09.000000000","message":"Thanks Eric, you\u0027re right. I inherited this code base from a colleague but I do intend to rewrite the unit tests in a more proper way (and using the mock library). Just need to find some time.","commit_id":"44393dd2826bbaffbed21217b0859b6ed1c46bda"}],"cinder/volume/drivers/scality.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5d85c0cb5531fca0249c73dc7d4950fd6ec75fea","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            LOG.warning(msg)"},{"line_number":107,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def get_mounts(self):"},{"line_number":110,"context_line":"        \"\"\"Dummy method but easily mockable."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        Mocking __builtin__open() for a specific file only is not trivial."}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_979c4610","line":109,"updated":"2015-06-04 15:44:02.000000000","message":"Would you mind putting this in volume/utils.py?\n\nI see at least one other driver reading /proc/mounts already, would be good to just have this function available for everyone.","commit_id":"026f7a472fdb3ffbba99538f2d485f14bb878164"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"829314fd61751d79288a5af58c415e929c6dfb20","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            LOG.warning(msg)"},{"line_number":107,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def get_mounts(self):"},{"line_number":110,"context_line":"        \"\"\"Dummy method but easily mockable."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        Mocking __builtin__open() for a specific file only is not trivial."}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_1d034344","line":109,"in_reply_to":"5afe65bd_979c4610","updated":"2015-06-05 16:40:20.000000000","message":"Sure, I\u0027ll do it soon (c).","commit_id":"026f7a472fdb3ffbba99538f2d485f14bb878164"}]}
