gnunet-svn
[Top][All Lists]
Advanced

[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 ():




reply via email to

[Prev in Thread] Current Thread [Next in Thread]