)]}'
{"id":"openstack%2Foslo.utils~699745","triplet_id":"openstack%2Foslo.utils~master~I0f0e3e9ce4a410f60639c28aaadb9197aa47b492","project":"openstack/oslo.utils","branch":"master","topic":"remove-mox","hashtags":[],"change_id":"I0f0e3e9ce4a410f60639c28aaadb9197aa47b492","subject":"Flatten test case","status":"MERGED","created":"2019-12-18 18:06:46.000000000","updated":"2020-02-25 21:26:41.000000000","submitted":"2020-02-25 21:22:41.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"699745-1582665761159-81340386","meta_rev_id":"faad8d294f356eb4a82549db8b1ecfdbf8be67a0","_number":699745,"virtual_id_number":699745,"owner":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:gate","value":2,"date":"2020-02-25 21:22:40.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},{"value":0,"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2020-02-25 16:55:02.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},{"value":2,"date":"2020-02-25 19:46:33.000000000","_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},{"value":1,"date":"2020-02-25 19:46:33.000000000","_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},{"value":0,"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"value":0,"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"}],"values":{"-2":"Do Not Backport","-1":"Not A Backport Candidate"," 0":"Backport Review Needed","+1":"Proposed Backport","+2":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-12-20 15:02:19.000000000","updated_by":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"reviewer":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"state":"REVIEWER"},{"updated":"2020-01-07 22:16:11.000000000","updated_by":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"reviewer":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"state":"REVIEWER"},{"updated":"2020-02-25 19:46:33.000000000","updated_by":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"reviewer":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"state":"REVIEWER"},{"updated":"2020-02-25 21:22:40.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"1e26ade63992d642f457f325d5795301da899213","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2019-12-18 18:06:46.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"4f6b12fb624a9d9526c03ce81953a21b8f2d081e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-12-18 19:30:16.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tempest-full https://zuul.opendev.org/t/openstack/build/7003d052777c43898092733ae0e38c29 : SUCCESS in 1h 22m 47s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/2ad182fafd334270a304d4280ba05152 : SUCCESS in 1h 21m 48s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/e7f6b3947a154b1fae5174d9ef7f7e57 : SUCCESS in 4m 08s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/10cd22791b9848749d2dd4c85bed9959 : SUCCESS in 3m 23s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/e4a83fe544524fe28e18479a86e25498 : SUCCESS in 4m 10s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/d8d6b07f580e48fc9ac33e35b3709712 : SUCCESS in 3m 49s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/38eee915a7424ba18df61a05f064447a : SUCCESS in 4m 47s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7bbac8f69f1a49029712241a39249dd1 : SUCCESS in 4m 12s","accounts_in_message":[],"_revision_number":1},{"id":"39ef99f28eb230c412100ea3278b8ae985b305b6","author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"date":"2019-12-20 15:02:19.000000000","message":"Patch Set 1: Code-Review+2\n\nLGTM","accounts_in_message":[],"_revision_number":1},{"id":"296aa4db22f9ff341e95b14e52493c693e7bed0d","author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"date":"2020-01-07 22:16:11.000000000","message":"Patch Set 1:\n\nI think there is a way you could keep the existing structure and convert to mock: in each call to exc_retrier_sequence(), append a bunch of return values and call arguments to various lists, then in exc_retrier_common_end() use those lists as the side_effects argument to set up the mocks and then in assert_has_calls() to verify after exception_generator(). That\u0027s effectively what mox is doing behind the scenes anyway.\n\nAs you mention in the next patch, it\u0027s not great for verifying the order of calls. For that you\u0027d have to do a lot of the verification inside exception_generator().","accounts_in_message":[],"_revision_number":1},{"id":"40cf757557bef0696892e1ff0b9653f4c074d0c6","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2020-02-25 16:55:02.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.","accounts_in_message":[],"_revision_number":2},{"id":"f6e36300de71aebd02ea8d22d0095edbf75d5cbc","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-25 18:24:06.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/b878fcb8f5d04b218a5a629cd4ed8734 : SUCCESS in 1h 25m 26s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/40f4d3bab15f4853b002e06dcb6f9985 : SUCCESS in 6m 29s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b8735b8510ce4d17a5caad708e4fd66d : SUCCESS in 6m 01s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/b505fd3f9a6c4a7289b7d3d0a8f9284e : SUCCESS in 6m 34s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/7129ee872f4d4dba9fabcabedec41f29 : SUCCESS in 6m 50s\n- openstack-tox-py38 https://zuul.opendev.org/t/openstack/build/b29607c6630849e39715854f0f680f73 : FAILURE in 7m 09s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7254b0b8e8ce42199f2c54b55afdcdff : SUCCESS in 9m 49s","accounts_in_message":[],"_revision_number":2},{"id":"1fc43a953fae8e246584c3498bd50ab4d678612a","author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"date":"2020-02-25 19:46:33.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1\n\nGood with the order validation. If we want to look at other ways to optimize this in the future, I don\u0027t think we need to wait on that for now.","accounts_in_message":[],"_revision_number":2},{"id":"1ce3cb36a87f90c03e55170825879783ae563c9b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-25 19:46:44.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"6f80f9b230c367f8d8cbc08cafe80edefd233d07","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-25 21:22:40.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/ca60f6499b3049e6bfd478b56287b0d3 : SUCCESS in 1h 32m 52s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/517cb484c9c344fe9d21dc59658b9cbe : SUCCESS in 6m 06s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/241fcbc7d3cd4b528fd3e12061da7d18 : SUCCESS in 5m 21s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/cc2b1721a7ac42caa1efc1a358b74378 : SUCCESS in 6m 12s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/de3ad3c49690467aa3fbedfff9c5da53 : SUCCESS in 7m 09s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bb68428f9a2347039952f3acc180280a : SUCCESS in 5m 28s","accounts_in_message":[],"_revision_number":2},{"id":"d36db6218f5f722eaca268958fbb20f991ed3eae","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-25 21:22:41.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":2},{"id":"0c3e535cceb1787ef39a93e1774169ae1c42d3eb","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2020-02-25 21:26:41.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8da9ec1a210e43f3ba32d947ebad2112 : SUCCESS in 3m 22s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"7b7970f858a12f838958810b33bbcaa0a0090217","revisions":{"e9ac79401a5058a34ecde1f7c88b6c1a6c2a9802":{"kind":"REWORK","_number":1,"created":"2019-12-18 18:06:46.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/45/699745/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.utils","ref":"refs/changes/45/699745/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.utils refs/changes/45/699745/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.utils refs/changes/45/699745/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.utils refs/changes/45/699745/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.utils refs/changes/45/699745/1"}}},"commit":{"parents":[{"commit":"8b294f4895dc59d21a17a041d51c772f8e36a212","subject":"trivial: Move setup code into setUp helper","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.utils/commit/8b294f4895dc59d21a17a041d51c772f8e36a212"}]}],"author":{"name":"Stephen Finucane","email":"sfinucan@redhat.com","date":"2019-12-18 17:37:23.000000000","tz":0},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2019-12-18 18:06:33.000000000","tz":0},"subject":"Flatten test case","message":"Flatten test case\n\nmock doesn\u0027t have a way to do the below pattern:\n\n  foo.bar(call_arg).AndReturn(return_arg)\n  my_call()\n\nInstead, you have to do the following:\n\n  mock_foo.return_value \u003d return_arg\n  my_call()\n  mock_foo.assert_call_once_with(call_arg)\n\nAs such, we can\u0027t easily map the below to mock:\n\n  def check_something(self):\n      mock_foo.assert_call_once_with(call_arg)\n\n  def test_foo(self):\n      self.check_something()\n      self.check_something()\n      self.check_something()\n      my_call()\n\nAnd we need to flatten this out, somewhat dumbly, to allow the\nconversion.\n\nChange-Id: I0f0e3e9ce4a410f60639c28aaadb9197aa47b492\nSigned-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.utils/commit/e9ac79401a5058a34ecde1f7c88b6c1a6c2a9802"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.utils/commit/e9ac79401a5058a34ecde1f7c88b6c1a6c2a9802"}]},"branch":"refs/heads/master"},"7b7970f858a12f838958810b33bbcaa0a0090217":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2020-02-25 16:55:02.000000000","uploader":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"ref":"refs/changes/45/699745/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.utils","ref":"refs/changes/45/699745/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.utils refs/changes/45/699745/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.utils refs/changes/45/699745/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.utils refs/changes/45/699745/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.utils refs/changes/45/699745/2"}}},"commit":{"parents":[{"commit":"2180db82b605cf84902ee379fffc0b34e17e92c7","subject":"imageutils: Report format specific details when using JSON output format","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.utils/commit/2180db82b605cf84902ee379fffc0b34e17e92c7"}]}],"author":{"name":"Stephen Finucane","email":"sfinucan@redhat.com","date":"2019-12-18 17:37:23.000000000","tz":0},"committer":{"name":"Stephen Finucane","email":"stephenfin@redhat.com","date":"2020-02-25 16:54:12.000000000","tz":0},"subject":"Flatten test case","message":"Flatten test case\n\nmock doesn\u0027t have a way to do the below pattern:\n\n  foo.bar(call_arg).AndReturn(return_arg)\n  my_call()\n\nInstead, you have to do the following:\n\n  mock_foo.return_value \u003d return_arg\n  my_call()\n  mock_foo.assert_call_once_with(call_arg)\n\nAs such, we can\u0027t easily map the below to mock:\n\n  def check_something(self):\n      mock_foo.assert_call_once_with(call_arg)\n\n  def test_foo(self):\n      self.check_something()\n      self.check_something()\n      self.check_something()\n      my_call()\n\nAnd we need to flatten this out, somewhat dumbly, to allow the\nconversion.\n\nChange-Id: I0f0e3e9ce4a410f60639c28aaadb9197aa47b492\nSigned-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.utils/commit/7b7970f858a12f838958810b33bbcaa0a0090217"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.utils/commit/7b7970f858a12f838958810b33bbcaa0a0090217"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
