X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fintegration-tests%2Ftest_integration_clique.py.in;h=6c7a5d770e9c0a1dd4e1ffd16192e6457309ce6b;hb=d0b4927e6ab7e8b9874dd7807055e77fb4c5163f;hp=892f809312ab114873b8bbb33423a5face211531;hpb=3ec5e14c7071bfb39ad7af8f98365d6e81cbe026;p=oweals%2Fgnunet.git diff --git a/src/integration-tests/test_integration_clique.py.in b/src/integration-tests/test_integration_clique.py.in index 892f80931..6c7a5d770 100755 --- a/src/integration-tests/test_integration_clique.py.in +++ b/src/integration-tests/test_integration_clique.py.in @@ -18,67 +18,178 @@ # 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 +from gnunet_testing import Peer +from gnunet_testing import Test +from gnunet_testing import Check +from gnunet_testing import Condition +from gnunet_testing import * + +if os.name == "nt": + tmp = os.getenv ("TEMP") +else: + tmp = "/tmp" +#definitions testname = "test_integration_clique" verbose = True +check_timeout = 180 + + +def cleanup (): + shutil.rmtree (os.path.join (tmp, "c_bootstrap_server"), True) + shutil.rmtree (os.path.join (tmp, "c_no_nat_client"), True) + shutil.rmtree (os.path.join (tmp, "c_no_nat_client_2"), True) + + +def success_cont (check): + global success + success = True; + +def fail_cont (check): + global success + success= False; + check.evaluate(True) + + +def check_disconnect_client (): + test.p ('Shutting down bootstrap client') + client.stop () + check = Check (test) + + check.add (StatisticsCondition (client2, 'transport', '# peers connected',0)) + check.add (StatisticsCondition (client2, 'core', '# neighbour entries allocated',0)) + check.add (StatisticsCondition (client2, 'core', '# peers connected',0)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',0)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',0)) + + check.run_blocking (check_timeout, success_cont, fail_cont) + + +def success_disconnect_server_cont (check): + check_disconnect_client () + + +def fail_disconnect_server_cont (check): + global success + success= False; + check.evaluate(True) + + +def check_disconnect_server (): + test.p ('Shutting down bootstrap server') + server.stop () + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client, 'core', '# peers connected',1)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) + + check.add (StatisticsCondition (client2, 'transport', '# peers connected',1)) + check.add (StatisticsCondition (client2, 'core', '# neighbour entries allocated',1)) + check.add (StatisticsCondition (client2, 'core', '# peers connected',1)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_disconnect_server_cont, fail_disconnect_server_cont) + + +def success_connect_cont (check): + check_disconnect_server () + + +def fail_connect_cont (check): + global success + success= False; + check.evaluate(True) + + +def check_connect (): + check = Check (test) + check.add (StatisticsCondition (client, 'transport', '# peers connected',2)) + check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',2)) + check.add (StatisticsCondition (client, 'core', '# peers connected',2)) + check.add (StatisticsCondition (client, 'topology', '# peers connected',2)) + check.add (StatisticsCondition (client, 'fs', '# peers connected',2)) + + check.add (StatisticsCondition (client2, 'transport', '# peers connected',2)) + check.add (StatisticsCondition (client2, 'core', '# neighbour entries allocated',2)) + check.add (StatisticsCondition (client2, 'core', '# peers connected',2)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',2)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',2)) + + check.add (StatisticsCondition (server, 'transport', '# peers connected',2)) + check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',2)) + check.add (StatisticsCondition (server, 'core', '# peers connected',2)) + check.add (StatisticsCondition (server, 'topology', '# peers connected',2)) + check.add (StatisticsCondition (server, 'fs', '# peers connected',2)) + + check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont) -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 - -if os.name == 'posix': - gnunetarm = 'gnunet-arm' -elif os.name == 'nt': - gnunetarm = 'gnunet-arm.exe' - -if os.name == "nt": - shutil.rmtree (os.path.join (os.getenv ("TEMP"), testname), True) +# +# Test execution +# +def run (): + global success + global test + global server + global client + global client2 + + success = False + + test = Test ('test_integration_disconnect', verbose) + + server = Peer(test, './confs/c_bootstrap_server.conf'); + server.start(); + + client = Peer(test, './confs/c_no_nat_client.conf'); + client.start(); + + client2 = Peer(test, './confs/c_no_nat_client_2.conf'); + client2.start(); + + if ((client.started == True) and (client2.started == True) and (server.started == True)): + test.p ('Peers started, running check') + check_connect () + + server.stop () + client.stop () + client2.stop () + + cleanup () + + if (success == False): + print ('Test failed') + return False + else: + return True + + +try: + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + client2.stop () + cleanup () +if (success == False): + sys.exit(1) else: - shutil.rmtree ("/tmp/" + testname, True) - -if verbose == True: - print "Running " + testname - + sys.exit(0) + - - -exit () -# dummy copied from fs -arm = subprocess.Popen ([gnunetarm, '-sq', '-c', 'test_gnunet_fs_ns_data.conf']) -arm.communicate () - -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")) - - 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) - - 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')) - - 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')) - -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) - else: - shutil.rmtree ("/tmp/gnunet-test-fs-py-ns", True)