summaryrefslogtreecommitdiff
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.in272
1 files changed, 136 insertions, 136 deletions
diff --git a/src/integration-tests/test_integration_reconnect.py.in b/src/integration-tests/test_integration_reconnect.py.in
index 8c4193680..5bffb72e3 100755
--- a/src/integration-tests/test_integration_reconnect.py.in
+++ b/src/integration-tests/test_integration_reconnect.py.in
@@ -32,7 +32,6 @@ from gnunet_testing import Check
32from gnunet_testing import Condition 32from gnunet_testing import Condition
33from gnunet_testing import * 33from gnunet_testing import *
34 34
35
36# 35#
37# This test tests if a fresh peer bootstraps from a hostlist server and then 36# This test tests if a fresh peer bootstraps from a hostlist server and then
38# successfully connects to the server. When both peers are connected 37# successfully connects to the server. When both peers are connected
@@ -43,195 +42,196 @@ from gnunet_testing import *
43 42
44#definitions 43#definitions
45 44
46
47testname = "test_integration_restart" 45testname = "test_integration_restart"
48verbose = True 46verbose = True
49check_timeout = 180 47check_timeout = 180
50 48
51if os.name == "nt": 49if os.name == "nt":
52 tmp = os.getenv ("TEMP") 50 tmp = os.getenv("TEMP")
53 signals = [signal.SIGTERM, signal.SIGINT] 51 signals = [signal.SIGTERM, signal.SIGINT]
54else: 52else:
55 tmp = "/tmp" 53 tmp = "/tmp"
56 signals = [signal.SIGTERM, signal.SIGINT, signal.SIGHUP, signal.SIGQUIT] 54 signals = [signal.SIGTERM, signal.SIGINT, signal.SIGHUP, signal.SIGQUIT]
57 55
58def cleanup_onerror (function, path, excinfo): 56
59 import stat 57def cleanup_onerror(function, path, excinfo):
60 if not os.path.exists (path): 58 import stat
61 pass 59 if not os.path.exists(path):
62 elif not os.access(path, os.W_OK): 60 pass
63 # Is the error an access error ? 61 elif not os.access(path, os.W_OK):
64 os.chmod (path, stat.S_IWUSR) 62 # Is the error an access error ?
65 function (path) 63 os.chmod(path, stat.S_IWUSR)
66 else: 64 function(path)
67 raise 65 else:
68 66 raise
69def cleanup (): 67
68
69def cleanup():
70 retries = 10 70 retries = 10
71 path = os.path.join (tmp, "c_bootstrap_server") 71 path = os.path.join(tmp, "c_bootstrap_server")
72 test.p ("Removing " + path) 72 test.p("Removing " + path)
73 while ((os.path.exists(path)) and (retries > 0)): 73 while ((os.path.exists(path)) and (retries > 0)):
74 shutil.rmtree ((path), False, cleanup_onerror) 74 shutil.rmtree((path), False, cleanup_onerror)
75 time.sleep (1) 75 time.sleep(1)
76 retries -= 1 76 retries -= 1
77 if (os.path.exists(path)): 77 if (os.path.exists(path)):
78 test.p ("Failed to remove " + path) 78 test.p("Failed to remove " + path)
79
80 79
81 retries = 10 80 retries = 10
82 path = os.path.join (tmp, "c_no_nat_client") 81 path = os.path.join(tmp, "c_no_nat_client")
83 test.p ("Removing " + path) 82 test.p("Removing " + path)
84 while ((os.path.exists(path)) and (retries > 0)): 83 while ((os.path.exists(path)) and (retries > 0)):
85 shutil.rmtree ((path), False, cleanup_onerror) 84 shutil.rmtree((path), False, cleanup_onerror)
86 time.sleep (1) 85 time.sleep(1)
87 retries -= 1 86 retries -= 1
88 if (os.path.exists(path)): 87 if (os.path.exists(path)):
89 test.p ("Failed to remove " + path) 88 test.p("Failed to remove " + path)
89
90 90
91def success_restart_cont (check): 91def success_restart_cont(check):
92 global success 92 global success
93 print('Peers connected successfully after restart') 93 print('Peers connected successfully after restart')
94 server.stop () 94 server.stop()
95 client.stop () 95 client.stop()
96 success = True; 96 success = True
97 97
98 98
99def fail_restart_cont (check): 99def fail_restart_cont(check):
100 global success 100 global success
101 success = False; 101 success = False
102 print('Peers failed to connect after restart') 102 print('Peers failed to connect after restart')
103 check.evaluate(True) 103 check.evaluate(True)
104 104
105 105
106def success_connect_cont (check): 106def success_connect_cont(check):
107 print('Peers connected successfully') 107 print('Peers connected successfully')
108 server.stop () 108 server.stop()
109 client.stop () 109 client.stop()
110 110
111 time.sleep(5) 111 time.sleep(5)
112 112
113 test.p ('Restarting client & server') 113 test.p('Restarting client & server')
114 server.start () 114 server.start()
115 client.start () 115 client.start()
116 116
117 check = Check (test) 117 check = Check(test)
118 check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) 118 check.add(StatisticsCondition(client, 'transport', '# peers connected', 1))
119 check.add (StatisticsCondition (client, 'core', '# peers connected',1)) 119 check.add(StatisticsCondition(client, 'core', '# peers connected', 1))
120 check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) 120 check.add(StatisticsCondition(client, 'topology', '# peers connected', 1))
121 check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) 121 check.add(StatisticsCondition(client, 'fs', '# peers connected', 1))
122 122
123 check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) 123 check.add(StatisticsCondition(server, 'transport', '# peers connected', 1))
124 check.add (StatisticsCondition (server, 'core', '# peers connected',1)) 124 check.add(StatisticsCondition(server, 'core', '# peers connected', 1))
125 check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) 125 check.add(StatisticsCondition(server, 'topology', '# peers connected', 1))
126 check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) 126 check.add(StatisticsCondition(server, 'fs', '# peers connected', 1))
127 127
128 check.run_blocking (check_timeout, success_restart_cont, fail_restart_cont) 128 check.run_blocking(check_timeout, success_restart_cont, fail_restart_cont)
129 129
130 130
131def fail_connect_cont (check): 131def fail_connect_cont(check):
132 global success 132 global success
133 success= False; 133 success = False
134 print('Peers failed to connect') 134 print('Peers failed to connect')
135 check.evaluate(True) 135 check.evaluate(True)
136 136
137 137
138def check_connect (): 138def check_connect():
139 check = Check (test) 139 check = Check(test)
140 check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) 140 check.add(StatisticsCondition(client, 'transport', '# peers connected', 1))
141 check.add (StatisticsCondition (client, 'core', '# peers connected',1)) 141 check.add(StatisticsCondition(client, 'core', '# peers connected', 1))
142 check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) 142 check.add(StatisticsCondition(client, 'topology', '# peers connected', 1))
143 check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) 143 check.add(StatisticsCondition(client, 'fs', '# peers connected', 1))
144 144
145 check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) 145 check.add(StatisticsCondition(server, 'transport', '# peers connected', 1))
146 check.add (StatisticsCondition (server, 'core', '# peers connected',1)) 146 check.add(StatisticsCondition(server, 'core', '# peers connected', 1))
147 check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) 147 check.add(StatisticsCondition(server, 'topology', '# peers connected', 1))
148 check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) 148 check.add(StatisticsCondition(server, 'fs', '# peers connected', 1))
149
150 check.run_blocking(check_timeout, success_connect_cont, fail_connect_cont)
149 151
150 check.run_blocking (check_timeout, success_connect_cont, fail_connect_cont)
151 152
152# 153#
153# Test execution 154# Test execution
154# 155#
155 156
156 157
157def SigHandler(signum = None, frame = None): 158def SigHandler(signum=None, frame=None):
158 global success 159 global success
159 global server 160 global server
160 global client 161 global client
161
162 print('Test was aborted!')
163 if (None != server):
164 server.stop ()
165 if (None != client):
166 client.stop ()
167 cleanup ()
168 sys.exit(success)
169 162
170def run (): 163 print('Test was aborted!')
171 global success 164 if (None != server):
172 global test 165 server.stop()
173 global server 166 if (None != client):
174 global client 167 client.stop()
168 cleanup()
169 sys.exit(success)
175 170
176 success = False
177 server = None
178 client = None
179 171
180 for sig in signals: 172def run():
181 signal.signal(sig, SigHandler) 173 global success
174 global test
175 global server
176 global client
182 177
178 success = False
179 server = None
180 client = None
183 181
184 test = Test ('test_integration_disconnect', verbose) 182 for sig in signals:
185 cleanup () 183 signal.signal(sig, SigHandler)
186 server = Peer(test, './confs/c_bootstrap_server.conf');
187 server.start();
188 184
189 client = Peer(test, './confs/c_no_nat_client.conf'); 185 test = Test('test_integration_disconnect', verbose)
190 client.start(); 186 cleanup()
187 server = Peer(test, './confs/c_bootstrap_server.conf')
188 server.start()
191 189
190 client = Peer(test, './confs/c_no_nat_client.conf')
191 client.start()
192 192
193 if (True != server.start()): 193 if (True != server.start()):
194 print('Failed to start server') 194 print('Failed to start server')
195 if (None != server): 195 if (None != server):
196 server.stop () 196 server.stop()
197 if (None != server): 197 if (None != server):
198 client.stop () 198 client.stop()
199 cleanup () 199 cleanup()
200 sys.exit(success) 200 sys.exit(success)
201 201
202 # Give the server time to start 202 # Give the server time to start
203 time.sleep(5) 203 time.sleep(5)
204 204
205 if (True != client.start()): 205 if (True != client.start()):
206 print('Failed to start client') 206 print('Failed to start client')
207 if (None != server): 207 if (None != server):
208 server.stop () 208 server.stop()
209 if (None != server): 209 if (None != server):
210 client.stop () 210 client.stop()
211 cleanup () 211 cleanup()
212 sys.exit(success) 212 sys.exit(success)
213 213
214 check_connect () 214 check_connect()
215 215
216 server.stop () 216 server.stop()
217 client.stop () 217 client.stop()
218 cleanup () 218 cleanup()
219 219
220 if (success == False): 220 if (success == False):
221 print ('Test failed') 221 print('Test failed')
222 return True 222 return True
223 else: 223 else:
224 return False 224 return False
225 225
226 226
227try: 227try:
228 run () 228 run()
229except (KeyboardInterrupt, SystemExit): 229except (KeyboardInterrupt, SystemExit):
230 print('Test interrupted') 230 print('Test interrupted')
231 server.stop () 231 server.stop()
232 client.stop () 232 client.stop()
233 cleanup () 233 cleanup()
234if (success == False): 234if (success == False):
235 sys.exit(1) 235 sys.exit(1)
236else: 236else:
237 sys.exit(0) 237 sys.exit(0)