[asterisk-commits] pabelanger: testsuite/asterisk/trunk r851 - in /asterisk/trunk: ./ lib/python...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Nov 17 14:49:36 CST 2010


Author: pabelanger
Date: Wed Nov 17 14:49:30 2010
New Revision: 851

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=851
Log:
A new library for testsuite utilites. 

Also includes better handling of finding the 'asterisk'
binary.  This should help with CentOS builds using sudo.

Review: https://reviewboard.asterisk.org/r/1015/

Added:
    asterisk/trunk/lib/python/asterisk/utils.py   (with props)
Modified:
    asterisk/trunk/lib/python/asterisk/__init__.py
    asterisk/trunk/lib/python/asterisk/asterisk.py
    asterisk/trunk/runtests.py

Modified: asterisk/trunk/lib/python/asterisk/__init__.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/lib/python/asterisk/__init__.py?view=diff&rev=851&r1=850&r2=851
==============================================================================
--- asterisk/trunk/lib/python/asterisk/__init__.py (original)
+++ asterisk/trunk/lib/python/asterisk/__init__.py Wed Nov 17 14:49:30 2010
@@ -1,1 +1,1 @@
-__all__ = [ "asterisk", "config", "version", "cdr" ]
+__all__ = [ "asterisk", "config", "version", "cdr", "utils" ]

Modified: asterisk/trunk/lib/python/asterisk/asterisk.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/lib/python/asterisk/asterisk.py?view=diff&rev=851&r1=850&r2=851
==============================================================================
--- asterisk/trunk/lib/python/asterisk/asterisk.py (original)
+++ asterisk/trunk/lib/python/asterisk/asterisk.py Wed Nov 17 14:49:30 2010
@@ -17,9 +17,9 @@
 import time
 import shutil
 import subprocess
+import utils
 
 from config import ConfigFile
-
 from version import AsteriskVersion
 
 
@@ -60,6 +60,8 @@
         self.ast_version = AsteriskVersion()
 
         self.astetcdir = "/etc/asterisk"
+	self.ast_binary = utils.which("asterisk") or "/usr/sbin/asterisk"
+
         # Find the system installed asterisk.conf
         ast_confs = [
                 "/etc/asterisk/asterisk.conf",
@@ -107,11 +109,16 @@
         asterisk.start()
         """
         cmd = [
-            "asterisk",
+            self.ast_binary,
             "-f", "-g", "-q", "-m", "-n",
             "-C", "%s" % os.path.join(self.astetcdir, "asterisk.conf")
         ]
-        self.process = subprocess.Popen(cmd)
+	try:
+            self.process = subprocess.Popen(cmd)
+        except OSError:
+            print "Failed to execute command: %s" % str(cmd)
+            return False
+
         # Be _really_ sure that Asterisk has started up before returning.
         time.sleep(5.0)
         self.cli_exec("core waitfullybooted")
@@ -295,7 +302,7 @@
         asterisk.cli_exec("core set verbose 10")
         """
         cmd = [
-            "asterisk",
+            self.ast_binary,
             "-C", "%s" % os.path.join(self.astetcdir, "asterisk.conf"),
             "-rx", "%s" % cli_cmd
         ]

Added: asterisk/trunk/lib/python/asterisk/utils.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/lib/python/asterisk/utils.py?view=auto&rev=851
==============================================================================
--- asterisk/trunk/lib/python/asterisk/utils.py (added)
+++ asterisk/trunk/lib/python/asterisk/utils.py Wed Nov 17 14:49:30 2010
@@ -1,0 +1,32 @@
+#! /usr/bin/env python
+""" Asterisk testsuite utils 
+
+This module provides access to Asterisk testsuite utility
+functions from within python code.
+
+Copyright (C) 2010, Digium, Inc.
+Paul Belanger <pabelanger at digium.com>
+
+This program is free software, distributed under the terms of
+the GNU General Public License Version 2.
+"""
+import os
+
+
+def which(program):
+	'''
+	http://stackoverflow.com/questions/377017/test-if-executable-exists-in-python
+	'''
+	def is_exe(fpath):
+		return os.path.exists(fpath) and os.access(fpath, os.X_OK)
+
+	fpath, fname = os.path.split(program)
+	if fpath:
+		if is_exe(program):
+			return program
+		else:
+			for path in os.environ["PATH"].split(os.pathsep):
+				exe_file = os.path.join(path, program)
+				if is_exe(exe_file):
+					return exe_file
+	return None

Propchange: asterisk/trunk/lib/python/asterisk/utils.py
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/lib/python/asterisk/utils.py
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/lib/python/asterisk/utils.py
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: asterisk/trunk/runtests.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/runtests.py?view=diff&rev=851&r1=850&r2=851
==============================================================================
--- asterisk/trunk/runtests.py (original)
+++ asterisk/trunk/runtests.py Wed Nov 17 14:49:30 2010
@@ -20,6 +20,7 @@
 
 from asterisk.version import AsteriskVersion
 from asterisk.asterisk import Asterisk
+from asterisk import utils
 
 
 TESTS_CONFIG = "tests/tests.yaml"
@@ -41,7 +42,7 @@
         self.met = False
         if "app" in dep:
             self.name = dep["app"]
-            self.met = self.__which(self.name) is not None
+            self.met = utils.which(self.name) is not None
         elif "python" in dep:
             self.name = dep["python"]
             try:
@@ -62,25 +63,6 @@
         else:
             print "Unknown dependency type specified."
 
-    def __which(self, program):
-        '''
-        http://stackoverflow.com/questions/377017/test-if-executable-exists-in-python
-        '''
-        def is_exe(fpath):
-            return os.path.exists(fpath) and os.access(fpath, os.X_OK)
-
-        fpath, fname = os.path.split(program)
-        if fpath:
-            if is_exe(program):
-                return program
-        else:
-            for path in os.environ["PATH"].split(os.pathsep):
-                exe_file = os.path.join(path, program)
-                if is_exe(exe_file):
-                    return exe_file
-
-        return None
-
     def depend_ipv6(self):
         try:
             s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
@@ -95,7 +77,7 @@
         we run pjsua --help and parse the output to determine if --ipv6
         is a valid option
         '''
-        if self.__which('pjsua') is None:
+        if utils.which('pjsua') is None:
             return False
 
         help_output = subprocess.Popen(['pjsua', '--help'],




More information about the asterisk-commits mailing list