def test_ensure_tunnel_up_for_5m(self): # get id of l2tp0 iface first_interface_id = run_as_lxc(CLIENT, ['bash', '-c', 'ip -o link show l2tp0 | awk -F: \'{ print $1 }\'']) # sleep 5 minutes sleep(5 * 60) # get id of l2tp0 iface second_interface_id = run_as_lxc(CLIENT, ['bash', '-c', 'ip -o link show l2tp0 | awk -F: \'{ print $1 }\'']) LOG.info("Check l2tp is stable for 5m. first id %s == %s second id " % (first_interface_id, second_interface_id)) assert first_interface_id == second_interface_id
def test_ensure_tunnel_up_for_5m(self): # get id of l2tp0 iface first_interface_id = run_as_lxc( CLIENT, ['bash', '-c', 'ip -o link show l2tp0 | awk -F: \'{ print $1 }\'']) # sleep 5 minutes sleep(5 * 60) # get id of l2tp0 iface second_interface_id = run_as_lxc( CLIENT, ['bash', '-c', 'ip -o link show l2tp0 | awk -F: \'{ print $1 }\'']) LOG.info("Check l2tp is stable for 5m. first id %s == %s second id " % (first_interface_id, second_interface_id)) assert first_interface_id == second_interface_id
def test_usage(self): """ - we need to check if the client version is fresh enought to support usage. otherwise SKIP - setup server A with usage version but one client - setup server B with usage version without any client - setup server C with non-usage version - start client conf ABC and check if it's connecting to server B - start client conf AB and check if it's connecting to server B """ CONTEXT = [] CONTEXT.append(tunneldigger.get_random_context()) CONTEXT.append(tunneldigger.get_random_context()) CONTEXT.append(tunneldigger.get_random_context()) bridge_name = "br-%s" % CONTEXT[0] tunneldigger.create_bridge(bridge_name) cont_client = tunneldigger.prepare('client', CONTEXT[0] + '_client', os.environ['CLIENT_REV'], bridge_name, '172.16.16.2/24') if not check_if_git_contains(cont_client, '/git_repo', os.environ['CLIENT_REV'], '657aa1c81c6e487749d5777bbea6681e478a8a01'): try: from nose import SkipTest except ImportError: LOG.error("Can not skip test, returning without any Exception!") return raise SkipTest("Client too old for this test.") servers = ['172.16.16.100', '172.16.16.101', '172.16.16.102'] cont_first = tunneldigger.prepare('server', CONTEXT[0] + '_server', USAGE_REV, bridge_name, servers[0]+'/24') cont_second = tunneldigger.prepare('server', CONTEXT[1] + '_server', USAGE_REV, bridge_name, servers[1]+'/24') cont_nonusage = tunneldigger.prepare('server', CONTEXT[2] + '_server', NONUSAGE_REV, bridge_name, servers[2]+'/24') cont_all_servers = [cont_first, cont_second, cont_nonusage] cont_dummy_client = tunneldigger.prepare('client', CONTEXT[1] + '_client', os.environ['CLIENT_REV'], bridge_name, '172.16.16.1/24') cont_all_clients = [cont_dummy_client, cont_client] # start all servers pids_all_servers = [run_server(x) for x in cont_all_servers] pid_dummy_client = run_client(cont_dummy_client, [servers[0]+':8942']) LOG.info("Created servers %s", [x.name for x in cont_all_servers]) LOG.info("Created clients %s", [x.name for x in cont_all_clients]) # check if the dummy client is connected to server A if not tunneldigger.check_ping(cont_dummy_client, '192.168.254.1', 10): raise RuntimeError("Dummy Client failed to ping server") pid_client = run_client(cont_client, [x + ':8942' for x in servers]) # check if the client is connected to some server if not tunneldigger.check_ping(cont_client, '192.168.254.1', 10): raise RuntimeError("Test client failed to ping server") # now everything is connect. let's see if it's connecting to server B address = run_as_lxc(cont_client, ['curl', '--silent', 'http://192.168.254.1:8080/ip.txt']) if address != bytes(servers[1], 'utf-8'): raise RuntimeError('Client is connected to "%s" but should be "%s"' % (address, bytes(servers[1], 'utf-8')))
def test_usage(self): """ - we need to check if the client version is fresh enought to support usage. otherwise SKIP - setup server A with usage version but one client - setup server B with usage version without any client - setup server C with non-usage version - start client conf ABC and check if it's connecting to server B - start client conf AB and check if it's connecting to server B """ CONTEXT = tunneldigger.get_random_context() bridge_name = "br-%s" % CONTEXT tunneldigger.create_bridge(bridge_name) cont_client = tunneldigger.prepare('client', CONTEXT + '_usage_client', os.environ['CLIENT_REV'], bridge_name, '172.16.16.2/24') if not check_if_git_contains(cont_client, '/git_repo', os.environ['CLIENT_REV'], USAGE_REV): try: from nose import SkipTest except ImportError: LOG.error( "Can not skip test, returning without any Exception!") return raise SkipTest("Client too old for this test.") servers = ['172.16.16.100', '172.16.16.101', '172.16.16.102'] cont_first = tunneldigger.prepare('server', CONTEXT + '_first_server', USAGE_REV, bridge_name, servers[0] + '/24') cont_second = tunneldigger.prepare('server', CONTEXT + '_second_server', USAGE_REV, bridge_name, servers[1] + '/24') cont_nonusage = tunneldigger.prepare('server', CONTEXT + '_third_server', NONUSAGE_REV, bridge_name, servers[2] + '/24') cont_all_servers = [cont_first, cont_second, cont_nonusage] cont_dummy_client = tunneldigger.prepare('client', CONTEXT + '_dummy_client', os.environ['CLIENT_REV'], bridge_name, '172.16.16.1/24') cont_all_clients = [cont_dummy_client, cont_client] # start all servers pids_all_servers = [run_server(x) for x in cont_all_servers] pid_dummy_client = run_client(cont_dummy_client, ['-b', servers[0] + ':8942']) LOG.info("Created servers %s", [x.name for x in cont_all_servers]) LOG.info("Created clients %s", [x.name for x in cont_all_clients]) # check if the dummy client is connected to server A if not tunneldigger.check_ping(cont_dummy_client, '192.168.254.1', 10): raise RuntimeError("Dummy Client failed to ping server") # -a = usage broker client_args = ['-a'] for srv in servers: client_args.append('-b') client_args.append(srv + ":8942") pid_client = run_client(cont_client, client_args) # check if the client is connected to some server if not tunneldigger.check_ping(cont_client, '192.168.254.1', 10): raise RuntimeError("Test client failed to ping server") # now everything is connect. let's see if it's connecting to server B address = run_as_lxc( cont_client, ['curl', '--silent', 'http://192.168.254.1:8080/ip.txt']) if address != bytes(servers[1], 'utf-8'): raise RuntimeError( 'Client is connected to "%s" but should be "%s"' % (address, bytes(servers[1], 'utf-8')))