diff options
author | Christian Grothoff <christian@grothoff.org> | 2019-02-16 21:00:41 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2019-02-16 21:00:41 +0100 |
commit | d78e50fefc1f683872cda7821fdf4d324e57d952 (patch) | |
tree | e04ecc0f27d2e539e9bd8f1b0fbddefa82961805 | |
parent | 613eaaad5798a134ec2d593432622a8f7f135a5d (diff) | |
parent | 815fc58842343a3b407c957e288f63718d3caebb (diff) | |
download | gnunet-d78e50fefc1f683872cda7821fdf4d324e57d952.tar.gz gnunet-d78e50fefc1f683872cda7821fdf4d324e57d952.zip |
Merge branch 'master' of git+ssh://gnunet.org/gnunet
-rw-r--r-- | src/integration-tests/gnunet_testing.py.in | 130 |
1 files changed, 77 insertions, 53 deletions
diff --git a/src/integration-tests/gnunet_testing.py.in b/src/integration-tests/gnunet_testing.py.in index 1470c3d38..dcfc99e8d 100644 --- a/src/integration-tests/gnunet_testing.py.in +++ b/src/integration-tests/gnunet_testing.py.in | |||
@@ -28,7 +28,15 @@ import sys | |||
28 | import shutil | 28 | import shutil |
29 | import time | 29 | import time |
30 | from gnunet_pyexpect import pexpect | 30 | from gnunet_pyexpect import pexpect |
31 | import logging | ||
31 | 32 | ||
33 | logger = logging.getLogger() | ||
34 | handler = logging.StreamHandler() | ||
35 | formatter = logging.Formatter( | ||
36 | '%(asctime)s %(name)-12s %(levelname)-8s %(message)s') | ||
37 | handler.setFormatter(formatter) | ||
38 | logger.addHandler(handler) | ||
39 | logger.setLevel(logging.DEBUG) | ||
32 | 40 | ||
33 | class Check(object): | 41 | class Check(object): |
34 | def __init__(self, test): | 42 | def __init__(self, test): |
@@ -59,7 +67,8 @@ class Check(object): | |||
59 | time.sleep(1) | 67 | time.sleep(1) |
60 | execs += 1 | 68 | execs += 1 |
61 | if ((False == res) and (execs >= timeout)): | 69 | if ((False == res) and (execs >= timeout)): |
62 | print(('Check had timeout after ' + str(timeout) + ' seconds')) | 70 | logger.debug('Check had timeout after %s seconds', str(timeout)) |
71 | # print(('Check had timeout after ' + str(timeout) + ' seconds')) | ||
63 | neg_cont(self) | 72 | neg_cont(self) |
64 | elif ((False == res) and (execs < timeout)): | 73 | elif ((False == res) and (execs < timeout)): |
65 | if (None != neg_cont): | 74 | if (None != neg_cont): |
@@ -87,7 +96,8 @@ class Check(object): | |||
87 | neg += 1 | 96 | neg += 1 |
88 | else: | 97 | else: |
89 | pos += 1 | 98 | pos += 1 |
90 | print((str(pos) + ' out of ' + str(pos+neg) + ' conditions fulfilled')) | 99 | # print((str(pos) + ' out of ' + str(pos+neg) + ' conditions fulfilled')) |
100 | logger.debug('%s out of %s conditions fulfilled', str(pos), str(pos+neg)) | ||
91 | return self.fulfilled | 101 | return self.fulfilled |
92 | 102 | ||
93 | def reset(self): | 103 | def reset(self): |
@@ -110,9 +120,11 @@ class Condition(object): | |||
110 | 120 | ||
111 | def evaluate(self, failed_only): | 121 | def evaluate(self, failed_only): |
112 | if ((self.fulfilled == False) and (failed_only == True)): | 122 | if ((self.fulfilled == False) and (failed_only == True)): |
113 | print(str(self.type) + 'condition for was ' + str(self.fulfilled)) | 123 | # print(str(self.type) + 'condition for was ' + str(self.fulfilled)) |
124 | logger.debug('%s condition for was %s', str(self.type), str(self.fulfilled)) | ||
114 | elif (failed_only == False): | 125 | elif (failed_only == False): |
115 | print(str(self.type) + 'condition for was ' + str(self.fulfilled)) | 126 | # print(str(self.type) + 'condition for was ' + str(self.fulfilled)) |
127 | logger.debug('%s condition for was %s', str(self.type), str(self.fulfilled)) | ||
116 | return self.fulfilled | 128 | return self.fulfilled |
117 | 129 | ||
118 | 130 | ||
@@ -135,17 +147,19 @@ class FileExistCondition(Condition): | |||
135 | 147 | ||
136 | def evaluate(self, failed_only): | 148 | def evaluate(self, failed_only): |
137 | if ((self.fulfilled == False) and (failed_only == True)): | 149 | if ((self.fulfilled == False) and (failed_only == True)): |
138 | print(str(self.type) + | 150 | # print(str(self.type) + |
139 | 'condition for file ' + | 151 | # 'condition for file ' + |
140 | self.file + | 152 | # self.file + |
141 | ' was ' + | 153 | # ' was ' + |
142 | str(self.fulfilled)) | 154 | # str(self.fulfilled)) |
155 | logger.debug('%s confition for file %s was %s', str(self.type), self.file, str(self.fulfilled)) | ||
143 | elif (failed_only == False): | 156 | elif (failed_only == False): |
144 | print(str(self.type) + | 157 | # print(str(self.type) + |
145 | 'condition for file ' + | 158 | # 'condition for file ' + |
146 | self.file + | 159 | # self.file + |
147 | ' was ' + | 160 | # ' was ' + |
148 | str(self.fulfilled)) | 161 | # str(self.fulfilled)) |
162 | logger.debug('%s confition for file %s was %s', str(self.type), self.file, str(self.fulfilled)) | ||
149 | return self.fulfilled | 163 | return self.fulfilled |
150 | 164 | ||
151 | 165 | ||
@@ -182,20 +196,21 @@ class StatisticsCondition(Condition): | |||
182 | fail = b"" | 196 | fail = b"" |
183 | op = b" == " | 197 | op = b" == " |
184 | if (((self.fulfilled == False) and (failed_only == True)) or (failed_only == False)): | 198 | if (((self.fulfilled == False) and (failed_only == True)) or (failed_only == False)): |
185 | print(self.peer.id[:4] + | 199 | # print(self.peer.id[:4] + |
186 | b" " + | 200 | # b" " + |
187 | self.peer.cfg.encode('utf-8') + | 201 | # self.peer.cfg.encode('utf-8') + |
188 | b" " + | 202 | # b" " + |
189 | str(self.type).encode('utf-8') + | 203 | # str(self.type).encode('utf-8') + |
190 | b' condition in subsystem "' + | 204 | # b' condition in subsystem "' + |
191 | self.subsystem.encode('utf-8').ljust(12) + | 205 | # self.subsystem.encode('utf-8').ljust(12) + |
192 | b'" : "' + | 206 | # b'" : "' + |
193 | self.name.encode('utf-8').ljust(30) + | 207 | # self.name.encode('utf-8').ljust(30) + |
194 | b'" : (expected/real value) ' + | 208 | # b'" : (expected/real value) ' + |
195 | str(self.value).encode('utf-8') + | 209 | # str(self.value).encode('utf-8') + |
196 | op + | 210 | # op + |
197 | res + | 211 | # res + |
198 | fail) | 212 | # fail) |
213 | logger.debug('%s %s %s condition in subsystem %s : %s : (expected/real value) %s %s %s %s', self.peer.id[:4], self.peer.cfg.encode('utf-8'), str(self.type).encode('utf-8'), self.subsystem.encode('utf-8').ljust(12), self.name.encode('utf-8').ljust(30), str(self.value).encode('utf-8'), op, res, fail) | ||
199 | return self.fulfilled | 214 | return self.fulfilled |
200 | 215 | ||
201 | 216 | ||
@@ -241,21 +256,22 @@ class EqualStatisticsCondition(Condition): | |||
241 | fail = b"" | 256 | fail = b"" |
242 | op = b" == " | 257 | op = b" == " |
243 | if (((self.fulfilled == False) and (failed_only == True)) or (failed_only == False)): | 258 | if (((self.fulfilled == False) and (failed_only == True)) or (failed_only == False)): |
244 | print(self.peer.id[:4] + | 259 | # print(self.peer.id[:4] + |
245 | b' "' + | 260 | # b' "' + |
246 | self.subsystem.encode('utf-8').ljust(12) + | 261 | # self.subsystem.encode('utf-8').ljust(12) + |
247 | b'" "' + | 262 | # b'" "' + |
248 | self.name.encode('utf-8').ljust(30) + | 263 | # self.name.encode('utf-8').ljust(30) + |
249 | b'" == ' + | 264 | # b'" == ' + |
250 | str(self.result).encode('utf-8') + | 265 | # str(self.result).encode('utf-8') + |
251 | b" " + | 266 | # b" " + |
252 | self.peer2.id[:4] + | 267 | # self.peer2.id[:4] + |
253 | b' "' + | 268 | # b' "' + |
254 | self.subsystem2.encode('utf-8').ljust(12) + | 269 | # self.subsystem2.encode('utf-8').ljust(12) + |
255 | b'" ' + | 270 | # b'" ' + |
256 | self.name2.encode('utf-8').ljust(30) + | 271 | # self.name2.encode('utf-8').ljust(30) + |
257 | b'" ' + | 272 | # b'" ' + |
258 | str(self.result2).encode('utf-8')) | 273 | # str(self.result2).encode('utf-8')) |
274 | logger.debug('%s %s %s == %s %s %s %s %s', self.peer.id[:4], self.subsystem.encode('utf-8').ljust(12), self.name.encode('utf-8').ljust(30), str(self.result).encode('utf-8'), self.peer2.id[:4], self.subsystem2.encode('uft-8').ljust(12), self.name2.encode('utf-8').ljust(30), str(self.result2).encode('utf-8')) | ||
259 | return self.fulfilled | 275 | return self.fulfilled |
260 | 276 | ||
261 | 277 | ||
@@ -294,7 +310,8 @@ class Test(object): | |||
294 | class Peer(object): | 310 | class Peer(object): |
295 | def __init__(self, test, cfg_file): | 311 | def __init__(self, test, cfg_file): |
296 | if (False == os.path.isfile(cfg_file)): | 312 | if (False == os.path.isfile(cfg_file)): |
297 | print(("Peer cfg " + cfg_file + ": FILE NOT FOUND")) | 313 | # print(("Peer cfg " + cfg_file + ": FILE NOT FOUND")) |
314 | logger.debug('Peer cfg %s : FILE NOT FOUND', cfg_file) | ||
298 | self.id = "<NaN>" | 315 | self.id = "<NaN>" |
299 | self.test = test | 316 | self.test = test |
300 | self.started = False | 317 | self.started = False |
@@ -302,12 +319,14 @@ class Peer(object): | |||
302 | 319 | ||
303 | def __del__(self): | 320 | def __del__(self): |
304 | if (self.started == True): | 321 | if (self.started == True): |
305 | print('ERROR! Peer using cfg ' + self.cfg + ' was not stopped') | 322 | # print('ERROR! Peer using cfg ' + self.cfg + ' was not stopped') |
323 | logger.debug('ERROR! Peer using cfg %s was not stopped', self.cfg) | ||
306 | ret = self.stop() | 324 | ret = self.stop() |
307 | if (False == ret): | 325 | if (False == ret): |
308 | print('ERROR! Peer using cfg ' + | 326 | # print('ERROR! Peer using cfg ' + |
309 | self.cfg + | 327 | # self.cfg + |
310 | ' could not be stopped') | 328 | # ' could not be stopped') |
329 | logger.debug('ERROR! Peer using cfg %s could not be stopped', self.cfg) | ||
311 | self.started = False | 330 | self.started = False |
312 | return ret | 331 | return ret |
313 | else: | 332 | else: |
@@ -319,7 +338,8 @@ class Peer(object): | |||
319 | server = subprocess.Popen([self.test.gnunetarm, '-sq', '-c', self.cfg]) | 338 | server = subprocess.Popen([self.test.gnunetarm, '-sq', '-c', self.cfg]) |
320 | server.communicate() | 339 | server.communicate() |
321 | except OSError: | 340 | except OSError: |
322 | print("Can not start peer") | 341 | # print("Can not start peer") |
342 | logger.debug('Can not start peer') | ||
323 | self.started = False | 343 | self.started = False |
324 | return False | 344 | return False |
325 | self.started = True | 345 | self.started = True |
@@ -329,7 +349,8 @@ class Peer(object): | |||
329 | server.spawn(None, [self.test.gnunetpeerinfo, '-c', self.cfg, '-s'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) | 349 | server.spawn(None, [self.test.gnunetpeerinfo, '-c', self.cfg, '-s'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
330 | test = server.read("stdout", 1024) | 350 | test = server.read("stdout", 1024) |
331 | except OSError: | 351 | except OSError: |
332 | print("Can not get peer identity") | 352 | # print("Can not get peer identity") |
353 | logger.debug('Can not get peer identity') | ||
333 | test = (test.split(b'`')[1]) | 354 | test = (test.split(b'`')[1]) |
334 | self.id = test.split(b'\'')[0] | 355 | self.id = test.split(b'\'')[0] |
335 | return True | 356 | return True |
@@ -342,7 +363,8 @@ class Peer(object): | |||
342 | server = subprocess.Popen([self.test.gnunetarm, '-eq', '-c', self.cfg]) | 363 | server = subprocess.Popen([self.test.gnunetarm, '-eq', '-c', self.cfg]) |
343 | server.communicate() | 364 | server.communicate() |
344 | except OSError: | 365 | except OSError: |
345 | print("Can not stop peer") | 366 | # print("Can not stop peer") |
367 | logger.debug('Can not stop peer') | ||
346 | return False | 368 | return False |
347 | self.started = False | 369 | self.started = False |
348 | return True | 370 | return True |
@@ -357,9 +379,11 @@ class Peer(object): | |||
357 | if os.name == 'nt' and tests[1] == b'\n' and tests[0][-1] == b'\r': | 379 | if os.name == 'nt' and tests[1] == b'\n' and tests[0][-1] == b'\r': |
358 | tests = (tests[0][:-1], tests[1], tests[2]) | 380 | tests = (tests[0][:-1], tests[1], tests[2]) |
359 | tests = tests[0] | 381 | tests = tests[0] |
360 | print("running gnunet-statistics " + self.cfg + " for " + name + "/" + subsystem + " yields " + tests.decode("utf-8")) | 382 | # print("running gnunet-statistics " + self.cfg + " for " + name + "/" + subsystem + " yields " + tests.decode("utf-8")) |
383 | logger.debug('running gnunet-statistics %s for %s "/" %s yields %s', self.cfg, name, subsystem, test.decode("utf-8")) | ||
361 | if (tests.isdigit() == True): | 384 | if (tests.isdigit() == True): |
362 | return tests | 385 | return tests |
363 | else: | 386 | else: |
364 | print("Invalid statistics value: " + str(tests) + " is not a number!") | 387 | # print("Invalid statistics value: " + str(tests) + " is not a number!") |
388 | logger.debug('Invalid statistics value: %s is not a number!', str(tests)) | ||
365 | return -1 | 389 | return -1 |