aboutsummaryrefslogtreecommitdiff
path: root/src/integration-tests/test_integration_reconnect.py.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/integration-tests/test_integration_reconnect.py.in')
-rwxr-xr-xsrc/integration-tests/test_integration_reconnect.py.in113
1 files changed, 56 insertions, 57 deletions
diff --git a/src/integration-tests/test_integration_reconnect.py.in b/src/integration-tests/test_integration_reconnect.py.in
index 13179eef6..e8abacd48 100755
--- a/src/integration-tests/test_integration_reconnect.py.in
+++ b/src/integration-tests/test_integration_reconnect.py.in
@@ -11,13 +11,14 @@
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU Affero General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>. 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# 17#
18# SPDX-License-Identifier: AGPL3.0-or-later 18# SPDX-License-Identifier: AGPL3.0-or-later
19# 19#
20# 20#
21from __future__ import print_function
21import sys 22import sys
22import os 23import os
23import subprocess 24import subprocess
@@ -29,13 +30,13 @@ from gnunet_testing import Peer
29from gnunet_testing import Test 30from gnunet_testing import Test
30from gnunet_testing import Check 31from gnunet_testing import Check
31from gnunet_testing import Condition 32from gnunet_testing import Condition
32from gnunet_testing import * 33from gnunet_testing import *
33 34
34 35
35# 36#
36# This test tests if a fresh peer bootstraps from a hostlist server and then 37# 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# successfully connects to the server. When both peers are connected
38# in transport, core, topology, fs, botth peers are shutdown and restarted 39# in transport, core, topology, fs, botth peers are shutdown and restarted
39# 40#
40# Conditions for successful exit: 41# Conditions for successful exit:
41# Both peers have 1 connected peer in transport, core, topology, fs after restart 42# Both peers have 1 connected peer in transport, core, topology, fs after restart
@@ -67,68 +68,68 @@ def cleanup_onerror (function, path, excinfo):
67 68
68def cleanup (): 69def cleanup ():
69 retries = 10 70 retries = 10
70 path = os.path.join (tmp, "c_bootstrap_server") 71 path = os.path.join (tmp, "c_bootstrap_server")
71 test.p ("Removing " + path) 72 test.p ("Removing " + path)
72 while ((os.path.exists(path)) and (retries > 0)): 73 while ((os.path.exists(path)) and (retries > 0)):
73 shutil.rmtree ((path), False, cleanup_onerror) 74 shutil.rmtree ((path), False, cleanup_onerror)
74 time.sleep (1) 75 time.sleep (1)
75 retries -= 1 76 retries -= 1
76 if (os.path.exists(path)): 77 if (os.path.exists(path)):
77 test.p ("Failed to remove " + path) 78 test.p ("Failed to remove " + path)
78 79
79 80
80 retries = 10 81 retries = 10
81 path = os.path.join (tmp, "c_no_nat_client") 82 path = os.path.join (tmp, "c_no_nat_client")
82 test.p ("Removing " + path) 83 test.p ("Removing " + path)
83 while ((os.path.exists(path)) and (retries > 0)): 84 while ((os.path.exists(path)) and (retries > 0)):
84 shutil.rmtree ((path), False, cleanup_onerror) 85 shutil.rmtree ((path), False, cleanup_onerror)
85 time.sleep (1) 86 time.sleep (1)
86 retries -= 1 87 retries -= 1
87 if (os.path.exists(path)): 88 if (os.path.exists(path)):
88 test.p ("Failed to remove " + path) 89 test.p ("Failed to remove " + path)
89 90
90def success_restart_cont (check): 91def success_restart_cont (check):
91 global success 92 global success
92 print('Peers connected successfully after restart') 93 print('Peers connected successfully after restart')
93 server.stop () 94 server.stop ()
94 client.stop () 95 client.stop ()
95 success = True; 96 success = True;
96 97
97 98
98def fail_restart_cont (check): 99def fail_restart_cont (check):
99 global success 100 global success
100 success = False; 101 success = False;
101 print('Peers failed to connect after restart') 102 print('Peers failed to connect after restart')
102 check.evaluate(True) 103 check.evaluate(True)
103 104
104 105
105def success_connect_cont (check): 106def success_connect_cont (check):
106 print('Peers connected successfully') 107 print('Peers connected successfully')
107 server.stop () 108 server.stop ()
108 client.stop () 109 client.stop ()
109 110
110 time.sleep(5) 111 time.sleep(5)
111 112
112 test.p ('Restarting client & server') 113 test.p ('Restarting client & server')
113 server.start () 114 server.start ()
114 client.start () 115 client.start ()
115 116
116 check = Check (test) 117 check = Check (test)
117 check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) 118 check.add (StatisticsCondition (client, 'transport', '# peers connected',1))
118 check.add (StatisticsCondition (client, 'core', '# peers connected',1)) 119 check.add (StatisticsCondition (client, 'core', '# peers connected',1))
119 check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) 120 check.add (StatisticsCondition (client, 'topology', '# peers connected',1))
120 check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) 121 check.add (StatisticsCondition (client, 'fs', '# peers connected',1))
121 122
122 check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) 123 check.add (StatisticsCondition (server, 'transport', '# peers connected',1))
123 check.add (StatisticsCondition (server, 'core', '# peers connected',1)) 124 check.add (StatisticsCondition (server, 'core', '# peers connected',1))
124 check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) 125 check.add (StatisticsCondition (server, 'topology', '# peers connected',1))
125 check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) 126 check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
126 127
127 check.run_blocking (check_timeout, success_restart_cont, fail_restart_cont) 128 check.run_blocking (check_timeout, success_restart_cont, fail_restart_cont)
128 129
129 130
130def fail_connect_cont (check): 131def fail_connect_cont (check):
131 global success 132 global success
132 success= False; 133 success= False;
133 print('Peers failed to connect') 134 print('Peers failed to connect')
134 check.evaluate(True) 135 check.evaluate(True)
@@ -140,28 +141,28 @@ def check_connect ():
140 check.add (StatisticsCondition (client, 'core', '# peers connected',1)) 141 check.add (StatisticsCondition (client, 'core', '# peers connected',1))
141 check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) 142 check.add (StatisticsCondition (client, 'topology', '# peers connected',1))
142 check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) 143 check.add (StatisticsCondition (client, 'fs', '# peers connected',1))
143 144
144 check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) 145 check.add (StatisticsCondition (server, 'transport', '# peers connected',1))
145 check.add (StatisticsCondition (server, 'core', '# peers connected',1)) 146 check.add (StatisticsCondition (server, 'core', '# peers connected',1))
146 check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) 147 check.add (StatisticsCondition (server, 'topology', '# peers connected',1))
147 check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) 148 check.add (StatisticsCondition (server, 'fs', '# peers connected',1))
148 149
149 check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont) 150 check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont)
150 151
151# 152#
152# Test execution 153# Test execution
153# 154#
154 155
155 156
156def SigHandler(signum = None, frame = None): 157def SigHandler(signum = None, frame = None):
157 global success 158 global success
158 global server 159 global server
159 global client 160 global client
160 161
161 print('Test was aborted!') 162 print('Test was aborted!')
162 if (None != server): 163 if (None != server):
163 server.stop () 164 server.stop ()
164 if (None != client): 165 if (None != client):
165 client.stop () 166 client.stop ()
166 cleanup () 167 cleanup ()
167 sys.exit(success) 168 sys.exit(success)
@@ -171,68 +172,66 @@ def run ():
171 global test 172 global test
172 global server 173 global server
173 global client 174 global client
174 175
175 success = False 176 success = False
176 server = None 177 server = None
177 client = None 178 client = None
178 179
179 for sig in signals: 180 for sig in signals:
180 signal.signal(sig, SigHandler) 181 signal.signal(sig, SigHandler)
181 182
182 183
183 test = Test ('test_integration_disconnect', verbose) 184 test = Test ('test_integration_disconnect', verbose)
184 cleanup () 185 cleanup ()
185 server = Peer(test, './confs/c_bootstrap_server.conf'); 186 server = Peer(test, './confs/c_bootstrap_server.conf');
186 server.start(); 187 server.start();
187 188
188 client = Peer(test, './confs/c_no_nat_client.conf'); 189 client = Peer(test, './confs/c_no_nat_client.conf');
189 client.start(); 190 client.start();
190 191
191 192
192 if (True != server.start()): 193 if (True != server.start()):
193 print('Failed to start server') 194 print('Failed to start server')
194 if (None != server): 195 if (None != server):
195 server.stop () 196 server.stop ()
196 if (None != server): 197 if (None != server):
197 client.stop () 198 client.stop ()
198 cleanup () 199 cleanup ()
199 sys.exit(success) 200 sys.exit(success)
200 201
201 # Give the server time to start 202 # Give the server time to start
202 time.sleep(5) 203 time.sleep(5)
203 204
204 if (True != client.start()): 205 if (True != client.start()):
205 print('Failed to start client') 206 print('Failed to start client')
206 if (None != server): 207 if (None != server):
207 server.stop () 208 server.stop ()
208 if (None != server): 209 if (None != server):
209 client.stop () 210 client.stop ()
210 cleanup () 211 cleanup ()
211 sys.exit(success) 212 sys.exit(success)
212 213
213 check_connect () 214 check_connect ()
214 215
215 server.stop () 216 server.stop ()
216 client.stop () 217 client.stop ()
217 cleanup () 218 cleanup ()
218 219
219 if (success == False): 220 if (success == False):
220 print ('Test failed') 221 print ('Test failed')
221 return True 222 return True
222 else: 223 else:
223 return False 224 return False
224 225
225 226
226try: 227try:
227 run () 228 run ()
228except (KeyboardInterrupt, SystemExit): 229except (KeyboardInterrupt, SystemExit):
229 print('Test interrupted') 230 print('Test interrupted')
230 server.stop () 231 server.stop ()
231 client.stop () 232 client.stop ()
232 cleanup () 233 cleanup ()
233if (success == False): 234if (success == False):
234 sys.exit(1) 235 sys.exit(1)
235else: 236else:
236 sys.exit(0) 237 sys.exit(0)
237
238