)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d3bd09a60a35d97f56097690696d6c0f299398db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dbaeed16_bd3d9248","updated":"2024-02-01 10:10:31.000000000","message":"could you please check this solution:\nhttps://review.opendev.org/c/openstack/networking-sfc/+/906523","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"}],"networking_sfc/tests/unit/services/sfc/drivers/ovs/test_driver.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ef848d2e957289a96c880b09e6d324bc89815696","unresolved":true,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"                            add_fcs \u003d update_flow_rules[flow1][\u0027add_fcs\u0027]"},{"line_number":394,"context_line":"                            self.assertEqual(len(add_fcs), 1)"},{"line_number":395,"context_line":"                            self.assertEqual(add_fcs[0], add_fcs[0] | {"},{"line_number":396,"context_line":"                                \u0027destination_ip_prefix\u0027: \u002710.200.0.0/16\u0027,"},{"line_number":397,"context_line":"                                \u0027destination_port_range_max\u0027: 400,"},{"line_number":398,"context_line":"                                \u0027destination_port_range_min\u0027: 300,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fc4dc774_586d2657","line":395,"range":{"start_line":395,"start_character":28,"end_line":395,"end_character":71},"updated":"2024-01-23 08:37:08.000000000","message":"I think you can just use assertLessEqual ?","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9bbb729ed729a403ded483292188bfc90b5ae040","unresolved":true,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"                            add_fcs \u003d update_flow_rules[flow1][\u0027add_fcs\u0027]"},{"line_number":394,"context_line":"                            self.assertEqual(len(add_fcs), 1)"},{"line_number":395,"context_line":"                            self.assertEqual(add_fcs[0], add_fcs[0] | {"},{"line_number":396,"context_line":"                                \u0027destination_ip_prefix\u0027: \u002710.200.0.0/16\u0027,"},{"line_number":397,"context_line":"                                \u0027destination_port_range_max\u0027: 400,"},{"line_number":398,"context_line":"                                \u0027destination_port_range_min\u0027: 300,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3b1bde3b_e3b3306a","line":395,"range":{"start_line":395,"start_character":28,"end_line":395,"end_character":71},"in_reply_to":"0e7fce43_562a48d6","updated":"2024-01-31 17:07:08.000000000","message":"Ignore my previous comment. The correct one is\n\n`assertLessEqual(\u003cexpected\u003e, add_fcs[0])`","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5b2c932bac43602d643065d2eb79391d81b541cd","unresolved":true,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"                            add_fcs \u003d update_flow_rules[flow1][\u0027add_fcs\u0027]"},{"line_number":394,"context_line":"                            self.assertEqual(len(add_fcs), 1)"},{"line_number":395,"context_line":"                            self.assertEqual(add_fcs[0], add_fcs[0] | {"},{"line_number":396,"context_line":"                                \u0027destination_ip_prefix\u0027: \u002710.200.0.0/16\u0027,"},{"line_number":397,"context_line":"                                \u0027destination_port_range_max\u0027: 400,"},{"line_number":398,"context_line":"                                \u0027destination_port_range_min\u0027: 300,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3b89350b_90cb326f","line":395,"range":{"start_line":395,"start_character":28,"end_line":395,"end_character":71},"in_reply_to":"3b1bde3b_e3b3306a","updated":"2024-01-31 17:13:55.000000000","message":"Sorry seems I had some misunderstanding ... It should be\n\n`assertLessEqual(\u003cexpected\u003e.items(), add_fcs[0].items())`","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"016b2f415fe98869c2e46d574b51fa42c585cf98","unresolved":true,"context_lines":[{"line_number":392,"context_line":""},{"line_number":393,"context_line":"                            add_fcs \u003d update_flow_rules[flow1][\u0027add_fcs\u0027]"},{"line_number":394,"context_line":"                            self.assertEqual(len(add_fcs), 1)"},{"line_number":395,"context_line":"                            self.assertEqual(add_fcs[0], add_fcs[0] | {"},{"line_number":396,"context_line":"                                \u0027destination_ip_prefix\u0027: \u002710.200.0.0/16\u0027,"},{"line_number":397,"context_line":"                                \u0027destination_port_range_max\u0027: 400,"},{"line_number":398,"context_line":"                                \u0027destination_port_range_min\u0027: 300,"}],"source_content_type":"text/x-python","patch_set":2,"id":"0e7fce43_562a48d6","line":395,"range":{"start_line":395,"start_character":28,"end_line":395,"end_character":71},"in_reply_to":"fc4dc774_586d2657","updated":"2024-01-31 17:05:31.000000000","message":"Try\n\nself.assertLessThanEqual(add_fcs[0], \u003cexpected\u003e)\n\nor probably\n\nassertGreaterEqual(\u003cexpected, add_fcs[0]))","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"036251d9910f14ec14ceecf8f3f8178a857be4fe","unresolved":true,"context_lines":[{"line_number":526,"context_line":"                            len(update_flow_rules[flow1][\u0027add_fcs\u0027]), 1)"},{"line_number":527,"context_line":"                        self.assertEqual("},{"line_number":528,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0],"},{"line_number":529,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0] | {"},{"line_number":530,"context_line":"                                \u0027destination_ip_prefix\u0027: \u002710.200.0.0/16\u0027,"},{"line_number":531,"context_line":"                                \u0027destination_port_range_max\u0027: 400,"},{"line_number":532,"context_line":"                                \u0027destination_port_range_min\u0027: 300,"}],"source_content_type":"text/x-python","patch_set":2,"id":"736b232f_55598024","line":529,"range":{"start_line":529,"start_character":67,"end_line":529,"end_character":68},"updated":"2024-01-10 12:36:23.000000000","message":"This operator works only after py39 as I remember, but dict(**dict1, **dict2) should work for py38 and above also.\nNot sure if that will work here also","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6fa8000be14eda84b24fa1b882fce8525f4ac13b","unresolved":true,"context_lines":[{"line_number":526,"context_line":"                            len(update_flow_rules[flow1][\u0027add_fcs\u0027]), 1)"},{"line_number":527,"context_line":"                        self.assertEqual("},{"line_number":528,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0],"},{"line_number":529,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0] | {"},{"line_number":530,"context_line":"                                \u0027destination_ip_prefix\u0027: \u002710.200.0.0/16\u0027,"},{"line_number":531,"context_line":"                                \u0027destination_port_range_max\u0027: 400,"},{"line_number":532,"context_line":"                                \u0027destination_port_range_min\u0027: 300,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a464b45_4e0bdc5d","line":529,"range":{"start_line":529,"start_character":67,"end_line":529,"end_character":68},"in_reply_to":"736b232f_55598024","updated":"2024-01-11 09:40:20.000000000","message":"ok, I run another round with it and it seems {**dict1, **dict2} works from py38-py311","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c53dd2a24fd58128ea0ac7c9bad31ec293c3a385","unresolved":true,"context_lines":[{"line_number":526,"context_line":"                            len(update_flow_rules[flow1][\u0027add_fcs\u0027]), 1)"},{"line_number":527,"context_line":"                        self.assertEqual("},{"line_number":528,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0],"},{"line_number":529,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0] | {"},{"line_number":530,"context_line":"                                \u0027destination_ip_prefix\u0027: \u002710.200.0.0/16\u0027,"},{"line_number":531,"context_line":"                                \u0027destination_port_range_max\u0027: 400,"},{"line_number":532,"context_line":"                                \u0027destination_port_range_min\u0027: 300,"}],"source_content_type":"text/x-python","patch_set":2,"id":"641d7b2b_6e0a43e7","line":529,"range":{"start_line":529,"start_character":67,"end_line":529,"end_character":68},"in_reply_to":"7a144c40_2394910d","updated":"2024-01-11 10:11:29.000000000","message":"{\\*\\* dict1, \\*\\* dict2}","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"91954c0f4f04f1cba40ada81cf63d79b8bb738b5","unresolved":true,"context_lines":[{"line_number":526,"context_line":"                            len(update_flow_rules[flow1][\u0027add_fcs\u0027]), 1)"},{"line_number":527,"context_line":"                        self.assertEqual("},{"line_number":528,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0],"},{"line_number":529,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0] | {"},{"line_number":530,"context_line":"                                \u0027destination_ip_prefix\u0027: \u002710.200.0.0/16\u0027,"},{"line_number":531,"context_line":"                                \u0027destination_port_range_max\u0027: 400,"},{"line_number":532,"context_line":"                                \u0027destination_port_range_min\u0027: 300,"}],"source_content_type":"text/x-python","patch_set":2,"id":"e9658862_27295d1b","line":529,"range":{"start_line":529,"start_character":67,"end_line":529,"end_character":68},"in_reply_to":"9a464b45_4e0bdc5d","updated":"2024-01-11 10:09:21.000000000","message":"{** dict1, ** dict2}\n     \nhtml formatting killed the asterixs","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3a019d865bf1144e50c1489e88d284a3cc33eb7d","unresolved":true,"context_lines":[{"line_number":526,"context_line":"                            len(update_flow_rules[flow1][\u0027add_fcs\u0027]), 1)"},{"line_number":527,"context_line":"                        self.assertEqual("},{"line_number":528,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0],"},{"line_number":529,"context_line":"                            update_flow_rules[flow1][\u0027add_fcs\u0027][0] | {"},{"line_number":530,"context_line":"                                \u0027destination_ip_prefix\u0027: \u002710.200.0.0/16\u0027,"},{"line_number":531,"context_line":"                                \u0027destination_port_range_max\u0027: 400,"},{"line_number":532,"context_line":"                                \u0027destination_port_range_min\u0027: 300,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a144c40_2394910d","line":529,"range":{"start_line":529,"start_character":67,"end_line":529,"end_character":68},"in_reply_to":"e9658862_27295d1b","updated":"2024-01-11 10:10:34.000000000","message":"{ * * dict1, * * dict2}","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3b1fce9bad538575b032426d8fdaf57c5d9cd14b","unresolved":true,"context_lines":[{"line_number":1268,"context_line":"                                \u0027source_ip_prefix\u0027: ip_src,"},{"line_number":1269,"context_line":"                                \u0027source_port_range_max\u0027: None,"},{"line_number":1270,"context_line":"                                \u0027source_port_range_min\u0027: None"},{"line_number":1271,"context_line":"                            }, add_fcs[0])"},{"line_number":1272,"context_line":"                            next_hops \u003d self.next_hops_info("},{"line_number":1273,"context_line":"                                update_flow_rules[flow3].get(\u0027next_hops\u0027))"},{"line_number":1274,"context_line":"                            self.assertEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"40f71ba0_d879936a","line":1271,"range":{"start_line":1271,"start_character":31,"end_line":1271,"end_character":41},"updated":"2024-01-15 09:03:31.000000000","message":"the same as below","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3b1fce9bad538575b032426d8fdaf57c5d9cd14b","unresolved":true,"context_lines":[{"line_number":1292,"context_line":"                                \u0027source_ip_prefix\u0027: ip_src,"},{"line_number":1293,"context_line":"                                \u0027source_port_range_max\u0027: None,"},{"line_number":1294,"context_line":"                                \u0027source_port_range_min\u0027: None"},{"line_number":1295,"context_line":"                            }, add_fcs[0])"},{"line_number":1296,"context_line":"                            next_hops \u003d self.next_hops_info("},{"line_number":1297,"context_line":"                                update_flow_rules[flow4].get(\u0027next_hops\u0027))"},{"line_number":1298,"context_line":"                            self.assertEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"676f0560_2d7ba76d","line":1295,"range":{"start_line":1295,"start_character":31,"end_line":1295,"end_character":41},"updated":"2024-01-15 09:03:31.000000000","message":"this is not needed, aseertEqual has 3 params, but the 3rd is the txt message in case of assertion error","commit_id":"cd949b6940a17415b504ea67dac3f21129bd36bf"}]}
