)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"13ab5afe513772c54ed3a8f3c227a53e40f3c3e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"018ce18c_9e578238","updated":"2025-06-18 10:35:04.000000000","message":"looks good, the added test reflect properly the related bug","commit_id":"0ac3cf408a0d7d9f489f771b2fe397a7b2fccdc3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"f32034abc8558b82f118c9713fb4cc320ccc17c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6091cc91_2a4ba3fd","updated":"2025-08-19 06:19:43.000000000","message":"@amoralej@redhat.com I had to sign off this patch to upload one that I had rebased on top of it, feel free to override it","commit_id":"5570e2fd5f8ef6772096a27949653de4b67ff510"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5d1a1d4eafc39a2f5f20a2ccde0bc7ebf9faabf7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bc746d7f_d74c035d","updated":"2025-09-02 12:15:04.000000000","message":"lgtm, these tests properly reproduce the issues reported","commit_id":"cb08e4d7201657e110858534af7c5c48f8e60f7b"}],"watcher/tests/decision_engine/strategy/strategies/test_zone_migration.py":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"fac517b50f6b3d342abc07b7d467cf63e85090a2","unresolved":true,"context_lines":[{"line_number":560,"context_line":"        self.assertEqual(expected_vmigrations, migrated_volumes)"},{"line_number":561,"context_line":"        # TODO(amoralej) This should be creating a migrate action. Uncomment"},{"line_number":562,"context_line":"        # the following line when fixed."},{"line_number":563,"context_line":"        # self.assertEqual(0, action_types.get(\"migrate\", 0))"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        # All the detached volumes in the pool should be migrated"},{"line_number":566,"context_line":"        volume_indicator \u003d [item[\u0027value\u0027] for item in solution.global_efficacy"}],"source_content_type":"text/x-python","patch_set":1,"id":"d9885f68_5cb9c4c8","line":563,"updated":"2025-06-10 14:14:20.000000000","message":"IIUC in this patch this assert should work, but when fixed the assert should be, right?\n```suggestion\n        # self.assertEqual(1, action_types.get(\"migrate\", 0))\n```","commit_id":"6d04da73d6de7f9ee7a735eb68aaf075ba074b6e"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"dc7ec4a31a3acf7f610f411a2f6455bfe8fd0053","unresolved":true,"context_lines":[{"line_number":560,"context_line":"        self.assertEqual(expected_vmigrations, migrated_volumes)"},{"line_number":561,"context_line":"        # TODO(amoralej) This should be creating a migrate action. Uncomment"},{"line_number":562,"context_line":"        # the following line when fixed."},{"line_number":563,"context_line":"        # self.assertEqual(0, action_types.get(\"migrate\", 0))"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        # All the detached volumes in the pool should be migrated"},{"line_number":566,"context_line":"        volume_indicator \u003d [item[\u0027value\u0027] for item in solution.global_efficacy"}],"source_content_type":"text/x-python","patch_set":1,"id":"b6cda2b5_c935c5c5","line":563,"in_reply_to":"d9885f68_5cb9c4c8","updated":"2025-06-10 15:21:58.000000000","message":"right, that\u0027d be the expected behavior, i can fix it to show the it more clearly.","commit_id":"6d04da73d6de7f9ee7a735eb68aaf075ba074b6e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d383d38a1928276c412a882a002dba180c2b297e","unresolved":true,"context_lines":[{"line_number":113,"context_line":"            new_callable\u003dmock.PropertyMock)"},{"line_number":114,"context_line":"        self.m_with_attached_volume \u003d p_with_attached_volume.start()"},{"line_number":115,"context_line":"        self.addCleanup(p_with_attached_volume.stop)"},{"line_number":116,"context_line":"        self.m_with_attached_volume.return_value \u003d False"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        self.strategy \u003d strategies.ZoneMigration("},{"line_number":119,"context_line":"            config\u003dmock.Mock())"}],"source_content_type":"text/x-python","patch_set":7,"id":"ac85966c_de18fc31","line":116,"updated":"2025-09-15 17:40:16.000000000","message":"-1\n\nso in general we shoudl not keep extedign the mocs in setup\n\nif we are settign up a new mock in setUp\nit shoudl be one that is used by the majoriy of tests in a class.\n\n\notherwise we shoudl be setting up the mock only in the test that needs it.\n\n\nmy other comemnt is we shoudl not follwo this pattern and shudl use fixtures and the mock fixture.\n\ni think this would be \n\n```suggestion\n        self.m_with_attached_volume \u003d self.use_fixture(fixtures.MockPatchObject(\n            strategies.ZoneMigration, \"with_attached_volume\", new_callable\u003dmock.PropertyMock(return_value\u003dFalse)).mock\n```","commit_id":"4787d70871cc88b9ae22123484dc0d2bc86c1138"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b7fb0b9f0826420e99c3ce969edb41695737675d","unresolved":true,"context_lines":[{"line_number":113,"context_line":"            new_callable\u003dmock.PropertyMock)"},{"line_number":114,"context_line":"        self.m_with_attached_volume \u003d p_with_attached_volume.start()"},{"line_number":115,"context_line":"        self.addCleanup(p_with_attached_volume.stop)"},{"line_number":116,"context_line":"        self.m_with_attached_volume.return_value \u003d False"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        self.strategy \u003d strategies.ZoneMigration("},{"line_number":119,"context_line":"            config\u003dmock.Mock())"}],"source_content_type":"text/x-python","patch_set":7,"id":"2c1f0452_8b417889","line":116,"in_reply_to":"7305b08a_aaddcf53","updated":"2025-09-16 17:25:41.000000000","message":"it does adress some of the issue.\n not all of them but many of them.\n \n maybe its best to proceed with emrging this series and that patch and then look at the testign holisticaly once the dust is settled.","commit_id":"4787d70871cc88b9ae22123484dc0d2bc86c1138"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"15c8832794a2566e7408c1e489b4fe2c75eeab6b","unresolved":true,"context_lines":[{"line_number":113,"context_line":"            new_callable\u003dmock.PropertyMock)"},{"line_number":114,"context_line":"        self.m_with_attached_volume \u003d p_with_attached_volume.start()"},{"line_number":115,"context_line":"        self.addCleanup(p_with_attached_volume.stop)"},{"line_number":116,"context_line":"        self.m_with_attached_volume.return_value \u003d False"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        self.strategy \u003d strategies.ZoneMigration("},{"line_number":119,"context_line":"            config\u003dmock.Mock())"}],"source_content_type":"text/x-python","patch_set":7,"id":"7305b08a_aaddcf53","line":116,"in_reply_to":"ac85966c_de18fc31","updated":"2025-09-16 07:32:45.000000000","message":"I proposed a patch for removing a lot of this mocking a while back https://review.opendev.org/c/openstack/watcher/+/954350 I put it at the end of the patch series because I considered a lower prio than the bug fixes. I think that patch covers a lot of the issues you point out, but I\u0027m happy to improve it","commit_id":"4787d70871cc88b9ae22123484dc0d2bc86c1138"}]}
