)]}'
{"nova/tests/virt/hyperv/test_hostutils.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7c4573d5db5e79d01ff3d56b57ebbb74ed321019","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def test_get_cpus_info(self):"},{"line_number":53,"context_line":"        cpu \u003d mock.MagicMock()"},{"line_number":54,"context_line":"        for (key, val) in self._FAKE_CPU.items():"},{"line_number":55,"context_line":"            setattr(cpu, key, val)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        self._hostutils._conn_cimv2.query.return_value \u003d [cpu]"},{"line_number":58,"context_line":"        cpu_list \u003d self._hostutils.get_cpus_info()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_29dab078","line":55,"updated":"2014-09-29 19:23:20.000000000","message":"Hmm, this probably does not do what you think it does :)\n\nIf you want to set attributes on a MagicMock(), you need to either use a spec object in the constructor of the MagicMock(), or use the following technique:\n\n for key, val in self._FAKE_CPU.items():\n     prop \u003d mock.PropertyMock(return_value\u003dval)\n     setattr(type(cpu), key, prop)\n\nSee here for more information on mocking out properties:\n\nhttp://www.voidspace.org.uk/python/mock/mock.html#mock.PropertyMock\n\nI\u0027d recommend using a spec object instead of doing the type(mock).attr \u003d val stuff. You can do so like this:\n\n # Instead of using a dict of _FAKE_CPU above, you can do this:\n class FakeCPUSpec(object):\n     Architecture \u003d mock.sentinel.cpu_arch\n     Name \u003d mock.sentinel.cpu_name\n     Manufacturer \u003d mock.sentinel.cpu_man\n     NumberOfCores \u003d mock.sentinel.cpu_cores\n     NumberOfLogicalProcessors \u003d mock.sentinel.cpu_procs\n\nand then in this unit test, just do:\n\n cpu \u003d mock.MagicMock(spec\u003dself.FakeCPUSpec)\n self._hostutils._conn_cimv2.query.return_value \u003d [cpu]\n cpu_list \u003d self._hostutils.get_cpu_info()\n self.assertEqual([cpu], cpu_list)","commit_id":"d72d815b2cd26c4a3af1a76cf54578d233e7f43f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"12805ec1db1a32ba8d2556883175a344554f7e27","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def test_get_cpus_info(self):"},{"line_number":53,"context_line":"        cpu \u003d mock.MagicMock()"},{"line_number":54,"context_line":"        for (key, val) in self._FAKE_CPU.items():"},{"line_number":55,"context_line":"            setattr(cpu, key, val)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        self._hostutils._conn_cimv2.query.return_value \u003d [cpu]"},{"line_number":58,"context_line":"        cpu_list \u003d self._hostutils.get_cpus_info()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_8bdb054e","line":55,"in_reply_to":"baa201ad_29dab078","updated":"2014-10-06 14:00:58.000000000","message":"Hmm, the spec version looks nicer, will use it. :)","commit_id":"d72d815b2cd26c4a3af1a76cf54578d233e7f43f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7c4573d5db5e79d01ff3d56b57ebbb74ed321019","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def test_get_memory_info(self):"},{"line_number":63,"context_line":"        memory \u003d mock.MagicMock()"},{"line_number":64,"context_line":"        memory.TotalVisibleMemorySize \u003d self._FAKE_MEMORY_TOTAL"},{"line_number":65,"context_line":"        memory.FreePhysicalMemory \u003d self._FAKE_MEMORY_FREE"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        self._hostutils._conn_cimv2.query.return_value \u003d [memory]"},{"line_number":68,"context_line":"        total_memory, free_memory \u003d self._hostutils.get_memory_info()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_49e7f440","line":65,"updated":"2014-09-29 19:23:20.000000000","message":"See above for why this won\u0027t work like you expect :)","commit_id":"d72d815b2cd26c4a3af1a76cf54578d233e7f43f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"12805ec1db1a32ba8d2556883175a344554f7e27","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    def test_get_memory_info(self):"},{"line_number":63,"context_line":"        memory \u003d mock.MagicMock()"},{"line_number":64,"context_line":"        memory.TotalVisibleMemorySize \u003d self._FAKE_MEMORY_TOTAL"},{"line_number":65,"context_line":"        memory.FreePhysicalMemory \u003d self._FAKE_MEMORY_FREE"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        self._hostutils._conn_cimv2.query.return_value \u003d [memory]"},{"line_number":68,"context_line":"        total_memory, free_memory \u003d self._hostutils.get_memory_info()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_abe0c9fa","line":65,"in_reply_to":"baa201ad_49e7f440","updated":"2014-10-06 14:00:58.000000000","message":"Done","commit_id":"d72d815b2cd26c4a3af1a76cf54578d233e7f43f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7c4573d5db5e79d01ff3d56b57ebbb74ed321019","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def test_get_volume_info(self):"},{"line_number":74,"context_line":"        disk \u003d mock.MagicMock()"},{"line_number":75,"context_line":"        disk.Size \u003d self._FAKE_DISK_SIZE"},{"line_number":76,"context_line":"        disk.FreeSpace \u003d self._FAKE_DISK_FREE"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self._hostutils._conn_cimv2.query.return_value \u003d [disk]"},{"line_number":79,"context_line":"        (total_memory, free_memory) \u003d self._hostutils.get_volume_info("}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_69e4b83b","line":76,"updated":"2014-09-29 19:23:20.000000000","message":"And here :)","commit_id":"d72d815b2cd26c4a3af1a76cf54578d233e7f43f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"12805ec1db1a32ba8d2556883175a344554f7e27","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def test_get_volume_info(self):"},{"line_number":74,"context_line":"        disk \u003d mock.MagicMock()"},{"line_number":75,"context_line":"        disk.Size \u003d self._FAKE_DISK_SIZE"},{"line_number":76,"context_line":"        disk.FreeSpace \u003d self._FAKE_DISK_FREE"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self._hostutils._conn_cimv2.query.return_value \u003d [disk]"},{"line_number":79,"context_line":"        (total_memory, free_memory) \u003d self._hostutils.get_volume_info("}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_cbe8ade4","line":76,"in_reply_to":"baa201ad_69e4b83b","updated":"2014-10-06 14:00:58.000000000","message":"Done","commit_id":"d72d815b2cd26c4a3af1a76cf54578d233e7f43f"}]}
