aboutsummaryrefslogtreecommitdiff
path: root/src/integration-tests/test_integration_disconnect_nat.py.in
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2013-12-17 17:13:47 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2013-12-17 17:13:47 +0000
commit949815f37626ab2e14f1614575ec051ea85839f9 (patch)
treea5b935a8837b5055ae8954984605409b2871afd8 /src/integration-tests/test_integration_disconnect_nat.py.in
parentf57cbb13cb69d27ca504964449818c3530d37029 (diff)
downloadgnunet-949815f37626ab2e14f1614575ec051ea85839f9.tar.gz
gnunet-949815f37626ab2e14f1614575ec051ea85839f9.zip
disconnect test
Diffstat (limited to 'src/integration-tests/test_integration_disconnect_nat.py.in')
-rwxr-xr-xsrc/integration-tests/test_integration_disconnect_nat.py.in198
1 files changed, 198 insertions, 0 deletions
diff --git a/src/integration-tests/test_integration_disconnect_nat.py.in b/src/integration-tests/test_integration_disconnect_nat.py.in
new file mode 100755
index 000000000..350bfbe07
--- /dev/null
+++ b/src/integration-tests/test_integration_disconnect_nat.py.in
@@ -0,0 +1,198 @@
1#!@PYTHON@
2# This file is part of GNUnet.
3# (C) 2010 Christian Grothoff (and other contributing authors)
4#
5# GNUnet is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published
7# by the Free Software Foundation; either version 2, or (at your
8# option) any later version.
9#
10# GNUnet is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with GNUnet; see the file COPYING. If not, write to the
17# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18# Boston, MA 02111-1307, USA.
19#
20#
21import sys
22import signal
23import os
24import subprocess
25import re
26import shutil
27import time
28from gnunet_testing import Peer
29from gnunet_testing import Test
30from gnunet_testing import Check
31from gnunet_testing import Condition
32from gnunet_testing import *
33
34
35#
36# This test tests if a fresh peer bootstraps from a hostlist server and then
37# successfully connects to the server. When both peers are connected
38# in transport, core, topology, fs, the server is shutdown
39#
40# Conditions for successful exit:
41# Client peer has 0 connected peer in transport, core, topology, dht, fs
42
43#definitions
44
45testname = "test_integration_disconnect"
46verbose = True
47check_timeout = 180
48
49if os.name == "nt":
50 tmp = os.getenv ("TEMP")
51else:
52 tmp = "/tmp"
53
54def cleanup ():
55 shutil.rmtree (os.path.join (tmp, "c_bootstrap_server"), True)
56 shutil.rmtree (os.path.join (tmp, "c_nat_client"), True)
57
58
59def success_disconnect_cont (check):
60 print 'Peers disconnected successfully'
61 global success
62 success = True;
63
64
65def fail_disconnect_cont (check):
66 global success
67 success = False;
68 print 'Peers failed to disconnect'
69 check.evaluate(True)
70
71def check_disconnect ():
72 global server
73 global nat_client
74 test.p ('Shutting down nat client')
75 nat_client.stop ()
76 check = Check (test)
77 check.add (StatisticsCondition (server, 'transport', '# peers connected',0))
78 check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',0))
79 check.add (StatisticsCondition (server, 'core', '# peers connected',0))
80 check.add (StatisticsCondition (server, 'topology', '# peers connected',0))
81 check.add (StatisticsCondition (server, 'dht', '# peers connected',0))
82 check.add (StatisticsCondition (server, 'fs', '# peers connected',0))
83 check.run_blocking (check_timeout, success_disconnect_cont, fail_disconnect_cont)
84
85
86def success_connect_cont (check):
87 print 'Peers connected successfully'
88 check_disconnect ()
89
90
91def fail_connect_cont (check):
92 global success
93 success= False
94 print 'Peers failed to connected!'
95 check.evaluate(True)
96
97
98def check_connect ():
99 global server
100 global nat_client
101 check = Check (test)
102 check.add (StatisticsCondition (nat_client, 'transport', '# peers connected',1))
103 check.add (StatisticsCondition (nat_client, 'core', '# neighbour entries allocated',1))
104 check.add (StatisticsCondition (nat_client, 'core', '# peers connected',1))
105 check.add (StatisticsCondition (nat_client, 'topology', '# peers connected',1))
106 check.add (StatisticsCondition (nat_client, 'dht', '# peers connected',1))
107 check.add (StatisticsCondition (nat_client, 'fs', '# peers connected',1))
108
109 check.add (StatisticsCondition (server, 'transport', '# peers connected',1))
110 check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1))
111 check.add (StatisticsCondition (server, 'core', '# peers connected',1))
112 check.add (StatisticsCondition (server, 'topology', '# peers connected',1))
113 check.add (StatisticsCondition (server, 'dht', '# peers connected',1))
114 check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
115
116 check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont)
117
118#
119# Test execution
120#
121
122def SigHandler(signum = None, frame = None):
123 global success
124 global server
125 global nat_client
126
127 print 'Test was aborted!'
128 if (None != server):
129 server.stop ()
130 if (None != nat_client):
131 nat_client.stop ()
132 cleanup ()
133 sys.exit(success)
134
135def run ():
136 global success
137 global test
138 global server
139 global nat_client
140
141 server = None
142 nat_client = None
143 success = False
144
145 for sig in [signal.SIGTERM, signal.SIGINT, signal.SIGHUP, signal.SIGQUIT]:
146 signal.signal(sig, SigHandler)
147
148 test = Test ('test_integration_bootstrap_and_connect.py', verbose)
149 cleanup ()
150
151 server = Peer(test, './confs/c_bootstrap_server.conf');
152 nat_client = Peer(test, './confs/c_nat_client.conf');
153
154 if (True != server.start()):
155 print 'Failed to start server'
156 if (None != server):
157 server.stop ()
158 cleanup ()
159 sys.exit(success)
160 if (True != nat_client.start()):
161 print 'Failed to start nat_client'
162 if (None != server):
163 server.stop ()
164 if (None != nat_client):
165 nat_client.stop ()
166 cleanup ()
167 sys.exit(success)
168
169 if ((nat_client.started == True) and (server.started == True)):
170 test.p ('Peers started, running check')
171 time.sleep(5)
172 check_connect ()
173 server.stop ()
174 nat_client.stop ()
175
176 cleanup ()
177
178 if (success == False):
179 print ('Test failed')
180 return False
181 else:
182 return True
183
184try:
185 run ()
186except (KeyboardInterrupt, SystemExit):
187 print 'Test interrupted'
188 server.stop ()
189 nat_client.stop ()
190 cleanup ()
191if (success == False):
192 sys.exit(1)
193else:
194 sys.exit(0)
195
196
197
198 \ No newline at end of file