From 6884edf943572c2a23544813858edd92186214c3 Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Fri, 9 Dec 2011 17:31:04 +0000 Subject: clique --- src/integration-tests/Makefile.am | 16 +- src/integration-tests/confs/c_no_nat_client_2.conf | 344 ++++++++++++++++ src/integration-tests/hostkeys/0002-hostkey | Bin 0 -> 914 bytes src/integration-tests/hostkeys/0003-hostkey | Bin 0 -> 914 bytes src/integration-tests/hostkeys/0004-hostkey | Bin 0 -> 914 bytes src/integration-tests/hostkeys/0005-hostkey | Bin 0 -> 914 bytes src/integration-tests/hostkeys/0006-hostkey | Bin 0 -> 914 bytes src/integration-tests/hostkeys/0007-hostkey | Bin 0 -> 914 bytes src/integration-tests/hostkeys/0008-hostkey | Bin 0 -> 914 bytes src/integration-tests/hostkeys/0009-hostkey | Bin 0 -> 914 bytes .../test_integration_clique.py.in | 441 +++++++++++++++++++-- .../test_integration_disconnect.py.in | 4 +- 12 files changed, 754 insertions(+), 51 deletions(-) create mode 100644 src/integration-tests/confs/c_no_nat_client_2.conf create mode 100644 src/integration-tests/hostkeys/0002-hostkey create mode 100644 src/integration-tests/hostkeys/0003-hostkey create mode 100644 src/integration-tests/hostkeys/0004-hostkey create mode 100644 src/integration-tests/hostkeys/0005-hostkey create mode 100644 src/integration-tests/hostkeys/0006-hostkey create mode 100644 src/integration-tests/hostkeys/0007-hostkey create mode 100644 src/integration-tests/hostkeys/0008-hostkey create mode 100644 src/integration-tests/hostkeys/0009-hostkey (limited to 'src/integration-tests') diff --git a/src/integration-tests/Makefile.am b/src/integration-tests/Makefile.am index f30c40978..a40fa76e6 100644 --- a/src/integration-tests/Makefile.am +++ b/src/integration-tests/Makefile.am @@ -17,7 +17,8 @@ check_PROGRAMS = if HAVE_PYTHON_PEXPECT check_SCRIPTS = \ test_integration_bootstrap_and_connect.py \ - test_integration_disconnect.py + test_integration_disconnect.py \ + test_integration_clique.py endif @@ -28,10 +29,6 @@ endif do_subst = $(SED) -e 's,[@]PYTHON[@],$(PYTHON),g' -test_integration_clique.py: test_integration_clique.py.in Makefile - $(do_subst) < $(srcdir)/test_integration_clique.py.in > test_integration_clique.py - chmod +x test_integration_clique.py - test_integration_bootstrap_and_connect.py: test_integration_bootstrap_and_connect.py.in Makefile $(do_subst) < $(srcdir)/test_integration_bootstrap_and_connect.py.in > test_integration_bootstrap_and_connect.py chmod +x test_integration_bootstrap_and_connect.py @@ -39,12 +36,15 @@ test_integration_bootstrap_and_connect.py: test_integration_bootstrap_and_connec test_integration_disconnect.py: test_integration_disconnect.py.in Makefile $(do_subst) < $(srcdir)/test_integration_disconnect.py.in > test_integration_disconnect.py chmod +x test_integration_disconnect.py - + +test_integration_clique.py: test_integration_clique.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_clique.py.in > test_integration_clique.py + chmod +x test_integration_clique.py EXTRA_DIST = \ test_integration_bootstrap_and_connect.py.in \ - test_integration_disconnect.py.in -# test_integration_clique.py.in + test_integration_disconnect.py.in \ + test_integration_clique.py.in CLEANFILES = $(check_SCRIPTS) diff --git a/src/integration-tests/confs/c_no_nat_client_2.conf b/src/integration-tests/confs/c_no_nat_client_2.conf new file mode 100644 index 000000000..bd675d7d2 --- /dev/null +++ b/src/integration-tests/confs/c_no_nat_client_2.conf @@ -0,0 +1,344 @@ +[PATHS] +SERVICEHOME = /tmp/c_no_nat_client_2/ +DEFAULTCONFIG = confs/c_no_nat_client_2.conf + +[gnunetd] +#HOSTKEY = $SERVICEHOME/.hostkey +HOSTKEY = hostkeys/0002-hostkey + +[resolver] +AUTOSTART = YES +PORT = 20053 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-resolver +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-resolver-42 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = NO + +[mesh] +AUTOSTART = YES +PORT = 20052 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-mesh +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-mesh-41 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nse] +AUTOSTART = YES +PORT = 20051 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-nse +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-nse-40 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PROOFFILE = $SERVICEHOME/.nse-proof +HISTOGRAM = $SERVICEHOME/nse-history.log +WORKDELAY = 5 ms +INTERVAL = 1 h +WORKBITS = 26 + +[topology] +MINIMUM-FRIENDS = 0 +FRIENDS-ONLY = NO +AUTOCONNECT = YES +TARGET-CONNECTION-COUNT = 16 +FRIENDS = $SERVICEHOME/friends +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-topology + +[datastore] +AUTOSTART = YES +UNIXPATH = /tmp/test-service-datastore-39 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +PORT = 20050 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-datastore +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +QUOTA = 100 MB +BLOOMFILTER = $SERVICEHOME/fs/bloomfilter +DATABASE = sqlite + +[datastore-sqlite] +FILENAME = $SERVICEHOME/datastore/sqlite.db + +[datastore-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[datastore-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[peerinfo] +AUTOSTART = YES +PORT = 20049 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-peerinfo +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-peerinfo-38 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +HOSTS = $SERVICEHOME/data/hosts/ + +[client] +HOME = $SERVICEHOME + +[TESTING] +WEAKRANDOM = NO +CONNECT_TIMEOUT = 30 s +CONNECT_ATTEMPTS = 3 +MAX_OUTSTANDING_CONNECTIONS = 50 +DELETE_FILES = YES + +[ats] +AUTOSTART = YES +PORT = 20048 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-ats +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-ats-37 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES +WAN_QUOTA_IN = 65536 +WAN_QUOTA_OUT = 65536 +DUMP_MLP = NO +DUMP_SOLUTION = NO +DUMP_OVERWRITE = NO +DUMP_MIN_PEERS = 0 +DUMP_MIN_ADDRS = 0 +ATS_MIN_INTERVAL = 15000 +ATS_EXEC_INTERVAL = 30000 + +[transport] +AUTOSTART = YES +PORT = 20047 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-transport +NEIGHBOUR_LIMIT = 50 +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +PLUGINS = tcp +UNIXPATH = /tmp/test-service-transport-36 +BLACKLIST_FILE = $SERVICEHOME/blacklist +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[transport-tcp] +PORT = 20046 +ADVERTISED_PORT = 20046 +MAX_CONNECTIONS = 128 +TIMEOUT = 5 s +USE_LOCALADDR = YES + +[transport-udp] +PORT = 20045 +BROADCAST = YES +BROADCAST_INTERVAL = 30000 +MAX_BPS = 1000000 +USE_LOCALADDR = YES + +[transport-http] +PORT = 20044 +MAX_CONNECTIONS = 128 + +[transport-https] +PORT = 20043 +CRYPTO_INIT = NORMAL +KEY_FILE = https.key +CERT_FILE = https.cert +MAX_CONNECTIONS = 128 + +[transport-wlan] +INTERFACE = mon0 +TESTMODE = 0 + +[datacache-mysql] +DATABASE = gnunet +CONFIG = ~/.my.cnf + +[datacache-postgres] +CONFIG = connect_timeout=10; dbname=gnunet + +[template] +AUTOSTART = NO +PORT = 20042 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-template +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-template-35 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[fs] +AUTOSTART = YES +INDEXDB = $SERVICEHOME/idxinfo.lst +TRUST = $SERVICEHOME/data/credit/ +IDENTITY_DIR = $SERVICEHOME/identities/ +STATE_DIR = $SERVICEHOME/persistence/ +UPDATE_DIR = $SERVICEHOME/updates/ +PORT = 20041 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-fs +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DELAY = YES +CONTENT_CACHING = YES +CONTENT_PUSHING = YES +UNIXPATH = /tmp/test-service-fs-34 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES +MAX_PENDING_REQUESTS = 65536 +MIN_MIGRATION_DELAY = 100 ms +EXPECTED_NEIGHBOUR_COUNT = 128 + +[vpn] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-vpn +IPV6ADDR = 1234::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.11.10.1 +IPV4MASK = 255.255.0.0 +VIRTDNS = 10.11.10.2 +VIRTDNS6 = 1234::17 +IFNAME = vpn-gnunet + +[exit] +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-exit +IPV6ADDR = 1234:1::1 +IPV6PREFIX = 32 +IPV4ADDR = 10.10.1.1 +IPV4MASK = 255.255.0.0 +IFNAME = exit-gnunet +ENABLE_UDP = NO +ENABLE_TCP = NO + +[dns] +AUTOSTART = YES +PORT = 0 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dns +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-dns-33 +PROVIDE_EXIT = NO + +[arm] +PORT = 20040 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-arm +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +DEFAULTSERVICES = topology hostlist fs +UNIXPATH = /tmp/test-service-arm-32 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[hostlist] +HTTPPORT = 8080 +HOME = $SERVICEHOME +HOSTLISTFILE = $SERVICEHOME/hostlist/learned.data +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-daemon-hostlist +OPTIONS = -b +SERVERS = http://localhost:8080/ +HTTP-PROXY = + +[core] +AUTOSTART = YES +PORT = 20039 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-core +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-core-31 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[nat] +BEHIND_NAT = NO +PUNCHED_NAT = NO +ENABLE_UPNP = NO +USE_LOCALADDR = YES +USE_HOSTNAME = NO +ENABLE_ICMP_CLIENT = NO +ENABLE_ICMP_SERVER = NO +DISABLEV6 = YES +RETURN_LOCAL_ADDRESSES = NO +HOSTNAME_DNS_FREQUENCY = 1200000 +IFC_SCAN_FREQUENCY = 3000000 +DYNDNS_FREQUENCY = 140000 +EXTERNAL_ADDRESS = 127.0.0.1 +INTERNAL_ADDRESS = 127.0.0.1 +BINDTO = 127.0.0.1 + +[gnunet-nat-server] +HOSTNAME = gnunet.org +PORT = 20038 + +[statistics] +AUTOSTART = YES +PORT = 20037 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-statistics +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +UNIXPATH = /tmp/test-service-statistics-30 +UNIX_MATCH_UID = NO +UNIX_MATCH_GID = YES + +[dht] +AUTOSTART = YES +PORT = 20036 +HOSTNAME = localhost +HOME = $SERVICEHOME +CONFIG = $DEFAULTCONFIG +BINARY = gnunet-service-dht +ACCEPT_FROM = 127.0.0.1; +ACCEPT_FROM6 = ::1; +BUCKET_SIZE = 4 +UNIXPATH = /tmp/test-service-dht-29 +UNIX_MATCH_UID = YES +UNIX_MATCH_GID = YES + +[dhtcache] +DATABASE = sqlite +QUOTA = 1 MB + diff --git a/src/integration-tests/hostkeys/0002-hostkey b/src/integration-tests/hostkeys/0002-hostkey new file mode 100644 index 000000000..2ffb55fad Binary files /dev/null and b/src/integration-tests/hostkeys/0002-hostkey differ diff --git a/src/integration-tests/hostkeys/0003-hostkey b/src/integration-tests/hostkeys/0003-hostkey new file mode 100644 index 000000000..13bc88934 Binary files /dev/null and b/src/integration-tests/hostkeys/0003-hostkey differ diff --git a/src/integration-tests/hostkeys/0004-hostkey b/src/integration-tests/hostkeys/0004-hostkey new file mode 100644 index 000000000..a15a07347 Binary files /dev/null and b/src/integration-tests/hostkeys/0004-hostkey differ diff --git a/src/integration-tests/hostkeys/0005-hostkey b/src/integration-tests/hostkeys/0005-hostkey new file mode 100644 index 000000000..4bcfffef4 Binary files /dev/null and b/src/integration-tests/hostkeys/0005-hostkey differ diff --git a/src/integration-tests/hostkeys/0006-hostkey b/src/integration-tests/hostkeys/0006-hostkey new file mode 100644 index 000000000..c595d9141 Binary files /dev/null and b/src/integration-tests/hostkeys/0006-hostkey differ diff --git a/src/integration-tests/hostkeys/0007-hostkey b/src/integration-tests/hostkeys/0007-hostkey new file mode 100644 index 000000000..f7e9dbc6b Binary files /dev/null and b/src/integration-tests/hostkeys/0007-hostkey differ diff --git a/src/integration-tests/hostkeys/0008-hostkey b/src/integration-tests/hostkeys/0008-hostkey new file mode 100644 index 000000000..559a69c3d Binary files /dev/null and b/src/integration-tests/hostkeys/0008-hostkey differ diff --git a/src/integration-tests/hostkeys/0009-hostkey b/src/integration-tests/hostkeys/0009-hostkey new file mode 100644 index 000000000..7d8ce5e38 Binary files /dev/null and b/src/integration-tests/hostkeys/0009-hostkey differ diff --git a/src/integration-tests/test_integration_clique.py.in b/src/integration-tests/test_integration_clique.py.in index 892f80931..a2008742c 100755 --- a/src/integration-tests/test_integration_clique.py.in +++ b/src/integration-tests/test_integration_clique.py.in @@ -18,67 +18,426 @@ # Boston, MA 02111-1307, USA. # # +# +# This test starts 3 peers and expects bootstrap and a connected clique +# +# Conditions for successful exit: +# Both peers have 1 connected peer in transport, core, topology, fs + import sys import os import subprocess import re import shutil +import time +import pexpect +#definitions testname = "test_integration_clique" -verbose = True +verbose = False +gnunetarm = "" +gnunetstatistics = "" +success = False +timeout = 10 -srcdir = "../.." -gnunet_pyexpect_dir = os.path.join (srcdir, "contrib") -if gnunet_pyexpect_dir not in sys.path: - sys.path.append (gnunet_pyexpect_dir) +#test conditions -from gnunet_pyexpect import pexpect -if os.name == 'posix': - gnunetarm = 'gnunet-arm' -elif os.name == 'nt': - gnunetarm = 'gnunet-arm.exe' +def vprintf (msg): + if verbose == True: + print msg -if os.name == "nt": - shutil.rmtree (os.path.join (os.getenv ("TEMP"), testname), True) -else: - shutil.rmtree ("/tmp/" + testname, True) +def setup (): + srcdir = "../.." + gnunet_pyexpect_dir = os.path.join (srcdir, "contrib") + if gnunet_pyexpect_dir not in sys.path: + sys.path.append (gnunet_pyexpect_dir) + from gnunet_pyexpect import pexpect + global gnunetarm + global gnunetstatistics + if os.name == 'posix': + gnunetarm = 'gnunet-arm' + gnunetstatistics = 'gnunet-statistics' + elif os.name == 'nt': + gnunetarm = 'gnunet-arm.exe' + gnunetstatistics = 'gnunet-statistics.exe' + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), testname), True) + else: + shutil.rmtree ("/tmp/" + testname, True) -if verbose == True: - print "Running " + testname +def start (): + vprintf ("Starting bootstrap server & client") + try: + server = subprocess.Popen ([gnunetarm, '-sq', '-c', './confs/c_bootstrap_server.conf']) + server.communicate () + except OSError: + print "Can not start bootstrap server, exiting..." + exit (1) + try: + client = subprocess.Popen ([gnunetarm, '-sq', '-c', 'confs/c_no_nat_client.conf']) + client.communicate () + except OSError: + print "Can not start bootstrap client, exiting..." + exit (1) + try: + client = subprocess.Popen ([gnunetarm, '-sq', '-c', 'confs/c_no_nat_client_2.conf']) + client.communicate () + except OSError: + print "Can not start bootstrap client 2, exiting..." + exit (1) + vprintf ("Bootstrap server & client started") +def stop (): + try: + client = subprocess.Popen ([gnunetarm, '-eq', '-c', 'confs/c_no_nat_client.conf']) + client.communicate () + except OSError: + print "Can not stop bootstrap client 1, exiting..." + exit (1) + vprintf ("Bootstrap client stopped") +def cleanup (): + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True) + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client_2"), True) + else: + shutil.rmtree ("/tmp/c_bootstrap_server/", True) + shutil.rmtree ("/tmp/c_no_nat_client/", True) + shutil.rmtree ("/tmp/c_no_nat_client_2/", True) -exit () -# dummy copied from fs -arm = subprocess.Popen ([gnunetarm, '-sq', '-c', 'test_gnunet_fs_ns_data.conf']) -arm.communicate () +def check_statistics (conf, subsystem, name, value): + from gnunet_pyexpect import pexpect + server = pexpect () + server.spawn (None, [gnunetstatistics, '-c', conf ,'-q','-n', name, '-s', subsystem ], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + #server.expect ("stdout", re.compile (r"")) + test = server.read("stdout", 10240) + if (test.find(str(value)) == -1): + return False + else: + return True + + -try: - pseu = pexpect () - pseu.spawn (None, [pseudonym, '-c', 'test_gnunet_fs_ns_data.conf', '-C', 'licenses', '-k', 'gplad', '-m', 'description:Free Software Licenses', '-R', 'myroot'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - pseu.spawn (None, [pseudonym, '-c', 'test_gnunet_fs_ns_data.conf', '-o'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - pseu.expect ("stdout", re.compile (r"licenses (.*)\r?\n")) +def check_connect (): + server_transport_connected = False + server_topology_connected = False + server_core_connected = False + server_core_session_map = False + server_fs_connected = False + client_transport_connected = False + client_topology_connected = False + client_core_connected = False + client_core_session_map = False + client_fs_connected = False + + client2_transport_connected = False + client2_topology_connected = False + client2_core_connected = False + client2_core_session_map = False + client2_fs_connected = False + + connected = False + count = 1 + while ((connected == False) and (count <= timeout)): + # Perform TRANSPORT + if ((False == server_transport_connected) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'transport', '# peers connected',2))): + server_transport_connected = True + vprintf ('Server transport services is connected') + + if ((False == client_transport_connected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'transport', '# peers connected',2))): + client_transport_connected = True + vprintf ('Client transport services is connected') + + if ((False == client2_transport_connected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'transport', '# peers connected',2))): + client2_transport_connected = True + vprintf ('Client 2 transport services is connected') - pub = pexpect () - pub.spawn (None, [publish, '-c', 'test_gnunet_fs_ns_data.conf', '-k', 'licenses', '-P', 'licenses', '-u', 'gnunet://fs/chk/PC0M19QMQC0BPSHR6BGA228PP6INER1D610MGEMOMEM87222FN8HVUO7PQGO0O9HD2GVLHF2N5IDHEQUNK6LKE428FPO96SKQEA486O.PG7K85JGQ6N599MD5HEP3CHEVFPKQD9JB6NPSLVA3T1SKDS66CFI499VS6MGQ88B0QUAVT1282TCRD4GGFVUKDLGI8F0SPIANA3J2LG.35147', '-t', 'gpl', '-N', 'gpl3'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + # Perform TRANSPORT + if ((False == server_core_connected) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'core', '# neighbour entries allocated',2))): + server_core_connected = True + vprintf ('Server core services is connected') + + if ((False == client_core_connected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# neighbour entries allocated',2))): + client_core_connected = True + vprintf ('Client core services is connected') - s = pexpect () - s.spawn (None, [search, '-V', '-t', '1000', '-N', '1', '-c', 'test_gnunet_fs_ns_data.conf', 'gplad'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - s.expect ("stdout", re.compile (r'#0:\r?\n')) - s.expect ("stdout", re.compile (r'gnunet-download gnunet://fs/sks/.*/myroot\r?\n')) - s.expect ("stdout", re.compile (r'\s*description: Free Software Licenses\r?\n')) + if ((False == client2_core_connected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'core', '# neighbour entries allocated',2))): + client2_core_connected = True + vprintf ('Client2 core services is connected') + + # Perform TRANSPORT + if ((False == server_core_session_map) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'core', '# entries in session map',2))): + server_core_session_map = True + vprintf ('Server core services is connected') + + if ((False == client_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# entries in session map',2))): + client_core_session_map = True + vprintf ('Client core notifies about connected') - pseu = pexpect () - pseu.spawn (None, [pseudonym, '-c', 'test_gnunet_fs_ns_data.conf'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - pseu.expect ("stdout", re.compile (r'Free Software Licenses.*:\r?\n')) + if ((False == client2_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'core', '# entries in session map',2))): + client2_core_session_map = True + vprintf ('Client2 core notifies about connected') -finally: - arm = subprocess.Popen ([gnunetarm, '-eq', '-c', 'test_gnunet_fs_ns_data.conf']) - arm.communicate () - if os.name == "nt": - shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True) + # Perform TRANSPORT + if ((False == server_topology_connected) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'topology', '# peers connected',2))): + server_topology_connected = True + vprintf ('Server topology services is connected') + + if ((False == client_topology_connected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'topology', '# peers connected',2))): + client_topology_connected = True + vprintf ('Client topology services is connected') + + if ((False == client2_topology_connected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'topology', '# peers connected',2))): + client2_topology_connected = True + vprintf ('Client2 topology services is connected') + + # Perform TRANSPORT + if ((False == server_fs_connected) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'fs', '# peers connected',2))): + server_fs_connected = True + vprintf ('Server fs services is connected') + + if ((False == client_fs_connected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'fs', '# peers connected',2))): + client_fs_connected = True + vprintf ('Client fs services is connected') + + if ((False == client2_fs_connected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'fs', '# peers connected',2))): + client2_fs_connected = True + vprintf ('Client2 fs services is connected') + + # Check if conditions fulfilled + if ((True == client_transport_connected) and (True == client2_transport_connected) and (True == server_transport_connected) and + (True == client_topology_connected) and (True == client2_topology_connected) and (True == server_topology_connected) and + (True == client_core_connected) and (True == client2_core_connected) and (True == server_core_connected) and + (True == client_core_session_map) and (True == client2_core_session_map) and (True == server_core_session_map) and + (True == client_fs_connected) and (True == client2_fs_connected) and (True == server_fs_connected)): + connected = True + break + print '.', + time.sleep(1) + count += 1 + if (connected == False): + print '' + if (server_transport_connected == False): + print ('Server transport was NOT connected') + if (server_topology_connected == False): + print ('Server topology was NOT connected') + if (server_core_connected == False): + print ('Server core was NOT connected') + if (server_core_session_map == False): + print ('Server core sessions did NOT increase') + + if (client_transport_connected == False): + print ('Client transport was NOT connected') + if (client_topology_connected == False): + print ('Client topology was NOT connected') + if (client_core_connected == False): + print ('Client core was NOT connected') + if (client_core_session_map == False): + print ('Client core sessions did NOT increase') + + if (client2_transport_connected == False): + print ('Client2 transport was NOT connected') + if (client2_topology_connected == False): + print ('Client2 topology was NOT connected') + if (client2_core_connected == False): + print ('Client2 core was NOT connected') + if (client2_core_session_map == False): + print ('Client2 core sessions did NOT increase') + return False else: - shutil.rmtree ("/tmp/gnunet-test-fs-py-ns", True) + return True + +def check_disconnect_client (): + vprintf ("Shutting down client 2") + try: + server = subprocess.Popen ([gnunetarm, '-eq', '-c', './confs/c_no_nat_client_2.conf']) + server.communicate () + except OSError: + print "Can not stop client 2, exiting..." + exit (1) + + client_transport_disconnected = False + client_topology_disconnected = False + client_core_disconnected = False + client_core_session_map = False + client_fs_disconnected = False + + disconnected = False + count = 1 + while ((disconnected == False) and (count <= timeout)): + if ((False == client_transport_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'transport', '# peers connected',0))): + client_transport_disconnected = True + vprintf ('Client transport services is disconnected') + + if ((False == client_core_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# neighbour entries allocated',0))): + client_core_disconnected = True + vprintf ('Client core services is disconnected') + + if ((False == client_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# entries in session map',0))): + client_core_session_map = True + vprintf ('Client core notifies about disconnected') + + if ((False == client_topology_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'topology', '# peers connected',0))): + client_topology_disconnected = True + vprintf ('Client topology services is disconnected') + + if ((False == client_fs_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'fs', '# peers connected',0))): + client_fs_disconnected = True + vprintf ('Client fs services is disconnected') + + # Check if conditions fulfilled + if ((True == client_transport_disconnected) and + (True == client_topology_disconnected) and + (True == client_core_disconnected) and + (True == client_core_session_map) and + (True == client_fs_disconnected)): + disconnected = True + break + print '.' + time.sleep(1) + count += 1 + if (disconnected == False): + print '' + if (client_transport_disconnected == False): + print ('Client transport was NOT disconnected') + if (client_topology_disconnected == False): + print ('Client topology was NOT disconnected') + if (client_core_disconnected == False): + print ('Client core was NOT disconnected') + if (server_core_session_map == False): + print ('Server core sessions did NOT increase') + return False + else: + return True + +def check_disconnect_server (): + vprintf ("Shutting down bootstrap server") + try: + server = subprocess.Popen ([gnunetarm, '-eq', '-c', './confs/c_bootstrap_server.conf']) + server.communicate () + except OSError: + print "Can not stop bootstrap server, exiting..." + exit (1) + + client_transport_disconnected = False + client_topology_disconnected = False + client_core_disconnected = False + client_core_session_map = False + client_fs_disconnected = False + + client2_transport_disconnected = False + client2_topology_disconnected = False + client2_core_disconnected = False + client2_core_session_map = False + client2_fs_disconnected = False + + disconnected = False + count = 1 + while ((disconnected == False) and (count <= timeout)): + if ((False == client_transport_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'transport', '# peers connected',1))): + client_transport_disconnected = True + vprintf ('Client transport services is disconnected') + + if ((False == client_core_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# neighbour entries allocated',1))): + client_core_disconnected = True + vprintf ('Client core services is disconnected') + + if ((False == client_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# entries in session map',1))): + client_core_session_map = True + vprintf ('Client core notifies about disconnected') + + if ((False == client_topology_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'topology', '# peers connected',1))): + client_topology_disconnected = True + vprintf ('Client topology services is disconnected') + + if ((False == client_fs_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'fs', '# peers connected',1))): + client_fs_disconnected = True + vprintf ('Client fs services is disconnected') + + if ((False == client2_transport_disconnected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'transport', '# peers connected',1))): + client2_transport_disconnected = True + vprintf ('Client2 transport services is disconnected') + + if ((False == client2_core_disconnected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'core', '# neighbour entries allocated',1))): + client2_core_disconnected = True + vprintf ('Client2 core services is disconnected') + + if ((False == client2_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'core', '# entries in session map',1))): + client2_core_session_map = True + vprintf ('Client2 core notifies about disconnected') + + if ((False == client2_topology_disconnected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'topology', '# peers connected',1))): + client2_topology_disconnected = True + vprintf ('Client2 topology services is disconnected') + + if ((False == client2_fs_disconnected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'fs', '# peers connected',1))): + client2_fs_disconnected = True + vprintf ('Client2 fs services is disconnected') + + + # Check if conditions fulfilled + if ((True == client_transport_disconnected) and + (True == client_topology_disconnected) and + (True == client_core_disconnected) and + (True == client_core_session_map) and + (True == client_fs_disconnected) and + (True == client2_transport_disconnected) and + (True == client2_topology_disconnected) and + (True == client2_core_disconnected) and + (True == client2_core_session_map) and + (True == client2_fs_disconnected)): + disconnected = True + #break + print '.' + time.sleep(1) + count += 1 + if (disconnected == False): + print '' + if (client_transport_disconnected == False): + print ('Client transport was NOT disconnected') + if (client_topology_disconnected == False): + print ('Client topology was NOT disconnected') + if (client_core_disconnected == False): + print ('Client core was NOT disconnected') + if (client_core_session_map == False): + print ('Client core sessions did NOT decrease') + if (client2_transport_disconnected == False): + print ('Client2 transport was NOT disconnected') + if (client2_topology_disconnected == False): + print ('Client2 topology was NOT disconnected') + if (client2_core_disconnected == False): + print ('Client2 core was NOT disconnected') + if (client2_core_session_map == False): + print ('Client2 core sessions did NOT decrease') + return False + else: + return True + +# +# Test execution +# + +vprintf ("Running " + testname) +setup () +start () + +ret = check_connect () +if (ret == True): + vprintf ('Peers connected') + if (True == check_disconnect_server ()): + if (True == check_disconnect_client ()): + success = True + +stop () +cleanup () + +if (success == False): + print ('Test failed') + exit (1) +else: + exit (0) + diff --git a/src/integration-tests/test_integration_disconnect.py.in b/src/integration-tests/test_integration_disconnect.py.in index 1b9423675..3ded5dd7a 100755 --- a/src/integration-tests/test_integration_disconnect.py.in +++ b/src/integration-tests/test_integration_disconnect.py.in @@ -261,8 +261,8 @@ def check_disconnect (): print ('Client topology was NOT disconnected') if (client_core_disconnected == False): print ('Client core was NOT disconnected') - if (server_core_session_map == False): - print ('Server core sessions did NOT increase') + if (client_core_session_map == False): + print ('Server core sessions did NOT decrease') return False else: return True -- cgit v1.2.3