from neutron.agent.linux import utils
from neutron.common import constants as n_const
from neutron.openstack.common import uuidutils
-from neutron.tests.functional.agent.linux import helpers
from neutron.tests.functional import base as functional_base
from neutron.tests import sub_base
def setUp(self):
super(BaseIPVethTestCase, self).setUp()
self.check_sudo_enabled()
- self.pinger = helpers.Pinger(self)
@staticmethod
def _set_ip_up(device, cidr, broadcast, ip_version=4):
from neutron.agent.common import config
from neutron.agent.linux import ip_lib
from neutron.agent.linux import utils
+from neutron.tests import tools
CHILD_PROCESS_TIMEOUT = os.environ.get('OS_TEST_CHILD_PROCESS_TIMEOUT', 20)
CHILD_PROCESS_SLEEP = os.environ.get('OS_TEST_CHILD_PROCESS_SLEEP', 0.5)
class Pinger(object):
- def __init__(self, testcase, timeout=1, max_attempts=1):
- self.testcase = testcase
+ def __init__(self, namespace, timeout=1, max_attempts=1):
+ self.namespace = namespace
self._timeout = timeout
self._max_attempts = max_attempts
- def _ping_destination(self, src_namespace, dest_address):
- src_namespace.netns.execute(['ping', '-c', self._max_attempts,
- '-W', self._timeout, dest_address])
+ def _ping_destination(self, dest_address):
+ self.namespace.netns.execute(['ping', '-c', self._max_attempts,
+ '-W', self._timeout, dest_address])
- def assert_ping_from_ns(self, src_ns, dst_ip):
- try:
- self._ping_destination(src_ns, dst_ip)
- except RuntimeError:
- self.testcase.fail("destination ip %(dst_ip)s is not replying "
- "to ping from namespace %(src_ns)s" %
- {'src_ns': src_ns.namespace, 'dst_ip': dst_ip})
+ def assert_ping(self, dst_ip):
+ self._ping_destination(dst_ip)
- def assert_no_ping_from_ns(self, src_ns, dst_ip):
+ def assert_no_ping(self, dst_ip):
try:
- self._ping_destination(src_ns, dst_ip)
- self.testcase.fail("destination ip %(dst_ip)s is replying to ping"
- "from namespace %(src_ns)s, but it shouldn't" %
- {'src_ns': src_ns.namespace, 'dst_ip': dst_ip})
+ self._ping_destination(dst_ip)
+ tools.fail("destination ip %(dst_ip)s is replying to ping"
+ "from namespace %(ns)s, but it shouldn't" %
+ {'ns': self.namespace.namespace, 'dst_ip': dst_ip})
except RuntimeError:
pass
from neutron.agent.linux import ipset_manager
from neutron.agent.linux import iptables_manager
from neutron.tests.functional.agent.linux import base
+from neutron.tests.functional.agent.linux import helpers
IPSET_SET = 'test-set'
IPSET_ETHERTYPE = 'IPv4'
namespace=self.dst_ns.namespace)
self._add_iptables_ipset_rules(self.dst_iptables)
+ self.pinger = helpers.Pinger(self.src_ns)
def _create_ipset_manager_and_set(self, dst_ns, set_name):
ipset = ipset_manager.IpsetManager(
class IpsetManagerTestCase(IpsetBase):
def test_add_member_allows_ping(self):
- self.pinger.assert_no_ping_from_ns(self.src_ns, self.DST_ADDRESS)
+ self.pinger.assert_no_ping(self.DST_ADDRESS)
self.ipset._add_member_to_set(IPSET_SET, self.SRC_ADDRESS)
- self.pinger.assert_ping_from_ns(self.src_ns, self.DST_ADDRESS)
+ self.pinger.assert_ping(self.DST_ADDRESS)
def test_del_member_denies_ping(self):
self.ipset._add_member_to_set(IPSET_SET, self.SRC_ADDRESS)
- self.pinger.assert_ping_from_ns(self.src_ns, self.DST_ADDRESS)
+ self.pinger.assert_ping(self.DST_ADDRESS)
self.ipset._del_member_from_set(IPSET_SET, self.SRC_ADDRESS)
- self.pinger.assert_no_ping_from_ns(self.src_ns, self.DST_ADDRESS)
+ self.pinger.assert_no_ping(self.DST_ADDRESS)
def test_refresh_ipset_allows_ping(self):
self.ipset._refresh_set(IPSET_SET, [UNRELATED_IP], IPSET_ETHERTYPE)
- self.pinger.assert_no_ping_from_ns(self.src_ns, self.DST_ADDRESS)
+ self.pinger.assert_no_ping(self.DST_ADDRESS)
self.ipset._refresh_set(IPSET_SET, [UNRELATED_IP, self.SRC_ADDRESS],
IPSET_ETHERTYPE)
- self.pinger.assert_ping_from_ns(self.src_ns, self.DST_ADDRESS)
+ self.pinger.assert_ping(self.DST_ADDRESS)
self.ipset._refresh_set(IPSET_SET, [self.SRC_ADDRESS, UNRELATED_IP],
IPSET_ETHERTYPE)
- self.pinger.assert_ping_from_ns(self.src_ns, self.DST_ADDRESS)
+ self.pinger.assert_ping(self.DST_ADDRESS)
def test_destroy_ipset_set(self):
self.assertRaises(RuntimeError, self.ipset._destroy, IPSET_SET)
self.assertTrue(netcat.test_connectivity(True))
def test_icmp(self):
- self.pinger.assert_ping_from_ns(self.client_ns, self.DST_ADDRESS)
+ pinger = helpers.Pinger(self.client_ns)
+ pinger.assert_ping(self.DST_ADDRESS)
self.server_fw.ipv4['filter'].add_rule('INPUT', base.ICMP_BLOCK_RULE)
self.server_fw.apply()
- self.pinger.assert_no_ping_from_ns(self.client_ns, self.DST_ADDRESS)
+ pinger.assert_no_ping(self.DST_ADDRESS)
self.server_fw.ipv4['filter'].remove_rule('INPUT',
base.ICMP_BLOCK_RULE)
self.server_fw.apply()
- self.pinger.assert_ping_from_ns(self.client_ns, self.DST_ADDRESS)
+ pinger.assert_ping(self.DST_ADDRESS)
def test_mangle_icmp(self):
- self.pinger.assert_ping_from_ns(self.client_ns, self.DST_ADDRESS)
+ pinger = helpers.Pinger(self.client_ns)
+ pinger.assert_ping(self.DST_ADDRESS)
self.server_fw.ipv4['mangle'].add_rule('INPUT', base.ICMP_MARK_RULE)
self.server_fw.ipv4['filter'].add_rule('INPUT', base.MARKED_BLOCK_RULE)
self.server_fw.apply()
- self.pinger.assert_no_ping_from_ns(self.client_ns, self.DST_ADDRESS)
+ pinger.assert_no_ping(self.DST_ADDRESS)
self.server_fw.ipv4['mangle'].remove_rule('INPUT',
base.ICMP_MARK_RULE)
self.server_fw.ipv4['filter'].remove_rule('INPUT',
base.MARKED_BLOCK_RULE)
self.server_fw.apply()
- self.pinger.assert_ping_from_ns(self.client_ns, self.DST_ADDRESS)
+ pinger.assert_ping(self.DST_ADDRESS)
def test_tcp_input_port(self):
self._test_with_nc(self.server_fw, 'ingress', self.port, udp=False)
A return value or an exception can be specified.
"""
+import unittest
+
def setup_mock_calls(mocked_call, expected_calls_and_values):
return_values = [call[1] for call in expected_calls_and_values]
any_order=False):
expected_calls = [call[0] for call in expected_calls_and_values]
mocked_call.assert_has_calls(expected_calls, any_order=any_order)
+
+
+def fail(msg=None):
+ """Fail immediatly, with the given message.
+
+ This method is equivalent to TestCase.fail without requiring a
+ testcase instance (usefully for reducing coupling).
+ """
+ raise unittest.TestCase.failureException(msg)