aboutsummaryrefslogtreecommitdiff
path: root/src/integration-tests/test_integration_clique.py.in
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-12-09 17:31:04 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-12-09 17:31:04 +0000
commit6884edf943572c2a23544813858edd92186214c3 (patch)
treefdd45051f4170e78d2a1e5feaab05295e5bc892a /src/integration-tests/test_integration_clique.py.in
parentaac6badf87eb6b89def532f06aa9c6e1544f5d60 (diff)
downloadgnunet-6884edf943572c2a23544813858edd92186214c3.tar.gz
gnunet-6884edf943572c2a23544813858edd92186214c3.zip
clique
Diffstat (limited to 'src/integration-tests/test_integration_clique.py.in')
-rwxr-xr-xsrc/integration-tests/test_integration_clique.py.in441
1 files changed, 400 insertions, 41 deletions
diff --git a/src/integration-tests/test_integration_clique.py.in b/src/integration-tests/test_integration_clique.py.in
index 892f80931..a2008742c 100755
--- a/src/integration-tests/test_integration_clique.py.in
+++ b/src/integration-tests/test_integration_clique.py.in
@@ -18,67 +18,426 @@
18# Boston, MA 02111-1307, USA. 18# Boston, MA 02111-1307, USA.
19# 19#
20# 20#
21#
22# This test starts 3 peers and expects bootstrap and a connected clique
23#
24# Conditions for successful exit:
25# Both peers have 1 connected peer in transport, core, topology, fs
26
21import sys 27import sys
22import os 28import os
23import subprocess 29import subprocess
24import re 30import re
25import shutil 31import shutil
32import time
33import pexpect
26 34
35#definitions
27 36
28testname = "test_integration_clique" 37testname = "test_integration_clique"
29verbose = True 38verbose = False
39gnunetarm = ""
40gnunetstatistics = ""
41success = False
42timeout = 10
30 43
31srcdir = "../.." 44#test conditions
32gnunet_pyexpect_dir = os.path.join (srcdir, "contrib")
33if gnunet_pyexpect_dir not in sys.path:
34 sys.path.append (gnunet_pyexpect_dir)
35 45
36from gnunet_pyexpect import pexpect
37 46
38if os.name == 'posix': 47def vprintf (msg):
39 gnunetarm = 'gnunet-arm' 48 if verbose == True:
40elif os.name == 'nt': 49 print msg
41 gnunetarm = 'gnunet-arm.exe'
42 50
43if os.name == "nt": 51def setup ():
44 shutil.rmtree (os.path.join (os.getenv ("TEMP"), testname), True) 52 srcdir = "../.."
45else: 53 gnunet_pyexpect_dir = os.path.join (srcdir, "contrib")
46 shutil.rmtree ("/tmp/" + testname, True) 54 if gnunet_pyexpect_dir not in sys.path:
55 sys.path.append (gnunet_pyexpect_dir)
56 from gnunet_pyexpect import pexpect
57 global gnunetarm
58 global gnunetstatistics
59 if os.name == 'posix':
60 gnunetarm = 'gnunet-arm'
61 gnunetstatistics = 'gnunet-statistics'
62 elif os.name == 'nt':
63 gnunetarm = 'gnunet-arm.exe'
64 gnunetstatistics = 'gnunet-statistics.exe'
65 if os.name == "nt":
66 shutil.rmtree (os.path.join (os.getenv ("TEMP"), testname), True)
67 else:
68 shutil.rmtree ("/tmp/" + testname, True)
47 69
48if verbose == True: 70def start ():
49 print "Running " + testname 71 vprintf ("Starting bootstrap server & client")
72 try:
73 server = subprocess.Popen ([gnunetarm, '-sq', '-c', './confs/c_bootstrap_server.conf'])
74 server.communicate ()
75 except OSError:
76 print "Can not start bootstrap server, exiting..."
77 exit (1)
78 try:
79 client = subprocess.Popen ([gnunetarm, '-sq', '-c', 'confs/c_no_nat_client.conf'])
80 client.communicate ()
81 except OSError:
82 print "Can not start bootstrap client, exiting..."
83 exit (1)
84 try:
85 client = subprocess.Popen ([gnunetarm, '-sq', '-c', 'confs/c_no_nat_client_2.conf'])
86 client.communicate ()
87 except OSError:
88 print "Can not start bootstrap client 2, exiting..."
89 exit (1)
90 vprintf ("Bootstrap server & client started")
50 91
92def stop ():
93 try:
94 client = subprocess.Popen ([gnunetarm, '-eq', '-c', 'confs/c_no_nat_client.conf'])
95 client.communicate ()
96 except OSError:
97 print "Can not stop bootstrap client 1, exiting..."
98 exit (1)
99 vprintf ("Bootstrap client stopped")
51 100
52 101
102def cleanup ():
103 if os.name == "nt":
104 shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True)
105 shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True)
106 shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client_2"), True)
107 else:
108 shutil.rmtree ("/tmp/c_bootstrap_server/", True)
109 shutil.rmtree ("/tmp/c_no_nat_client/", True)
110 shutil.rmtree ("/tmp/c_no_nat_client_2/", True)
53 111
54exit () 112def check_statistics (conf, subsystem, name, value):
55# dummy copied from fs 113 from gnunet_pyexpect import pexpect
56arm = subprocess.Popen ([gnunetarm, '-sq', '-c', 'test_gnunet_fs_ns_data.conf']) 114 server = pexpect ()
57arm.communicate () 115 server.spawn (None, [gnunetstatistics, '-c', conf ,'-q','-n', name, '-s', subsystem ], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
116 #server.expect ("stdout", re.compile (r""))
117 test = server.read("stdout", 10240)
118 if (test.find(str(value)) == -1):
119 return False
120 else:
121 return True
122
123
58 124
59try: 125def check_connect ():
60 pseu = pexpect () 126 server_transport_connected = False
61 pseu.spawn (None, [pseudonym, '-c', 'test_gnunet_fs_ns_data.conf', '-C', 'licenses', '-k', 'gplad', '-m', 'description:Free Software Licenses', '-R', 'myroot'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 127 server_topology_connected = False
62 pseu.spawn (None, [pseudonym, '-c', 'test_gnunet_fs_ns_data.conf', '-o'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 128 server_core_connected = False
63 pseu.expect ("stdout", re.compile (r"licenses (.*)\r?\n")) 129 server_core_session_map = False
130 server_fs_connected = False
131 client_transport_connected = False
132 client_topology_connected = False
133 client_core_connected = False
134 client_core_session_map = False
135 client_fs_connected = False
136
137 client2_transport_connected = False
138 client2_topology_connected = False
139 client2_core_connected = False
140 client2_core_session_map = False
141 client2_fs_connected = False
142
143 connected = False
144 count = 1
145 while ((connected == False) and (count <= timeout)):
146 # Perform TRANSPORT
147 if ((False == server_transport_connected) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'transport', '# peers connected',2))):
148 server_transport_connected = True
149 vprintf ('Server transport services is connected')
150
151 if ((False == client_transport_connected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'transport', '# peers connected',2))):
152 client_transport_connected = True
153 vprintf ('Client transport services is connected')
154
155 if ((False == client2_transport_connected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'transport', '# peers connected',2))):
156 client2_transport_connected = True
157 vprintf ('Client 2 transport services is connected')
64 158
65 pub = pexpect () 159 # Perform TRANSPORT
66 pub.spawn (None, [publish, '-c', 'test_gnunet_fs_ns_data.conf', '-k', 'licenses', '-P', 'licenses', '-u', 'gnunet://fs/chk/PC0M19QMQC0BPSHR6BGA228PP6INER1D610MGEMOMEM87222FN8HVUO7PQGO0O9HD2GVLHF2N5IDHEQUNK6LKE428FPO96SKQEA486O.PG7K85JGQ6N599MD5HEP3CHEVFPKQD9JB6NPSLVA3T1SKDS66CFI499VS6MGQ88B0QUAVT1282TCRD4GGFVUKDLGI8F0SPIANA3J2LG.35147', '-t', 'gpl', '-N', 'gpl3'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 160 if ((False == server_core_connected) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'core', '# neighbour entries allocated',2))):
161 server_core_connected = True
162 vprintf ('Server core services is connected')
163
164 if ((False == client_core_connected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# neighbour entries allocated',2))):
165 client_core_connected = True
166 vprintf ('Client core services is connected')
67 167
68 s = pexpect () 168 if ((False == client2_core_connected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'core', '# neighbour entries allocated',2))):
69 s.spawn (None, [search, '-V', '-t', '1000', '-N', '1', '-c', 'test_gnunet_fs_ns_data.conf', 'gplad'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 169 client2_core_connected = True
70 s.expect ("stdout", re.compile (r'#0:\r?\n')) 170 vprintf ('Client2 core services is connected')
71 s.expect ("stdout", re.compile (r'gnunet-download gnunet://fs/sks/.*/myroot\r?\n')) 171
72 s.expect ("stdout", re.compile (r'\s*description: Free Software Licenses\r?\n')) 172 # Perform TRANSPORT
173 if ((False == server_core_session_map) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'core', '# entries in session map',2))):
174 server_core_session_map = True
175 vprintf ('Server core services is connected')
176
177 if ((False == client_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# entries in session map',2))):
178 client_core_session_map = True
179 vprintf ('Client core notifies about connected')
73 180
74 pseu = pexpect () 181 if ((False == client2_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'core', '# entries in session map',2))):
75 pseu.spawn (None, [pseudonym, '-c', 'test_gnunet_fs_ns_data.conf'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 182 client2_core_session_map = True
76 pseu.expect ("stdout", re.compile (r'Free Software Licenses.*:\r?\n')) 183 vprintf ('Client2 core notifies about connected')
77 184
78finally: 185 # Perform TRANSPORT
79 arm = subprocess.Popen ([gnunetarm, '-eq', '-c', 'test_gnunet_fs_ns_data.conf']) 186 if ((False == server_topology_connected) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'topology', '# peers connected',2))):
80 arm.communicate () 187 server_topology_connected = True
81 if os.name == "nt": 188 vprintf ('Server topology services is connected')
82 shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True) 189
190 if ((False == client_topology_connected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'topology', '# peers connected',2))):
191 client_topology_connected = True
192 vprintf ('Client topology services is connected')
193
194 if ((False == client2_topology_connected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'topology', '# peers connected',2))):
195 client2_topology_connected = True
196 vprintf ('Client2 topology services is connected')
197
198 # Perform TRANSPORT
199 if ((False == server_fs_connected) and (True == check_statistics ('./confs/c_bootstrap_server.conf', 'fs', '# peers connected',2))):
200 server_fs_connected = True
201 vprintf ('Server fs services is connected')
202
203 if ((False == client_fs_connected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'fs', '# peers connected',2))):
204 client_fs_connected = True
205 vprintf ('Client fs services is connected')
206
207 if ((False == client2_fs_connected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'fs', '# peers connected',2))):
208 client2_fs_connected = True
209 vprintf ('Client2 fs services is connected')
210
211 # Check if conditions fulfilled
212 if ((True == client_transport_connected) and (True == client2_transport_connected) and (True == server_transport_connected) and
213 (True == client_topology_connected) and (True == client2_topology_connected) and (True == server_topology_connected) and
214 (True == client_core_connected) and (True == client2_core_connected) and (True == server_core_connected) and
215 (True == client_core_session_map) and (True == client2_core_session_map) and (True == server_core_session_map) and
216 (True == client_fs_connected) and (True == client2_fs_connected) and (True == server_fs_connected)):
217 connected = True
218 break
219 print '.',
220 time.sleep(1)
221 count += 1
222 if (connected == False):
223 print ''
224 if (server_transport_connected == False):
225 print ('Server transport was NOT connected')
226 if (server_topology_connected == False):
227 print ('Server topology was NOT connected')
228 if (server_core_connected == False):
229 print ('Server core was NOT connected')
230 if (server_core_session_map == False):
231 print ('Server core sessions did NOT increase')
232
233 if (client_transport_connected == False):
234 print ('Client transport was NOT connected')
235 if (client_topology_connected == False):
236 print ('Client topology was NOT connected')
237 if (client_core_connected == False):
238 print ('Client core was NOT connected')
239 if (client_core_session_map == False):
240 print ('Client core sessions did NOT increase')
241
242 if (client2_transport_connected == False):
243 print ('Client2 transport was NOT connected')
244 if (client2_topology_connected == False):
245 print ('Client2 topology was NOT connected')
246 if (client2_core_connected == False):
247 print ('Client2 core was NOT connected')
248 if (client2_core_session_map == False):
249 print ('Client2 core sessions did NOT increase')
250 return False
83 else: 251 else:
84 shutil.rmtree ("/tmp/gnunet-test-fs-py-ns", True) 252 return True
253
254def check_disconnect_client ():
255 vprintf ("Shutting down client 2")
256 try:
257 server = subprocess.Popen ([gnunetarm, '-eq', '-c', './confs/c_no_nat_client_2.conf'])
258 server.communicate ()
259 except OSError:
260 print "Can not stop client 2, exiting..."
261 exit (1)
262
263 client_transport_disconnected = False
264 client_topology_disconnected = False
265 client_core_disconnected = False
266 client_core_session_map = False
267 client_fs_disconnected = False
268
269 disconnected = False
270 count = 1
271 while ((disconnected == False) and (count <= timeout)):
272 if ((False == client_transport_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'transport', '# peers connected',0))):
273 client_transport_disconnected = True
274 vprintf ('Client transport services is disconnected')
275
276 if ((False == client_core_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# neighbour entries allocated',0))):
277 client_core_disconnected = True
278 vprintf ('Client core services is disconnected')
279
280 if ((False == client_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# entries in session map',0))):
281 client_core_session_map = True
282 vprintf ('Client core notifies about disconnected')
283
284 if ((False == client_topology_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'topology', '# peers connected',0))):
285 client_topology_disconnected = True
286 vprintf ('Client topology services is disconnected')
287
288 if ((False == client_fs_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'fs', '# peers connected',0))):
289 client_fs_disconnected = True
290 vprintf ('Client fs services is disconnected')
291
292 # Check if conditions fulfilled
293 if ((True == client_transport_disconnected) and
294 (True == client_topology_disconnected) and
295 (True == client_core_disconnected) and
296 (True == client_core_session_map) and
297 (True == client_fs_disconnected)):
298 disconnected = True
299 break
300 print '.'
301 time.sleep(1)
302 count += 1
303 if (disconnected == False):
304 print ''
305 if (client_transport_disconnected == False):
306 print ('Client transport was NOT disconnected')
307 if (client_topology_disconnected == False):
308 print ('Client topology was NOT disconnected')
309 if (client_core_disconnected == False):
310 print ('Client core was NOT disconnected')
311 if (server_core_session_map == False):
312 print ('Server core sessions did NOT increase')
313 return False
314 else:
315 return True
316
317def check_disconnect_server ():
318 vprintf ("Shutting down bootstrap server")
319 try:
320 server = subprocess.Popen ([gnunetarm, '-eq', '-c', './confs/c_bootstrap_server.conf'])
321 server.communicate ()
322 except OSError:
323 print "Can not stop bootstrap server, exiting..."
324 exit (1)
325
326 client_transport_disconnected = False
327 client_topology_disconnected = False
328 client_core_disconnected = False
329 client_core_session_map = False
330 client_fs_disconnected = False
331
332 client2_transport_disconnected = False
333 client2_topology_disconnected = False
334 client2_core_disconnected = False
335 client2_core_session_map = False
336 client2_fs_disconnected = False
337
338 disconnected = False
339 count = 1
340 while ((disconnected == False) and (count <= timeout)):
341 if ((False == client_transport_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'transport', '# peers connected',1))):
342 client_transport_disconnected = True
343 vprintf ('Client transport services is disconnected')
344
345 if ((False == client_core_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# neighbour entries allocated',1))):
346 client_core_disconnected = True
347 vprintf ('Client core services is disconnected')
348
349 if ((False == client_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'core', '# entries in session map',1))):
350 client_core_session_map = True
351 vprintf ('Client core notifies about disconnected')
352
353 if ((False == client_topology_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'topology', '# peers connected',1))):
354 client_topology_disconnected = True
355 vprintf ('Client topology services is disconnected')
356
357 if ((False == client_fs_disconnected) and (True == check_statistics ('./confs/c_no_nat_client.conf', 'fs', '# peers connected',1))):
358 client_fs_disconnected = True
359 vprintf ('Client fs services is disconnected')
360
361 if ((False == client2_transport_disconnected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'transport', '# peers connected',1))):
362 client2_transport_disconnected = True
363 vprintf ('Client2 transport services is disconnected')
364
365 if ((False == client2_core_disconnected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'core', '# neighbour entries allocated',1))):
366 client2_core_disconnected = True
367 vprintf ('Client2 core services is disconnected')
368
369 if ((False == client2_core_session_map) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'core', '# entries in session map',1))):
370 client2_core_session_map = True
371 vprintf ('Client2 core notifies about disconnected')
372
373 if ((False == client2_topology_disconnected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'topology', '# peers connected',1))):
374 client2_topology_disconnected = True
375 vprintf ('Client2 topology services is disconnected')
376
377 if ((False == client2_fs_disconnected) and (True == check_statistics ('./confs/c_no_nat_client_2.conf', 'fs', '# peers connected',1))):
378 client2_fs_disconnected = True
379 vprintf ('Client2 fs services is disconnected')
380
381
382 # Check if conditions fulfilled
383 if ((True == client_transport_disconnected) and
384 (True == client_topology_disconnected) and
385 (True == client_core_disconnected) and
386 (True == client_core_session_map) and
387 (True == client_fs_disconnected) and
388 (True == client2_transport_disconnected) and
389 (True == client2_topology_disconnected) and
390 (True == client2_core_disconnected) and
391 (True == client2_core_session_map) and
392 (True == client2_fs_disconnected)):
393 disconnected = True
394 #break
395 print '.'
396 time.sleep(1)
397 count += 1
398 if (disconnected == False):
399 print ''
400 if (client_transport_disconnected == False):
401 print ('Client transport was NOT disconnected')
402 if (client_topology_disconnected == False):
403 print ('Client topology was NOT disconnected')
404 if (client_core_disconnected == False):
405 print ('Client core was NOT disconnected')
406 if (client_core_session_map == False):
407 print ('Client core sessions did NOT decrease')
408 if (client2_transport_disconnected == False):
409 print ('Client2 transport was NOT disconnected')
410 if (client2_topology_disconnected == False):
411 print ('Client2 topology was NOT disconnected')
412 if (client2_core_disconnected == False):
413 print ('Client2 core was NOT disconnected')
414 if (client2_core_session_map == False):
415 print ('Client2 core sessions did NOT decrease')
416 return False
417 else:
418 return True
419
420#
421# Test execution
422#
423
424vprintf ("Running " + testname)
425setup ()
426start ()
427
428ret = check_connect ()
429if (ret == True):
430 vprintf ('Peers connected')
431 if (True == check_disconnect_server ()):
432 if (True == check_disconnect_client ()):
433 success = True
434
435stop ()
436cleanup ()
437
438if (success == False):
439 print ('Test failed')
440 exit (1)
441else:
442 exit (0)
443