[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r19822 - gnunet/src/integration-tests
From: |
gnunet |
Subject: |
[GNUnet-SVN] r19822 - gnunet/src/integration-tests |
Date: |
Thu, 16 Feb 2012 17:18:20 +0100 |
Author: wachs
Date: 2012-02-16 17:18:20 +0100 (Thu, 16 Feb 2012)
New Revision: 19822
Added:
gnunet/src/integration-tests/gnunet_pyexpect.py.in
Modified:
gnunet/src/integration-tests/gnunet_testing.py.in
gnunet/src/integration-tests/test_integration_bootstrap_and_connect.py.in
gnunet/src/integration-tests/test_integration_clique.py.in
gnunet/src/integration-tests/test_integration_clique_nat.py.in
gnunet/src/integration-tests/test_integration_disconnect.py.in
gnunet/src/integration-tests/test_integration_restart.py.in
Log:
- changes to integration
Added: gnunet/src/integration-tests/gnunet_pyexpect.py.in
===================================================================
--- gnunet/src/integration-tests/gnunet_pyexpect.py.in
(rev 0)
+++ gnunet/src/integration-tests/gnunet_pyexpect.py.in 2012-02-16 16:18:20 UTC
(rev 19822)
@@ -0,0 +1,83 @@
address@hidden@
+# This file is part of GNUnet.
+# (C) 2010 Christian Grothoff (and other contributing authors)
+#
+# GNUnet is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published
+# by the Free Software Foundation; either version 2, or (at your
+# option) any later version.
+#
+# GNUnet is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNUnet; see the file COPYING. If not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+# Testcase for gnunet-peerinfo
+from __future__ import print_function
+import os
+import re
+import subprocess
+import sys
+import shutil
+import time
+
+class pexpect (object):
+ def __init__ (self):
+ super (pexpect, self).__init__ ()
+
+ def spawn (self, stdin, arglist, *pargs, **kwargs):
+ env = kwargs.pop ('env', None)
+ if env is None:
+ env = os.environ.copy ()
+ # This messes up some testcases, disable log redirection
+ env.pop ('GNUNET_FORCE_LOGFILE', None)
+ self.proc = subprocess.Popen (arglist, *pargs, env=env, **kwargs)
+ if self.proc is None:
+ print ("Failed to spawn a process {0}".format (arglist))
+ sys.exit (1)
+ if stdin is not None:
+ self.stdo, self.stde = self.proc.communicate (stdin)
+ else:
+ self.stdo, self.stde = self.proc.communicate ()
+ return self.proc
+
+ def expect (self, s, r, flags=0):
+ stream = self.stdo if s == 'stdout' else self.stde
+ if isinstance (r, str):
+ if r == "EOF":
+ if len (stream) == 0:
+ return True
+ else:
+ print ("Failed to find `{1}' in {0}, which is `{2}' ({3})".format
(s, r, stream, len (stream)))
+ sys.exit (2)
+ raise ValueError ("Argument `r' should be an instance of re.RegexObject
or a special string, but is `{0}'".format (r))
+ m = r.search (stream, flags)
+ if not m:
+ print ("Failed to find `{1}' in {0}, which is is `{2}'".format (s,
r.pattern, stream))
+ sys.exit (2)
+ stream = stream[m.end ():]
+ if s == 'stdout':
+ self.stdo = stream
+ else:
+ self.stde = stream
+ return m
+
+ def read (self, s, size=-1):
+ stream = self.stdo if s == 'stdout' else self.stde
+ result = ""
+ if size < 0:
+ result = stream
+ new_stream = ""
+ else:
+ result = stream[0:size]
+ new_stream = stream[size:]
+ if s == 'stdout':
+ self.stdo = new_stream
+ else:
+ self.stde = new_stream
+ return result
Modified: gnunet/src/integration-tests/gnunet_testing.py.in
===================================================================
--- gnunet/src/integration-tests/gnunet_testing.py.in 2012-02-16 14:47:15 UTC
(rev 19821)
+++ gnunet/src/integration-tests/gnunet_testing.py.in 2012-02-16 16:18:20 UTC
(rev 19822)
@@ -1,4 +1,4 @@
address@hidden@
+#!/usr/bin/python
# This file is part of GNUnet.
# (C) 2010 Christian Grothoff (and other contributing authors)
#
@@ -19,13 +19,12 @@
#
# Functions for integration testing
import os
-import re
import subprocess
import sys
import shutil
import time
+from gnunet_pyexpect import pexpect
-
class Check:
def __init__(self, test):
self.fulfilled = False
@@ -56,11 +55,11 @@
neg_cont (self)
else:
pos_cont (self)
- def eval(self, failed_only):
+ def evaluate (self, failed_only):
pos = 0
neg = 0
for c in self.conditions:
- if (False == c.eval (failed_only)):
+ if (False == c.evaluate (failed_only)):
neg += 1
else:
pos += 1
@@ -76,7 +75,7 @@
self.type = type
def check(self):
return False;
- def eval(self, failed_only):
+ def evaluate (self, failed_only):
if ((self.fulfilled == False) and (failed_only == True)):
print str(self.type) + 'condition for was ' + str(self.fulfilled)
elif (failed_only == False):
@@ -98,7 +97,7 @@
return False
else:
return True
- def eval(self, failed_only):
+ def evaluate (self, failed_only):
if ((self.fulfilled == False) and (failed_only == True)):
print str(self.type) + 'condition for file '+self.file+' was ' +
str(self.fulfilled)
elif (failed_only == False):
@@ -124,11 +123,11 @@
return False
else:
return True
- def eval(self, failed_only):
- if (self.result == -1):
- res = 'NaN'
- else:
- res = str(self.result)
+ def evaluate (self, failed_only):
+ if (self.result == -1):
+ res = 'NaN'
+ else:
+ res = str(self.result)
if (self.fulfilled == False):
fail = " FAIL!"
op = " != "
@@ -144,47 +143,50 @@
class Test:
def __init__(self, testname, verbose):
self.peers = list()
- self.verbose = verbose;
- self.name = testname;
- srcdir = "../.."
+ self.verbose = verbose;
+ self.name = testname;
+ srcdir = "../.."
gnunet_pyexpect_dir = os.path.join (srcdir, "contrib")
if gnunet_pyexpect_dir not in sys.path:
- sys.path.append (gnunet_pyexpect_dir)
- from gnunet_pyexpect import pexpect
+ sys.path.append (gnunet_pyexpect_dir)
self.gnunetarm = ''
self.gnunetstatistics = ''
if os.name == 'posix':
- self.gnunetarm = 'gnunet-arm'
- self.gnunetstatistics = 'gnunet-statistics'
+ self.gnunetarm = 'gnunet-arm'
+ self.gnunetstatistics = 'gnunet-statistics'
+ self.gnunetpeerinfo = 'gnunet-peerinfo'
elif os.name == 'nt':
- self.gnunetarm = 'gnunet-arm.exe'
- self.gnunetstatistics = 'gnunet-statistics.exe'
+ self.gnunetarm = 'gnunet-arm.exe'
+ self.gnunetstatistics = 'gnunet-statistics.exe'
+ self.gnunetpeerinfo = 'gnunet-peerinfo.exe'
if os.name == "nt":
shutil.rmtree (os.path.join (os.getenv ("TEMP"), testname), True)
else:
shutil.rmtree ("/tmp/" + testname, True)
- def add_peer (peer):
- self.conditions.append(condition)
+ def add_peer (self, peer):
+ self.peers.append(peer)
def p (self, msg):
if (self.verbose == True):
- print msg
+ print msg
class Peer:
def __init__(self, test, cfg_file):
if (False == os.path.isfile(cfg_file)):
print ("Peer cfg " + cfg_file + ": FILE NOT FOUND")
+ self.id = ""
self.test = test
self.started = False
self.cfg = cfg_file
def __del__(self):
- if (self.started == True):
- print 'ERROR! Peer using cfg ' + self.cfg + ' was not stopped'
- if (ret == self.stop ()):
- print 'ERROR! Peer using cfg ' + self.cfg + ' could not
be stopped'
- self.started == False
- return ret
- else:
- return False
+ if (self.started == True):
+ print 'ERROR! Peer using cfg ' + self.cfg + ' was not stopped'
+ ret = self.stop ()
+ if (False == ret):
+ print 'ERROR! Peer using cfg ' + self.cfg + ' could not be
stopped'
+ self.started = False
+ return ret
+ else:
+ return False
def start (self):
self.test.p ("Starting peer using cfg " + self.cfg)
try:
@@ -194,11 +196,20 @@
print "Can not start peer"
self.started = False
return False
- self.started = True
+ self.started = True;
+ test = ''
+ try:
+ server = pexpect ()
+ server.spawn (None, [self.test.gnunetpeerinfo, '-c', self.cfg
,'-s'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ test = server.read("stdout", 1024)
+ except OSError:
+ print "Can not get peer identity"
+ test = (test.split('`')[1])
+ self.id = test.split('\'')[0]
return True
def stop (self):
- if (self.started == False):
- return False
+ if (self.started == False):
+ return False
self.test.p ("Stopping peer using cfg " + self.cfg)
try:
server = subprocess.Popen ([self.test.gnunetarm, '-eq', '-c',
self.cfg])
@@ -209,7 +220,6 @@
self.started = False
return True;
def get_statistics_value (self, subsystem, name):
- from gnunet_pyexpect import pexpect
server = pexpect ()
server.spawn (None, [self.test.gnunetstatistics, '-c', self.cfg
,'-q','-n', name, '-s', subsystem ], stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
#server.expect ("stdout", re.compile (r""))
Modified:
gnunet/src/integration-tests/test_integration_bootstrap_and_connect.py.in
===================================================================
--- gnunet/src/integration-tests/test_integration_bootstrap_and_connect.py.in
2012-02-16 14:47:15 UTC (rev 19821)
+++ gnunet/src/integration-tests/test_integration_bootstrap_and_connect.py.in
2012-02-16 16:18:20 UTC (rev 19822)
@@ -1,4 +1,4 @@
address@hidden@
+#!/usr/bin/python
# This file is part of GNUnet.
# (C) 2010 Christian Grothoff (and other contributing authors)
#
@@ -68,7 +68,7 @@
def fail_cont (check):
global success
success = False;
- check.eval(True)
+ check.evaluate(True)
def check ():
check = Check (test)
@@ -103,13 +103,13 @@
server = Peer(test, './confs/c_bootstrap_server.conf');
client = Peer(test, './confs/c_no_nat_client.conf');
- server.start();
- client.start();
+ assert (True == server.start());
+ assert (True == client.start());
if ((client.started == True) and (server.started == True)):
- test.p ('Peers started, running check')
- time.sleep(5)
- check ()
+ test.p ('Peers started, running check')
+ time.sleep(5)
+ check ()
server.stop ()
client.stop ()
@@ -122,12 +122,12 @@
return True
try:
- run ()
+ run ()
except (KeyboardInterrupt, SystemExit):
- print 'Test interrupted'
- server.stop ()
- client.stop ()
- cleanup ()
+ print 'Test interrupted'
+ server.stop ()
+ client.stop ()
+ cleanup ()
if (success == False):
sys.exit(1)
else:
Modified: gnunet/src/integration-tests/test_integration_clique.py.in
===================================================================
--- gnunet/src/integration-tests/test_integration_clique.py.in 2012-02-16
14:47:15 UTC (rev 19821)
+++ gnunet/src/integration-tests/test_integration_clique.py.in 2012-02-16
16:18:20 UTC (rev 19822)
@@ -63,7 +63,7 @@
def fail_cont (check):
global success
success= False;
- check.eval(True)
+ check.evaluate(True)
def check_disconnect_client ():
@@ -87,7 +87,7 @@
def fail_disconnect_server_cont (check):
global success
success= False;
- check.eval(True)
+ check.evaluate(True)
def check_disconnect_server ():
@@ -116,7 +116,7 @@
def fail_connect_cont (check):
global success
success= False;
- check.eval(True)
+ check.evaluate(True)
def check_connect ():
Modified: gnunet/src/integration-tests/test_integration_clique_nat.py.in
===================================================================
--- gnunet/src/integration-tests/test_integration_clique_nat.py.in
2012-02-16 14:47:15 UTC (rev 19821)
+++ gnunet/src/integration-tests/test_integration_clique_nat.py.in
2012-02-16 16:18:20 UTC (rev 19822)
@@ -63,7 +63,7 @@
def fail_cont (check):
global success
success= False;
- check.eval(True)
+ check.evaluate(True)
def check_disconnect_client ():
@@ -87,7 +87,7 @@
def fail_disconnect_server_cont (check):
global success
success= False;
- check.eval(True)
+ check.evaluate(False)
def check_disconnect_server ():
@@ -116,7 +116,7 @@
def fail_connect_cont (check):
global success
success= False;
- check.eval(True)
+ check.evaluate(False)
def check_connect ():
Modified: gnunet/src/integration-tests/test_integration_disconnect.py.in
===================================================================
--- gnunet/src/integration-tests/test_integration_disconnect.py.in
2012-02-16 14:47:15 UTC (rev 19821)
+++ gnunet/src/integration-tests/test_integration_disconnect.py.in
2012-02-16 16:18:20 UTC (rev 19822)
@@ -64,7 +64,7 @@
def fail_disconnect_cont (check):
global success
success = False;
- check.eval(True)
+ check.evaluate(True)
def check_disconnect ():
@@ -86,7 +86,7 @@
def fail_connect_cont (check):
global success
success= False;
- check.eval(True)
+ check.evaluate(True)
def check_connect ():
Modified: gnunet/src/integration-tests/test_integration_restart.py.in
===================================================================
--- gnunet/src/integration-tests/test_integration_restart.py.in 2012-02-16
14:47:15 UTC (rev 19821)
+++ gnunet/src/integration-tests/test_integration_restart.py.in 2012-02-16
16:18:20 UTC (rev 19822)
@@ -68,7 +68,7 @@
def fail_restart_cont (check):
global success
success = False;
- check.eval(True)
+ check.evaluate(True)
def success_connect_cont (check):
@@ -101,7 +101,7 @@
def fail_connect_cont (check):
global success
success= False;
- check.eval(True)
+ check.evaluate(True)
def check_connect ():
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19822 - gnunet/src/integration-tests,
gnunet <=