# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Affero General Public License for more details.
-#
+#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# SPDX-License-Identifier: AGPL3.0-or-later
#
-#
+#
from __future__ import print_function
import sys
import os
from gnunet_testing import Test
from gnunet_testing import Check
from gnunet_testing import Condition
-from gnunet_testing import *
-
+from gnunet_testing import *
+
#
# This test tests if a fresh peer bootstraps from a hostlist server and then
# successfully connects to the server. When both peers are connected
-# in transport, core, topology, fs, botth peers are shutdown and restarted
+# in transport, core, topology, fs, botth peers are shutdown and restarted
#
# Conditions for successful exit:
# Both peers have 1 connected peer in transport, core, topology, fs after restart
def cleanup ():
retries = 10
- path = os.path.join (tmp, "c_bootstrap_server")
- test.p ("Removing " + path)
+ path = os.path.join (tmp, "c_bootstrap_server")
+ test.p ("Removing " + path)
while ((os.path.exists(path)) and (retries > 0)):
shutil.rmtree ((path), False, cleanup_onerror)
time.sleep (1)
retries -= 1
if (os.path.exists(path)):
- test.p ("Failed to remove " + path)
-
-
+ test.p ("Failed to remove " + path)
+
+
retries = 10
- path = os.path.join (tmp, "c_no_nat_client")
- test.p ("Removing " + path)
+ 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, cleanup_onerror)
time.sleep (1)
retries -= 1
if (os.path.exists(path)):
- test.p ("Failed to remove " + path)
+ test.p ("Failed to remove " + path)
def success_restart_cont (check):
- global success
+ global success
print('Peers connected successfully after restart')
server.stop ()
client.stop ()
- success = True;
+ success = True;
-def fail_restart_cont (check):
- global success
+def fail_restart_cont (check):
+ global success
success = False;
print('Peers failed to connect after restart')
- check.evaluate(True)
-
+ check.evaluate(True)
+
def success_connect_cont (check):
print('Peers connected successfully')
server.stop ()
client.stop ()
-
+
time.sleep(5)
-
+
test.p ('Restarting client & server')
server.start ()
client.start ()
-
+
check = Check (test)
check.add (StatisticsCondition (client, 'transport', '# peers connected',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 (server, 'transport', '# peers connected',1))
check.add (StatisticsCondition (server, 'core', '# peers connected',1))
check.add (StatisticsCondition (server, 'topology', '# peers connected',1))
- check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
-
+ check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
+
check.run_blocking (check_timeout, success_restart_cont, fail_restart_cont)
-def fail_connect_cont (check):
- global success
+def fail_connect_cont (check):
+ global success
success= False;
print('Peers failed to connect')
check.evaluate(True)
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 (server, 'transport', '# peers connected',1))
check.add (StatisticsCondition (server, 'core', '# peers connected',1))
check.add (StatisticsCondition (server, 'topology', '# peers connected',1))
- check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
-
+ check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
+
check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont)
-#
+#
# Test execution
-#
+#
def SigHandler(signum = None, frame = None):
- global success
+ global success
global server
- global client
-
+ global client
+
print('Test was aborted!')
if (None != server):
server.stop ()
- if (None != client):
+ if (None != client):
client.stop ()
cleanup ()
sys.exit(success)
global test
global server
global client
-
+
success = False
server = None
- client = None
+ client = None
for sig in signals:
signal.signal(sig, SigHandler)
-
-
+
+
test = Test ('test_integration_disconnect', 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 ()
- if (None != server):
+ if (None != server):
client.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 != server):
+ if (None != server):
client.stop ()
cleanup ()
sys.exit(success)
-
+
check_connect ()
-
- server.stop ()
+
+ server.stop ()
client.stop ()
cleanup ()
-
+
if (success == False):
print ('Test failed')
return True
else:
return False
-
+
try:
run ()
-except (KeyboardInterrupt, SystemExit):
+except (KeyboardInterrupt, SystemExit):
print('Test interrupted')
server.stop ()
client.stop ()
cleanup ()
if (success == False):
- sys.exit(1)
+ sys.exit(1)
else:
- sys.exit(0)
-
-
+ sys.exit(0)