diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-12-16 13:43:40 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-12-16 13:43:40 +0000 |
commit | 69bf06c6b85ba2b42a0357dce29e4388cb3751fd (patch) | |
tree | 075b053234f6742b455fe8482ae7c5c7633cdbc2 /src | |
parent | 5a8f88e1745a184039f07382c4b1c757011ca4be (diff) | |
download | gnunet-69bf06c6b85ba2b42a0357dce29e4388cb3751fd.tar.gz gnunet-69bf06c6b85ba2b42a0357dce29e4388cb3751fd.zip |
new test: connect after peer restart?
Diffstat (limited to 'src')
-rwxr-xr-x | src/integration-tests/test_integration_restart.py.in | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/src/integration-tests/test_integration_restart.py.in b/src/integration-tests/test_integration_restart.py.in new file mode 100755 index 000000000..f8becb66a --- /dev/null +++ b/src/integration-tests/test_integration_restart.py.in | |||
@@ -0,0 +1,171 @@ | |||
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 | # | ||
21 | import sys | ||
22 | import os | ||
23 | import subprocess | ||
24 | import re | ||
25 | import shutil | ||
26 | import time | ||
27 | import pexpect | ||
28 | from gnunet_testing import Peer | ||
29 | from gnunet_testing import Test | ||
30 | from gnunet_testing import Check | ||
31 | from gnunet_testing import Condition | ||
32 | from 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, botth peers are shutdown and restarted | ||
39 | # | ||
40 | # Conditions for successful exit: | ||
41 | # Both peers have 1 connected peer in transport, core, topology, fs after restart | ||
42 | |||
43 | #definitions | ||
44 | |||
45 | |||
46 | testname = "test_integration_restart" | ||
47 | verbose = False | ||
48 | check_timeout = 30 | ||
49 | |||
50 | |||
51 | def cleanup (): | ||
52 | if os.name == "nt": | ||
53 | shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-ns"), True) | ||
54 | shutil.rmtree (os.path.join (os.getenv ("TEMP"), "c_no_nat_client"), True) | ||
55 | else: | ||
56 | shutil.rmtree ("/tmp/c_bootstrap_server/", True) | ||
57 | shutil.rmtree ("/tmp/c_no_nat_client/", True) | ||
58 | |||
59 | |||
60 | def success_restart_cont (check): | ||
61 | global success | ||
62 | test.p ('Shutting down client & server') | ||
63 | server.stop () | ||
64 | client.stop () | ||
65 | success = True; | ||
66 | |||
67 | |||
68 | def fail_restart_cont (check): | ||
69 | global success | ||
70 | success = False; | ||
71 | check.eval(True) | ||
72 | |||
73 | |||
74 | def success_connect_cont (check): | ||
75 | test.p ('Shutting down client & server for restart') | ||
76 | server.stop () | ||
77 | client.stop () | ||
78 | |||
79 | time.sleep(5) | ||
80 | |||
81 | test.p ('Restarting client & server') | ||
82 | server.start () | ||
83 | client.start () | ||
84 | |||
85 | check = Check (test) | ||
86 | check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) | ||
87 | check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) | ||
88 | check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) | ||
89 | check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) | ||
90 | check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) | ||
91 | |||
92 | check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) | ||
93 | check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1)) | ||
94 | check.add (StatisticsCondition (server, 'core', '# entries in session map',1)) | ||
95 | check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) | ||
96 | check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) | ||
97 | |||
98 | check.run_blocking (10, success_restart_cont, fail_restart_cont) | ||
99 | |||
100 | |||
101 | def fail_connect_cont (check): | ||
102 | global success | ||
103 | success= False; | ||
104 | check.eval(True) | ||
105 | |||
106 | |||
107 | def check_connect (): | ||
108 | check = Check (test) | ||
109 | check.add (StatisticsCondition (client, 'transport', '# peers connected',1)) | ||
110 | check.add (StatisticsCondition (client, 'core', '# neighbour entries allocated',1)) | ||
111 | check.add (StatisticsCondition (client, 'core', '# entries in session map',1)) | ||
112 | check.add (StatisticsCondition (client, 'topology', '# peers connected',1)) | ||
113 | check.add (StatisticsCondition (client, 'fs', '# peers connected',1)) | ||
114 | |||
115 | check.add (StatisticsCondition (server, 'transport', '# peers connected',1)) | ||
116 | check.add (StatisticsCondition (server, 'core', '# neighbour entries allocated',1)) | ||
117 | check.add (StatisticsCondition (server, 'core', '# entries in session map',1)) | ||
118 | check.add (StatisticsCondition (server, 'topology', '# peers connected',1)) | ||
119 | check.add (StatisticsCondition (server, 'fs', '# peers connected',1)) | ||
120 | |||
121 | check.run_blocking (10, success_connect_cont, fail_connect_cont) | ||
122 | |||
123 | # | ||
124 | # Test execution | ||
125 | # | ||
126 | |||
127 | def run (): | ||
128 | global success | ||
129 | global test | ||
130 | global server | ||
131 | global client | ||
132 | |||
133 | success = False | ||
134 | |||
135 | test = Test ('test_integration_disconnect', verbose) | ||
136 | |||
137 | server = Peer(test, './confs/c_bootstrap_server.conf'); | ||
138 | server.start(); | ||
139 | |||
140 | client = Peer(test, './confs/c_no_nat_client.conf'); | ||
141 | client.start(); | ||
142 | |||
143 | |||
144 | if ((client.started == True) and (server.started == True)): | ||
145 | test.p ('Peers started, running check') | ||
146 | check_connect () | ||
147 | |||
148 | server.stop () | ||
149 | client.stop () | ||
150 | |||
151 | cleanup () | ||
152 | |||
153 | if (success == False): | ||
154 | print ('Test failed') | ||
155 | return True | ||
156 | else: | ||
157 | return False | ||
158 | |||
159 | |||
160 | try: | ||
161 | run () | ||
162 | except (KeyboardInterrupt, SystemExit): | ||
163 | print 'Test interrupted' | ||
164 | server.stop () | ||
165 | client.stop () | ||
166 | cleanup () | ||
167 | if (success == False): | ||
168 | sys.exit(1) | ||
169 | else: | ||
170 | sys.exit(0) | ||
171 | \ No newline at end of file | ||