)]}'
{"octavia_tempest_plugin/tests/test_base.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a77c205392c3cb4f0bbcbb32c76f0a90eec257a4","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"                else:"},{"line_number":1002,"context_line":"                    response_counts[data] \u003d 1"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"                if traffic_member_count \u003d\u003d len(response_counts):"},{"line_number":1005,"context_line":"                    LOG.debug(\u0027Loadbalancer response totals: %s\u0027,"},{"line_number":1006,"context_line":"                              response_counts)"},{"line_number":1007,"context_line":"                    time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_cb0cd2a6","side":"PARENT","line":1004,"updated":"2020-03-05 21:27:55.000000000","message":"The intent of this method was to wait for the LB to be fully functional, including the backend members becoming ONLINE.\nIf neutron or nova are too slow to make a backend member functional (why this was added), the tests will fail.\nWe cannot remove this. This change will break valid tests.\nIt probably should have a comment added and maybe renamed, but as this method is used in the tests, it needs to make sure the traffic_member_count is met.","commit_id":"b0eb0aa973c9462fc59afe7700cec8bb17e7e5fb"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"64d6b7d44f642106ad38f4286b37652edcbd9f94","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"                else:"},{"line_number":1002,"context_line":"                    response_counts[data] \u003d 1"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"                if traffic_member_count \u003d\u003d len(response_counts):"},{"line_number":1005,"context_line":"                    LOG.debug(\u0027Loadbalancer response totals: %s\u0027,"},{"line_number":1006,"context_line":"                              response_counts)"},{"line_number":1007,"context_line":"                    time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_73f7108d","side":"PARENT","line":1004,"in_reply_to":"1fa4df85_6917a1a5","updated":"2020-03-19 10:44:14.000000000","message":"Fix moved to https://review.opendev.org/#/c/713826/","commit_id":"b0eb0aa973c9462fc59afe7700cec8bb17e7e5fb"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"a1aaf91a32e2d03985a2606150c9772746478103","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"                else:"},{"line_number":1002,"context_line":"                    response_counts[data] \u003d 1"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"                if traffic_member_count \u003d\u003d len(response_counts):"},{"line_number":1005,"context_line":"                    LOG.debug(\u0027Loadbalancer response totals: %s\u0027,"},{"line_number":1006,"context_line":"                              response_counts)"},{"line_number":1007,"context_line":"                    time.sleep(1)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_6917a1a5","side":"PARENT","line":1004,"in_reply_to":"1fa4df85_cb0cd2a6","updated":"2020-03-11 11:44:25.000000000","message":"Sorry I didn\u0027t know anything about those issues.\n\nThe check for traffic_member_count has been recently added with UDP tests, I cannot find any bug report related to the things you mentioned.\n\nFrom what I know the test starts when provisioning of members is done, so its after nova or neutron spawns an instance and Octavia configures it, no?\n\nThe way of validating if a Load Balancer is healthy is the same as the part validation method for Round Robin [1].\nThat is why the _wait_for_lb_functional() started failing, because it assumes the Load_Balancer is configured with Round Robin algorithm, by using the HTTP session.\n\nI can update the patch and leave this code untouched, except removing the session and sending each requests independently.\n\n\nhttps://github.com/openstack/octavia-tempest-plugin/blob/29d179016a2c2299d1c20c4ae69cb719e0f34b4f/octavia_tempest_plugin/tests/test_base.py#L1057","commit_id":"b0eb0aa973c9462fc59afe7700cec8bb17e7e5fb"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a77c205392c3cb4f0bbcbb32c76f0a90eec257a4","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"        self.assertEqual(traffic_member_count, len(response_counts))"},{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":"        if (CONF.load_balancer.test_reuse_connection and"},{"line_number":1061,"context_line":"                protocol in (const.HTTP, const.HTTPS, const.TCP)):"},{"line_number":1062,"context_line":"            handler \u003d requests.Session()"},{"line_number":1063,"context_line":"            response_counts \u003d self._send_lb_request("},{"line_number":1064,"context_line":"                handler, protocol, vip_address,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_eb450eb5","line":1061,"updated":"2020-03-05 21:27:55.000000000","message":"This test will now pass passively without \"skip\" if a protocol other than those listed are used.\nI think that given the method name, it should not be called in a test if it is not expected to be a functional test.\nI really don\u0027t want to add conditionals that turn tests into the equivalent of \"Pass\".","commit_id":"a2e0cb9f049086c38383845e6eead2fade0199c2"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"64d6b7d44f642106ad38f4286b37652edcbd9f94","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"        self.assertEqual(traffic_member_count, len(response_counts))"},{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":"        if (CONF.load_balancer.test_reuse_connection and"},{"line_number":1061,"context_line":"                protocol in (const.HTTP, const.HTTPS, const.TCP)):"},{"line_number":1062,"context_line":"            handler \u003d requests.Session()"},{"line_number":1063,"context_line":"            response_counts \u003d self._send_lb_request("},{"line_number":1064,"context_line":"                handler, protocol, vip_address,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_33ed18b7","line":1061,"in_reply_to":"1fa4df85_894d3dc6","updated":"2020-03-19 10:44:14.000000000","message":"Fix moved to: https://review.opendev.org/#/c/713828/","commit_id":"a2e0cb9f049086c38383845e6eead2fade0199c2"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"a1aaf91a32e2d03985a2606150c9772746478103","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"        self.assertEqual(traffic_member_count, len(response_counts))"},{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":"        if (CONF.load_balancer.test_reuse_connection and"},{"line_number":1061,"context_line":"                protocol in (const.HTTP, const.HTTPS, const.TCP)):"},{"line_number":1062,"context_line":"            handler \u003d requests.Session()"},{"line_number":1063,"context_line":"            response_counts \u003d self._send_lb_request("},{"line_number":1064,"context_line":"                handler, protocol, vip_address,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_894d3dc6","line":1061,"in_reply_to":"1fa4df85_eb450eb5","updated":"2020-03-11 11:44:25.000000000","message":"For SOURCE_IP_PORT mechanism we can define two validations:\n\n1) Do not use a session and validate both members answered. That is how it works in L1054.\n\n2) Use a session and validate that only *one* member\nanswered.\n\n\nThat is why I added this before. The typical session-persistence use-case is when HTTP(s) protocol is used, but it can be also TCP or UDP. This checks started to fail when tests for UDP protocol has been merged.\n\nI think that for now with current UDP server \u003c\u003e client implementation we don\u0027t have a possibility to reuse the same client connection, right? That is why I added this additional check.\n\n\nQuestion:\nI can split the _check_members_balanced_source_ip_port() into two methods. One will not be using session, second will be using it, but only with TCP/HTTP supported for now. \nWhat do you think?","commit_id":"a2e0cb9f049086c38383845e6eead2fade0199c2"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a77c205392c3cb4f0bbcbb32c76f0a90eec257a4","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"        # We don\u0027t support seding request with plain TCP for now,"},{"line_number":1078,"context_line":"        # so normalize it to HTTP."},{"line_number":1079,"context_line":"        if protocol \u003d\u003d const.TCP:"},{"line_number":1080,"context_line":"            protocol \u003d const.HTTP"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"        self._wait_for_lb_functional(vip_address, traffic_member_count,"},{"line_number":1083,"context_line":"                                     protocol_port, protocol, verify)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_8b9b3a64","line":1080,"updated":"2020-03-05 21:27:55.000000000","message":"This is not good. It\u0027s \"secretly\" hiding that it is swapping out the protocol.\nWe need to simply fix this method to handle protocol TCP correctly or rename this to be an HTTP/HTTPS specific method.","commit_id":"a2e0cb9f049086c38383845e6eead2fade0199c2"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"64d6b7d44f642106ad38f4286b37652edcbd9f94","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"        # We don\u0027t support seding request with plain TCP for now,"},{"line_number":1078,"context_line":"        # so normalize it to HTTP."},{"line_number":1079,"context_line":"        if protocol \u003d\u003d const.TCP:"},{"line_number":1080,"context_line":"            protocol \u003d const.HTTP"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"        self._wait_for_lb_functional(vip_address, traffic_member_count,"},{"line_number":1083,"context_line":"                                     protocol_port, protocol, verify)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_d32b64e8","line":1080,"in_reply_to":"1fa4df85_2ce0d7fa","updated":"2020-03-19 10:44:14.000000000","message":"Fix moved to: https://review.opendev.org/#/c/713827/1","commit_id":"a2e0cb9f049086c38383845e6eead2fade0199c2"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"a1aaf91a32e2d03985a2606150c9772746478103","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"        # We don\u0027t support seding request with plain TCP for now,"},{"line_number":1078,"context_line":"        # so normalize it to HTTP."},{"line_number":1079,"context_line":"        if protocol \u003d\u003d const.TCP:"},{"line_number":1080,"context_line":"            protocol \u003d const.HTTP"},{"line_number":1081,"context_line":""},{"line_number":1082,"context_line":"        self._wait_for_lb_functional(vip_address, traffic_member_count,"},{"line_number":1083,"context_line":"                                     protocol_port, protocol, verify)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_2ce0d7fa","line":1080,"in_reply_to":"1fa4df85_8b9b3a64","updated":"2020-03-11 11:44:25.000000000","message":"Prior UDP patch it worked the same. If the TCP protocol was specified in octavia tempest plugin configuration [1] the HTTP request was send. That worked for OVN Octavia provider - as it supports only Load Balancers with TCP or UDP. The Load Balancer was created using protocol configured in tempest plugin config and then the HTTP request was send to it\n\nFor now when the TCP protocol is used in the config, the _send_lb_request() tries to create a HTTP request with \u0027tcp\u0027 protocol instead, for example: HTTP which uses TCP, and it fails on:\nInvalidSchema: No connection adapters were found for \u0027tcp://IP:port\u0027\n\nProposition:\nI can update _send_lb_request() and _wait_for_lb_functional()  to use \u0027http\u0027 connector instead \u0027tcp\u0027 while tcp protocol is selected in tempest config, Agreed?\n\n\n[1] https://github.com/openstack/octavia-tempest-plugin/blob/master/octavia_tempest_plugin/config.py#L222","commit_id":"a2e0cb9f049086c38383845e6eead2fade0199c2"}]}
