X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fintegration-tests%2Ftest_integration_disconnect.py.in;h=f2ad0ff9e8c7c2070ba2208b67d3cc2a9b0405d7;hb=7348fad86391b913ecc41f986066f260efb04633;hp=f708aee1da54ce963050f8a67524b54ee353e82b;hpb=4997b98b69d53d14085f0da4d7d4b002f3d59100;p=oweals%2Fgnunet.git diff --git a/src/integration-tests/test_integration_disconnect.py.in b/src/integration-tests/test_integration_disconnect.py.in index f708aee1d..f2ad0ff9e 100755 --- a/src/integration-tests/test_integration_disconnect.py.in +++ b/src/integration-tests/test_integration_disconnect.py.in @@ -14,17 +14,17 @@ # # You should have received a copy of the GNU General Public License # along with GNUnet; see the file COPYING. If not, write to the -# Free Software Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. # # import sys +import signal import os import subprocess import re import shutil import time -import pexpect from gnunet_testing import Peer from gnunet_testing import Test from gnunet_testing import Check @@ -38,119 +38,174 @@ from gnunet_testing import * # in transport, core, topology, fs, the server is shutdown # # Conditions for successful exit: -# Both peers have 0 connected peer in transport, core, topology, fs +# Client peer has 0 connected peer in transport, core, topology, dht, fs #definitions testname = "test_integration_disconnect" verbose = True -check_timeout = 30 - +check_timeout = 180 + +if os.name == "nt": + tmp = os.getenv ("TEMP") + signals = [signal.SIGTERM, signal.SIGINT] +else: + tmp = "/tmp" + signals = [signal.SIGTERM, signal.SIGINT, signal.SIGHUP, signal.SIGQUIT] + +def cleanup_onerror (function, path, excinfo): + import stat + if not os.path.exists (path): + pass + elif not os.access(path, os.W_OK): + # Is the error an access error ? + os.chmod (path, stat.S_IWUSR) + function (path) + else: + raise 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) - else: - shutil.rmtree ("/tmp/c_bootstrap_server/", True) - shutil.rmtree ("/tmp/c_no_nat_client/", True) + shutil.rmtree (os.path.join (tmp, "c_bootstrap_server"), False, cleanup_onerror) + shutil.rmtree (os.path.join (tmp, "c_no_nat_client"), False, cleanup_onerror) def success_disconnect_cont (check): - global success - success = True; + print 'Peers disconnected successfully' + global success + success = True; def fail_disconnect_cont (check): - global success - success = False; - check.eval(True) + global success + success = False; + print 'Peers failed to disconnect' + check.evaluate(True) - def check_disconnect (): test.p ('Shutting down bootstrap server') server.stop () check = Check (test) check.add (StatisticsCondition (client, 'transport', '# peers connected',0)) check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',0)) - check.add (StatisticsCondition (client, 'core', '# entries in session map',0)) + check.add (StatisticsCondition (client, 'core', '# peers connected',0)) check.add (StatisticsCondition (client, 'topology', '# peers connected',0)) + check.add (StatisticsCondition (client, 'dht', '# peers connected',0)) check.add (StatisticsCondition (client, 'fs', '# peers connected',0)) check.run_blocking (check_timeout, success_disconnect_cont, fail_disconnect_cont) def success_connect_cont (check): - check_disconnect () + print 'Peers connected successfully' + check_disconnect () def fail_connect_cont (check): - global success - success= False; - check.eval(True) + global success + success= False + print 'Peers failed to connected!' + check.evaluate(True) def check_connect (): 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', '# entries in session map',1)) + check.add (StatisticsCondition (client, 'core', '# peers connected',1)) check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client, 'dht', '# peers connected',1)) check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1)) - check.add (StatisticsCondition (server, 'core', '# entries in session map',1)) + check.add (StatisticsCondition (server, 'core', '# peers connected',1)) check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (server, 'dht', '# peers connected',1)) check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) - check.run_blocking (10, success_connect_cont, fail_connect_cont) + check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont) # # Test execution # -# -# Test execution -# +def SigHandler(signum = None, frame = None): + global success + global server + global client + + print 'Test was aborted!' + if (None != server): + server.stop () + if (None != client): + client.stop () + cleanup () + sys.exit(success) + def run (): + global success global test global server - global client - global success + global client - success = False + server = None + client = None + success = False - test = Test ('test_integration_disconnect', verbose) + for sig in signals: + signal.signal(sig, SigHandler) + + test = Test ('test_integration_bootstrap_and_connect.py', verbose) + cleanup () server = Peer(test, './confs/c_bootstrap_server.conf'); - server.start(); - client = Peer(test, './confs/c_no_nat_client.conf'); - client.start(); + if (True != server.start()): + print 'Failed to start server' + if (None != server): + server.stop () + cleanup () + sys.exit(success) + + # Give the server time to start + time.sleep(5) + + if (True != client.start()): + print 'Failed to start client' + if (None != server): + server.stop () + if (None != client): + client.stop () + cleanup () + sys.exit(success) if ((client.started == True) and (server.started == True)): - test.p ('Peers started, running check') - check_connect () - - server.stop () + test.p ('Peers started, running check') + time.sleep(5) + check_connect () + server.stop () client.stop () cleanup () if (success == False): print ('Test failed') - return True + return False else: - return False + return True - try: - run () + run () except (KeyboardInterrupt, SystemExit): - print 'Test interrupted' - server.stop () - client.stop () - cleanup () -sys.exit(success) + print 'Test interrupted' + server.stop () + client.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) + + + \ No newline at end of file