From b8481b9c30e15d0adb94619b72a4926506b41f53 Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Tue, 3 Apr 2012 15:09:37 +0000 Subject: - new test: connect on restart without bootstrap server --- src/integration-tests/Makefile.am | 8 +- .../test_integration_connect_on_restart.py.in | 180 +++++++++++++++++++++ .../test_integration_connection_values_tcp.py.in | 2 +- ...est_integration_connection_values_tcp_udp.py.in | 2 +- ...ntegration_connection_values_tcp_udp_http.py.in | 2 +- 5 files changed, 190 insertions(+), 4 deletions(-) create mode 100755 src/integration-tests/test_integration_connect_on_restart.py.in (limited to 'src/integration-tests') diff --git a/src/integration-tests/Makefile.am b/src/integration-tests/Makefile.am index 93608824d..8adbf2bcd 100644 --- a/src/integration-tests/Makefile.am +++ b/src/integration-tests/Makefile.am @@ -27,7 +27,8 @@ check_SCRIPTS = \ test_integration_bootstrap_and_connect_and_disconnect_nat.py \ test_integration_restart.py \ test_integration_clique.py \ - test_integration_clique_nat.py + test_integration_clique_nat.py \ + test_integration_connect_on_restart.py endif # test_integration_disconnect.py @@ -83,6 +84,10 @@ test_integration_clique.py: test_integration_clique.py.in Makefile test_integration_clique_nat.py: test_integration_clique_nat.py.in Makefile $(do_subst) < $(srcdir)/test_integration_clique_nat.py.in > test_integration_clique_nat.py chmod +x test_integration_clique_nat.py + +test_integration_connect_on_restart.py: test_integration_connect_on_restart.py.in Makefile + $(do_subst) < $(srcdir)/test_integration_connect_on_restart.py.in > test_integration_connect_on_restart.py + chmod +x test_integration_connect_on_restart.py test_integration_connection_values_tcp.py: test_integration_connection_values_tcp.py.in Makefile $(do_subst) < $(srcdir)/test_integration_connection_values_tcp.py.in > test_integration_connection_values_tcp.py @@ -105,6 +110,7 @@ EXTRA_DIST = \ test_integration_bootstrap_and_connect.py.in \ test_integration_bootstrap_and_connect_and_disconnect.py.in \ test_integration_bootstrap_and_connect_and_disconnect_nat.py.in \ + test_integration_connect_on_restart.py.in \ test_integration_disconnect.py.in \ test_integration_restart.py.in \ test_integration_clique.py.in \ diff --git a/src/integration-tests/test_integration_connect_on_restart.py.in b/src/integration-tests/test_integration_connect_on_restart.py.in new file mode 100755 index 000000000..ce460ae60 --- /dev/null +++ b/src/integration-tests/test_integration_connect_on_restart.py.in @@ -0,0 +1,180 @@ +#!@PYTHON@ +# This file is part of GNUnet. +# (C) 2010 Christian Grothoff (and other contributing authors) +# +# GNUnet is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published +# by the Free Software Foundation; either version 2, or (at your +# option) any later version. +# +# GNUnet is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# 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. +# +# +# +# This test starts 3 peers and expects bootstrap and a connected clique +# After a successful clique it shuts down all peers and starts the non-bootstrap +# peers, expecting them to reconnect +# +# 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 +from gnunet_testing import Peer +from gnunet_testing import Test +from gnunet_testing import Check +from gnunet_testing import Condition +from gnunet_testing import * + + +#definitions + +testname = "test_integration_clique" +verbose = True +check_timeout = 30 + + +def cleanup (): + if os.name == "nt": + shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_bootstrap_server"), 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) + + +def success_cont (check): + global success + success = True; + check.evaluate(True) + +def fail_cont (check): + global success + success = False; + check.evaluate(False) + + +def success_connect_cont (check): + check.evaluate(True) + print "Connected clique, shutdown" + server.stop () + client.stop () + client2.stop () + time.sleep (3) + client.start () + client2.start () + + 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, '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', '# entries in session map',1)) + check.add (StatisticsCondition (client2, 'topology', '# peers connected',1)) + check.add (StatisticsCondition (client2, 'fs', '# peers connected',1)) + + check.run_blocking (check_timeout, success_cont, fail_cont) + + +def fail_connect_cont (check): + global success + print "Failed to connect clique, shutdown" + success = False; + check.evaluate(False) + + +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', '# entries in session map',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', '# entries in session map',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', '# entries in session map',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: + run () +except (KeyboardInterrupt, SystemExit): + print 'Test interrupted' + server.stop () + client.stop () + client2.stop () + cleanup () +if (success == False): + sys.exit(1) +else: + sys.exit(0) + + diff --git a/src/integration-tests/test_integration_connection_values_tcp.py.in b/src/integration-tests/test_integration_connection_values_tcp.py.in index 6c0072a3e..bde137275 100755 --- a/src/integration-tests/test_integration_connection_values_tcp.py.in +++ b/src/integration-tests/test_integration_connection_values_tcp.py.in @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!@PYTHON@ # This file is part of GNUnet. # (C) 2010 Christian Grothoff (and other contributing authors) # diff --git a/src/integration-tests/test_integration_connection_values_tcp_udp.py.in b/src/integration-tests/test_integration_connection_values_tcp_udp.py.in index 905ea9b1b..4f492547e 100755 --- a/src/integration-tests/test_integration_connection_values_tcp_udp.py.in +++ b/src/integration-tests/test_integration_connection_values_tcp_udp.py.in @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!@PYTHON@ # This file is part of GNUnet. # (C) 2010 Christian Grothoff (and other contributing authors) # diff --git a/src/integration-tests/test_integration_connection_values_tcp_udp_http.py.in b/src/integration-tests/test_integration_connection_values_tcp_udp_http.py.in index 0916f8540..f51821685 100755 --- a/src/integration-tests/test_integration_connection_values_tcp_udp_http.py.in +++ b/src/integration-tests/test_integration_connection_values_tcp_udp_http.py.in @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!@PYTHON@ # This file is part of GNUnet. # (C) 2010 Christian Grothoff (and other contributing authors) # -- cgit v1.2.3