)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"4d20aa07ec7910cfebc43871cf5ef24ad25caad3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"As the zmq driver has a direct dependency on eventlet, tests are"},{"line_number":17,"context_line":"skipped under py3."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Co-Author: Kapil Thangavelu \u003ckapil.thangavelu@canonical.com\u003e"},{"line_number":20,"context_line":"Co-Author: Edward Hope-Morley \u003cedward.hope-morley@canonical.com\u003e"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I93b8b2e92d0f2a353d3357a5e61f6d472ec84944"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a890539_f847f374","line":19,"updated":"2014-11-15 09:27:57.000000000","message":"Co-Authored-By ?","commit_id":"38beb287a83da6d04f902515c85608f73e4c1f6c"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"4d20aa07ec7910cfebc43871cf5ef24ad25caad3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"skipped under py3."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Co-Author: Kapil Thangavelu \u003ckapil.thangavelu@canonical.com\u003e"},{"line_number":20,"context_line":"Co-Author: Edward Hope-Morley \u003cedward.hope-morley@canonical.com\u003e"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I93b8b2e92d0f2a353d3357a5e61f6d472ec84944"},{"line_number":23,"context_line":"Partial-bug: #1302941"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a890539_18603f00","line":20,"updated":"2014-11-15 09:27:57.000000000","message":"Co-Authored-By ?","commit_id":"38beb287a83da6d04f902515c85608f73e4c1f6c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"269f1b419bc3c636829469577fc6fd1801f07c4a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"skipped under py3."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Co-Author: Kapil Thangavelu \u003ckapil.thangavelu@canonical.com\u003e"},{"line_number":20,"context_line":"Co-Author: Edward Hope-Morley \u003cedward.hope-morley@canonical.com\u003e"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I93b8b2e92d0f2a353d3357a5e61f6d472ec84944"},{"line_number":23,"context_line":"Partial-bug: #1302941"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a890539_383256f2","line":20,"in_reply_to":"5a890539_18603f00","updated":"2014-11-15 17:12:55.000000000","message":"+1","commit_id":"38beb287a83da6d04f902515c85608f73e4c1f6c"}],"oslo/messaging/_drivers/impl_zmq.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"255c3ffb05a3546ebc9f44d35a315f1df4371169","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    @classmethod"},{"line_number":262,"context_line":"    def marshal(self, ctx):"},{"line_number":263,"context_line":"        if not isinstance(ctx, dict):"},{"line_number":264,"context_line":"            ctx_data \u003d ctx.to_dict()"},{"line_number":265,"context_line":"        else:"},{"line_number":266,"context_line":"            ctx_data \u003d ctx"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa7fdbe_284f3135","line":263,"updated":"2014-10-28 19:00:45.000000000","message":"this could probably be done inline:\n\n        ctx_data \u003d ctx.to_dict() if not isinstance(ctx, dict) else ctx","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9ab30e0faf3c816c428240bd3492f04b3ee0c63c","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    @classmethod"},{"line_number":262,"context_line":"    def marshal(self, ctx):"},{"line_number":263,"context_line":"        if not isinstance(ctx, dict):"},{"line_number":264,"context_line":"            ctx_data \u003d ctx.to_dict()"},{"line_number":265,"context_line":"        else:"},{"line_number":266,"context_line":"            ctx_data \u003d ctx"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8c0949_32cbe173","line":263,"in_reply_to":"9aa7fdbe_284f3135","updated":"2014-10-31 14:15:55.000000000","message":"+1","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"255c3ffb05a3546ebc9f44d35a315f1df4371169","unresolved":false,"context_lines":[{"line_number":416,"context_line":"    def close(self):"},{"line_number":417,"context_line":"        for t in self.threads:"},{"line_number":418,"context_line":"            t.kill()"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        for s in self.sockets:"},{"line_number":421,"context_line":"            s.close()"},{"line_number":422,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa7fdbe_e509d431","line":419,"updated":"2014-10-28 19:00:45.000000000","message":"just for clarity, could you add a comment why this needs to be done after threads are killed?","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9ab30e0faf3c816c428240bd3492f04b3ee0c63c","unresolved":false,"context_lines":[{"line_number":859,"context_line":"            self.condition.notify()"},{"line_number":860,"context_line":""},{"line_number":861,"context_line":"    def requeue(self):"},{"line_number":862,"context_line":"        LOG.warning(\"requeue not supported\")"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":""},{"line_number":865,"context_line":"class ZmqListener(base.Listener):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8c0949_729c896a","line":862,"updated":"2014-10-31 14:15:55.000000000","message":"LOG.warning(\"requeue feature not supported.\")\n\nwould be better to use","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"338c4fab7c6b904597714444aa6e1f90aec5058e","unresolved":false,"context_lines":[{"line_number":419,"context_line":"            t.kill()"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        for s in self.sockets:"},{"line_number":422,"context_line":"            s.close()"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"class ZmqProxy(ZmqBaseReactor):"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_2c6eef01","line":422,"updated":"2014-11-20 21:37:34.000000000","message":"Do we need to deal with exceptions from close?","commit_id":"8b9805ee62b4b0fe5d8501dbeb7919c3e7a8956c"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"1f977e8751392e306e2922dce38c3b8183dccb97","unresolved":false,"context_lines":[{"line_number":419,"context_line":"            t.kill()"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        for s in self.sockets:"},{"line_number":422,"context_line":"            s.close()"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"class ZmqProxy(ZmqBaseReactor):"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_50b70ed8","line":422,"in_reply_to":"5a890539_2c6eef01","updated":"2014-11-24 11:43:29.000000000","message":"The close method on the socket itself deals with handling any exceptions raised during closure, so I think this is OK.","commit_id":"8b9805ee62b4b0fe5d8501dbeb7919c3e7a8956c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"338c4fab7c6b904597714444aa6e1f90aec5058e","unresolved":false,"context_lines":[{"line_number":799,"context_line":"            self.condition.notify()"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    def requeue(self):"},{"line_number":802,"context_line":"        LOG.warning(\"requeue not supported\")"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"class ZmqListener(base.Listener):"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_4cba5b6f","line":802,"updated":"2014-11-20 21:37:34.000000000","message":"Warning-level log messages need to be related to operational issues that deployers can fix. Let\u0027s make this\n\n LOG.debug(\u0027WARNING: requeue not supported\u0027)","commit_id":"8b9805ee62b4b0fe5d8501dbeb7919c3e7a8956c"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"1f977e8751392e306e2922dce38c3b8183dccb97","unresolved":false,"context_lines":[{"line_number":799,"context_line":"            self.condition.notify()"},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    def requeue(self):"},{"line_number":802,"context_line":"        LOG.warning(\"requeue not supported\")"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"class ZmqListener(base.Listener):"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_10e2e69f","line":802,"in_reply_to":"5a890539_4cba5b6f","updated":"2014-11-24 11:43:29.000000000","message":"Done","commit_id":"8b9805ee62b4b0fe5d8501dbeb7919c3e7a8956c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"338c4fab7c6b904597714444aa6e1f90aec5058e","unresolved":false,"context_lines":[{"line_number":941,"context_line":""},{"line_number":942,"context_line":"    def cleanup(self):"},{"line_number":943,"context_line":"        for c in self.listeners:"},{"line_number":944,"context_line":"            c.close()"},{"line_number":945,"context_line":"        self.listeners \u003d []"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_cca56b48","line":944,"updated":"2014-11-20 21:37:34.000000000","message":"Do we need to deal with exceptions from close()?","commit_id":"8b9805ee62b4b0fe5d8501dbeb7919c3e7a8956c"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"1f977e8751392e306e2922dce38c3b8183dccb97","unresolved":false,"context_lines":[{"line_number":941,"context_line":""},{"line_number":942,"context_line":"    def cleanup(self):"},{"line_number":943,"context_line":"        for c in self.listeners:"},{"line_number":944,"context_line":"            c.close()"},{"line_number":945,"context_line":"        self.listeners \u003d []"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a890539_f0863ab8","line":944,"in_reply_to":"5a890539_cca56b48","updated":"2014-11-24 11:43:29.000000000","message":"I\u0027ve pushed this down the stack a bit; any backend matchmaker unregister failures will be dealt with, however I\u0027ve left any eventlet kill problems untouched - they will propagate back up the stack still","commit_id":"8b9805ee62b4b0fe5d8501dbeb7919c3e7a8956c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"8206076728d613464b7d1e598107192caad6d28f","unresolved":false,"context_lines":[{"line_number":624,"context_line":"            try:"},{"line_number":625,"context_line":"                _get_matchmaker().unregister(topic, CONF.rpc_zmq_host)"},{"line_number":626,"context_line":"            except Exception:"},{"line_number":627,"context_line":"                LOG.error(_(\"Unable to unregister topic %s from matchmaker\")"},{"line_number":628,"context_line":"                          % topic)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        self.reactor.close()"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_41bd3067","line":627,"updated":"2014-12-04 21:03:24.000000000","message":"The call to _() should use _LE() instead. We should also consider whether this needs to call LOG.exception() to include the traceback, or to just include the error message from Exception. The latter is probably OK, so you could have:\n\n  except Exception as err:\n    LOG.error(_LE(\u0027Unable to unregister topic %s from matchmaker: %s\u0027),\n                   topic, err)","commit_id":"bca357ed5acbcfa7ad7245db8d3d7978c7a17d5e"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"9b7514dc58a4cc035f3388935f3bb9f4017e0200","unresolved":false,"context_lines":[{"line_number":624,"context_line":"            try:"},{"line_number":625,"context_line":"                _get_matchmaker().unregister(topic, CONF.rpc_zmq_host)"},{"line_number":626,"context_line":"            except Exception:"},{"line_number":627,"context_line":"                LOG.error(_(\"Unable to unregister topic %s from matchmaker\")"},{"line_number":628,"context_line":"                          % topic)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        self.reactor.close()"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_d97026dd","line":627,"in_reply_to":"5a890539_41bd3067","updated":"2014-12-05 09:23:08.000000000","message":"Done","commit_id":"bca357ed5acbcfa7ad7245db8d3d7978c7a17d5e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"851a2dc7083e4edb1dc5f441a735150c0dcf0be5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from oslo.messaging._drivers import base"},{"line_number":33,"context_line":"from oslo.messaging._drivers import common as rpc_common"},{"line_number":34,"context_line":"from oslo.messaging._executors import impl_eventlet  # FIXME(markmc)"},{"line_number":35,"context_line":"from oslo.messaging._i18n import _, _LE"},{"line_number":36,"context_line":"from oslo.serialization import jsonutils"},{"line_number":37,"context_line":"from oslo.utils import excutils"},{"line_number":38,"context_line":"from oslo.utils import importutils"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a961159_39f8e4e4","line":35,"updated":"2014-12-10 13:19:01.000000000","message":"doesn\u0027t this affect any PEP8 rules?","commit_id":"cd71c47d326e8d5d2aa2d586e0f9874a45da4d6c"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"3c4573b52ba8aaaf664d9906f4ca0f275c7d8b49","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from oslo.messaging._drivers import base"},{"line_number":33,"context_line":"from oslo.messaging._drivers import common as rpc_common"},{"line_number":34,"context_line":"from oslo.messaging._executors import impl_eventlet  # FIXME(markmc)"},{"line_number":35,"context_line":"from oslo.messaging._i18n import _, _LE"},{"line_number":36,"context_line":"from oslo.serialization import jsonutils"},{"line_number":37,"context_line":"from oslo.utils import excutils"},{"line_number":38,"context_line":"from oslo.utils import importutils"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a961159_a6082192","line":35,"in_reply_to":"3a961159_39f8e4e4","updated":"2014-12-10 20:28:27.000000000","message":"No","commit_id":"cd71c47d326e8d5d2aa2d586e0f9874a45da4d6c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"1cc9d627e42cb521426de2fc4e54e48c52b2ce13","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from oslo.messaging._drivers import base"},{"line_number":33,"context_line":"from oslo.messaging._drivers import common as rpc_common"},{"line_number":34,"context_line":"from oslo.messaging._executors import impl_eventlet  # FIXME(markmc)"},{"line_number":35,"context_line":"from oslo.messaging._i18n import _, _LE"},{"line_number":36,"context_line":"from oslo.serialization import jsonutils"},{"line_number":37,"context_line":"from oslo.utils import excutils"},{"line_number":38,"context_line":"from oslo.utils import importutils"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a961159_fc0c793d","line":35,"in_reply_to":"3a961159_39f8e4e4","updated":"2014-12-10 20:42:08.000000000","message":"The translation marker functions are exceptions to the hacking rule about importing only modules.","commit_id":"cd71c47d326e8d5d2aa2d586e0f9874a45da4d6c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"851a2dc7083e4edb1dc5f441a735150c0dcf0be5","unresolved":false,"context_lines":[{"line_number":625,"context_line":"            try:"},{"line_number":626,"context_line":"                mm.unregister(topic, CONF.rpc_zmq_host)"},{"line_number":627,"context_line":"            except Exception as err:"},{"line_number":628,"context_line":"                LOG.error(_LE(\u0027Unable to unregister topic %(topic)s\u0027"},{"line_number":629,"context_line":"                              \u0027 from matchmaker: %(err)s\u0027) %"},{"line_number":630,"context_line":"                          {\u0027topic\u0027: topic, \u0027err\u0027: err})"},{"line_number":631,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3a961159_19cc08bc","line":628,"updated":"2014-12-10 13:19:01.000000000","message":"LOG.exception","commit_id":"cd71c47d326e8d5d2aa2d586e0f9874a45da4d6c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"1cc9d627e42cb521426de2fc4e54e48c52b2ce13","unresolved":false,"context_lines":[{"line_number":625,"context_line":"            try:"},{"line_number":626,"context_line":"                mm.unregister(topic, CONF.rpc_zmq_host)"},{"line_number":627,"context_line":"            except Exception as err:"},{"line_number":628,"context_line":"                LOG.error(_LE(\u0027Unable to unregister topic %(topic)s\u0027"},{"line_number":629,"context_line":"                              \u0027 from matchmaker: %(err)s\u0027) %"},{"line_number":630,"context_line":"                          {\u0027topic\u0027: topic, \u0027err\u0027: err})"},{"line_number":631,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3a961159_dc55fdfa","line":628,"in_reply_to":"3a961159_19cc08bc","updated":"2014-12-10 20:42:08.000000000","message":"Using exception() is only necessary if the traceback is likely to provide more useful data than the error message. That doesn\u0027t look like it would be the case here.","commit_id":"cd71c47d326e8d5d2aa2d586e0f9874a45da4d6c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"851a2dc7083e4edb1dc5f441a735150c0dcf0be5","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            self.condition.notify()"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    def requeue(self):"},{"line_number":808,"context_line":"        LOG.debug(\"WARNING: requeue not supported\")"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"class ZmqListener(base.Listener):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a961159_59c5b08c","line":808,"updated":"2014-12-10 13:19:01.000000000","message":"LOG.warning(...)","commit_id":"cd71c47d326e8d5d2aa2d586e0f9874a45da4d6c"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"1cc9d627e42cb521426de2fc4e54e48c52b2ce13","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            self.condition.notify()"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    def requeue(self):"},{"line_number":808,"context_line":"        LOG.debug(\"WARNING: requeue not supported\")"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"class ZmqListener(base.Listener):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a961159_3c67e1ea","line":808,"in_reply_to":"3a961159_46785df2","updated":"2014-12-10 20:42:08.000000000","message":"LOG.warning() should only be used for things the operator can fix. They can\u0027t fix a missing feature in the driver, so using debug() is appropriate here.","commit_id":"cd71c47d326e8d5d2aa2d586e0f9874a45da4d6c"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"5be38316ce7f8af5523224c5d156601c006671db","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            self.condition.notify()"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    def requeue(self):"},{"line_number":808,"context_line":"        LOG.debug(\"WARNING: requeue not supported\")"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"class ZmqListener(base.Listener):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a961159_cf938b4d","line":808,"in_reply_to":"3a961159_59c5b08c","updated":"2014-12-10 16:41:43.000000000","message":"+1 It\u0027s worth fixing.","commit_id":"cd71c47d326e8d5d2aa2d586e0f9874a45da4d6c"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"3c4573b52ba8aaaf664d9906f4ca0f275c7d8b49","unresolved":false,"context_lines":[{"line_number":805,"context_line":"            self.condition.notify()"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    def requeue(self):"},{"line_number":808,"context_line":"        LOG.debug(\"WARNING: requeue not supported\")"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"class ZmqListener(base.Listener):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a961159_46785df2","line":808,"in_reply_to":"3a961159_cf938b4d","updated":"2014-12-10 20:28:27.000000000","message":"Actually I disagree; warning would potentially be to verbose; so debug is appropriate.  This was based on dhellman\u0027s feedback","commit_id":"cd71c47d326e8d5d2aa2d586e0f9874a45da4d6c"}],"test-requirements.txt":[{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"79b759331fbb19017b6c63c0e84571e624a63e2a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"qpid-python"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# for test_impl_zmq"},{"line_number":22,"context_line":"pyzmq"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# when we can require tox\u003e\u003d 1.4, this can go into tox.ini:"},{"line_number":25,"context_line":"#  [testenv:cover]"}],"source_content_type":"text/plain","patch_set":2,"id":"baa201ad_96b99e17","line":22,"updated":"2014-10-14 11:49:56.000000000","message":"Version?","commit_id":"f9373eff2df895cea3591c4d7f260c6ac3a2e34a"}],"tests/drivers/test_impl_zmq.py":[{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"79b759331fbb19017b6c63c0e84571e624a63e2a","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        listener \u003d impl_zmq.ZmqListener(self.driver)"},{"line_number":416,"context_line":"        kwargs \u003d {\u0027a\u0027: 1, \u0027b\u0027: 2}"},{"line_number":417,"context_line":"        m \u003d mock.Mock()"},{"line_number":418,"context_line":"        m.fake_method"},{"line_number":419,"context_line":"        ctxt \u003d mock.Mock(autospec\u003dimpl_zmq.RpcContext)"},{"line_number":420,"context_line":"        eventlet.spawn_n(listener.dispatch, ctxt, 0,"},{"line_number":421,"context_line":"                         m.fake_method, \u0027name.space\u0027, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_56d8167f","line":418,"updated":"2014-10-14 11:49:56.000000000","message":"What does this?","commit_id":"f9373eff2df895cea3591c4d7f260c6ac3a2e34a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"255c3ffb05a3546ebc9f44d35a315f1df4371169","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        mock_ctxt.socket \u003d mock.Mock(return_value\u003dmock_sock)"},{"line_number":191,"context_line":"        mock_sock.connect \u003d mock.Mock()"},{"line_number":192,"context_line":"        mock_sock.bind \u003d mock.Mock()"},{"line_number":193,"context_line":"        addr \u003d \u0027127.0.0.1\u0027"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        sock \u003d impl_zmq.ZmqSocket(addr, impl_zmq.zmq.PULL, bind\u003dFalse,"},{"line_number":196,"context_line":"                                  subscribe\u003dNone)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa7fdbe_c46a0919","line":193,"updated":"2014-10-28 19:00:45.000000000","message":"is it possible to do this all in setup or a common method?","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9ab30e0faf3c816c428240bd3492f04b3ee0c63c","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        mock_ctxt.socket \u003d mock.Mock(return_value\u003dmock_sock)"},{"line_number":191,"context_line":"        mock_sock.connect \u003d mock.Mock()"},{"line_number":192,"context_line":"        mock_sock.bind \u003d mock.Mock()"},{"line_number":193,"context_line":"        addr \u003d \u0027127.0.0.1\u0027"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        sock \u003d impl_zmq.ZmqSocket(addr, impl_zmq.zmq.PULL, bind\u003dFalse,"},{"line_number":196,"context_line":"                                  subscribe\u003dNone)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8c0949_52c4ed3f","line":193,"in_reply_to":"9aa7fdbe_c46a0919","updated":"2014-10-31 14:15:55.000000000","message":"+1, this snippet (starting line #187 up to #193) should be moved into test setup.","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"255c3ffb05a3546ebc9f44d35a315f1df4371169","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        transport \u003d messaging.get_transport(self.conf)"},{"line_number":269,"context_line":"        self.driver \u003d transport._driver"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_zmqincomingmessage(self):"},{"line_number":272,"context_line":"        msg \u003d impl_zmq.ZmqIncomingMessage(mock.Mock(), None, \u0027msg.foo\u0027)"},{"line_number":273,"context_line":"        msg.reply(\"abc\")"},{"line_number":274,"context_line":"        self.assertIsInstance("}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa7fdbe_2463d542","line":271,"updated":"2014-10-28 19:00:45.000000000","message":"test_incoming_messaging","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9ab30e0faf3c816c428240bd3492f04b3ee0c63c","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        transport \u003d messaging.get_transport(self.conf)"},{"line_number":269,"context_line":"        self.driver \u003d transport._driver"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_zmqincomingmessage(self):"},{"line_number":272,"context_line":"        msg \u003d impl_zmq.ZmqIncomingMessage(mock.Mock(), None, \u0027msg.foo\u0027)"},{"line_number":273,"context_line":"        msg.reply(\"abc\")"},{"line_number":274,"context_line":"        self.assertIsInstance("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8c0949_72c1e92d","line":271,"in_reply_to":"9aa7fdbe_2463d542","updated":"2014-10-31 14:15:55.000000000","message":"+1","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"9964da4171ffce89c08c5ad76c5ef943def050c7","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        self.addCleanup(stopRpc(self.__dict__))"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    @mock.patch(\u0027oslo.messaging._drivers.impl_zmq.ZmqReactor\u0027, autospec\u003dTrue)"},{"line_number":310,"context_line":"    def test_zmqconnection_create_consumer(self, mock_reactor):"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        mock_reactor.register \u003d mock.Mock()"},{"line_number":313,"context_line":"        conn \u003d impl_zmq.Connection(self.driver)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8c0949_efe5c0a8","line":310,"updated":"2014-11-05 15:31:54.000000000","message":"nit: test_zmq_connection_create_consumer is easier to read. Same nit for all the tests.","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"9964da4171ffce89c08c5ad76c5ef943def050c7","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    @testtools.skipIf(impl_zmq is None, \"zmq not available\")"},{"line_number":432,"context_line":"    def setUp(self):"},{"line_number":433,"context_line":"        super(TestZmqDriver, self).setUp()"},{"line_number":434,"context_line":"        self.messaging_conf.transport_driver \u003d \u0027zmq\u0027"},{"line_number":435,"context_line":"        # Get driver"},{"line_number":436,"context_line":"        transport \u003d messaging.get_transport(self.conf)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a8c0949_2f96e8f0","line":433,"updated":"2014-11-05 15:31:54.000000000","message":"SetUp method looks pretty common. Move a common part into the base test case for all Zmq tests.","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"255c3ffb05a3546ebc9f44d35a315f1df4371169","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        self.messaging_conf.transport_driver \u003d \u0027zmq\u0027"},{"line_number":435,"context_line":"        # Get driver"},{"line_number":436,"context_line":"        transport \u003d messaging.get_transport(self.conf)"},{"line_number":437,"context_line":"        self.driver \u003d transport._driver"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        # Set config values"},{"line_number":440,"context_line":"        self.internal_ipc_dir \u003d self.useFixture(fixtures.TempDir()).path"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa7fdbe_c4104950","line":437,"updated":"2014-10-28 19:00:45.000000000","message":"(nit) maybe have them all inherit  a common zmq class since we seem to be setting the above in all classes","commit_id":"7e4da44084056ddab809f40e5045f0cd9c4c4a37"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"d86628c11d1339f7dbdde66f6fd63c215cfc2de7","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                                           envelope\u003dFalse)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    @mock.patch(\u0027oslo.messaging._drivers.impl_zmq.ZmqListener\u0027, autospec\u003dTrue)"},{"line_number":482,"context_line":"    @mock.patch(\u0027oslo.messaging._drivers.impl_zmq.create_connection\u0027,"},{"line_number":483,"context_line":"                autospec\u003dTrue)"},{"line_number":484,"context_line":"    def test_zmqdriver_listen(self, mock_create_conn, mock_listener):"},{"line_number":485,"context_line":"        mock_listener.return_value \u003d listener \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a890539_0672dee4","line":482,"updated":"2014-11-13 14:10:06.000000000","message":"A `create_connection` method was removed. Now it\u0027s just `Connection` call.","commit_id":"4a873543f85a5c31f1cf7a4eef23b7c10c5d0a5e"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"4d20aa07ec7910cfebc43871cf5ef24ad25caad3","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        mock_call.__name__ \u003d \u0027_call\u0027"},{"line_number":159,"context_line":"        mock_call.return_value \u003d [True]"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        result \u003d self.driver.send("},{"line_number":162,"context_line":"            target, {},"},{"line_number":163,"context_line":"            {\u0027method\u0027: \u0027hello-world\u0027, \u0027tx_id\u0027: 1},"},{"line_number":164,"context_line":"            wait_for_reply\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_7e392ba3","line":161,"updated":"2014-11-15 09:27:57.000000000","message":"I tried to run the testcases, but it stuck on this function. The screen shows:\n\ntests.drivers.test_impl_zmq.TestConfZmqDriverLoad.test_driver_load ... ok\ntests.drivers.test_impl_zmq.TestZmqBasics.test_send_receive_direct ... \n\nIt will not continue. My environment is zeromq 4.0.5 + pyzmq 14.1.0.","commit_id":"38beb287a83da6d04f902515c85608f73e4c1f6c"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"40473ec2477dda25266bbefc7d2ca95d9b03ead8","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        mock_call.__name__ \u003d \u0027_call\u0027"},{"line_number":159,"context_line":"        mock_call.return_value \u003d [True]"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        result \u003d self.driver.send("},{"line_number":162,"context_line":"            target, {},"},{"line_number":163,"context_line":"            {\u0027method\u0027: \u0027hello-world\u0027, \u0027tx_id\u0027: 1},"},{"line_number":164,"context_line":"            wait_for_reply\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a890539_e75f473f","line":161,"in_reply_to":"5a890539_7e392ba3","updated":"2014-11-16 15:47:35.000000000","message":"It works. No problem.","commit_id":"38beb287a83da6d04f902515c85608f73e4c1f6c"}],"tests/notify/test_logger.py":[{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"79b759331fbb19017b6c63c0e84571e624a63e2a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            r.thread \u003d thread_id"},{"line_number":108,"context_line":"            return r"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        with mock.patch(\u0027logging.LogRecord\u0027, spec\u003dTrue) as mock_logrecord:"},{"line_number":111,"context_line":"            mock_logrecord.side_effect \u003d fake_logrecord"},{"line_number":112,"context_line":"            fake_transport \u003d test_notifier._FakeTransport(self.conf)"},{"line_number":113,"context_line":"            with mock.patch(\u0027oslo.messaging.transport.get_transport\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_96b43e36","line":110,"updated":"2014-10-14 11:49:56.000000000","message":"Can we avoid with block using @mock.patch decorator?","commit_id":"f9373eff2df895cea3591c4d7f260c6ac3a2e34a"},{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"79b759331fbb19017b6c63c0e84571e624a63e2a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        with mock.patch(\u0027logging.LogRecord\u0027, spec\u003dTrue) as mock_logrecord:"},{"line_number":111,"context_line":"            mock_logrecord.side_effect \u003d fake_logrecord"},{"line_number":112,"context_line":"            fake_transport \u003d test_notifier._FakeTransport(self.conf)"},{"line_number":113,"context_line":"            with mock.patch(\u0027oslo.messaging.transport.get_transport\u0027,"},{"line_number":114,"context_line":"                            return_value\u003dfake_transport):"},{"line_number":115,"context_line":"                cls_ntfcn_handler \u003d \u0027oslo.messaging.LoggingNotificationHandler\u0027"},{"line_number":116,"context_line":"                logging.config.dictConfig({"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_d685e659","line":113,"updated":"2014-10-14 11:49:56.000000000","message":"The same as above, nested blocks impair readability.","commit_id":"f9373eff2df895cea3591c4d7f260c6ac3a2e34a"}]}
