]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Fix intermittent ipset_manager test failure
authorBrian Haley <brian.haley@hp.com>
Thu, 9 Apr 2015 21:48:40 +0000 (17:48 -0400)
committerBrian Haley <brian.haley@hp.com>
Tue, 14 Apr 2015 15:43:15 +0000 (11:43 -0400)
Change ipset_manager _refresh_set() to make a copy of the list of
IPs when creating a set, instead of using a reference, else any
change to the set could update the caller's data.

Also made the IpsetManagerTestCase classes always pass maxelem and
hashsize to the parent class.

Change-Id: I45fc716ab0952b80363b0c7dabae29cda05604dc
Closes-bug: #1442377

neutron/agent/linux/ipset_manager.py
neutron/tests/unit/agent/linux/test_ipset_manager.py

index 33b6379b586f2cc68fd94f3df67aa959b56ff5c5..73482ad42dc6d34b8af3036c5d7c71bc9da33354 100644 (file)
@@ -11,6 +11,8 @@
 #    See the License for the specific language governing permissions and
 #    limitations under the License.
 
+import copy
+
 from oslo_config import cfg
 
 from neutron.agent.common import config
@@ -108,7 +110,7 @@ class IpsetManager(object):
         self._restore_sets(process_input)
         self._swap_sets(new_set_name, set_name)
         self._destroy(new_set_name, True)
-        self.ipset_sets[set_name] = member_ips
+        self.ipset_sets[set_name] = copy.copy(member_ips)
 
     def _del_member_from_set(self, set_name, member_ip):
         cmd = ['ipset', 'del', set_name, member_ip]
index 19fbb7e20e656dbf92f38b1fb400656b0245f54e..ff6010b5f9166c954c8541529654d07ec5e43ebc 100644 (file)
@@ -27,7 +27,7 @@ FAKE_IPS = ['10.0.0.1', '10.0.0.2', '10.0.0.3', '10.0.0.4',
 
 
 class BaseIpsetManagerTest(base.BaseTestCase):
-    def setUp(self, maxelem=None, hashsize=None):
+    def setUp(self, maxelem, hashsize):
         super(BaseIpsetManagerTest, self).setUp()
         cfg.CONF.register_opts(a_cfg.IPSET_OPTS, 'AGENT')
         cfg.CONF.set_override('ipset_maxelem', maxelem, 'AGENT')
@@ -105,8 +105,9 @@ class BaseIpsetManagerTest(base.BaseTestCase):
 class IpsetManagerTestCase(BaseIpsetManagerTest):
     """Run all tests, but with maxelem/hashsize values not configured
     """
-    def setUp(self):
-        super(IpsetManagerTestCase, self).setUp()
+    def setUp(self, maxelem=None, hashsize=None):
+        super(IpsetManagerTestCase, self).setUp(maxelem=maxelem,
+                                                hashsize=hashsize)
 
     def test_set_exists(self):
         self.add_first_ip()
@@ -145,4 +146,5 @@ class IpsetManagerTestCaseHashArgs(IpsetManagerTestCase):
     """Run all the above tests, but with maxelem/hashsize values configured
     """
     def setUp(self):
-        super(IpsetManagerTestCase, self).setUp(maxelem=131072, hashsize=2048)
+        super(IpsetManagerTestCaseHashArgs, self).setUp(maxelem=131072,
+                                                        hashsize=2048)