X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fintegration-tests%2Ftest_integration_clique.py.in;h=6c7a5d770e9c0a1dd4e1ffd16192e6457309ce6b;hb=d0b4927e6ab7e8b9874dd7807055e77fb4c5163f;hp=1f1cf1f1d2ec5a5fce5039d3fbf7d4add2350a65;hpb=a02a9b0b8fed4032d4fc9f59688ccc92e1a4ce94;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 1f1cf1f1d..6c7a5d770 100755 --- a/src/integration-tests/test_integration_clique.py.in +++ b/src/integration-tests/test_integration_clique.py.in @@ -17,69 +17,179 @@ # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # -# Testcase for file-sharing command-line tools (namespaces) +# +# +# 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" -srcdir = "../.." -gnunet_pyexpect_dir = os.path.join (srcdir, "contrib") -if gnunet_pyexpect_dir not in sys.path: - sys.path.append (gnunet_pyexpect_dir) +#definitions -from gnunet_pyexpect import pexpect +testname = "test_integration_clique" +verbose = True +check_timeout = 180 -exit () +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) -# dummy copied from fs -if os.name == 'posix': - pseudonym = 'gnunet-pseudonym' - gnunetarm = 'gnunet-arm' - publish = 'gnunet-publish' - unindex = 'gnunet-unindex' - search = 'gnunet-search' -elif os.name == 'nt': - pseudonym = 'gnunet-pseudonym.exe' - gnunetarm = 'gnunet-arm.exe' - publish = 'gnunet-publish.exe' - unindex = 'gnunet-unindex.exe' - search = 'gnunet-search.exe' +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 () -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) -arm = subprocess.Popen ([gnunetarm, '-sq', '-c', 'test_gnunet_fs_ns_data.conf']) -arm.communicate () +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) + +# +# 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: - 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) + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + client2.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) + +