)]}'
{"ceilometer/tests/ipmi/pollsters/base.py":[{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"b20cc991d698f1e7afe4664bfd11d02933c4bdc4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            \u0027ceilometer.ipmi.platform.ipmi_sensor.IPMISensor\u0027,"},{"line_number":54,"context_line":"            return_value\u003dnm))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.mgr \u003d manager.AgentManager()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.pollster \u003d self.make_pollster()"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_9786f514","line":56,"updated":"2015-01-14 10:47:43.000000000","message":"Could you please explain what does change when we move that line lower?","commit_id":"03844366f7247fd08f3a99e48a827a29eaccb8f4"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"6a0364e2c5380e5f40870ebea3acfafe9f554f11","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            \u0027ceilometer.ipmi.platform.ipmi_sensor.IPMISensor\u0027,"},{"line_number":54,"context_line":"            return_value\u003dnm))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.mgr \u003d manager.AgentManager()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.pollster \u003d self.make_pollster()"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_4e05ba0e","line":56,"in_reply_to":"3a961159_7a6fb060","updated":"2015-01-15 03:21:44.000000000","message":"AgentManager() loads pollster plugins that create NodeManager/IPMISensor, whole __init__ run ipmitool for IPMI capability check.\n\nSo we need call AgentManager late after mock NodeManager, to avoid running ipmitool","commit_id":"03844366f7247fd08f3a99e48a827a29eaccb8f4"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"6a0364e2c5380e5f40870ebea3acfafe9f554f11","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            \u0027ceilometer.ipmi.platform.ipmi_sensor.IPMISensor\u0027,"},{"line_number":54,"context_line":"            return_value\u003dnm))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.mgr \u003d manager.AgentManager()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.pollster \u003d self.make_pollster()"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_2e04ee13","line":56,"in_reply_to":"3a961159_9786f514","updated":"2015-01-15 03:21:44.000000000","message":"AgentManager() loads pollster plugins that create NodeManager/IPMISensor, whole __init__ run ipmitool for IPMI capability check.\n\nSo we need call AgentManager late after mock NodeManager, to avoid running ipmitool","commit_id":"03844366f7247fd08f3a99e48a827a29eaccb8f4"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"a21d2ea322cdd1075f13293a6c76ffb47f643a1f","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            \u0027ceilometer.ipmi.platform.ipmi_sensor.IPMISensor\u0027,"},{"line_number":54,"context_line":"            return_value\u003dnm))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.mgr \u003d manager.AgentManager()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.pollster \u003d self.make_pollster()"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_7a6fb060","line":56,"in_reply_to":"3a961159_9786f514","updated":"2015-01-14 11:18:15.000000000","message":"Indeed it\u0027s not clear.","commit_id":"03844366f7247fd08f3a99e48a827a29eaccb8f4"}],"ceilometer/tests/ipmi/test_manager.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"022f39f7c7dc333df8e6ef217616b4de3b26c281","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestManager(base.BaseTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _normal_init(self):"},{"line_number":30,"context_line":"        pass"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027, mock.MagicMock())"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_6b136401","line":29,"updated":"2015-01-14 12:53:02.000000000","message":"Just curious, what is the meaning of the name \"normal_init\"?","commit_id":"03844366f7247fd08f3a99e48a827a29eaccb8f4"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"6a0364e2c5380e5f40870ebea3acfafe9f554f11","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestManager(base.BaseTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _normal_init(self):"},{"line_number":30,"context_line":"        pass"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027, mock.MagicMock())"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_6e6ef601","line":29,"in_reply_to":"3a961159_6b136401","updated":"2015-01-15 03:21:44.000000000","message":"This name comes from patch of self-disabled-pollster\u0027s test case, where 3 type of init would be used to test plugin loading.","commit_id":"03844366f7247fd08f3a99e48a827a29eaccb8f4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8de9e3c2c8b57f5a95a0e22435c9e68308156544","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027, mock.MagicMock())"},{"line_number":33,"context_line":"    @mock.patch(\u0027ceilometer.ipmi.pollsters.node._Base.__init__\u0027,"},{"line_number":34,"context_line":"                new\u003d_normal_init)"},{"line_number":35,"context_line":"    @mock.patch(\u0027ceilometer.ipmi.pollsters.sensor.SensorPollster.__init__\u0027,"},{"line_number":36,"context_line":"                new\u003d_normal_init)"},{"line_number":37,"context_line":"    def test_load_plugins(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_7fd31b01","line":34,"updated":"2015-01-14 14:19:44.000000000","message":"same question as Chris. why do we need the fake init above if does nothing. can we just pass in mock.Mock()?\n\nsame for below.","commit_id":"03844366f7247fd08f3a99e48a827a29eaccb8f4"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"9b6cec1637e3b682c6bea43db81614e08335f3b2","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027, mock.MagicMock())"},{"line_number":33,"context_line":"    @mock.patch(\u0027ceilometer.ipmi.pollsters.node._Base.__init__\u0027,"},{"line_number":34,"context_line":"                new\u003d_normal_init)"},{"line_number":35,"context_line":"    @mock.patch(\u0027ceilometer.ipmi.pollsters.sensor.SensorPollster.__init__\u0027,"},{"line_number":36,"context_line":"                new\u003d_normal_init)"},{"line_number":37,"context_line":"    def test_load_plugins(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_0e63b21a","line":34,"in_reply_to":"3a961159_7fd31b01","updated":"2015-01-15 03:35:08.000000000","message":"mock.Mock() cause following for __init__, as __init__ must return None. We have to use a new function to take place of __init__\n.   ERROR [stevedore.extension] Could not load \u0027hardware.ipmi.node.power\u0027: __init__() should return None, not \u0027Mock\u0027\n   ERROR [stevedore.extension] __init__() should return None, not \u0027Mock\u0027\nTraceback (most recent call last):\n  File \"/opt/stack/ceilometer/.tox/py27/local/lib/python2.7/site-packages/stevedore/extension.py\", line 162, in _load_plugins\n    verify_requirements,\n  File \"/opt/stack/ceilometer/.tox/py27/local/lib/python2.7/site-packages/stevedore/extension.py\", line 180, in _load_one_plugin\n    obj \u003d plugin(*invoke_args, **invoke_kwds)\nTypeError: __init__() should return None, not \u0027Mock\u0027","commit_id":"03844366f7247fd08f3a99e48a827a29eaccb8f4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"667dc733c094ad601717e098d17646944443b270","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestManager(base.BaseTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # __init__ return None, so must use a new function instead of Mock()"},{"line_number":30,"context_line":"    def _fake_init(self):"},{"line_number":31,"context_line":"        pass"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_49acd488","line":29,"updated":"2015-01-15 03:51:43.000000000","message":"actually, the _fake_init also return None if we check the value, or am i misunderstand something here?","commit_id":"cf63e738a6dab740714dbb71e2296ec011a0d891"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"0be665cd86f9b023ea51905d72489d4093cb8b27","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestManager(base.BaseTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # __init__ return None, so must use a new function instead of Mock()"},{"line_number":30,"context_line":"    def _fake_init(self):"},{"line_number":31,"context_line":"        pass"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_e44da53c","line":29,"in_reply_to":"3a961159_49acd488","updated":"2015-01-15 04:24:28.000000000","message":"__init__ must return None, but Mock() returns a mock object, I think that\u0027s why we can\u0027t use mock.Mock() in mock.patch","commit_id":"cf63e738a6dab740714dbb71e2296ec011a0d891"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ad5440201453dbf04c3033c5f0649d087eba8d1c","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestManager(base.BaseTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # __init__ return None, so must use a new function instead of Mock()"},{"line_number":30,"context_line":"    def _fake_init(self):"},{"line_number":31,"context_line":"        pass"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_84d061f8","line":29,"in_reply_to":"3a961159_847b0128","updated":"2015-01-15 04:40:46.000000000","message":"@gordon chung\n\nreasonable","commit_id":"cf63e738a6dab740714dbb71e2296ec011a0d891"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"cab532685030a5f675b37472a31910dca0d9c05e","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestManager(base.BaseTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # __init__ return None, so must use a new function instead of Mock()"},{"line_number":30,"context_line":"    def _fake_init(self):"},{"line_number":31,"context_line":"        pass"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_847b0128","line":29,"in_reply_to":"3a961159_e44da53c","updated":"2015-01-15 04:34:47.000000000","message":"does mock.Mock(return_value\u003dNone) work?","commit_id":"cf63e738a6dab740714dbb71e2296ec011a0d891"}]}
