)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bcc6b82bd1b1f3fb7805720f2f7a527c44a3b151","unresolved":false,"context_lines":[{"line_number":12,"context_line":"The autospec argument is being added by a fixture, and some unit"},{"line_number":13,"context_line":"tests are not using it properly."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Depends-On: I0e4a55fbf4c1d175726ca22b664e240849a99856"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partial-Bug: #1735588"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":34,"id":"9f91af0f_f5a50548","line":15,"updated":"2018-01-09 17:21:04.000000000","message":"This isn\u0027t enough, you need to bump the minimum required version of oslotest in global-requirements to 3.2.0:\n\nhttps://github.com/openstack/requirements/blob/master/global-requirements.txt#L399","commit_id":"838dafaefadaf5dc2dce6622d0a18d4dbf418064"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"c33d2dc69beef469a8db1a99975386661e8ca959","unresolved":false,"context_lines":[{"line_number":12,"context_line":"The autospec argument is being added by a fixture, and some unit"},{"line_number":13,"context_line":"tests are not using it properly."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Depends-On: I0e4a55fbf4c1d175726ca22b664e240849a99856"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partial-Bug: #1735588"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":34,"id":"9f91af0f_30ca9b4d","line":15,"in_reply_to":"9f91af0f_f5a50548","updated":"2018-01-09 17:47:28.000000000","message":"I know. https://review.openstack.org/#/c/532142/","commit_id":"838dafaefadaf5dc2dce6622d0a18d4dbf418064"}],"nova/test.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"406fb8df7d26d328f9ca030fc74b75180a4a4248","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        # NOTE(mikal): make sure we don\u0027t load a privsep helper accidentally"},{"line_number":330,"context_line":"        self.useFixture(nova_fixtures.PrivsepNoHelperFixture())"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        # TODO(claudiub): remove this fixture once the following have been"},{"line_number":333,"context_line":"        # fixed and released in the mock library:"},{"line_number":334,"context_line":"        # https://github.com/testing-cabal/mock/issues/393"},{"line_number":335,"context_line":"        self.useFixture(mock_fixture.MockAutospecFixture())"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def _setup_cells(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"9f91af0f_7559f532","line":334,"range":{"start_line":332,"start_character":0,"end_line":334,"end_character":58},"updated":"2018-01-09 17:03:55.000000000","message":"Remove this. If that\u0027s not already noted in oslotest then it should be. Once (if!) the mock patches merge, we can deprecate it in oslotest and start raising deprecation warnings","commit_id":"ae1eb65a447e1eb42d9dce3a18518ec16aa5d6ac"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b4ee463398cd3dedcb20459ff7da1a156b0f0b19","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        # NOTE(mikal): make sure we don\u0027t load a privsep helper accidentally"},{"line_number":330,"context_line":"        self.useFixture(nova_fixtures.PrivsepNoHelperFixture())"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        # TODO(claudiub): remove this fixture once the following have been"},{"line_number":333,"context_line":"        # fixed and released in the mock library:"},{"line_number":334,"context_line":"        # https://github.com/testing-cabal/mock/issues/393"},{"line_number":335,"context_line":"        self.useFixture(mock_fixture.MockAutospecFixture())"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def _setup_cells(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"9f91af0f_35f7edd5","line":334,"range":{"start_line":332,"start_character":0,"end_line":334,"end_character":58},"in_reply_to":"9f91af0f_7559f532","updated":"2018-01-09 17:17:34.000000000","message":"It is already noted. Will remove this.","commit_id":"ae1eb65a447e1eb42d9dce3a18518ec16aa5d6ac"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a7dd811f7a36da9acfe609974c895318535e7448","unresolved":false,"context_lines":[{"line_number":8309,"context_line":"        self.schedule_and_build_instances_mock \u003d _patch.start()"},{"line_number":8310,"context_line":"        _patch \u003d mock.patch.object(self.compute_api.compute_task_api,"},{"line_number":8311,"context_line":"                                   \u0027rebuild_instance\u0027, autospec\u003dTrue)"},{"line_number":8312,"context_line":"        self.rebuild_instance_mock \u003d _patch.start()"},{"line_number":8313,"context_line":""},{"line_number":8314,"context_line":"        # Assume that we\u0027re always OK for network quota."},{"line_number":8315,"context_line":"        def fake_validate_networks(context, requested_networks, num_instances):"}],"source_content_type":"text/x-python","patch_set":40,"id":"5f93b717_243f3426","line":8312,"range":{"start_line":8312,"start_character":37,"end_line":8312,"end_character":51},"updated":"2018-01-26 15:18:23.000000000","message":"Doesn\u0027t this need a cleanup now?","commit_id":"237734b97e2f5f72be891f01131bf6af3818439b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"95b8c55cfa03e0e99c49637d13b8de644ad25410","unresolved":false,"context_lines":[{"line_number":8309,"context_line":"        self.schedule_and_build_instances_mock \u003d _patch.start()"},{"line_number":8310,"context_line":"        _patch \u003d mock.patch.object(self.compute_api.compute_task_api,"},{"line_number":8311,"context_line":"                                   \u0027rebuild_instance\u0027, autospec\u003dTrue)"},{"line_number":8312,"context_line":"        self.rebuild_instance_mock \u003d _patch.start()"},{"line_number":8313,"context_line":""},{"line_number":8314,"context_line":"        # Assume that we\u0027re always OK for network quota."},{"line_number":8315,"context_line":"        def fake_validate_networks(context, requested_networks, num_instances):"}],"source_content_type":"text/x-python","patch_set":40,"id":"5f93b717_efda8515","line":8312,"range":{"start_line":8312,"start_character":37,"end_line":8312,"end_character":51},"in_reply_to":"5f93b717_243f3426","updated":"2018-01-26 15:44:30.000000000","message":"it\u0027s the same as before. self.compute_api.compute_task_api is an instance, and I\u0027ve patched an instance.\n\nI did a double-check:\n\n        (Pdb) self.compute_api.compute_task_api\n    \u003cnova.conductor.api.ComputeTaskAPI object at 0x7f430def9828\u003e\n    (Pdb) self.compute_api.compute_task_api.schedule_and_build_instances.mock\n    \u003c_AutospecMagicMock name\u003d\u0027schedule_and_build_instances\u0027 spec\u003d\u0027method\u0027 id\u003d\u0027139925975079120\u0027\u003e\n    (Pdb) compute_api.conductor.api.ComputeTaskAPI.schedule_and_build_instances\n    \u003cfunction ComputeTaskAPI.schedule_and_build_instances at 0x7f431453c6a8\u003e\n    (Pdb) compute_api.conductor.api.ComputeTaskAPI.schedule_and_build_instances.mock\n    *** AttributeError: \u0027function\u0027 object has no attribute \u0027mock\u0027\n\nWe could add a self.addCleanup, but it\u0027d be pretty pointless.","commit_id":"237734b97e2f5f72be891f01131bf6af3818439b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"37fdd3803f17f5f0df3bf944b68a56aa025e16c2","unresolved":false,"context_lines":[{"line_number":8306,"context_line":"        _patch \u003d mock.patch.object(self.compute_api.compute_task_api,"},{"line_number":8307,"context_line":"                                   \u0027schedule_and_build_instances\u0027,"},{"line_number":8308,"context_line":"                                   autospec\u003dTrue)"},{"line_number":8309,"context_line":"        self.schedule_and_build_instances_mock \u003d _patch.start()"},{"line_number":8310,"context_line":"        _patch \u003d mock.patch.object(self.compute_api.compute_task_api,"},{"line_number":8311,"context_line":"                                   \u0027rebuild_instance\u0027, autospec\u003dTrue)"},{"line_number":8312,"context_line":"        self.rebuild_instance_mock \u003d _patch.start()"}],"source_content_type":"text/x-python","patch_set":41,"id":"5f93b717_0a8d5f7a","line":8309,"range":{"start_line":8309,"start_character":50,"end_line":8309,"end_character":63},"updated":"2018-01-26 16:06:52.000000000","message":"Do we need addCleanup()s for this (and below)?","commit_id":"043ff8cf933eeb959c810938d8aa2f45b0592256"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"6733e8aac74baaebdd969c91f2900fd6c15ce2e7","unresolved":false,"context_lines":[{"line_number":8306,"context_line":"        _patch \u003d mock.patch.object(self.compute_api.compute_task_api,"},{"line_number":8307,"context_line":"                                   \u0027schedule_and_build_instances\u0027,"},{"line_number":8308,"context_line":"                                   autospec\u003dTrue)"},{"line_number":8309,"context_line":"        self.schedule_and_build_instances_mock \u003d _patch.start()"},{"line_number":8310,"context_line":"        _patch \u003d mock.patch.object(self.compute_api.compute_task_api,"},{"line_number":8311,"context_line":"                                   \u0027rebuild_instance\u0027, autospec\u003dTrue)"},{"line_number":8312,"context_line":"        self.rebuild_instance_mock \u003d _patch.start()"}],"source_content_type":"text/x-python","patch_set":41,"id":"5f93b717_ca4f7790","line":8309,"range":{"start_line":8309,"start_character":50,"end_line":8309,"end_character":63},"in_reply_to":"5f93b717_0a8d5f7a","updated":"2018-01-26 16:35:29.000000000","message":"No, I explained this on the previous patchset.","commit_id":"043ff8cf933eeb959c810938d8aa2f45b0592256"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"edeadbcc6ef7177d94e65728206accfa9fcdd1a2","unresolved":false,"context_lines":[{"line_number":8306,"context_line":"        _patch \u003d mock.patch.object(self.compute_api.compute_task_api,"},{"line_number":8307,"context_line":"                                   \u0027schedule_and_build_instances\u0027,"},{"line_number":8308,"context_line":"                                   autospec\u003dTrue)"},{"line_number":8309,"context_line":"        self.schedule_and_build_instances_mock \u003d _patch.start()"},{"line_number":8310,"context_line":"        _patch \u003d mock.patch.object(self.compute_api.compute_task_api,"},{"line_number":8311,"context_line":"                                   \u0027rebuild_instance\u0027, autospec\u003dTrue)"},{"line_number":8312,"context_line":"        self.rebuild_instance_mock \u003d _patch.start()"}],"source_content_type":"text/x-python","patch_set":41,"id":"5f93b717_fe9eb861","line":8309,"range":{"start_line":8309,"start_character":50,"end_line":8309,"end_character":63},"in_reply_to":"5f93b717_ca4f7790","updated":"2018-01-26 16:55:09.000000000","message":"Saw that, for a different location, on an instance patch, wasn\u0027t sure if this was different.  But I\u0027ll take your word for it :)","commit_id":"043ff8cf933eeb959c810938d8aa2f45b0592256"}],"nova/tests/unit/compute/test_resource_tracker.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a7dd811f7a36da9acfe609974c895318535e7448","unresolved":false,"context_lines":[{"line_number":430,"context_line":"    sched_client_mock \u003d mock.MagicMock()"},{"line_number":431,"context_line":"    notifier_mock \u003d mock.MagicMock()"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    # mock does not support passing in class paths as specs / autospecs."},{"line_number":434,"context_line":"    # which means a class needs to be passed in instead."},{"line_number":435,"context_line":"    vd \u003d mock.MagicMock(autospec\u003ddriver.ComputeDriver)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    # Make sure we don\u0027t change any global fixtures during tests"}],"source_content_type":"text/x-python","patch_set":40,"id":"5f93b717_841168af","line":434,"range":{"start_line":433,"start_character":0,"end_line":434,"end_character":56},"updated":"2018-01-26 15:18:23.000000000","message":"This comment isn\u0027t necessary, given that we don\u0027t have it elsewhere. Does the oslotest utility raise an exception on a string (I assume it would)","commit_id":"237734b97e2f5f72be891f01131bf6af3818439b"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"95b8c55cfa03e0e99c49637d13b8de644ad25410","unresolved":false,"context_lines":[{"line_number":430,"context_line":"    sched_client_mock \u003d mock.MagicMock()"},{"line_number":431,"context_line":"    notifier_mock \u003d mock.MagicMock()"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    # mock does not support passing in class paths as specs / autospecs."},{"line_number":434,"context_line":"    # which means a class needs to be passed in instead."},{"line_number":435,"context_line":"    vd \u003d mock.MagicMock(autospec\u003ddriver.ComputeDriver)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    # Make sure we don\u0027t change any global fixtures during tests"}],"source_content_type":"text/x-python","patch_set":40,"id":"5f93b717_cf1789a3","line":434,"range":{"start_line":433,"start_character":0,"end_line":434,"end_character":56},"in_reply_to":"5f93b717_841168af","updated":"2018-01-26 15:44:30.000000000","message":"will do. oslotest won\u0027t raise any exception on a string, btw.","commit_id":"237734b97e2f5f72be891f01131bf6af3818439b"}],"nova/tests/unit/test_mock_sanity.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e9f42e30d7d3c002fab0209b9066355591ece74a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Cloudbase Solutions Srl"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_fd1cfe14","line":1,"updated":"2017-03-20 19:57:56.000000000","message":"Add tests for\n\n- mock.patch (inline and/or as a decorator)\n- mock.patch.multiple\n- overriding autospec\u003d (False, or another object/class)\n- new/new_callable/create","commit_id":"79ea0ac8aad3ccc32dfde79e450e9c9e1a03c224"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9a7c3d97e10372b8fc4e9c260b2ea4b2a6c6ddbb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Cloudbase Solutions Srl"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_c48a0ebf","line":1,"in_reply_to":"1a1ced50_046426e2","updated":"2017-03-20 20:49:08.000000000","message":"Dig.","commit_id":"79ea0ac8aad3ccc32dfde79e450e9c9e1a03c224"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"89db069d2f5a38036fc9a302e178e91781d13e7f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Cloudbase Solutions Srl"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_046426e2","line":1,"in_reply_to":"1a1ced50_fd1cfe14","updated":"2017-03-20 20:30:04.000000000","message":"makes sense. but at this point, I\u0027m trying to see if there are any failures in nova\u0027s unit tests (mocked method signatures not respected). It happened in the mock project, when I was writing to patches for autospec; there were a few \"broken\" tests.\n\nWill add them after everything\u0027s ok.","commit_id":"79ea0ac8aad3ccc32dfde79e450e9c9e1a03c224"}],"nova/tests/unit/virt/libvirt/storage/test_rbd.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"406fb8df7d26d328f9ca030fc74b75180a4a4248","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def setUp(self):"},{"line_number":62,"context_line":"        super(RbdTestCase, self).setUp()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        rados_patcher \u003d mock.patch.object(rbd_utils, \u0027rados\u0027)"},{"line_number":65,"context_line":"        self.mock_rados \u003d rados_patcher.start()"},{"line_number":66,"context_line":"        self.addCleanup(rados_patcher.stop)"},{"line_number":67,"context_line":"        self.mock_rados.Rados \u003d mock.Mock"},{"line_number":68,"context_line":"        self.mock_rados.Rados.ioctx \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":33,"id":"9f91af0f_f5b2e548","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":47},"updated":"2018-01-09 17:03:55.000000000","message":"I\u0027m assuming this is just a nice-to-have or was there an actual issue here?","commit_id":"ae1eb65a447e1eb42d9dce3a18518ec16aa5d6ac"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b4ee463398cd3dedcb20459ff7da1a156b0f0b19","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def setUp(self):"},{"line_number":62,"context_line":"        super(RbdTestCase, self).setUp()"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        rados_patcher \u003d mock.patch.object(rbd_utils, \u0027rados\u0027)"},{"line_number":65,"context_line":"        self.mock_rados \u003d rados_patcher.start()"},{"line_number":66,"context_line":"        self.addCleanup(rados_patcher.stop)"},{"line_number":67,"context_line":"        self.mock_rados.Rados \u003d mock.Mock"},{"line_number":68,"context_line":"        self.mock_rados.Rados.ioctx \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":33,"id":"9f91af0f_75dfb539","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":47},"in_reply_to":"9f91af0f_f5b2e548","updated":"2018-01-09 17:17:34.000000000","message":"both. there was some issue here. This module gave me a few headaches. :)\n\nThis also reduces the amount of mock.patch necessary in the tests below, since they need to be patched very often.\n\nAdditionally, the way mock.patch decorators work is that they mock + replace the given attribute within the method\u0027s body. Once the method returns, the mock + patch is reverted. Thus, the self.mock_rados and self.mock_rbd would basically represent mocks that are no longer valid. As you can see, a lot of setup was being made on top of invalid mocks.","commit_id":"ae1eb65a447e1eb42d9dce3a18518ec16aa5d6ac"}]}
