)]}'
{"cinder/tests/unit/volume/drivers/test_fujitsu.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"23df3bb45828f814a98dd05fdd6baaadbd61409f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo_utils import units"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cinder import exception"},{"line_number":24,"context_line":"from cinder.i18n import _"},{"line_number":25,"context_line":"from cinder import test"},{"line_number":26,"context_line":"from cinder.volume import configuration as conf"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_48bd3401","line":24,"updated":"2016-04-19 20:47:33.000000000","message":"Please do not mark string in unit tests as translatable.","commit_id":"d4474510613f45d5074d7324f3764c82c578f288"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"23df3bb45828f814a98dd05fdd6baaadbd61409f","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"class FakeRetryableException(exception.CinderException):"},{"line_number":201,"context_line":"    message \u003d _(\u0027FakeRetryableException\u0027)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"class FakeEternusConnection(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_084e9c3a","line":201,"updated":"2016-04-19 20:47:33.000000000","message":"Remove _()","commit_id":"d4474510613f45d5074d7324f3764c82c578f288"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"18d0c381492a9f366676d065c42707233a17e177","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        global MAP_STAT, VOL_STAT"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        if MethodName \u003d\u003d FAKE_TMP_ERROR:"},{"line_number":216,"context_line":"            raise FakeCIMError"},{"line_number":217,"context_line":"        elif MethodName \u003d\u003d FAKE_DEVICE_BUSY:"},{"line_number":218,"context_line":"            rc \u003d 32787"},{"line_number":219,"context_line":"            job \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_de998321","line":216,"updated":"2016-06-20 07:30:12.000000000","message":"Why can\u0027t we raise  pywbem.cim_operations.CIMError?","commit_id":"d4f425b7162eaeb2927cc2224c55197cbd0a6f94"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"18d0c381492a9f366676d065c42707233a17e177","unresolved":false,"context_lines":[{"line_number":979,"context_line":"        self.configuration \u003d mock.Mock(spec\u003dconf.Configuration)"},{"line_number":980,"context_line":"        self.configuration.cinder_eternus_config_file \u003d self.config_file.name"},{"line_number":981,"context_line":""},{"line_number":982,"context_line":"    @mock.patch(\u0027cinder.exception.FJDXRetryableException\u0027)"},{"line_number":983,"context_line":"    def test_connection_error(self, mock_exception):"},{"line_number":984,"context_line":"        mock_exception.return_value \u003d FakeRetryableException"},{"line_number":985,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_7e54cf53","line":982,"updated":"2016-06-20 07:30:12.000000000","message":"I don\u0027t think we need to mock FJDXRetryableException. We can assert for FJDXRetryableException in all assert statements.","commit_id":"d4f425b7162eaeb2927cc2224c55197cbd0a6f94"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"18d0c381492a9f366676d065c42707233a17e177","unresolved":false,"context_lines":[{"line_number":985,"context_line":""},{"line_number":986,"context_line":"        pywbem \u003d mock.Mock()"},{"line_number":987,"context_line":"        pywbem.cim_operations \u003d mock.Mock()"},{"line_number":988,"context_line":"        pywbem.cim_operations.CIMError \u003d FakeCIMError"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"        dx_common.pywbem \u003d pywbem"},{"line_number":991,"context_line":"        driver \u003d dx_common.FJDXCommon(\u0027\u0027, configuration\u003dself.configuration)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_9ef9bb50","line":988,"updated":"2016-06-20 07:30:12.000000000","message":"Same comment here, I don\u0027t think we need a mock for this error.","commit_id":"d4f425b7162eaeb2927cc2224c55197cbd0a6f94"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"18d0c381492a9f366676d065c42707233a17e177","unresolved":false,"context_lines":[{"line_number":992,"context_line":"        driver.conn \u003d FakeEternusConnection()"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"        self.assertRaises("},{"line_number":995,"context_line":"            FakeRetryableException, driver._exec_eternus_service,"},{"line_number":996,"context_line":"            FAKE_TMP_ERROR, None,"},{"line_number":997,"context_line":"        )"},{"line_number":998,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_be58f757","line":995,"range":{"start_line":995,"start_character":36,"end_line":995,"end_character":64},"updated":"2016-06-20 07:30:12.000000000","message":"-1: I think this is going to run the retry logic and can slow down the testing because of the delay. Can we mock the  sleep or temporarily set the interval to 0?","commit_id":"d4f425b7162eaeb2927cc2224c55197cbd0a6f94"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9d7f02da6f40e3aef71118543a68e397be1f1a89","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        global MAP_STAT, VOL_STAT"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        if MethodName \u003d\u003d FAKE_TMP_ERROR:"},{"line_number":216,"context_line":"            raise FakeCIMError"},{"line_number":217,"context_line":"        elif MethodName \u003d\u003d FAKE_DEVICE_BUSY:"},{"line_number":218,"context_line":"            rc \u003d 32787"},{"line_number":219,"context_line":"            job \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_b2ed1fb9","line":216,"updated":"2016-06-24 13:55:24.000000000","message":"Why do we need to fake the exception? Why can\u0027t we raise  the actual exception expected in the code?","commit_id":"e888f859ac25de62d6dcfe901bea79a215407a11"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9d7f02da6f40e3aef71118543a68e397be1f1a89","unresolved":false,"context_lines":[{"line_number":979,"context_line":"        self.configuration \u003d mock.Mock(spec\u003dconf.Configuration)"},{"line_number":980,"context_line":"        self.configuration.cinder_eternus_config_file \u003d self.config_file.name"},{"line_number":981,"context_line":""},{"line_number":982,"context_line":"    @mock.patch(\u0027cinder.exception.FJDXRetryableException\u0027)"},{"line_number":983,"context_line":"    def test_connection_error(self, mock_exception):"},{"line_number":984,"context_line":"        mock_exception.return_value \u003d FakeRetryableException"},{"line_number":985,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_d2754bfa","line":982,"updated":"2016-06-24 13:55:24.000000000","message":"Why do we need to mock FJDXRetryableException? We can assert for FJDXRetryableException in all assert statements.","commit_id":"e888f859ac25de62d6dcfe901bea79a215407a11"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9d7f02da6f40e3aef71118543a68e397be1f1a89","unresolved":false,"context_lines":[{"line_number":992,"context_line":"        driver.conn \u003d FakeEternusConnection()"},{"line_number":993,"context_line":""},{"line_number":994,"context_line":"        self.assertRaises("},{"line_number":995,"context_line":"            FakeRetryableException, driver._exec_eternus_service,"},{"line_number":996,"context_line":"            FAKE_TMP_ERROR, None,"},{"line_number":997,"context_line":"        )"},{"line_number":998,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_f2cde731","line":995,"updated":"2016-06-24 13:55:24.000000000","message":"-1: I think this is going to run the retry logic and can slow down the testing because of the delay. I think we should mock the sleep method.","commit_id":"e888f859ac25de62d6dcfe901bea79a215407a11"}],"cinder/volume/drivers/fujitsu/eternus_dx_common.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"0fcc3e1ff0da35d6e185145ae6475b1416576412","unresolved":false,"context_lines":[{"line_number":1250,"context_line":"                  {\u0027classname\u0027: classname, \u0027ret\u0027: ret})"},{"line_number":1251,"context_line":"        return ret"},{"line_number":1252,"context_line":""},{"line_number":1253,"context_line":"    @lockutils.synchronized(\u0027ETERNUS-SMIS-exec\u0027, \u0027cinder-\u0027, True)"},{"line_number":1254,"context_line":"    @utils.retry(exception.FJDXRetryableException, SMIS_INTERVAL, SMIS_RETRIES)"},{"line_number":1255,"context_line":"    def _exec_eternus_service(self, classname, instanceNameList, **param_dict):"},{"line_number":1256,"context_line":"        \"\"\"Execute SMI-S Method.\"\"\""},{"line_number":1257,"context_line":"        LOG.debug(\u0027_exec_eternus_service, \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_fcc65998","line":1254,"range":{"start_line":1253,"start_character":1,"end_line":1254,"end_character":79},"updated":"2016-06-14 08:00:31.000000000","message":"Does the ordering of these two decorators matter? You probably want to drop the lock between retries I think, since it will block other array operations while sleeping otherwise.","commit_id":"51dd026712854dacdf9a21ca583579cba918c8d2"},{"author":{"_account_id":10674,"name":"Yusuke Hayashi","email":"yusuke.hayashi.710@gmail.com","username":"YusukeHayashi"},"change_message_id":"b031703861674cde00b1f6a055e8c3e9f952484d","unresolved":false,"context_lines":[{"line_number":1250,"context_line":"                  {\u0027classname\u0027: classname, \u0027ret\u0027: ret})"},{"line_number":1251,"context_line":"        return ret"},{"line_number":1252,"context_line":""},{"line_number":1253,"context_line":"    @lockutils.synchronized(\u0027ETERNUS-SMIS-exec\u0027, \u0027cinder-\u0027, True)"},{"line_number":1254,"context_line":"    @utils.retry(exception.FJDXRetryableException, SMIS_INTERVAL, SMIS_RETRIES)"},{"line_number":1255,"context_line":"    def _exec_eternus_service(self, classname, instanceNameList, **param_dict):"},{"line_number":1256,"context_line":"        \"\"\"Execute SMI-S Method.\"\"\""},{"line_number":1257,"context_line":"        LOG.debug(\u0027_exec_eternus_service, \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_8ac9c328","line":1254,"range":{"start_line":1253,"start_character":1,"end_line":1254,"end_character":79},"in_reply_to":"7aa08908_fcc65998","updated":"2016-06-14 08:54:00.000000000","message":"Thanks for your comment. Since I prefer safety to decreasing sleep time by lock, I want this ordering. In other words, I want to decrease the times of getting lock. And, as for blocking other array operation, my other patch will solve it. Thanks!","commit_id":"51dd026712854dacdf9a21ca583579cba918c8d2"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"18d0c381492a9f366676d065c42707233a17e177","unresolved":false,"context_lines":[{"line_number":1251,"context_line":"        return ret"},{"line_number":1252,"context_line":""},{"line_number":1253,"context_line":"    @lockutils.synchronized(\u0027ETERNUS-SMIS-exec\u0027, \u0027cinder-\u0027, True)"},{"line_number":1254,"context_line":"    @utils.retry(exception.FJDXRetryableException, SMIS_INTERVAL, SMIS_RETRIES)"},{"line_number":1255,"context_line":"    def _exec_eternus_service(self, classname, instanceNameList, **param_dict):"},{"line_number":1256,"context_line":"        \"\"\"Execute SMI-S Method.\"\"\""},{"line_number":1257,"context_line":"        LOG.debug(\u0027_exec_eternus_service, \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_3eb087dd","line":1254,"range":{"start_line":1254,"start_character":51,"end_line":1254,"end_character":78},"updated":"2016-06-20 07:30:12.000000000","message":"These are keyword arguments, it\u0027s better to write:\ninterval\u003dSMIS_INTERVAL, retries\u003dSMIS_RETRIES\n\nSame comment in other places.","commit_id":"d4f425b7162eaeb2927cc2224c55197cbd0a6f94"}]}
