)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0a46e00383dc0b7a2f0f0a7512252c8eddccb0f6","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Arkady Shtempler \u003cashtempl@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-02-25 20:26:45 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding 3 new test cases:"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1) test_udp_update_pool_healthmonitor_listener RHELOSP-71468"},{"line_number":10,"context_line":"2) test_tcp_block_members_check_healtmonitor_status RHELOSP-19955"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1e07b77b_ca235fdd","line":7,"updated":"2021-02-25 18:55:35.000000000","message":"\"Add 3 new health monitor test cases\" is better so the one-line description makes sense","commit_id":"e1ad92132c5c358197809f92f481aa7a63e3df98"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0a46e00383dc0b7a2f0f0a7512252c8eddccb0f6","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1) test_udp_update_pool_healthmonitor_listener RHELOSP-71468"},{"line_number":10,"context_line":"2) test_tcp_block_members_check_healtmonitor_status RHELOSP-19955"},{"line_number":11,"context_line":"3) test_hm_op_status_change_on_update"},{"line_number":12,"context_line":"Note: test scenario is provided as docstring per test."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ie80378ac1a96941eefa905fd6f49c8fa7e9c3692"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"96611dd1_50310c6f","line":11,"updated":"2021-02-25 18:55:35.000000000","message":"The RHELOSP notes don\u0027t mean anything upstream and should be removed.\n\nAlso, instead of just the test name a short description would be better.","commit_id":"e1ad92132c5c358197809f92f481aa7a63e3df98"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"c4dda86ac28270e9e3a07446cd9e76d6aa1814f6","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1) test_udp_update_pool_healthmonitor_listener RHELOSP-71468"},{"line_number":10,"context_line":"2) test_tcp_block_members_check_healtmonitor_status RHELOSP-19955"},{"line_number":11,"context_line":"3) test_hm_op_status_change_on_update"},{"line_number":12,"context_line":"Note: test scenario is provided as docstring per test."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ie80378ac1a96941eefa905fd6f49c8fa7e9c3692"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"b38817c6_a9e4dd4d","line":11,"in_reply_to":"96611dd1_50310c6f","updated":"2021-02-25 19:30:02.000000000","message":"Agree, I\u0027ve totally forgotten to fix that, but i wanted to do that, I was concentrated on code changes, that it why.\nTnanks!","commit_id":"e1ad92132c5c358197809f92f481aa7a63e3df98"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"ac8dee3e097786686fba237a4e40ba64f6d98e88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"262a49a6_66dc1f6d","updated":"2021-10-13 10:12:37.000000000","message":"recheck","commit_id":"777b03ab3cf2ce5a9b80b37f9ccc1394b3eb067a"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"fbd61765a1407aad753bc1e7231ad8fbabbf655f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"1979fbe5_a8be1eb6","updated":"2022-04-26 07:20:07.000000000","message":"recheck","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"6ede19b83df7b2ad3f164f6c16745c5a376785f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"5ae3812d_0aa8a53a","updated":"2021-10-15 08:19:41.000000000","message":"recheck","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40f920fe6c2623bbc00f916f12d1105aa9cb36ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ab9f2f72_75d49f0b","updated":"2022-01-06 21:00:18.000000000","message":"recheck","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"04ce2e7d9a33c4e85c1df74e021b19bc209952e9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ccaa05e8_8cf3fc9e","updated":"2021-10-15 11:52:13.000000000","message":"recheck","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"dbb3010ee3b1ff6d5d00b19d832e1d32ffd4058a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"663cc3dd_0ebfbea9","updated":"2022-05-04 10:16:03.000000000","message":"Thanks for the review Tom! \n","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"67d0c0920dad09d054122766759880c50f2381f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"d4f16b50_0bb54932","updated":"2022-07-13 06:37:34.000000000","message":"recheck regenerating CI results","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"96b8285eae07842b952c570d56062c586b017499","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"4f3d8820_6ccbf4b3","updated":"2022-07-13 08:40:21.000000000","message":"small -1, especially we need a clearer comment about the use of zip in the last test\n\nwe should also check that the duration of the new tests doesn\u0027t trigger some timeout issues. in my env, the last test takes nearly 5 minutes to complete.","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"8d1db776c4f0db5b37e7aa602a7a736c5a2052db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"e56fa56e_b6654548","in_reply_to":"4f3d8820_6ccbf4b3","updated":"2022-07-26 15:27:09.000000000","message":"Hi Greg!\n\n1) OK, comment will be added.\n2) I didn\u0027t face timeout issues, anyway I\u0027ll add a \"slow\" decorator.\n\nThanks for reviewing this patch!","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a39f43ff03d3a8ae961107820b69675a9d2e96ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"6e411402_5a694968","updated":"2022-08-01 15:58:59.000000000","message":"As written this will introduce test concurrency issues. We need to re-think this.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"10f90e75_1e30e0ad","updated":"2022-08-02 07:21:17.000000000","message":"Thanks Michael, I\u0027m going to fix that all in the next patchset.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"f3f62a199fa4fe12c773126da6cd3ba74da25d5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"a28d4b0e_1d67a0b0","updated":"2022-10-18 12:02:14.000000000","message":"Awesome, thanks for review Omer!","commit_id":"a186f060a0eb5e4487a9ccb5ccda7bb15a8d58f0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"51bf821de3464f467765454563b5b3fd1dcebe46","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"63e294ca_b28f4af2","updated":"2022-11-17 10:23:06.000000000","message":"Nit: note that both tests add ~6 min to the duration of the scenario job\nWe need to be really careful with the duration, we might be really close to the timeout defined for this jobs.","commit_id":"a186f060a0eb5e4487a9ccb5ccda7bb15a8d58f0"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8eec93118a7e21bc4206e21ce7db647540d9bacb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"132b1e4d_0ac769e9","updated":"2022-10-18 11:09:45.000000000","message":"Some nits, but looks good to me","commit_id":"a186f060a0eb5e4487a9ccb5ccda7bb15a8d58f0"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"3eb9421d4cf5d91e8f022c51f429a070d2b19c36","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"e793a46e_8d46a87b","updated":"2022-11-16 15:27:45.000000000","message":"recheck getting CI results","commit_id":"a186f060a0eb5e4487a9ccb5ccda7bb15a8d58f0"}],"octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d76c0fecbdd46ad7a81c4cef6c31ada9f1e0e88b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            raise testtools.TestCase.skipException("},{"line_number":102,"context_line":"                \u0027Skipping this test as load balancing algorithm \u0027"},{"line_number":103,"context_line":"                \u0027SOURCE_IP_PORT requires API version 2.13 or newer.\u0027)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1_operations\")"},{"line_number":106,"context_line":"        listener_kwargs \u003d {"},{"line_number":107,"context_line":"            const.NAME: listener_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_3cf0a7da","side":"PARENT","line":104,"updated":"2020-10-06 14:24:40.000000000","message":"Extra whitespace change","commit_id":"67249477d855d5be4470defcaa7a981fdb66ad49"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d76c0fecbdd46ad7a81c4cef6c31ada9f1e0e88b","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class TrafficOperationsScenarioTest(test_base.LoadBalancerBaseTestWithCompute):"},{"line_number":37,"context_line":"    udp_port_104 \u003d 104  # Used in test_update_udp_listener"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_9c18d31e","line":37,"updated":"2020-10-06 14:24:40.000000000","message":"Name of test in comment is wrong, and why does this need to be defined in the class?  Can\u0027t we just use 104 below?","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"4ef67f74e688833c828036d96c4d8053e1579f2d","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class TrafficOperationsScenarioTest(test_base.LoadBalancerBaseTestWithCompute):"},{"line_number":37,"context_line":"    udp_port_104 \u003d 104  # Used in test_update_udp_listener"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_e7105cae","line":37,"in_reply_to":"9f560f44_9c18d31e","updated":"2020-10-06 15:06:06.000000000","message":"1) Agree, I\u0027ll fix this comment.\n2) According Michael having this port as class attribute should improve time execution.\n\n### Note ###\nI\u0027ve also pushed a patch to improve our current procedure of \"maintaining tests\u0027 ports\"\nI\u0027m talking about: https://review.opendev.org/#/c/755436/ and I must say that I\u0027ll be more than happy to have the above patch merged before all other patches I\u0027m working on, including this one.\nSo once it will happen I\u0027ll simply add \"test_port \u003d self.pool_of_ports[\u0027http_range\u0027].pop(0)\" instead of \"udp_port_104 \u003d 104\"","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d76c0fecbdd46ad7a81c4cef6c31ada9f1e0e88b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            return"},{"line_number":100,"context_line":"        if (pool_algorithm \u003d\u003d const.LB_ALGORITHM_SOURCE_IP_PORT and"},{"line_number":101,"context_line":"                not cls.mem_listener_client.is_version_supported("},{"line_number":102,"context_line":"                    cls.api_version, \u00272.13\u0027)):"},{"line_number":103,"context_line":"            raise testtools.TestCase.skipException("},{"line_number":104,"context_line":"                \u0027Skipping this test as load balancing algorithm \u0027"},{"line_number":105,"context_line":"                \u0027SOURCE_IP_PORT requires API version 2.13 or newer.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_fc0e2fe2","line":102,"updated":"2020-10-06 14:24:40.000000000","message":"Was this failing pep8?  Would just leave alone otherwise","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"4ef67f74e688833c828036d96c4d8053e1579f2d","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            return"},{"line_number":100,"context_line":"        if (pool_algorithm \u003d\u003d const.LB_ALGORITHM_SOURCE_IP_PORT and"},{"line_number":101,"context_line":"                not cls.mem_listener_client.is_version_supported("},{"line_number":102,"context_line":"                    cls.api_version, \u00272.13\u0027)):"},{"line_number":103,"context_line":"            raise testtools.TestCase.skipException("},{"line_number":104,"context_line":"                \u0027Skipping this test as load balancing algorithm \u0027"},{"line_number":105,"context_line":"                \u0027SOURCE_IP_PORT requires API version 2.13 or newer.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_07d110cd","line":102,"in_reply_to":"9f560f44_fc0e2fe2","updated":"2020-10-06 15:06:06.000000000","message":"Pep8 gates PASS and locally \"tox -e pep8\" did work for me.","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d76c0fecbdd46ad7a81c4cef6c31ada9f1e0e88b","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":146,"context_line":"        if create_healthmonitor is False:"},{"line_number":147,"context_line":"            return listener[const.ID], pool[const.ID]"},{"line_number":148,"context_line":"        else:"},{"line_number":149,"context_line":"            healtmonitor \u003d cls.mem_healthmonitor_client.create_healthmonitor("},{"line_number":150,"context_line":"                pool_id\u003dpool[const.ID], delay\u003d10, max_retries_down\u003d4,"},{"line_number":151,"context_line":"                timeout\u003d5, type\u003dconst.HEALTH_MONITOR_UDP_CONNECT,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_bca037a6","line":148,"updated":"2020-10-06 14:24:40.000000000","message":"nit: don\u0027t need else as return above is end of that block.  It will eventually cause a pylint error when the version moves forward, something we\u0027ve had to fix in other repos.","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"4ef67f74e688833c828036d96c4d8053e1579f2d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":146,"context_line":"        if create_healthmonitor is False:"},{"line_number":147,"context_line":"            return listener[const.ID], pool[const.ID]"},{"line_number":148,"context_line":"        else:"},{"line_number":149,"context_line":"            healtmonitor \u003d cls.mem_healthmonitor_client.create_healthmonitor("},{"line_number":150,"context_line":"                pool_id\u003dpool[const.ID], delay\u003d10, max_retries_down\u003d4,"},{"line_number":151,"context_line":"                timeout\u003d5, type\u003dconst.HEALTH_MONITOR_UDP_CONNECT,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_4780289d","line":148,"in_reply_to":"9f560f44_bca037a6","updated":"2020-10-06 15:06:06.000000000","message":"Maybe I can simply replace \"else\" with \"if create_healtmonitor is True\" then?","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d76c0fecbdd46ad7a81c4cef6c31ada9f1e0e88b","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            healtmonitor \u003d cls.mem_healthmonitor_client.create_healthmonitor("},{"line_number":150,"context_line":"                pool_id\u003dpool[const.ID], delay\u003d10, max_retries_down\u003d4,"},{"line_number":151,"context_line":"                timeout\u003d5, type\u003dconst.HEALTH_MONITOR_UDP_CONNECT,"},{"line_number":152,"context_line":"                max_retries\u003d4)"},{"line_number":153,"context_line":"            waiters.wait_for_status(cls.mem_lb_client.show_loadbalancer,"},{"line_number":154,"context_line":"                                    cls.lb_id, const.PROVISIONING_STATUS,"},{"line_number":155,"context_line":"                                    const.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_fcb74f84","line":152,"updated":"2020-10-06 14:24:40.000000000","message":"nit: other occurrences of calls to create_healthmonitor() use a dict when calling, I think to make sure the correct constant strings are used.","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d76c0fecbdd46ad7a81c4cef6c31ada9f1e0e88b","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                self.make_udp_request("},{"line_number":233,"context_line":"                    vip_address, dst_port, timeout\u003dsocket_timeout,"},{"line_number":234,"context_line":"                    source_port\u003dsrc_port)"},{"line_number":235,"context_line":"                success \u003d True"},{"line_number":236,"context_line":"            except Exception as e:"},{"line_number":237,"context_line":"                LOG.warning(\u0027_make_udp_requests_with_retries \u0027 + str(e))"},{"line_number":238,"context_line":"        if success is False:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_bc05d77b","line":235,"updated":"2020-10-06 14:24:40.000000000","message":"Can this just be \u0027return\u0027, then we don\u0027t need \u0027success\u0027 at all since we\u0027d only get to L238 on failure","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"4ef67f74e688833c828036d96c4d8053e1579f2d","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                self.make_udp_request("},{"line_number":233,"context_line":"                    vip_address, dst_port, timeout\u003dsocket_timeout,"},{"line_number":234,"context_line":"                    source_port\u003dsrc_port)"},{"line_number":235,"context_line":"                success \u003d True"},{"line_number":236,"context_line":"            except Exception as e:"},{"line_number":237,"context_line":"                LOG.warning(\u0027_make_udp_requests_with_retries \u0027 + str(e))"},{"line_number":238,"context_line":"        if success is False:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_420ad61d","line":235,"in_reply_to":"9f560f44_bc05d77b","updated":"2020-10-06 15:06:06.000000000","message":"Maybe I can simply break the loop using \"break\" so once in some retry \"make_udp_request\" PASS it will break the loop.\nAgree we don\u0027t need \"success\" at all.","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d76c0fecbdd46ad7a81c4cef6c31ada9f1e0e88b","unresolved":false,"context_lines":[{"line_number":1383,"context_line":"            number_of_retries\u003d3, src_port\u003d60097)"},{"line_number":1384,"context_line":"        # Update healthmonitor"},{"line_number":1385,"context_line":"        self.mem_healthmonitor_client.update_healthmonitor("},{"line_number":1386,"context_line":"            healthmonitor_id\u003dhealthmonitor_id, delay\u003d5)"},{"line_number":1387,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":1388,"context_line":"                                self.lb_id, const.PROVISIONING_STATUS,"},{"line_number":1389,"context_line":"                                const.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_875b6020","line":1386,"updated":"2020-10-06 14:24:40.000000000","message":"I had to go find the create call above to make sure delay value was different, maybe you can just use healthmonitor[const.DELAY] + 1 ... oh, but we don\u0027t have the dict :(","commit_id":"59482b0cfdb3ed127e1b4b0277967d78421856ed"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class TrafficOperationsScenarioTest(test_base.LoadBalancerBaseTestWithCompute):"},{"line_number":37,"context_line":"    # In order to avoid tests conflicts while parallel execution"},{"line_number":38,"context_line":"    # this mechanism is needed to be used by all tests, where"},{"line_number":39,"context_line":"    # listener is created on LB (that is common for all tests)."},{"line_number":40,"context_line":"    # By using \"pop\" within a test code it will prevent failures"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_ebb7e085","line":37,"range":{"start_line":37,"start_character":40,"end_line":37,"end_character":64},"updated":"2020-10-14 16:31:38.000000000","message":"test methods within this class are called sequentially, while classes might be running in parallel.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class TrafficOperationsScenarioTest(test_base.LoadBalancerBaseTestWithCompute):"},{"line_number":37,"context_line":"    # In order to avoid tests conflicts while parallel execution"},{"line_number":38,"context_line":"    # this mechanism is needed to be used by all tests, where"},{"line_number":39,"context_line":"    # listener is created on LB (that is common for all tests)."},{"line_number":40,"context_line":"    # By using \"pop\" within a test code it will prevent failures"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_0e3b4a38","line":37,"range":{"start_line":37,"start_character":40,"end_line":37,"end_character":64},"in_reply_to":"7f6b1bfe_ebb7e085","updated":"2020-10-14 18:11:10.000000000","message":"Absolutely agree, I\u0027ll fix the description in the next patch","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    # Refactoring patch: https://review.opendev.org/#/c/755436/5"},{"line_number":43,"context_line":"    range_length \u003d 100"},{"line_number":44,"context_line":"    pool_of_ports \u003d {"},{"line_number":45,"context_line":"        \u0027http_range\u0027: list(range(104, 104 + range_length)),"},{"line_number":46,"context_line":"        \u0027http_proxy_range\u0027: list(range(8080, 8080 + range_length)),"},{"line_number":47,"context_line":"        \u0027src_high_range\u0027: list(range(60091, 60091 + range_length))}"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_ab620815","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":20},"updated":"2020-10-14 16:31:38.000000000","message":"I don\u0027t think having different port numbers for \u0027http\u0027 \u0027http_proxy\u0027 or \u0027src_high\u0027 provides some value, we only need one unique port number for each listener","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    # Refactoring patch: https://review.opendev.org/#/c/755436/5"},{"line_number":43,"context_line":"    range_length \u003d 100"},{"line_number":44,"context_line":"    pool_of_ports \u003d {"},{"line_number":45,"context_line":"        \u0027http_range\u0027: list(range(104, 104 + range_length)),"},{"line_number":46,"context_line":"        \u0027http_proxy_range\u0027: list(range(8080, 8080 + range_length)),"},{"line_number":47,"context_line":"        \u0027src_high_range\u0027: list(range(60091, 60091 + range_length))}"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_6eabde1c","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":20},"in_reply_to":"7f6b1bfe_ab620815","updated":"2020-10-14 18:11:10.000000000","message":"This is the way I was thinking about that at the beginning, but then after checking all used ports that we have in the existing tests, I\u0027ve found that:\n1) Some tests are using HTTP Proxy ports\n2) Some tests are using high source ports to bind source port in TCP/UDP sockets on client side. \n3) Some tests are just using 80+ ports. \nSo this is why I\u0027ve changed my mind, we do have some different use cases(usage) in already existing tests.\nSo my implementation was to keep the this tendency.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    pool_of_ports \u003d {"},{"line_number":45,"context_line":"        \u0027http_range\u0027: list(range(104, 104 + range_length)),"},{"line_number":46,"context_line":"        \u0027http_proxy_range\u0027: list(range(8080, 8080 + range_length)),"},{"line_number":47,"context_line":"        \u0027src_high_range\u0027: list(range(60091, 60091 + range_length))}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @classmethod"},{"line_number":50,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_0b733ce9","line":47,"range":{"start_line":47,"start_character":26,"end_line":47,"end_character":67},"updated":"2020-10-14 16:31:38.000000000","message":"we could have a method/generator that returns the next available port number, it would avoid creating such lists","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    pool_of_ports \u003d {"},{"line_number":45,"context_line":"        \u0027http_range\u0027: list(range(104, 104 + range_length)),"},{"line_number":46,"context_line":"        \u0027http_proxy_range\u0027: list(range(8080, 8080 + range_length)),"},{"line_number":47,"context_line":"        \u0027src_high_range\u0027: list(range(60091, 60091 + range_length))}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @classmethod"},{"line_number":50,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_0e218ab5","line":47,"range":{"start_line":47,"start_character":26,"end_line":47,"end_character":67},"in_reply_to":"7f6b1bfe_0b733ce9","updated":"2020-10-14 18:11:10.000000000","message":"Yes, this is the default I was always using in Python2, I mean xrange, but there is no xrange in Python3 and from what I\u0027ve seen xrange in python2 is almost similar to list(range), also each list is 100 integers, not something huge that can affect RAM in some way I think.\nPlease suggest how to fix it if you think that it must be generator.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            traffic_member_count\u003dtraffic_member_count, source_port\u003dsource_port,"},{"line_number":219,"context_line":"            delay\u003ddelay)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def _make_udp_requests_with_retries("},{"line_number":222,"context_line":"            self, vip_address, number_of_retries, dst_port,"},{"line_number":223,"context_line":"            src_port\u003dNone, socket_timeout\u003d20):"},{"line_number":224,"context_line":"        retry_number \u003d 0"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_ce5b122c","line":221,"range":{"start_line":221,"start_character":8,"end_line":221,"end_character":39},"updated":"2020-10-14 16:31:38.000000000","message":"I don\u0027t think this function is a good idea, make_udp_request should succeed at the very first call, otherwise, it\u0027s a bug.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            traffic_member_count\u003dtraffic_member_count, source_port\u003dsource_port,"},{"line_number":219,"context_line":"            delay\u003ddelay)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def _make_udp_requests_with_retries("},{"line_number":222,"context_line":"            self, vip_address, number_of_retries, dst_port,"},{"line_number":223,"context_line":"            src_port\u003dNone, socket_timeout\u003d20):"},{"line_number":224,"context_line":"        retry_number \u003d 0"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_c12643b8","line":221,"range":{"start_line":221,"start_character":8,"end_line":221,"end_character":39},"in_reply_to":"7f6b1bfe_ce5b122c","updated":"2020-10-14 18:11:10.000000000","message":"Absolutely agree if tempest tests are going to be executed on all in one host, but when tempest is executed on Baremetal setup with real hosts, cables, switches e.t.c. By definition UDP packages are getting lost from time to time.\nAlso it could be some synchronization issue, for example UDP was sent after some component got into the ACTIVE state, but actually it was very close to become ACTIVE (I mean not yet ACTIVE) and UPD package was already sent.\nI think that the retries are relevant in terms of UDP packages.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                break"},{"line_number":234,"context_line":"            except Exception as e:"},{"line_number":235,"context_line":"                LOG.warning(\u0027_make_udp_requests_with_retries \u0027 + str(e))"},{"line_number":236,"context_line":"        if retry_number \u003d\u003d number_of_retries:  # All retries failed"},{"line_number":237,"context_line":"            raise exceptions.CommandFailed("},{"line_number":238,"context_line":"                \u0027Error - UDP requests failed to receive data!\u0027)"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_be136b66","line":236,"range":{"start_line":236,"start_character":8,"end_line":236,"end_character":44},"updated":"2020-10-14 16:31:38.000000000","message":"you can use \"else:\" here, the code in the else block will be executed unless the while loop catches a \"break\" statement","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                break"},{"line_number":234,"context_line":"            except Exception as e:"},{"line_number":235,"context_line":"                LOG.warning(\u0027_make_udp_requests_with_retries \u0027 + str(e))"},{"line_number":236,"context_line":"        if retry_number \u003d\u003d number_of_retries:  # All retries failed"},{"line_number":237,"context_line":"            raise exceptions.CommandFailed("},{"line_number":238,"context_line":"                \u0027Error - UDP requests failed to receive data!\u0027)"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_817a8b85","line":236,"range":{"start_line":236,"start_character":8,"end_line":236,"end_character":44},"in_reply_to":"7f6b1bfe_be136b66","updated":"2020-10-14 18:11:10.000000000","message":"Will be fixed!","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            except Exception as e:"},{"line_number":235,"context_line":"                LOG.warning(\u0027_make_udp_requests_with_retries \u0027 + str(e))"},{"line_number":236,"context_line":"        if retry_number \u003d\u003d number_of_retries:  # All retries failed"},{"line_number":237,"context_line":"            raise exceptions.CommandFailed("},{"line_number":238,"context_line":"                \u0027Error - UDP requests failed to receive data!\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @decorators.attr(type\u003d[\u0027smoke\u0027, \u0027slow\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_7e4b9386","line":237,"range":{"start_line":237,"start_character":29,"end_line":237,"end_character":42},"updated":"2020-10-14 16:31:38.000000000","message":"CommandFailed exception should be only used for errors when running external commands, it requires some arguments that you cannot provide here:\nhttps://github.com/openstack/tempest-lib/blob/master/tempest_lib/exceptions.py#L167-L173","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            except Exception as e:"},{"line_number":235,"context_line":"                LOG.warning(\u0027_make_udp_requests_with_retries \u0027 + str(e))"},{"line_number":236,"context_line":"        if retry_number \u003d\u003d number_of_retries:  # All retries failed"},{"line_number":237,"context_line":"            raise exceptions.CommandFailed("},{"line_number":238,"context_line":"                \u0027Error - UDP requests failed to receive data!\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @decorators.attr(type\u003d[\u0027smoke\u0027, \u0027slow\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_e17d3f6f","line":237,"range":{"start_line":237,"start_character":29,"end_line":237,"end_character":42},"in_reply_to":"7f6b1bfe_7e4b9386","updated":"2020-10-14 18:11:10.000000000","message":"Agree, I\u0027ll change to RuntimeError with: Error - UDP requests failed to receive data! message.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":501,"context_line":"        return hm"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    def _pause_vm(self, vm_id, action\u003dNone):"},{"line_number":504,"context_line":"        if action \u003d\u003d \u0027pause\u0027:"},{"line_number":505,"context_line":"            return self.os_admin_servers_client.pause_server(vm_id)"},{"line_number":506,"context_line":"        if action \u003d\u003d \u0027unpause\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_0e94ea8a","line":503,"range":{"start_line":503,"start_character":31,"end_line":503,"end_character":42},"updated":"2020-10-14 16:31:38.000000000","message":"an else case would be nice, you could throw an exception in that case","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            CONF.load_balancer.build_timeout)"},{"line_number":501,"context_line":"        return hm"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    def _pause_vm(self, vm_id, action\u003dNone):"},{"line_number":504,"context_line":"        if action \u003d\u003d \u0027pause\u0027:"},{"line_number":505,"context_line":"            return self.os_admin_servers_client.pause_server(vm_id)"},{"line_number":506,"context_line":"        if action \u003d\u003d \u0027unpause\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_e1f25f06","line":503,"range":{"start_line":503,"start_character":31,"end_line":503,"end_character":42},"in_reply_to":"7f6b1bfe_0e94ea8a","updated":"2020-10-14 18:11:10.000000000","message":"New to me and I\u0027ll check it out!","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":503,"context_line":"    def _pause_vm(self, vm_id, action\u003dNone):"},{"line_number":504,"context_line":"        if action \u003d\u003d \u0027pause\u0027:"},{"line_number":505,"context_line":"            return self.os_admin_servers_client.pause_server(vm_id)"},{"line_number":506,"context_line":"        if action \u003d\u003d \u0027unpause\u0027:"},{"line_number":507,"context_line":"            return self.os_admin_servers_client.unpause_server(vm_id)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    @decorators.idempotent_id(\u0027a16f8eb4-a77c-4b0e-8b1b-91c237039713\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_2e972693","line":506,"range":{"start_line":506,"start_character":8,"end_line":506,"end_character":10},"updated":"2020-10-14 16:31:38.000000000","message":"elif","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":503,"context_line":"    def _pause_vm(self, vm_id, action\u003dNone):"},{"line_number":504,"context_line":"        if action \u003d\u003d \u0027pause\u0027:"},{"line_number":505,"context_line":"            return self.os_admin_servers_client.pause_server(vm_id)"},{"line_number":506,"context_line":"        if action \u003d\u003d \u0027unpause\u0027:"},{"line_number":507,"context_line":"            return self.os_admin_servers_client.unpause_server(vm_id)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    @decorators.idempotent_id(\u0027a16f8eb4-a77c-4b0e-8b1b-91c237039713\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_21dc5773","line":506,"range":{"start_line":506,"start_character":8,"end_line":506,"end_character":10},"in_reply_to":"7f6b1bfe_2e972693","updated":"2020-10-14 18:11:10.000000000","message":"Yep :)","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":1382,"context_line":"            const.UDP, listener_port, listener_id, pool_id)"},{"line_number":1383,"context_line":"        # Update pool"},{"line_number":1384,"context_line":"        self.mem_pool_client.update_pool("},{"line_number":1385,"context_line":"            pool_id\u003dpool_id, lb_algorithm\u003dconst.LB_ALGORITHM_SOURCE_IP)"},{"line_number":1386,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":1387,"context_line":"                                self.lb_id, const.PROVISIONING_STATUS,"},{"line_number":1388,"context_line":"                                const.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_aed21633","line":1385,"range":{"start_line":1385,"start_character":29,"end_line":1385,"end_character":70},"updated":"2020-10-14 16:31:38.000000000","message":"the test only checks that the LB is still working after an update, that would have been useful to check that the new setting has an impact on the running LB (verify dispatch, verify that new delay is correctly configured, etc...)","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":1382,"context_line":"            const.UDP, listener_port, listener_id, pool_id)"},{"line_number":1383,"context_line":"        # Update pool"},{"line_number":1384,"context_line":"        self.mem_pool_client.update_pool("},{"line_number":1385,"context_line":"            pool_id\u003dpool_id, lb_algorithm\u003dconst.LB_ALGORITHM_SOURCE_IP)"},{"line_number":1386,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":1387,"context_line":"                                self.lb_id, const.PROVISIONING_STATUS,"},{"line_number":1388,"context_line":"                                const.ACTIVE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_c4d01154","line":1385,"range":{"start_line":1385,"start_character":29,"end_line":1385,"end_character":70},"in_reply_to":"7f6b1bfe_aed21633","updated":"2020-10-14 18:11:10.000000000","message":"I think that such tests are already implemented in API scenarios, but I can add \"show\" to validate made changes.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"                                const.ACTIVE,"},{"line_number":1389,"context_line":"                                CONF.load_balancer.build_interval,"},{"line_number":1390,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":1391,"context_line":"        self._make_udp_requests_with_retries("},{"line_number":1392,"context_line":"            vip_address\u003dself.lb_vip_address, dst_port\u003dlistener_port,"},{"line_number":1393,"context_line":"            number_of_retries\u003d3, src_port\u003dhigh_src_port)"},{"line_number":1394,"context_line":"        # Update healthmonitor"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_6e63dedd","line":1391,"range":{"start_line":1391,"start_character":13,"end_line":1391,"end_character":44},"updated":"2020-10-14 16:31:38.000000000","message":"check_member_balanced would be more appropriate as it generates many creates and checks that the requests are correctly dispatched","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"                                const.ACTIVE,"},{"line_number":1389,"context_line":"                                CONF.load_balancer.build_interval,"},{"line_number":1390,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":1391,"context_line":"        self._make_udp_requests_with_retries("},{"line_number":1392,"context_line":"            vip_address\u003dself.lb_vip_address, dst_port\u003dlistener_port,"},{"line_number":1393,"context_line":"            number_of_retries\u003d3, src_port\u003dhigh_src_port)"},{"line_number":1394,"context_line":"        # Update healthmonitor"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_a4899527","line":1391,"range":{"start_line":1391,"start_character":13,"end_line":1391,"end_character":44},"in_reply_to":"7f6b1bfe_6e63dedd","updated":"2020-10-14 18:11:10.000000000","message":"I think that check_mambers_balanced is good for any protocol using TCP, but not for UDP.\nI don\u0027t want to fail the test if on member_1 we got 3 packages and on member_2 only 1 because of UDP package loss, this will fail the test with \"No balanced\" that is not the main idea of this particular test scenario.\nAlso making 1 (maximum 3) UDP request will save test execution time.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":1399,"context_line":"                                const.ACTIVE,"},{"line_number":1400,"context_line":"                                CONF.load_balancer.build_interval,"},{"line_number":1401,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":1402,"context_line":"        self._make_udp_requests_with_retries("},{"line_number":1403,"context_line":"            vip_address\u003dself.lb_vip_address, dst_port\u003dlistener_port,"},{"line_number":1404,"context_line":"            number_of_retries\u003d3)"},{"line_number":1405,"context_line":"        # Update listener"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_eea40e0b","line":1402,"range":{"start_line":1402,"start_character":13,"end_line":1402,"end_character":44},"updated":"2020-10-14 16:31:38.000000000","message":"same here","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":1404,"context_line":"            number_of_retries\u003d3)"},{"line_number":1405,"context_line":"        # Update listener"},{"line_number":1406,"context_line":"        listener_kwargs \u003d {const.LISTENER_ID: listener_id,"},{"line_number":1407,"context_line":"                           const.CONNECTION_LIMIT: 10}"},{"line_number":1408,"context_line":"        self.mem_listener_client.update_listener(**listener_kwargs)"},{"line_number":1409,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":1410,"context_line":"                                self.lb_id, const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_4eb54231","line":1407,"range":{"start_line":1407,"start_character":51,"end_line":1407,"end_character":53},"updated":"2020-10-14 16:31:38.000000000","message":"10 is too low for a traffic scenario test, we could have issues if we generate many requests.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":1404,"context_line":"            number_of_retries\u003d3)"},{"line_number":1405,"context_line":"        # Update listener"},{"line_number":1406,"context_line":"        listener_kwargs \u003d {const.LISTENER_ID: listener_id,"},{"line_number":1407,"context_line":"                           const.CONNECTION_LIMIT: 10}"},{"line_number":1408,"context_line":"        self.mem_listener_client.update_listener(**listener_kwargs)"},{"line_number":1409,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":1410,"context_line":"                                self.lb_id, const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_c4881121","line":1407,"range":{"start_line":1407,"start_character":51,"end_line":1407,"end_character":53},"in_reply_to":"7f6b1bfe_4eb54231","updated":"2020-10-14 18:11:10.000000000","message":"1000?","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":1411,"context_line":"                                const.ACTIVE,"},{"line_number":1412,"context_line":"                                CONF.load_balancer.build_interval,"},{"line_number":1413,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":1414,"context_line":"        self._make_udp_requests_with_retries("},{"line_number":1415,"context_line":"            vip_address\u003dself.lb_vip_address, dst_port\u003dlistener_port,"},{"line_number":1416,"context_line":"            number_of_retries\u003d3)"},{"line_number":1417,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_cea952e0","line":1414,"range":{"start_line":1414,"start_character":13,"end_line":1414,"end_character":44},"updated":"2020-10-14 16:31:38.000000000","message":"same here","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":1432,"context_line":"        for vm_id in vm_ids:"},{"line_number":1433,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1434,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1435,"context_line":"        mb_ids \u003d [mb[const.ID] for"},{"line_number":1436,"context_line":"                  mb in self.mem_member_client.list_members(pool_id)]"},{"line_number":1437,"context_line":"        for mb_id in mb_ids:"},{"line_number":1438,"context_line":"            waiters.wait_for_status("}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_0ef50acc","line":1435,"range":{"start_line":1435,"start_character":31,"end_line":1435,"end_character":34},"updated":"2020-10-14 16:31:38.000000000","message":"nit: for readability, I would have written:\n   [mb[const.ID]\n    for mb in self.mem_member_client.list_members(pool_id)]","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":1432,"context_line":"        for vm_id in vm_ids:"},{"line_number":1433,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1434,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1435,"context_line":"        mb_ids \u003d [mb[const.ID] for"},{"line_number":1436,"context_line":"                  mb in self.mem_member_client.list_members(pool_id)]"},{"line_number":1437,"context_line":"        for mb_id in mb_ids:"},{"line_number":1438,"context_line":"            waiters.wait_for_status("}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_047a0923","line":1435,"range":{"start_line":1435,"start_character":31,"end_line":1435,"end_character":34},"in_reply_to":"7f6b1bfe_0ef50acc","updated":"2020-10-14 18:11:10.000000000","message":"Yep, will be fixed!","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"91da2ce0244816d714854fae3bc4d950855d8b20","unresolved":false,"context_lines":[{"line_number":1438,"context_line":"            waiters.wait_for_status("},{"line_number":1439,"context_line":"                self.mem_member_client.show_member,"},{"line_number":1440,"context_line":"                mb_id, const.OPERATING_STATUS,"},{"line_number":1441,"context_line":"                const.ERROR,"},{"line_number":1442,"context_line":"                CONF.load_balancer.build_interval,"},{"line_number":1443,"context_line":"                CONF.load_balancer.build_timeout,"},{"line_number":1444,"context_line":"                pool_id\u003dpool_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_ce13120d","line":1441,"range":{"start_line":1441,"start_character":16,"end_line":1441,"end_character":27},"updated":"2020-10-14 16:31:38.000000000","message":"it would be great to check other resources operating_statuses, if I\u0027m not mistaken pools and listeners should be in ERROR state too.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"3477485ae287739d1c154701e0a6be83db3e262c","unresolved":false,"context_lines":[{"line_number":1438,"context_line":"            waiters.wait_for_status("},{"line_number":1439,"context_line":"                self.mem_member_client.show_member,"},{"line_number":1440,"context_line":"                mb_id, const.OPERATING_STATUS,"},{"line_number":1441,"context_line":"                const.ERROR,"},{"line_number":1442,"context_line":"                CONF.load_balancer.build_interval,"},{"line_number":1443,"context_line":"                CONF.load_balancer.build_timeout,"},{"line_number":1444,"context_line":"                pool_id\u003dpool_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_c4ebf1ad","line":1441,"range":{"start_line":1441,"start_character":16,"end_line":1441,"end_character":27},"in_reply_to":"7f6b1bfe_ce13120d","updated":"2020-10-14 18:11:10.000000000","message":"This test is about the healthmonitor that\u0027s responsible to update members state only as far as I know, but maybe I can use \"lb status show\" to get the LB status JSON (once members are already in ERROR) to validate all the rest statuses: pool, listeners, lb ... (assertions per relevant filed in JSON), do we really need that? :-(\nThe feeling is that such kind of \"dependency\" is needed to be covered in API scenarios and if not I can add it to my todo list.","commit_id":"e97a15fe9defa8153efec66c0e1e15e7edea2f03"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"628c386d3ec387b35418e6724c7770dde543acba","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            src_port\u003dNone, socket_timeout\u003d20):"},{"line_number":221,"context_line":"        retry_number \u003d 0"},{"line_number":222,"context_line":"        while retry_number \u003c number_of_retries:"},{"line_number":223,"context_line":"            LOG.info(\u0027_make_udp_requests_with_retries attempt number:\u0027"},{"line_number":224,"context_line":"                     + str(retry_number))"},{"line_number":225,"context_line":"            retry_number +\u003d 1"},{"line_number":226,"context_line":"            try:"},{"line_number":227,"context_line":"                self.make_udp_request("}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_6592b44d","line":224,"range":{"start_line":223,"start_character":21,"end_line":224,"end_character":40},"updated":"2020-10-26 19:52:26.000000000","message":"LOG.*() should be called like:\n\n    LOG.info(\u0027... number: %d\u0027, retry_number)","commit_id":"1041e550d0254ccff2a72cf36562bf249451bd38"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"628c386d3ec387b35418e6724c7770dde543acba","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                    source_port\u003dsrc_port)"},{"line_number":230,"context_line":"                break"},{"line_number":231,"context_line":"            except Exception as e:"},{"line_number":232,"context_line":"                LOG.warning(\u0027_make_udp_requests_with_retries \u0027 + str(e))"},{"line_number":233,"context_line":"        else:"},{"line_number":234,"context_line":"            raise RuntimeError(\u0027Error - UDP requests failed to receive data!\u0027)"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_05a300a0","line":232,"range":{"start_line":232,"start_character":60,"end_line":232,"end_character":71},"updated":"2020-10-26 19:52:26.000000000","message":"Same as above, should be (\u0027... %s\u0027, e)","commit_id":"1041e550d0254ccff2a72cf36562bf249451bd38"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"628c386d3ec387b35418e6724c7770dde543acba","unresolved":false,"context_lines":[{"line_number":1373,"context_line":"        * Update pool algorithm to: \"source_ip\" and validate UDP"},{"line_number":1374,"context_line":"        * Update healtmonitor with: \"delay\u003d20\" and validate UDP traffic"},{"line_number":1375,"context_line":"        * Update listener with: \"connection-limit\u003d300\" and validate UDP traffic"},{"line_number":1376,"context_line":"        * Polarion test ID: RHELOSP-71468"},{"line_number":1377,"context_line":"        \"\"\""},{"line_number":1378,"context_line":"        if not self.mem_listener_client.is_version_supported("},{"line_number":1379,"context_line":"                self.api_version, \u00272.1\u0027):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_65e0f4cd","line":1376,"updated":"2020-10-26 19:52:26.000000000","message":"Polarion doesn\u0027t have any meaning upstream, same below","commit_id":"1041e550d0254ccff2a72cf36562bf249451bd38"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"628c386d3ec387b35418e6724c7770dde543acba","unresolved":false,"context_lines":[{"line_number":1500,"context_line":"                        \u0027op_stat\u0027: const.ONLINE}] * (len(fault_cases))"},{"line_number":1501,"context_line":"        flip_flop \u003d [v for f in zip(valid_cases, fault_cases) for v in f]"},{"line_number":1502,"context_line":"        for ff in flip_flop:"},{"line_number":1503,"context_line":"            LOG.info(\u0027test_hm_op_status_change_on_update \u0027 + str(ff))"},{"line_number":1504,"context_line":"            self.mem_healthmonitor_client.update_healthmonitor("},{"line_number":1505,"context_line":"                hm_id, expected_codes\u003dff[\u0027code\u0027], http_method\u003dff[\u0027mthd\u0027])"},{"line_number":1506,"context_line":"            waiters.wait_for_status("}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_a5b5eccf","line":1503,"updated":"2020-10-26 19:52:26.000000000","message":"Same as above","commit_id":"1041e550d0254ccff2a72cf36562bf249451bd38"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"e43c0f93526faf89ce684391ecdde6019da535cd","unresolved":true,"context_lines":[{"line_number":260,"context_line":"            return self.os_admin_servers_client.unpause_server(vm_id)"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            raise RuntimeError(\u0027Failed to {} the VM with\u0027"},{"line_number":263,"context_line":"                               \u0027 ID: \u0027.format(action, vm_id))"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    @decorators.attr(type\u003d[\u0027smoke\u0027, \u0027slow\u0027])"},{"line_number":266,"context_line":"    @testtools.skipIf(CONF.load_balancer.test_with_noop,"}],"source_content_type":"text/x-python","patch_set":15,"id":"b7a14f45_cd287d95","line":263,"range":{"start_line":263,"start_character":33,"end_line":263,"end_character":37},"updated":"2022-04-28 13:30:32.000000000","message":"\u0027ID: {}\u0027","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"bebd3c5ea50e2d8adec5cc5351c49203cb38762b","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            return self.os_admin_servers_client.unpause_server(vm_id)"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            raise RuntimeError(\u0027Failed to {} the VM with\u0027"},{"line_number":263,"context_line":"                               \u0027 ID: \u0027.format(action, vm_id))"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    @decorators.attr(type\u003d[\u0027smoke\u0027, \u0027slow\u0027])"},{"line_number":266,"context_line":"    @testtools.skipIf(CONF.load_balancer.test_with_noop,"}],"source_content_type":"text/x-python","patch_set":15,"id":"fd97d508_b584c936","line":263,"range":{"start_line":263,"start_character":33,"end_line":263,"end_character":37},"in_reply_to":"b7a14f45_cd287d95","updated":"2022-05-03 07:28:49.000000000","message":"Done","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"e43c0f93526faf89ce684391ecdde6019da535cd","unresolved":true,"context_lines":[{"line_number":1418,"context_line":"    def test_udp_update_pool_healthmonitor_listener(self):"},{"line_number":1419,"context_line":"        \"\"\"Test scenario:"},{"line_number":1420,"context_line":""},{"line_number":1421,"context_line":"        * Prerequisites:"},{"line_number":1422,"context_line":"        * Create: UDP listener, pool, healtmonitor and validate UDP traffic."},{"line_number":1423,"context_line":"        * Test scenario:"},{"line_number":1424,"context_line":"        * Update pool algorithm to: \"source_ip\" and start sending UDP traffic."}],"source_content_type":"text/x-python","patch_set":15,"id":"eb616c64_3fdf0da5","line":1421,"range":{"start_line":1421,"start_character":8,"end_line":1421,"end_character":10},"updated":"2022-04-28 13:30:32.000000000","message":"Better use those for making a bullet list and to describe the steps in the test. Not every line should start with *, only the start of an item. Same for other docstrings.","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"1873da14ab9320c9582a36a98b08ca2949de6337","unresolved":false,"context_lines":[{"line_number":1418,"context_line":"    def test_udp_update_pool_healthmonitor_listener(self):"},{"line_number":1419,"context_line":"        \"\"\"Test scenario:"},{"line_number":1420,"context_line":""},{"line_number":1421,"context_line":"        * Prerequisites:"},{"line_number":1422,"context_line":"        * Create: UDP listener, pool, healtmonitor and validate UDP traffic."},{"line_number":1423,"context_line":"        * Test scenario:"},{"line_number":1424,"context_line":"        * Update pool algorithm to: \"source_ip\" and start sending UDP traffic."}],"source_content_type":"text/x-python","patch_set":15,"id":"06eaf52b_10feb39e","line":1421,"range":{"start_line":1421,"start_character":8,"end_line":1421,"end_character":10},"in_reply_to":"eb616c64_3fdf0da5","updated":"2022-05-04 09:56:44.000000000","message":"Done","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"e43c0f93526faf89ce684391ecdde6019da535cd","unresolved":true,"context_lines":[{"line_number":1423,"context_line":"        * Test scenario:"},{"line_number":1424,"context_line":"        * Update pool algorithm to: \"source_ip\" and start sending UDP traffic."},{"line_number":1425,"context_line":"        * Expected: successfully received UDP packages from LB VIP."},{"line_number":1426,"context_line":"        * Update healtmonitor with: \"delay\u003d20\" and start sending UDP traffic."},{"line_number":1427,"context_line":"        * Expected: successfully received UDP packages from LB VIP."},{"line_number":1428,"context_line":"        * Update listener with: \"connection-limit\u003d300\" and start sending"},{"line_number":1429,"context_line":"        * UDP traffic."}],"source_content_type":"text/x-python","patch_set":15,"id":"87b1bc4d_a77cf729","line":1426,"range":{"start_line":1426,"start_character":43,"end_line":1426,"end_character":45},"updated":"2022-04-28 13:30:32.000000000","message":"it\u0027s 5 according to the code.","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"bebd3c5ea50e2d8adec5cc5351c49203cb38762b","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"        * Test scenario:"},{"line_number":1424,"context_line":"        * Update pool algorithm to: \"source_ip\" and start sending UDP traffic."},{"line_number":1425,"context_line":"        * Expected: successfully received UDP packages from LB VIP."},{"line_number":1426,"context_line":"        * Update healtmonitor with: \"delay\u003d20\" and start sending UDP traffic."},{"line_number":1427,"context_line":"        * Expected: successfully received UDP packages from LB VIP."},{"line_number":1428,"context_line":"        * Update listener with: \"connection-limit\u003d300\" and start sending"},{"line_number":1429,"context_line":"        * UDP traffic."}],"source_content_type":"text/x-python","patch_set":15,"id":"e4105407_64ded5c9","line":1426,"range":{"start_line":1426,"start_character":43,"end_line":1426,"end_character":45},"in_reply_to":"87b1bc4d_a77cf729","updated":"2022-05-03 07:28:49.000000000","message":"Done","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"e43c0f93526faf89ce684391ecdde6019da535cd","unresolved":true,"context_lines":[{"line_number":1506,"context_line":"        vm_ids \u003d [self.lb_member_webserver1[const.ID],"},{"line_number":1507,"context_line":"                  self.lb_member_webserver2[const.ID]]"},{"line_number":1508,"context_line":"        for vm_id in vm_ids:"},{"line_number":1509,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1510,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1511,"context_line":"        mb_ids \u003d [mb[const.ID] for mb in"},{"line_number":1512,"context_line":"                  self.mem_member_client.list_members(pool_id)]"}],"source_content_type":"text/x-python","patch_set":15,"id":"34495b15_dfaf71e7","line":1509,"range":{"start_line":1509,"start_character":12,"end_line":1509,"end_character":49},"updated":"2022-04-28 13:30:32.000000000","message":"I\u0027d suggest to add a wait_for_status() before pausing the VM to check whether the VMs are in const.OPERATING_STATUS const.ONLINE first and not in const.ERROR from the beginning.","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"bebd3c5ea50e2d8adec5cc5351c49203cb38762b","unresolved":true,"context_lines":[{"line_number":1506,"context_line":"        vm_ids \u003d [self.lb_member_webserver1[const.ID],"},{"line_number":1507,"context_line":"                  self.lb_member_webserver2[const.ID]]"},{"line_number":1508,"context_line":"        for vm_id in vm_ids:"},{"line_number":1509,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1510,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1511,"context_line":"        mb_ids \u003d [mb[const.ID] for mb in"},{"line_number":1512,"context_line":"                  self.mem_member_client.list_members(pool_id)]"}],"source_content_type":"text/x-python","patch_set":15,"id":"7c5a073b_5e66dc20","line":1509,"range":{"start_line":1509,"start_character":12,"end_line":1509,"end_character":49},"in_reply_to":"34495b15_dfaf71e7","updated":"2022-05-03 07:28:49.000000000","message":"There are already existing waiters and traffic validation test:\n1) L1503 calls _pool_add_healthmonitor and it has its own waiters indicates that the LB and health monitor are ACTIVE L243 and L248\n2) L1504 _test_basic_traffic will not succeed if something is wrong with members VMs.\nSo adding the additional waiter here is not really necessary I think.","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"1873da14ab9320c9582a36a98b08ca2949de6337","unresolved":false,"context_lines":[{"line_number":1506,"context_line":"        vm_ids \u003d [self.lb_member_webserver1[const.ID],"},{"line_number":1507,"context_line":"                  self.lb_member_webserver2[const.ID]]"},{"line_number":1508,"context_line":"        for vm_id in vm_ids:"},{"line_number":1509,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1510,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1511,"context_line":"        mb_ids \u003d [mb[const.ID] for mb in"},{"line_number":1512,"context_line":"                  self.mem_member_client.list_members(pool_id)]"}],"source_content_type":"text/x-python","patch_set":15,"id":"90d4f122_406f1795","line":1509,"range":{"start_line":1509,"start_character":12,"end_line":1509,"end_character":49},"in_reply_to":"7c5a073b_5e66dc20","updated":"2022-05-04 09:56:44.000000000","message":"ok","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"e43c0f93526faf89ce684391ecdde6019da535cd","unresolved":true,"context_lines":[{"line_number":1582,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027},"},{"line_number":1583,"context_line":"            {\u0027mthd\u0027: const.GET, \u0027code\u0027: \u0027201-204\u0027, \u0027op_stat\u0027: const.ONLINE,"},{"line_number":1584,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027}]"},{"line_number":1585,"context_line":"        flip_flop \u003d [v for f in zip(valid_cases, fault_cases) for v in f]"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        # For each test case, update HM and validate that members\u0027"},{"line_number":1588,"context_line":"        # \"Operation Status\" is changed to expected value."}],"source_content_type":"text/x-python","patch_set":15,"id":"2aab4b1d_34815f19","line":1585,"range":{"start_line":1585,"start_character":8,"end_line":1585,"end_character":73},"updated":"2022-04-28 13:30:32.000000000","message":"It takes a bit of thinking to understand what this actually does. Why not simply combine fault_cases and valid_cases in one list \"cases\" above with alternating op_stat like the end result of this here?","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"bebd3c5ea50e2d8adec5cc5351c49203cb38762b","unresolved":true,"context_lines":[{"line_number":1582,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027},"},{"line_number":1583,"context_line":"            {\u0027mthd\u0027: const.GET, \u0027code\u0027: \u0027201-204\u0027, \u0027op_stat\u0027: const.ONLINE,"},{"line_number":1584,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027}]"},{"line_number":1585,"context_line":"        flip_flop \u003d [v for f in zip(valid_cases, fault_cases) for v in f]"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        # For each test case, update HM and validate that members\u0027"},{"line_number":1588,"context_line":"        # \"Operation Status\" is changed to expected value."}],"source_content_type":"text/x-python","patch_set":15,"id":"f8754d36_2627579b","line":1585,"range":{"start_line":1585,"start_character":8,"end_line":1585,"end_character":73},"in_reply_to":"2aab4b1d_34815f19","updated":"2022-05-03 07:28:49.000000000","message":"See L1532 that explains why do we need it, this line (agree a bit complicated) is taking care of making the right order of \"operation statuses\" (ERROR, ONLINE, ERROR, ONLINE ...).","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"8d1db776c4f0db5b37e7aa602a7a736c5a2052db","unresolved":false,"context_lines":[{"line_number":1582,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027},"},{"line_number":1583,"context_line":"            {\u0027mthd\u0027: const.GET, \u0027code\u0027: \u0027201-204\u0027, \u0027op_stat\u0027: const.ONLINE,"},{"line_number":1584,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027}]"},{"line_number":1585,"context_line":"        flip_flop \u003d [v for f in zip(valid_cases, fault_cases) for v in f]"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        # For each test case, update HM and validate that members\u0027"},{"line_number":1588,"context_line":"        # \"Operation Status\" is changed to expected value."}],"source_content_type":"text/x-python","patch_set":15,"id":"92bc2aca_3fb986fc","line":1585,"range":{"start_line":1585,"start_character":8,"end_line":1585,"end_character":73},"in_reply_to":"8f2b83f9_5128d1e4","updated":"2022-07-26 15:27:09.000000000","message":"Done","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"96b8285eae07842b952c570d56062c586b017499","unresolved":true,"context_lines":[{"line_number":1582,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027},"},{"line_number":1583,"context_line":"            {\u0027mthd\u0027: const.GET, \u0027code\u0027: \u0027201-204\u0027, \u0027op_stat\u0027: const.ONLINE,"},{"line_number":1584,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027}]"},{"line_number":1585,"context_line":"        flip_flop \u003d [v for f in zip(valid_cases, fault_cases) for v in f]"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        # For each test case, update HM and validate that members\u0027"},{"line_number":1588,"context_line":"        # \"Operation Status\" is changed to expected value."}],"source_content_type":"text/x-python","patch_set":15,"id":"8f2b83f9_5128d1e4","line":1585,"range":{"start_line":1585,"start_character":8,"end_line":1585,"end_character":73},"in_reply_to":"b6a2eaff_fe014e66","updated":"2022-07-13 08:40:21.000000000","message":"I think we need an explicit comment right before line 1585 that would explain it, like: \"Ensure that ERROR and ONLINE operating statuses are interleaved\"","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"1873da14ab9320c9582a36a98b08ca2949de6337","unresolved":true,"context_lines":[{"line_number":1582,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027},"},{"line_number":1583,"context_line":"            {\u0027mthd\u0027: const.GET, \u0027code\u0027: \u0027201-204\u0027, \u0027op_stat\u0027: const.ONLINE,"},{"line_number":1584,"context_line":"             \u0027url_path\u0027: \u0027/request?response_code\u003d204\u0027}]"},{"line_number":1585,"context_line":"        flip_flop \u003d [v for f in zip(valid_cases, fault_cases) for v in f]"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        # For each test case, update HM and validate that members\u0027"},{"line_number":1588,"context_line":"        # \"Operation Status\" is changed to expected value."}],"source_content_type":"text/x-python","patch_set":15,"id":"b6a2eaff_fe014e66","line":1585,"range":{"start_line":1585,"start_character":8,"end_line":1585,"end_character":73},"in_reply_to":"f8754d36_2627579b","updated":"2022-05-04 09:56:44.000000000","message":"Yes, it\u0027s clear why it\u0027s needed. My point is that you wouldn\u0027t need this line if you defined your flip_flop list with alternating cases ONLINE, ERROR directly that way instead of defining two lists and combining them later using this construct. You don\u0027t use those two lists anyway later.","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"96b8285eae07842b952c570d56062c586b017499","unresolved":true,"context_lines":[{"line_number":1434,"context_line":"            raise self.skipException(\u0027UDP listener support is only available \u0027"},{"line_number":1435,"context_line":"                                     \u0027in Octavia API version 2.1 or newer\u0027)"},{"line_number":1436,"context_line":"        listener_port \u003d 104"},{"line_number":1437,"context_line":"        high_src_port \u003d 60093"},{"line_number":1438,"context_line":"        listener_id, pool_id \u003d self._listener_pool_create("},{"line_number":1439,"context_line":"            const.UDP, listener_port)"},{"line_number":1440,"context_line":"        healthmonitor_id \u003d self._pool_add_healthmonitor("}],"source_content_type":"text/x-python","patch_set":16,"id":"15aa54ae_e6310e33","line":1437,"range":{"start_line":1437,"start_character":8,"end_line":1437,"end_character":29},"updated":"2022-07-13 08:40:21.000000000","message":"nit: this is probably not needed, source port can be allocated automatically","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"8d1db776c4f0db5b37e7aa602a7a736c5a2052db","unresolved":true,"context_lines":[{"line_number":1434,"context_line":"            raise self.skipException(\u0027UDP listener support is only available \u0027"},{"line_number":1435,"context_line":"                                     \u0027in Octavia API version 2.1 or newer\u0027)"},{"line_number":1436,"context_line":"        listener_port \u003d 104"},{"line_number":1437,"context_line":"        high_src_port \u003d 60093"},{"line_number":1438,"context_line":"        listener_id, pool_id \u003d self._listener_pool_create("},{"line_number":1439,"context_line":"            const.UDP, listener_port)"},{"line_number":1440,"context_line":"        healthmonitor_id \u003d self._pool_add_healthmonitor("}],"source_content_type":"text/x-python","patch_set":16,"id":"25871d70_909b2b0b","line":1437,"range":{"start_line":1437,"start_character":8,"end_line":1437,"end_character":29},"in_reply_to":"15aa54ae_e6310e33","updated":"2022-07-26 15:27:09.000000000","message":"Yep makes sense, binding the source port is not so important here, will be removed.","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"            raise self.skipException(\u0027UDP listener support is only available \u0027"},{"line_number":1435,"context_line":"                                     \u0027in Octavia API version 2.1 or newer\u0027)"},{"line_number":1436,"context_line":"        listener_port \u003d 104"},{"line_number":1437,"context_line":"        high_src_port \u003d 60093"},{"line_number":1438,"context_line":"        listener_id, pool_id \u003d self._listener_pool_create("},{"line_number":1439,"context_line":"            const.UDP, listener_port)"},{"line_number":1440,"context_line":"        healthmonitor_id \u003d self._pool_add_healthmonitor("}],"source_content_type":"text/x-python","patch_set":16,"id":"201fc83c_48b79d67","line":1437,"range":{"start_line":1437,"start_character":8,"end_line":1437,"end_character":29},"in_reply_to":"25871d70_909b2b0b","updated":"2022-08-02 07:21:17.000000000","message":"Done","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"96b8285eae07842b952c570d56062c586b017499","unresolved":true,"context_lines":[{"line_number":1507,"context_line":"                  self.lb_member_webserver2[const.ID]]"},{"line_number":1508,"context_line":"        for vm_id in vm_ids:"},{"line_number":1509,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1510,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1511,"context_line":"        mb_ids \u003d [mb[const.ID] for mb in"},{"line_number":1512,"context_line":"                  self.mem_member_client.list_members(pool_id)]"},{"line_number":1513,"context_line":"        for mb_id in mb_ids:"}],"source_content_type":"text/x-python","patch_set":16,"id":"366b5474_9481753f","line":1510,"range":{"start_line":1510,"start_character":52,"end_line":1510,"end_character":59},"updated":"2022-07-13 08:40:21.000000000","message":"maybe we could also explicitly unpause the VMs at the end of the tests and check that their status is back to ONLINE?","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"8d1db776c4f0db5b37e7aa602a7a736c5a2052db","unresolved":true,"context_lines":[{"line_number":1507,"context_line":"                  self.lb_member_webserver2[const.ID]]"},{"line_number":1508,"context_line":"        for vm_id in vm_ids:"},{"line_number":1509,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1510,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1511,"context_line":"        mb_ids \u003d [mb[const.ID] for mb in"},{"line_number":1512,"context_line":"                  self.mem_member_client.list_members(pool_id)]"},{"line_number":1513,"context_line":"        for mb_id in mb_ids:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7fbef760_296221dc","line":1510,"range":{"start_line":1510,"start_character":52,"end_line":1510,"end_character":59},"in_reply_to":"366b5474_9481753f","updated":"2022-07-26 15:27:09.000000000","message":"This test is focused on detecting \"ERROR\" in healtmonitor state.\nNot sure that increasing test execution time by adding such a functionality is worth here.","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":false,"context_lines":[{"line_number":1507,"context_line":"                  self.lb_member_webserver2[const.ID]]"},{"line_number":1508,"context_line":"        for vm_id in vm_ids:"},{"line_number":1509,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1510,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1511,"context_line":"        mb_ids \u003d [mb[const.ID] for mb in"},{"line_number":1512,"context_line":"                  self.mem_member_client.list_members(pool_id)]"},{"line_number":1513,"context_line":"        for mb_id in mb_ids:"}],"source_content_type":"text/x-python","patch_set":16,"id":"18f6f0fa_68c29853","line":1510,"range":{"start_line":1510,"start_character":52,"end_line":1510,"end_character":59},"in_reply_to":"7fbef760_296221dc","updated":"2022-08-02 07:21:17.000000000","message":"Done","commit_id":"06de0d23efa74b20b57fccebb580fd136b6d6ee4"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a39f43ff03d3a8ae961107820b69675a9d2e96ed","unresolved":true,"context_lines":[{"line_number":205,"context_line":"            delay\u003ddelay)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def _pool_add_healthmonitor(self, pool_id, protocol):"},{"line_number":208,"context_line":"        hm_name \u003d data_utils.rand_name(\"lb_member_hm1-hm-traffic\")"},{"line_number":209,"context_line":"        if protocol !\u003d const.HTTP:"},{"line_number":210,"context_line":"            if protocol \u003d\u003d const.UDP:"},{"line_number":211,"context_line":"                hm_type \u003d const.HEALTH_MONITOR_UDP_CONNECT"}],"source_content_type":"text/x-python","patch_set":17,"id":"5a7dd67d_a980c953","line":208,"updated":"2022-08-01 15:58:59.000000000","message":"nit: Would be nice to have the test name as part of the HM name for debugging. This was not the case before this patch, but would be a nice upgrade.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":true,"context_lines":[{"line_number":205,"context_line":"            delay\u003ddelay)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def _pool_add_healthmonitor(self, pool_id, protocol):"},{"line_number":208,"context_line":"        hm_name \u003d data_utils.rand_name(\"lb_member_hm1-hm-traffic\")"},{"line_number":209,"context_line":"        if protocol !\u003d const.HTTP:"},{"line_number":210,"context_line":"            if protocol \u003d\u003d const.UDP:"},{"line_number":211,"context_line":"                hm_type \u003d const.HEALTH_MONITOR_UDP_CONNECT"}],"source_content_type":"text/x-python","patch_set":17,"id":"a3f8e245_33a726d2","line":208,"in_reply_to":"5a7dd67d_a980c953","updated":"2022-08-02 07:21:17.000000000","message":"Agree, but this is relevant to the \"test_\" functions where the test name is known. \nIn order to achieve that in this particular function will need the additional parameter like \"test_name\" that the call function may have to supply.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a39f43ff03d3a8ae961107820b69675a9d2e96ed","unresolved":true,"context_lines":[{"line_number":259,"context_line":"        elif action \u003d\u003d \u0027unpause\u0027:"},{"line_number":260,"context_line":"            return self.os_admin_servers_client.unpause_server(vm_id)"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            raise RuntimeError(\u0027Failed to {} the VM with\u0027"},{"line_number":263,"context_line":"                               \u0027 ID:{} \u0027.format(action, vm_id))"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    @decorators.attr(type\u003d[\u0027smoke\u0027, \u0027slow\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"e800953d_59c41fc0","line":262,"updated":"2022-08-01 15:58:59.000000000","message":"nit: Maybe \"Unsupported action {}\" would be a clearer error message.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":true,"context_lines":[{"line_number":259,"context_line":"        elif action \u003d\u003d \u0027unpause\u0027:"},{"line_number":260,"context_line":"            return self.os_admin_servers_client.unpause_server(vm_id)"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            raise RuntimeError(\u0027Failed to {} the VM with\u0027"},{"line_number":263,"context_line":"                               \u0027 ID:{} \u0027.format(action, vm_id))"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    @decorators.attr(type\u003d[\u0027smoke\u0027, \u0027slow\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"dce783ff_214f19b4","line":262,"in_reply_to":"e800953d_59c41fc0","updated":"2022-08-02 07:21:17.000000000","message":"Correct, but I\u0027m going to delete the \"test_healtmonitor_status_error_if_members_are_paused\" (this function is used by) from this patch.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a39f43ff03d3a8ae961107820b69675a9d2e96ed","unresolved":true,"context_lines":[{"line_number":1447,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":1448,"context_line":"                                self.lb_id, const.PROVISIONING_STATUS,"},{"line_number":1449,"context_line":"                                const.ACTIVE,"},{"line_number":1450,"context_line":"                                CONF.load_balancer.build_interval,"},{"line_number":1451,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":1452,"context_line":"        self.assertIsNotNone(self.make_udp_requests_with_retries("},{"line_number":1453,"context_line":"            vip_address\u003dself.lb_vip_address, dst_port\u003dlistener_port,"}],"source_content_type":"text/x-python","patch_set":17,"id":"a25463e8_51f1e781","line":1450,"updated":"2022-08-01 15:58:59.000000000","message":"These probably should be using CONF.load_balancer.check_interval and check_timeout instead of the build_interval which is setup for waiting on nova/non-octavia resources.\nhttps://github.com/openstack/octavia-tempest-plugin/blob/master/octavia_tempest_plugin/config.py#L55","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":false,"context_lines":[{"line_number":1447,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":1448,"context_line":"                                self.lb_id, const.PROVISIONING_STATUS,"},{"line_number":1449,"context_line":"                                const.ACTIVE,"},{"line_number":1450,"context_line":"                                CONF.load_balancer.build_interval,"},{"line_number":1451,"context_line":"                                CONF.load_balancer.build_timeout)"},{"line_number":1452,"context_line":"        self.assertIsNotNone(self.make_udp_requests_with_retries("},{"line_number":1453,"context_line":"            vip_address\u003dself.lb_vip_address, dst_port\u003dlistener_port,"}],"source_content_type":"text/x-python","patch_set":17,"id":"e4d0b2a3_34a6947b","line":1450,"in_reply_to":"a25463e8_51f1e781","updated":"2022-08-02 07:21:17.000000000","message":"Done","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a39f43ff03d3a8ae961107820b69675a9d2e96ed","unresolved":true,"context_lines":[{"line_number":1494,"context_line":"        \"\"\""},{"line_number":1495,"context_line":"        if not self.mem_listener_client.is_version_supported("},{"line_number":1496,"context_line":"                self.api_version, \u00272.1\u0027):"},{"line_number":1497,"context_line":"            raise self.skipException(\u0027TCP listener support is only available \u0027"},{"line_number":1498,"context_line":"                                     \u0027in Octavia API version 2.1 or newer\u0027)"},{"line_number":1499,"context_line":"        listener_port \u003d 104"},{"line_number":1500,"context_line":"        listener_id, pool_id \u003d self._listener_pool_create("}],"source_content_type":"text/x-python","patch_set":17,"id":"21904998_cecd3d72","line":1497,"updated":"2022-08-01 15:58:59.000000000","message":"This is incorrect. TCP listeners have always been available.\nRemove this skip check.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":false,"context_lines":[{"line_number":1494,"context_line":"        \"\"\""},{"line_number":1495,"context_line":"        if not self.mem_listener_client.is_version_supported("},{"line_number":1496,"context_line":"                self.api_version, \u00272.1\u0027):"},{"line_number":1497,"context_line":"            raise self.skipException(\u0027TCP listener support is only available \u0027"},{"line_number":1498,"context_line":"                                     \u0027in Octavia API version 2.1 or newer\u0027)"},{"line_number":1499,"context_line":"        listener_port \u003d 104"},{"line_number":1500,"context_line":"        listener_id, pool_id \u003d self._listener_pool_create("}],"source_content_type":"text/x-python","patch_set":17,"id":"6b78f691_0978f64f","line":1497,"in_reply_to":"21904998_cecd3d72","updated":"2022-08-02 07:21:17.000000000","message":"Done","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a39f43ff03d3a8ae961107820b69675a9d2e96ed","unresolved":true,"context_lines":[{"line_number":1505,"context_line":"        vm_ids \u003d [self.lb_member_webserver1[const.ID],"},{"line_number":1506,"context_line":"                  self.lb_member_webserver2[const.ID]]"},{"line_number":1507,"context_line":"        for vm_id in vm_ids:"},{"line_number":1508,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1509,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1510,"context_line":"        mb_ids \u003d [mb[const.ID] for mb in"},{"line_number":1511,"context_line":"                  self.mem_member_client.list_members(pool_id)]"}],"source_content_type":"text/x-python","patch_set":17,"id":"d23f2948_85a70d37","line":1508,"updated":"2022-08-01 15:58:59.000000000","message":"This is going to be a problem due to tempest test concurrency.\nOther test suites may be running at the same time using these test web servers.\nWe either need to create special web server instances for this test or isolate this test into it\u0027s own test jobs/suite.\nWe could also consider setting up special ports that could be disabled on the test web servers that can be blocked via neutron. member ports that are only used for this test.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":true,"context_lines":[{"line_number":1505,"context_line":"        vm_ids \u003d [self.lb_member_webserver1[const.ID],"},{"line_number":1506,"context_line":"                  self.lb_member_webserver2[const.ID]]"},{"line_number":1507,"context_line":"        for vm_id in vm_ids:"},{"line_number":1508,"context_line":"            self._pause_vm(vm_id, action\u003d\u0027pause\u0027)"},{"line_number":1509,"context_line":"            self.addCleanup(self._pause_vm, vm_id, \u0027unpause\u0027)"},{"line_number":1510,"context_line":"        mb_ids \u003d [mb[const.ID] for mb in"},{"line_number":1511,"context_line":"                  self.mem_member_client.list_members(pool_id)]"}],"source_content_type":"text/x-python","patch_set":17,"id":"60e5d683_1a920e51","line":1508,"in_reply_to":"d23f2948_85a70d37","updated":"2022-08-02 07:21:17.000000000","message":"OK, I\u0027ll remove this test from this patch and isolating this test into it\u0027s own test jobs/suite sounds good to me.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a39f43ff03d3a8ae961107820b69675a9d2e96ed","unresolved":true,"context_lines":[{"line_number":1535,"context_line":"        \"\"\""},{"line_number":1536,"context_line":"        if not self.mem_listener_client.is_version_supported("},{"line_number":1537,"context_line":"                self.api_version, \u00272.1\u0027):"},{"line_number":1538,"context_line":"            raise self.skipException(\u0027TCP listener support is only available \u0027"},{"line_number":1539,"context_line":"                                     \u0027in Octavia API version 2.1 or newer\u0027)"},{"line_number":1540,"context_line":"        listener_port \u003d 105"},{"line_number":1541,"context_line":"        listener_id, pool_id \u003d self._listener_pool_create("}],"source_content_type":"text/x-python","patch_set":17,"id":"7d25e42c_ab627045","line":1538,"updated":"2022-08-01 15:58:59.000000000","message":"This is not true and should be removed.","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":false,"context_lines":[{"line_number":1535,"context_line":"        \"\"\""},{"line_number":1536,"context_line":"        if not self.mem_listener_client.is_version_supported("},{"line_number":1537,"context_line":"                self.api_version, \u00272.1\u0027):"},{"line_number":1538,"context_line":"            raise self.skipException(\u0027TCP listener support is only available \u0027"},{"line_number":1539,"context_line":"                                     \u0027in Octavia API version 2.1 or newer\u0027)"},{"line_number":1540,"context_line":"        listener_port \u003d 105"},{"line_number":1541,"context_line":"        listener_id, pool_id \u003d self._listener_pool_create("}],"source_content_type":"text/x-python","patch_set":17,"id":"56bb4755_b6144530","line":1538,"in_reply_to":"7d25e42c_ab627045","updated":"2022-08-02 07:21:17.000000000","message":"Done","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a39f43ff03d3a8ae961107820b69675a9d2e96ed","unresolved":true,"context_lines":[{"line_number":1604,"context_line":"                    self.mem_member_client.show_member,"},{"line_number":1605,"context_line":"                    mb_id, const.OPERATING_STATUS,"},{"line_number":1606,"context_line":"                    ff[\u0027op_stat\u0027],"},{"line_number":1607,"context_line":"                    CONF.load_balancer.build_interval,"},{"line_number":1608,"context_line":"                    CONF.load_balancer.build_timeout,"},{"line_number":1609,"context_line":"                    error_ok\u003dTrue, pool_id\u003dpool_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"f426c994_a7831413","line":1607,"updated":"2022-08-01 15:58:59.000000000","message":"Same on all of these, it probably should be check_interval instead of \"build\".","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":false,"context_lines":[{"line_number":1604,"context_line":"                    self.mem_member_client.show_member,"},{"line_number":1605,"context_line":"                    mb_id, const.OPERATING_STATUS,"},{"line_number":1606,"context_line":"                    ff[\u0027op_stat\u0027],"},{"line_number":1607,"context_line":"                    CONF.load_balancer.build_interval,"},{"line_number":1608,"context_line":"                    CONF.load_balancer.build_timeout,"},{"line_number":1609,"context_line":"                    error_ok\u003dTrue, pool_id\u003dpool_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f9a6c6d_1b0aa376","line":1607,"in_reply_to":"f426c994_a7831413","updated":"2022-08-02 07:21:17.000000000","message":"Done","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8eec93118a7e21bc4206e21ce7db647540d9bacb","unresolved":true,"context_lines":[{"line_number":118,"context_line":"        if insert_headers_dic:"},{"line_number":119,"context_line":"            listener_kwargs[const.INSERT_HEADERS] \u003d insert_headers_dic"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        listener \u003d cls.mem_listener_client.create_listener(**listener_kwargs)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        waiters.wait_for_status(cls.mem_lb_client.show_loadbalancer,"},{"line_number":124,"context_line":"                                cls.lb_id, const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":18,"id":"d04c8125_92349e03","line":121,"range":{"start_line":121,"start_character":43,"end_line":121,"end_character":58},"updated":"2022-10-18 11:09:45.000000000","message":"I know it is not related to this patch but maybe we should add a cleanup after creating both the listener and the pool?\nWe can consider adding another patch if we don\u0027t want to delay this one.","commit_id":"a186f060a0eb5e4487a9ccb5ccda7bb15a8d58f0"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"42d4acdd12afa7baee1a1a9a4435a001b8af3744","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        if insert_headers_dic:"},{"line_number":119,"context_line":"            listener_kwargs[const.INSERT_HEADERS] \u003d insert_headers_dic"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        listener \u003d cls.mem_listener_client.create_listener(**listener_kwargs)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        waiters.wait_for_status(cls.mem_lb_client.show_loadbalancer,"},{"line_number":124,"context_line":"                                cls.lb_id, const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1cd672c3_864c23b0","line":121,"range":{"start_line":121,"start_character":43,"end_line":121,"end_character":58},"in_reply_to":"d04c8125_92349e03","updated":"2022-10-18 11:53:53.000000000","message":"I uploaded this one to take care of it\nhttps://review.opendev.org/c/openstack/octavia-tempest-plugin/+/861743","commit_id":"a186f060a0eb5e4487a9ccb5ccda7bb15a8d58f0"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8eec93118a7e21bc4206e21ce7db647540d9bacb","unresolved":true,"context_lines":[{"line_number":1414,"context_line":"        * Test scenario:"},{"line_number":1415,"context_line":"          Update pool algorithm to: \"source_ip\" and start sending UDP traffic."},{"line_number":1416,"context_line":"          Expected: successfully received UDP packages from LB VIP."},{"line_number":1417,"context_line":"        * Update healtmonitor with: \"delay\u003d20\" and start sending UDP traffic."},{"line_number":1418,"context_line":"          Expected: successfully received UDP packages from LB VIP."},{"line_number":1419,"context_line":"        * Update listener with: \"connection-limit\u003d300\" and start sending"},{"line_number":1420,"context_line":"          UDP traffic."}],"source_content_type":"text/x-python","patch_set":18,"id":"2efb1cf4_0894805f","line":1417,"range":{"start_line":1417,"start_character":43,"end_line":1417,"end_character":45},"updated":"2022-10-18 11:09:45.000000000","message":"nit: 5 in line 1450","commit_id":"a186f060a0eb5e4487a9ccb5ccda7bb15a8d58f0"}],"octavia_tempest_plugin/tests/validators.py":[{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"e43c0f93526faf89ce684391ecdde6019da535cd","unresolved":true,"context_lines":[{"line_number":452,"context_line":"                    source_port\u003dsrc_port)"},{"line_number":453,"context_line":"                break"},{"line_number":454,"context_line":"            except Exception as e:"},{"line_number":455,"context_line":"                LOG.warning(\u0027make_udp_requests_with_retries has failed with: \u0027"},{"line_number":456,"context_line":"                            \u0027{}\u0027.format(e))"},{"line_number":457,"context_line":"        return received_data"}],"source_content_type":"text/x-python","patch_set":15,"id":"adc0a88a_3342c425","line":455,"range":{"start_line":455,"start_character":29,"end_line":455,"end_character":75},"updated":"2022-04-28 13:30:32.000000000","message":"That is not necessarily true. make_udp_request() failed, but make_udp_requests_with_retries() might retry and succeed.","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"bebd3c5ea50e2d8adec5cc5351c49203cb38762b","unresolved":false,"context_lines":[{"line_number":452,"context_line":"                    source_port\u003dsrc_port)"},{"line_number":453,"context_line":"                break"},{"line_number":454,"context_line":"            except Exception as e:"},{"line_number":455,"context_line":"                LOG.warning(\u0027make_udp_requests_with_retries has failed with: \u0027"},{"line_number":456,"context_line":"                            \u0027{}\u0027.format(e))"},{"line_number":457,"context_line":"        return received_data"}],"source_content_type":"text/x-python","patch_set":15,"id":"19b43a68_7a14e1b7","line":455,"range":{"start_line":455,"start_character":29,"end_line":455,"end_character":75},"in_reply_to":"adc0a88a_3342c425","updated":"2022-05-03 07:28:49.000000000","message":"Done","commit_id":"d5397b1818b2cbaaa14f1cd82fd3a4580a1ff847"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a39f43ff03d3a8ae961107820b69675a9d2e96ed","unresolved":true,"context_lines":[{"line_number":425,"context_line":"    def make_udp_requests_with_retries("},{"line_number":426,"context_line":"            self, vip_address, number_of_retries, dst_port,"},{"line_number":427,"context_line":"            src_port\u003dNone, socket_timeout\u003d20):"},{"line_number":428,"context_line":"        \"\"\"Send UDP packages using retries mechanism"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        The delivery of data to the destination cannot be guaranteed in UDP."},{"line_number":431,"context_line":"        In case when UDP package is getting lost and we might want to check"}],"source_content_type":"text/x-python","patch_set":17,"id":"14975c00_4932651e","line":428,"updated":"2022-08-01 15:58:59.000000000","message":"nit: packages-\u003epackets","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"40207458f4af1c8653555504d6d665eb0ac5b9b0","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    def make_udp_requests_with_retries("},{"line_number":426,"context_line":"            self, vip_address, number_of_retries, dst_port,"},{"line_number":427,"context_line":"            src_port\u003dNone, socket_timeout\u003d20):"},{"line_number":428,"context_line":"        \"\"\"Send UDP packages using retries mechanism"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        The delivery of data to the destination cannot be guaranteed in UDP."},{"line_number":431,"context_line":"        In case when UDP package is getting lost and we might want to check"}],"source_content_type":"text/x-python","patch_set":17,"id":"103fe3d9_d90e5065","line":428,"in_reply_to":"14975c00_4932651e","updated":"2022-08-02 07:21:17.000000000","message":"Done","commit_id":"cc4f6bab8d2930d01b9f09cfc2ff3175c711d8b1"}]}
