X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=test%2Fresources%2Fplanetlab%2Fgretunnel.py;h=74197f1b8a9d2e86612c68050f8d0043f9851e69;hb=b6c4948fd994223cff257cbdae7146da1339b58d;hp=2cde3aecd1176c64df7c75841cc01d0e377d7472;hpb=4ec5c9e5454b68a3dab82a5073aee50231706706;p=nepi.git diff --git a/test/resources/planetlab/gretunnel.py b/test/resources/planetlab/gretunnel.py old mode 100644 new mode 100755 index 2cde3aec..74197f1b --- a/test/resources/planetlab/gretunnel.py +++ b/test/resources/planetlab/gretunnel.py @@ -26,12 +26,14 @@ import os import time import unittest -class GRETunnelTestCase(unittest.TestCase): +class PlanetLabGRETunnelTestCase(unittest.TestCase): def setUp(self): #self.host1 = "nepi2.pl.sophia.inria.fr" #self.host2 = "nepi5.pl.sophia.inria.fr" + #self.host2 = "planetlab1.informatik.uni-goettingen.de" self.host1 = "planetlab1.informatik.uni-erlangen.de" - self.host2 = "planetlab1.informatik.uni-goettingen.de" + self.host2 = "planck227ple.test.ibbt.be" + self.host3 = "roseval.pl.sophia.inria.fr" self.user = "inria_nepi" self.identity = "%s/.ssh/id_rsa_planetlab" % (os.environ['HOME']) #self.netblock = "192.168.1" @@ -41,37 +43,37 @@ class GRETunnelTestCase(unittest.TestCase): def t_tap_gre_tunnel(self, user1, host1, identity1, user2, host2, identity2): - ec = ExperimentController(exp_id = "test-tap-gre-tunnel") + ec = ExperimentController(exp_id="test-tap-gre-tunnel") - node1 = ec.register_resource("PlanetlabNode") + node1 = ec.register_resource("planetlab::Node") ec.set(node1, "hostname", host1) ec.set(node1, "username", user1) ec.set(node1, "identity", identity1) - ec.set(node1, "cleanHome", True) + ec.set(node1, "cleanExperiment", True) ec.set(node1, "cleanProcesses", True) - tap1 = ec.register_resource("PlanetlabTap") - ec.set(tap1, "ip4", "%s.1" % self.netblock) - ec.set(tap1, "prefix4", 24) + tap1 = ec.register_resource("planetlab::Tap") + ec.set(tap1, "ip", "%s.1" % self.netblock) + ec.set(tap1, "prefix", "24") ec.register_connection(tap1, node1) - node2 = ec.register_resource("PlanetlabNode") + node2 = ec.register_resource("planetlab::Node") ec.set(node2, "hostname", host2) ec.set(node2, "username", user2) ec.set(node2, "identity", identity2) - ec.set(node2, "cleanHome", True) + ec.set(node2, "cleanExperiment", True) ec.set(node2, "cleanProcesses", True) - tap2 = ec.register_resource("PlanetlabTap") - ec.set(tap2, "ip4", "%s.2" % self.netblock) - ec.set(tap2, "prefix4", 24) + tap2 = ec.register_resource("planetlab::Tap") + ec.set(tap2, "ip", "%s.2" % self.netblock) + ec.set(tap2, "prefix", "24") ec.register_connection(tap2, node2) - gretun = ec.register_resource("GRETunnel") + gretun = ec.register_resource("linux::GRETunnel") ec.register_connection(tap1, gretun) ec.register_connection(tap2, gretun) - app = ec.register_resource("LinuxApplication") + app = ec.register_resource("linux::Application") cmd = "ping -c3 %s.2" % self.netblock ec.set(app, "command", cmd) ec.register_connection(app, node1) @@ -80,7 +82,7 @@ class GRETunnelTestCase(unittest.TestCase): ec.wait_finished(app) - ping = ec.trace(app, 'stdout') + ping = ec.trace(app, "stdout") expected = """3 packets transmitted, 3 received, 0% packet loss""" self.assertTrue(ping.find(expected) > -1) @@ -93,42 +95,40 @@ class GRETunnelTestCase(unittest.TestCase): ec.shutdown() @skipIfAnyNotAliveWithIdentity - def t_tun_udp_tunnel(self, user1, host1, identity1, user2, host2, + def t_tun_gre_tunnel(self, user1, host1, identity1, user2, host2, identity2): - ec = ExperimentController(exp_id = "test-tun-gre-tunnel") + ec = ExperimentController(exp_id="test-tun-gre-tunnel") - node1 = ec.register_resource("PlanetlabNode") + node1 = ec.register_resource("planetlab::Node") ec.set(node1, "hostname", host1) ec.set(node1, "username", user1) ec.set(node1, "identity", identity1) - ec.set(node1, "cleanHome", True) + ec.set(node1, "cleanExperiment", True) ec.set(node1, "cleanProcesses", True) - tun1 = ec.register_resource("PlanetlabTun") - ec.set(tun1, "ip4", "%s.1" % self.netblock) - ec.set(tun1, "pointopoint", "%s.2" % self.netblock) - ec.set(tun1, "prefix4", 24) + tun1 = ec.register_resource("planetlab::Tun") + ec.set(tun1, "ip", "%s.1" % self.netblock) + ec.set(tun1, "prefix", "24") ec.register_connection(tun1, node1) - node2 = ec.register_resource("PlanetlabNode") + node2 = ec.register_resource("planetlab::Node") ec.set(node2, "hostname", host2) ec.set(node2, "username", user2) ec.set(node2, "identity", identity2) - ec.set(node2, "cleanHome", True) + ec.set(node2, "cleanExperiment", True) ec.set(node2, "cleanProcesses", True) - tun2 = ec.register_resource("PlanetlabTun") - ec.set(tun2, "ip4", "%s.2" % self.netblock) - ec.set(tun2, "pointopoint", "%s.1" % self.netblock ) - ec.set(tun2, "prefix4", 24) + tun2 = ec.register_resource("planetlab::Tun") + ec.set(tun2, "ip", "%s.2" % self.netblock) + ec.set(tun2, "prefix", "24") ec.register_connection(tun2, node2) - udptun = ec.register_resource("UdpTunnel") + udptun = ec.register_resource("linux::GRETunnel") ec.register_connection(tun1, udptun) ec.register_connection(tun2, udptun) - app = ec.register_resource("LinuxApplication") + app = ec.register_resource("linux::Application") cmd = "ping -c3 %s.2" % self.netblock ec.set(app, "command", cmd) ec.register_connection(app, node1) @@ -137,7 +137,7 @@ class GRETunnelTestCase(unittest.TestCase): ec.wait_finished(app) - ping = ec.trace(app, 'stdout') + ping = ec.trace(app, "stdout") expected = """3 packets transmitted, 3 received, 0% packet loss""" self.assertTrue(ping.find(expected) > -1) @@ -149,14 +149,76 @@ class GRETunnelTestCase(unittest.TestCase): ec.shutdown() - def test_tap_udp_tunnel(self): - self.t_tap_udp_tunnel(self.user, self.host1, self.identity, + @skipIfAnyNotAliveWithIdentity + def t_tun_hybrid_gre_tunnel(self, user1, host1, identity1, + user2, host2, identity2): + + ec = ExperimentController(exp_id="test-tap-hybrid-gre-tunnel") + + node1 = ec.register_resource("planetlab::Node") + ec.set(node1, "hostname", host1) + ec.set(node1, "username", user1) + ec.set(node1, "identity", identity1) + ec.set(node1, "cleanExperiment", True) + ec.set(node1, "cleanProcesses", True) + + tun1 = ec.register_resource("planetlab::Tun") + ec.set(tun1, "ip", "%s.1" % self.netblock) + ec.set(tun1, "prefix", "24") + ec.register_connection(tun1, node1) + + node2 = ec.register_resource("linux::Node") + ec.set(node2, "hostname", host2) + ec.set(node2, "username", user2) + ec.set(node2, "identity", identity2) + ec.set(node2, "cleanExperiment", True) + ec.set(node2, "cleanProcesses", True) + + tun2 = ec.register_resource("linux::Tun") + ec.set(tun2, "ip", "%s.2" % self.netblock) + ec.set(tun2, "prefix", "24") + ec.register_connection(tun2, node2) + + gretun = ec.register_resource("linux::GRETunnel") + ec.register_connection(tun1, gretun) + ec.register_connection(tun2, gretun) + + app = ec.register_resource("linux::Application") + # It seems the hybrid tunnel takes some time to setup... we add a sleep 5 + # XXX: Debug this to see if it can be fixed on the RMs + cmd = "sleep 5; ping -c3 %s.2" % self.netblock + ec.set(app, "command", cmd) + ec.register_connection(app, node1) + + ec.deploy() + + ec.wait_finished(app) + + ping = ec.trace(app, "stdout") + expected = """3 packets transmitted, 3 received, 0% packet loss""" + self.assertTrue(ping.find(expected) > -1) + + if_name = ec.get(tun1, "deviceName") + self.assertTrue(if_name.startswith("tun")) + + if_name = ec.get(tun2, "deviceName") + self.assertTrue(if_name.startswith("tun")) + + ec.shutdown() + + def test_tap_gre_tunnel(self): + self.t_tap_gre_tunnel(self.user, self.host1, self.identity, self.user, self.host2, self.identity) - def test_tun_udp_tunnel(self): - self.t_tun_udp_tunnel(self.user, self.host1, self.identity, + def test_tun_gre_tunnel(self): + self.t_tun_gre_tunnel(self.user, self.host1, self.identity, self.user, self.host2, self.identity) + def test_tun_hybrid_gre_tunnel(self): + self.t_tun_hybrid_gre_tunnel(self.user, self.host1, self.identity, + self.user, self.host3, self.identity) + + if __name__ == '__main__': unittest.main()