)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"6b3970e890fcb83ac2578ed5a80ac8309c214a70","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Properly handle case when chain name contains colon"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Use str.partition() instead of str.split() when extracting chain name and"},{"line_number":10,"context_line":"stripping counters from iptables script."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #1510124"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da85f559_2802920a","line":10,"updated":"2015-11-12 14:28:32.000000000","message":"Could you expand commit message with info, why this change was necessary?","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":11061,"name":"Alexey I. Froloff","email":"raorn@raorn.name","username":"raorn"},"change_message_id":"a27f03e650cd0a556c6379ee55fc2a6b01d75dee","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Properly handle case when chain name contains colon"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Use str.partition() instead of str.split() when extracting chain name and"},{"line_number":10,"context_line":"stripping counters from iptables script."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #1510124"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da85f559_29bcd3b9","line":10,"in_reply_to":"da85f559_2802920a","updated":"2015-11-12 15:44:01.000000000","message":"Yes, actual bug description is missing.  My bad.","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"58fe62fb5d162a3898bc22b0a55a00f8783aac79","unresolved":false,"context_lines":[{"line_number":14,"context_line":"stripping counters from iptables script."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Unit test made in such way, that it runs full IptablesManager stack and"},{"line_number":17,"context_line":"checks that all pre-existing chains are preserverd.  This is done"},{"line_number":18,"context_line":"because a) duplicate filtering code is hidden inside _modify_rules"},{"line_number":19,"context_line":"method and b) real problem is that pre-existing chains were not"},{"line_number":20,"context_line":"preserved, and this is what needs to be tested."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba8a016a_5903cc0d","line":17,"updated":"2015-11-17 14:00:41.000000000","message":"typo: s/preserverd/preserved","commit_id":"5677e429841c74a1025bfae6a3504e5bb3207256"},{"author":{"_account_id":11061,"name":"Alexey I. Froloff","email":"raorn@raorn.name","username":"raorn"},"change_message_id":"d0cac231db40b7474c207519f0859908bf01b369","unresolved":false,"context_lines":[{"line_number":14,"context_line":"stripping counters from iptables script."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Unit test made in such way, that it runs full IptablesManager stack and"},{"line_number":17,"context_line":"checks that all pre-existing chains are preserverd.  This is done"},{"line_number":18,"context_line":"because a) duplicate filtering code is hidden inside _modify_rules"},{"line_number":19,"context_line":"method and b) real problem is that pre-existing chains were not"},{"line_number":20,"context_line":"preserved, and this is what needs to be tested."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba8a016a_d491c153","line":17,"in_reply_to":"ba8a016a_5903cc0d","updated":"2015-11-17 14:24:06.000000000","message":"Done","commit_id":"5677e429841c74a1025bfae6a3504e5bb3207256"}],"neutron/agent/linux/iptables_manager.py":[{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"aa4ff30a796d2d0e18d190df1a6dc08963d1c196","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""},{"line_number":618,"context_line":"                line \u003d line.split(\u0027:\u0027, 1)[1]"},{"line_number":619,"context_line":"                line \u003d line.split(\u0027 - [\u0027, 1)[0]"},{"line_number":620,"context_line":"            elif line.startswith(\u0027[\u0027):"},{"line_number":621,"context_line":"                # it\u0027s a rule, for example, \"[0:0] -A neutron-billing...\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_f4f09fcb","line":618,"updated":"2015-10-26 20:36:19.000000000","message":"I would prefer we use str.partition as it always return a 3-uplet where in general str.split(..., 1) returns a list of 1 or 2 elements ... it avoids to rely on L618 check","commit_id":"a585a05445add52b3d8d9ef31622e94fc402720f"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"ac4d3b20f054914b330e63efab2073273e59e476","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""},{"line_number":618,"context_line":"                line \u003d line.split(\u0027:\u0027, 1)[1]"},{"line_number":619,"context_line":"                line \u003d line.split(\u0027 - [\u0027, 1)[0]"},{"line_number":620,"context_line":"            elif line.startswith(\u0027[\u0027):"},{"line_number":621,"context_line":"                # it\u0027s a rule, for example, \"[0:0] -A neutron-billing...\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_f3f2306f","line":618,"in_reply_to":"1a26ad4f_331d08be","updated":"2015-10-27 06:44:41.000000000","message":"No, it tells us the MAXIMUM number of splits","commit_id":"a585a05445add52b3d8d9ef31622e94fc402720f"},{"author":{"_account_id":11061,"name":"Alexey I. Froloff","email":"raorn@raorn.name","username":"raorn"},"change_message_id":"dffcebbeb879854dbbc55db29bf2204edadceb3f","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""},{"line_number":618,"context_line":"                line \u003d line.split(\u0027:\u0027, 1)[1]"},{"line_number":619,"context_line":"                line \u003d line.split(\u0027 - [\u0027, 1)[0]"},{"line_number":620,"context_line":"            elif line.startswith(\u0027[\u0027):"},{"line_number":621,"context_line":"                # it\u0027s a rule, for example, \"[0:0] -A neutron-billing...\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_bc25605d","line":618,"in_reply_to":"1a26ad4f_b37118e3","updated":"2015-10-27 12:09:02.000000000","message":"Is this OK for you?\n\n    def _strip_packets_bytes(line):\n        # strip any [packet:byte] counts at start or end of lines\n        if line.startswith(\u0027:\u0027):\n            # it\u0027s a chain, for example, \":neutron-billing - [0:0]\"\n            line \u003d line.partition(\u0027:\u0027)[2]\n            line \u003d line.partition(\u0027 - [\u0027)[0]\n        elif line.startswith(\u0027[\u0027):\n            # it\u0027s a rule, for example, \"[0:0] -A neutron-billing...\"\n            line \u003d line.partition(\u0027] \u0027)[2]\n        line \u003d line.strip()\n        return line\n\nProposed commit message:\n\n    Properly handle case when chain name contains colon\n    \n    Use str.partition() instead of str.split() when extracting chain name and\n    stripping counters from iptables script.","commit_id":"a585a05445add52b3d8d9ef31622e94fc402720f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"e764ab21cc0aa120c713ce68706b5bb478183223","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""},{"line_number":618,"context_line":"                line \u003d line.split(\u0027:\u0027, 1)[1]"},{"line_number":619,"context_line":"                line \u003d line.split(\u0027 - [\u0027, 1)[0]"},{"line_number":620,"context_line":"            elif line.startswith(\u0027[\u0027):"},{"line_number":621,"context_line":"                # it\u0027s a rule, for example, \"[0:0] -A neutron-billing...\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_b37118e3","line":618,"in_reply_to":"1a26ad4f_f3f2306f","updated":"2015-10-27 06:50:03.000000000","message":"Ok.\nI agree with the partition function per se, but was just doubtful about the above comment for split.","commit_id":"a585a05445add52b3d8d9ef31622e94fc402720f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"8c47eef4728fadcacd6d556abad7ff781a9b5714","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""},{"line_number":618,"context_line":"                line \u003d line.split(\u0027:\u0027, 1)[1]"},{"line_number":619,"context_line":"                line \u003d line.split(\u0027 - [\u0027, 1)[0]"},{"line_number":620,"context_line":"            elif line.startswith(\u0027[\u0027):"},{"line_number":621,"context_line":"                # it\u0027s a rule, for example, \"[0:0] -A neutron-billing...\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_331d08be","line":618,"in_reply_to":"3a29b11f_f4f09fcb","updated":"2015-10-27 06:41:12.000000000","message":"Hi Cedric, \nWont the above split only return two  items?\nThe second argument to split tells us the number of times the split would occur, isnt it?","commit_id":"a585a05445add52b3d8d9ef31622e94fc402720f"},{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"7922b238b57e88d777392030264258e6c2eca73a","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""},{"line_number":618,"context_line":"                line \u003d line.partition(\u0027:\u0027)[2]"},{"line_number":619,"context_line":"                line \u003d line.partition(\u0027 - [\u0027)[0]"},{"line_number":620,"context_line":"            elif line.startswith(\u0027[\u0027):"},{"line_number":621,"context_line":"                # it\u0027s a rule, for example, \"[0:0] -A neutron-billing...\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_9e038b73","line":618,"updated":"2015-10-28 18:27:56.000000000","message":"couldn\u0027t this line just be done more simply using \"line \u003d line{1:]\" since we just want to remove the first \u0027:\u0027 (which due to being in this if block, we know is at the start of \"line\")?","commit_id":"b78478c5fae2c12ef5fae48c38be84e0c5bb80b7"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"74380b4845ab957451ca246e9cef297a69b95d04","unresolved":false,"context_lines":[{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""},{"line_number":618,"context_line":"                line \u003d line.partition(\u0027:\u0027)[2]"},{"line_number":619,"context_line":"                line \u003d line.partition(\u0027 - [\u0027)[0]"},{"line_number":620,"context_line":"            elif line.startswith(\u0027[\u0027):"},{"line_number":621,"context_line":"                # it\u0027s a rule, for example, \"[0:0] -A neutron-billing...\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_9b2633cd","line":618,"in_reply_to":"1a26ad4f_9e038b73","updated":"2015-10-29 02:40:52.000000000","message":"Hi Brad, I think there is a partition based on hyphen as well.\nHowever the Lines can probably be combined as:\nline\u003d(line.partition(\u0027:\u0027)[2]).partition(\u0027-[\u0027)[0], if you really want to use the current code.\n\nAlso, the below line partitions based on -[.\nDont you need to partition based on ] as well ?","commit_id":"b78478c5fae2c12ef5fae48c38be84e0c5bb80b7"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"c4e363ef98bed7ca5cff257ffbdb3eafe8afdb13","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        new_filter[rules_index:rules_index] \u003d our_rules"},{"line_number":612,"context_line":"        new_filter[rules_index:rules_index] \u003d our_chains"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        def _strip_packets_bytes(line):"},{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_1466d129","line":614,"updated":"2015-11-12 13:46:04.000000000","message":"You should refactor this. This function should be moved at class level. After this, you\u0027ll be able to test this, without creating full iptables stack.","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":11061,"name":"Alexey I. Froloff","email":"raorn@raorn.name","username":"raorn"},"change_message_id":"ba0b656c3e532f078513345f456e74714075440d","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        new_filter[rules_index:rules_index] \u003d our_rules"},{"line_number":612,"context_line":"        new_filter[rules_index:rules_index] \u003d our_chains"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        def _strip_packets_bytes(line):"},{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_172fb33f","line":614,"in_reply_to":"da85f559_1466d129","updated":"2015-11-12 13:54:01.000000000","message":"What about other two?","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"6b3970e890fcb83ac2578ed5a80ac8309c214a70","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        new_filter[rules_index:rules_index] \u003d our_rules"},{"line_number":612,"context_line":"        new_filter[rules_index:rules_index] \u003d our_chains"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        def _strip_packets_bytes(line):"},{"line_number":615,"context_line":"            # strip any [packet:byte] counts at start or end of lines"},{"line_number":616,"context_line":"            if line.startswith(\u0027:\u0027):"},{"line_number":617,"context_line":"                # it\u0027s a chain, for example, \":neutron-billing - [0:0]\""}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_f20d5de8","line":614,"in_reply_to":"da85f559_172fb33f","updated":"2015-11-12 14:28:32.000000000","message":"The other two are connected with seen_chains and seen_rules by closures. It also should be refactored but not in this one patchset.\n\nThis one, I\u0027m mentioning is fully indepentent.","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"}],"neutron/tests/unit/agent/linux/test_iptables_manager.py":[{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"7922b238b57e88d777392030264258e6c2eca73a","unresolved":false,"context_lines":[{"line_number":832,"context_line":"                            \u0027:BUG:1510124::3 - [0:0]\\n\u0027"},{"line_number":833,"context_line":"                            \u0027COMMIT\\n\u0027"},{"line_number":834,"context_line":"                            \u0027# Completed by test_iptables_manager\\n\u0027"},{"line_number":835,"context_line":"                            % iptables_args)"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"        filter_dump_mod \u003d (\u0027# Generated by test_iptables_manager\\n\u0027"},{"line_number":838,"context_line":"                           \u0027*filter\\n\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_fe4e3fc0","line":835,"updated":"2015-10-28 18:27:56.000000000","message":"No need for % iptables_args, there is nothing in the string to substitute","commit_id":"b78478c5fae2c12ef5fae48c38be84e0c5bb80b7"},{"author":{"_account_id":14957,"name":"Brad Behle","email":"behle@us.ibm.com","username":"behle"},"change_message_id":"7922b238b57e88d777392030264258e6c2eca73a","unresolved":false,"context_lines":[{"line_number":860,"context_line":"                           \u0027# Completed by test_iptables_manager\\n\u0027"},{"line_number":861,"context_line":"                           % iptables_args)"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        raw_dump \u003d RAW_DUMP % IPTABLES_ARG"},{"line_number":864,"context_line":""},{"line_number":865,"context_line":"        expected_calls_and_values \u003d ["},{"line_number":866,"context_line":"            (mock.call([\u0027iptables-save\u0027, \u0027-c\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a26ad4f_5e8733b5","line":863,"updated":"2015-10-28 18:27:56.000000000","message":"No need for % IPTABLES_ARG, RAW_DUMP has already had the proper text sustituted","commit_id":"b78478c5fae2c12ef5fae48c38be84e0c5bb80b7"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"a5d396ec329122acbd3eb171254459be2499e517","unresolved":false,"context_lines":[{"line_number":814,"context_line":"    def test_add_raw_rule_with_ipv6(self):"},{"line_number":815,"context_line":"        self._test_add_raw_rule_helper(True)"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"    def _test_predefined_chain_with_colon_helper(self, use_ipv6):"},{"line_number":818,"context_line":"        self.iptables \u003d iptables_manager.IptablesManager("},{"line_number":819,"context_line":"            use_ipv6\u003duse_ipv6)"},{"line_number":820,"context_line":"        self.execute \u003d mock.patch.object(self.iptables, \"execute\").start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a26ad4f_6cb8fac8","line":817,"updated":"2015-10-31 22:53:20.000000000","message":"It\u0027s not a unittest as it doesn\u0027t test _strip_packets_bytes itself but the full IptablesManager stack. We end with a large test in which it\u0027s unclear what is tested.\n\nPrefer something like:\n\n def test__strip_packets_bytes_colon_chain(self):\n   self.assertEqual(\u0027chain:name\u0027, ..._strip_packets_bytes(\u0027:chain:name - [0:0]\u0027)\n\nwhich tests one behavior of one method","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"03c743cb1ef30f055c7d085447dc9d9e91831207","unresolved":false,"context_lines":[{"line_number":814,"context_line":"    def test_add_raw_rule_with_ipv6(self):"},{"line_number":815,"context_line":"        self._test_add_raw_rule_helper(True)"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"    def _test_predefined_chain_with_colon_helper(self, use_ipv6):"},{"line_number":818,"context_line":"        self.iptables \u003d iptables_manager.IptablesManager("},{"line_number":819,"context_line":"            use_ipv6\u003duse_ipv6)"},{"line_number":820,"context_line":"        self.execute \u003d mock.patch.object(self.iptables, \"execute\").start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_b466e5ea","line":817,"in_reply_to":"1a26ad4f_4cb97e78","updated":"2015-11-12 13:37:39.000000000","message":"I agree with Cedric. You should be testing just \"_strip_packets_bytes(line)\" method not everything. If this test will fail, it won\u0027t be clear which part of it is problem.","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":11061,"name":"Alexey I. Froloff","email":"raorn@raorn.name","username":"raorn"},"change_message_id":"5d01b566db730fe98ca15fbd45afff34f570a30d","unresolved":false,"context_lines":[{"line_number":814,"context_line":"    def test_add_raw_rule_with_ipv6(self):"},{"line_number":815,"context_line":"        self._test_add_raw_rule_helper(True)"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"    def _test_predefined_chain_with_colon_helper(self, use_ipv6):"},{"line_number":818,"context_line":"        self.iptables \u003d iptables_manager.IptablesManager("},{"line_number":819,"context_line":"            use_ipv6\u003duse_ipv6)"},{"line_number":820,"context_line":"        self.execute \u003d mock.patch.object(self.iptables, \"execute\").start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a26ad4f_4cb97e78","line":817,"in_reply_to":"1a26ad4f_6cb8fac8","updated":"2015-11-01 00:28:34.000000000","message":"I don\u0027t see a problem here.  We test, that after applying rules, pre-existing chains are kept.  And also _strip_packets_bytes defined inside _modify_rules, so we can\u0027t call it directly.","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":11061,"name":"Alexey I. Froloff","email":"raorn@raorn.name","username":"raorn"},"change_message_id":"a27f03e650cd0a556c6379ee55fc2a6b01d75dee","unresolved":false,"context_lines":[{"line_number":814,"context_line":"    def test_add_raw_rule_with_ipv6(self):"},{"line_number":815,"context_line":"        self._test_add_raw_rule_helper(True)"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"    def _test_predefined_chain_with_colon_helper(self, use_ipv6):"},{"line_number":818,"context_line":"        self.iptables \u003d iptables_manager.IptablesManager("},{"line_number":819,"context_line":"            use_ipv6\u003duse_ipv6)"},{"line_number":820,"context_line":"        self.execute \u003d mock.patch.object(self.iptables, \"execute\").start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_6ca749a7","line":817,"in_reply_to":"da85f559_8d45d043","updated":"2015-11-12 15:44:01.000000000","message":"I would rather not rewrite this test for just _strip_packets_bytes because this piece of code could be refactored in the future.  Original bug was not about _strip_packet_bytes does something wrong, it was about some chain that exists before was dropped after applying iptables rules.\n\nI\u0027ll add text to commit message.","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":11061,"name":"Alexey I. Froloff","email":"raorn@raorn.name","username":"raorn"},"change_message_id":"ba0b656c3e532f078513345f456e74714075440d","unresolved":false,"context_lines":[{"line_number":814,"context_line":"    def test_add_raw_rule_with_ipv6(self):"},{"line_number":815,"context_line":"        self._test_add_raw_rule_helper(True)"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"    def _test_predefined_chain_with_colon_helper(self, use_ipv6):"},{"line_number":818,"context_line":"        self.iptables \u003d iptables_manager.IptablesManager("},{"line_number":819,"context_line":"            use_ipv6\u003duse_ipv6)"},{"line_number":820,"context_line":"        self.execute \u003d mock.patch.object(self.iptables, \"execute\").start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_d7804bf9","line":817,"in_reply_to":"da85f559_b466e5ea","updated":"2015-11-12 13:54:01.000000000","message":"This test tests exactly what it tries to fix.  If there was already chain with colon in name, it will remain after \"full IptablesManager stack\".","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"6b3970e890fcb83ac2578ed5a80ac8309c214a70","unresolved":false,"context_lines":[{"line_number":814,"context_line":"    def test_add_raw_rule_with_ipv6(self):"},{"line_number":815,"context_line":"        self._test_add_raw_rule_helper(True)"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"    def _test_predefined_chain_with_colon_helper(self, use_ipv6):"},{"line_number":818,"context_line":"        self.iptables \u003d iptables_manager.IptablesManager("},{"line_number":819,"context_line":"            use_ipv6\u003duse_ipv6)"},{"line_number":820,"context_line":"        self.execute \u003d mock.patch.object(self.iptables, \"execute\").start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_8d45d043","line":817,"in_reply_to":"da85f559_d7804bf9","updated":"2015-11-12 14:28:32.000000000","message":"OK, see this now. Bug description lacks extra info about this change. Also commit message is very vague.","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"26db39fde83d4e2ea7ac1345975bf46e0d519fa9","unresolved":false,"context_lines":[{"line_number":895,"context_line":"        tools.verify_mock_calls(self.execute, expected_calls_and_values)"},{"line_number":896,"context_line":""},{"line_number":897,"context_line":"    def test_predefined_chain_with_colon(self):"},{"line_number":898,"context_line":"        self._test_predefined_chain_with_colon_helper(False)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def test_predefined_chain_with_colon_with_ipv6(self):"},{"line_number":901,"context_line":"        self._test_predefined_chain_with_colon_helper(True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_f459cdfd","line":898,"updated":"2015-11-12 13:39:56.000000000","message":"It\u0027s unclear what True/False does here. It would be worth to add keyword arg, sth like: \n\n self._test_predefined_chain_with_colon_helper(use_ipv6\u003dFalse)","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"c67c11f26cb2b74232926711547d679ffbe193c6","unresolved":false,"context_lines":[{"line_number":895,"context_line":"        tools.verify_mock_calls(self.execute, expected_calls_and_values)"},{"line_number":896,"context_line":""},{"line_number":897,"context_line":"    def test_predefined_chain_with_colon(self):"},{"line_number":898,"context_line":"        self._test_predefined_chain_with_colon_helper(False)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def test_predefined_chain_with_colon_with_ipv6(self):"},{"line_number":901,"context_line":"        self._test_predefined_chain_with_colon_helper(True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_54ac2c8c","line":898,"in_reply_to":"da85f559_4c760507","updated":"2015-11-13 07:27:20.000000000","message":"Makes sense to leave it as is. But maybe is worth to add #TODO:refactor info?","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":11061,"name":"Alexey I. Froloff","email":"raorn@raorn.name","username":"raorn"},"change_message_id":"a27f03e650cd0a556c6379ee55fc2a6b01d75dee","unresolved":false,"context_lines":[{"line_number":895,"context_line":"        tools.verify_mock_calls(self.execute, expected_calls_and_values)"},{"line_number":896,"context_line":""},{"line_number":897,"context_line":"    def test_predefined_chain_with_colon(self):"},{"line_number":898,"context_line":"        self._test_predefined_chain_with_colon_helper(False)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def test_predefined_chain_with_colon_with_ipv6(self):"},{"line_number":901,"context_line":"        self._test_predefined_chain_with_colon_helper(True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_4c760507","line":898,"in_reply_to":"da85f559_ad61b406","updated":"2015-11-12 15:44:01.000000000","message":"My OCD tells me that I should either make similar changes in other places too or leave it as is.  Do you think it\u0027s a good idea to change this one test, so it differs from its brothers?","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"6b3970e890fcb83ac2578ed5a80ac8309c214a70","unresolved":false,"context_lines":[{"line_number":895,"context_line":"        tools.verify_mock_calls(self.execute, expected_calls_and_values)"},{"line_number":896,"context_line":""},{"line_number":897,"context_line":"    def test_predefined_chain_with_colon(self):"},{"line_number":898,"context_line":"        self._test_predefined_chain_with_colon_helper(False)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def test_predefined_chain_with_colon_with_ipv6(self):"},{"line_number":901,"context_line":"        self._test_predefined_chain_with_colon_helper(True)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da85f559_ad61b406","line":898,"in_reply_to":"da85f559_f459cdfd","updated":"2015-11-12 14:28:32.000000000","message":"One more thing. I see that it\u0027s usual that tests are without keyword. If you think, that it\u0027s worth of it, would be nice to have keyword.","commit_id":"95a604e660b5acc3232d894913a1a5ff7cdad223"}]}
