+++ /dev/null
-#!@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 (1 bootstrap server, 1 not nat'ed peer, 1 nat'ed peer)
-# 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_nat"
-verbose = False
-check_timeout = 180
-
-
-def cleanup ():
- retries = 10
- path = os.path.join (tmp, "c_bootstrap_server")
- test.p ("Removing " + path)
- while ((os.path.exists(path)) and (retries > 0)):
- shutil.rmtree ((path), False)
- time.sleep (1)
- retries -= 1
- if (os.path.exists(path)):
- test.p ("Failed to remove " + path)
-
- retries = 10
- path = os.path.join (tmp, "c_no_nat_client")
- test.p ("Removing " + path)
- while ((os.path.exists(path)) and (retries > 0)):
- shutil.rmtree ((path), False)
- time.sleep (1)
- retries -= 1
- if (os.path.exists(path)):
- test.p ("Failed to remove " + path)
- retries = 10
- path = os.path.join (tmp, "c_nat_client")
- test.p ("Removing " + path)
- while ((os.path.exists(path)) and (retries > 0)):
- shutil.rmtree ((path), False)
- time.sleep (1)
- retries -= 1
- if (os.path.exists(path)):
- test.p ("Failed to remove " + path)
-
-
-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(False)
-
-
-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(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', '# 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_nat_client.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)
-
-