[asterisk-commits] tilghman: branch tilghman/callparking_retrieval r804 - in /asterisk/team/tilg...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Oct 11 16:49:59 CDT 2010


Author: tilghman
Date: Mon Oct 11 16:49:57 2010
New Revision: 804

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=804
Log:
Save my shell script test

Added:
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/   (props changed)
      - copied from r788, asterisk/trunk/tests/callparking/
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/extensions.conf   (with props)
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/iax.conf   (with props)
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/extensions.conf   (with props)
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/iax.conf   (with props)
Removed:
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/configs/
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/configs2/
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/configs3/
Modified:
    asterisk/team/tilghman/callparking_retrieval/lib/python/asterisk/asterisk.py
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/run-test
    asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/test-config.yaml

Modified: asterisk/team/tilghman/callparking_retrieval/lib/python/asterisk/asterisk.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/tilghman/callparking_retrieval/lib/python/asterisk/asterisk.py?view=diff&rev=804&r1=803&r2=804
==============================================================================
--- asterisk/team/tilghman/callparking_retrieval/lib/python/asterisk/asterisk.py (original)
+++ asterisk/team/tilghman/callparking_retrieval/lib/python/asterisk/asterisk.py Mon Oct 11 16:49:57 2010
@@ -107,7 +107,8 @@
         asterisk.start()
         """
         cmd = [
-            "asterisk",
+			"valgrind", "--log-file=/tmp/valgrind.%p.log",
+            "/usr/sbin/asterisk",
             "-f", "-g", "-q", "-m", "-n",
             "-C", "%s" % os.path.join(self.astetcdir, "asterisk.conf")
         ]

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/run-test
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/run-test?view=diff&rev=804&r1=788&r2=804
==============================================================================
--- asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/run-test (original)
+++ asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/run-test Mon Oct 11 16:49:57 2010
@@ -1,189 +1,112 @@
-#!/usr/bin/env python
-'''
-Copyright (C) 2010, Digium, Inc.
-Matthias Nick <mnick86 at gmail.com>
+#!/bin/sh
 
-This program is free software, distributed under the terms of
-the GNU General Public License Version 2.
-'''
+case `uname -s` in
+	solaris*|sunos*)
+		PS="ps -ef"
+		KILLALL="pkill"
+		;;
+	*)
+		PS="ps auxwww"
+		KILLALL="killall"
+		;;
+esac
 
-import sys
-import os
-import math
-from optparse import OptionParser
-from twisted.application import service, internet
-from twisted.internet import reactor
-from starpy import fastagi
+testdir=${0%%runtest}
 
-sys.path.append("lib/python")
-from asterisk.asterisk import Asterisk
-from asterisk.version import AsteriskVersion
+cleanup() {
+	if test "x$userA_tmpdir" = "x"; then : ; else
+		asterisk -C $userA_tmpdir/asterisk.conf -rx "core stop now" >/dev/null 2>&1
+	fi
+	if test "x$userB_tmpdir" = "x"; then : ; else
+		asterisk -C /tmp/callparking_retrieval/userB/config/asterisk.conf -rx "core stop now" >/dev/null 2>&1
+	fi
+	rm -rf /tmp/callparking_retrieval
+	sleep 2
+	$KILLALL asterisk
+	sleep 1
+	$KILLALL -9 asterisk
+}
 
+for user in userA userB; do
+	${user}_tmpdir=`mktemp -t -d callparking_retrieval_$user.XXXXXX`
+	if $?; then : ; else
+		echo " *** Unable to create temporary directory for $user"
+		cleanup()
+		exit 1
+	fi
 
-class CallParkingTest:
-    def __init__(self, argv):
-        self.passed = False
-        self.done = False
+	eval "conf=\${${user}_tmpdir}"
 
-        # Test timeout in seconds
-        self.timeout = 60
-        self.last_step = ""
+	for i in ../configs/*.sample; do
+		dst=$conf/`basename $i .sample`
+		install -m 644 $i $dst
+	done
+	for i in $testdir$user/*; do
+		dst=$conf/`basename $i`
+		install -m 644 $i $dst
+	done
+	( echo "[directories]"; echo "astetcdir => $conf"; echo "[options]"; echo "verbose = 10"; echo "documentation_language = en_US" ) > $conf/asterisk.conf
 
-        # get version info
-        parser = OptionParser()
-        parser.add_option("-v", "--version", dest="ast_version",
-         help="Asterisk version string")
-        (options, args) = parser.parse_args(argv)
-        self.ast_version = AsteriskVersion(options.ast_version)
-        print self.ast_version
+	# Verify that files got created properly
+	if test -s $conf/asterisk.conf ; then : ; else
+		cleanup()
+		echo " *** Unable to create test configuration files in $conf"
+		exit 1
+	fi
+	asterisk -C $conf/asterisk.conf
+	sleep 1
+	# Asterisk is running, right?
+	if test `$PS | grep $conf[/] | wc -l` = "0"; then
+		cleanup()
+		echo " *** Unable to start asterisk for $user"
+		exit 1
+	fi
+done
 
-        # FastAGI, listen for results from dialplan
-        self.agi_b = fastagi.FastAGIFactory(self.get_result_b)
-        reactor.listenTCP(4574, self.agi_b, self.timeout, '127.0.0.1')
+echo " >>> User A is calling user B, who will park the call."
+asterisk -C $userA_tmpdir/asterisk.conf -rx "channel originate Local/wait at parking extension callb at parking"
+sleep 2
 
-        self.agi_c = fastagi.FastAGIFactory(self.get_result_c)
-        reactor.listenTCP(4575, self.agi_c, self.timeout, '127.0.0.1')
+# Verify that the call is up
+count=`asterisk -C $userA_tmpdir/asterisk.conf -rx "core show channels" | wc -l`
+if test $count -lt 4; then # 4 = header line + channel A linked to B + channel B linked to A + summary line
+	cleanup()
+	echo " *** Call generation from user A to user B failed"
+	exit 1
+fi
 
-        self.agi_retrieve_A = fastagi.FastAGIFactory(
-          self.get_result_retrieve_A)
-        reactor.listenTCP(4576, self.agi_retrieve_A, self.timeout, '127.0.0.1')
+sleep 10
 
-        self.agi_retrieve_B = fastagi.FastAGIFactory(
-         self.get_result_retrieve_B)
-        reactor.listenTCP(4577, self.agi_retrieve_B, self.timeout, '127.0.0.1')
+# Verify that the call is up
+count=`asterisk -C $userA_tmpdir/asterisk.conf -rx "core show channels" | wc -l`
+if test $count -lt 3; then # 3 = header line + channel A linked to parking + summary line
+	cleanup()
+	echo " *** User B failed to park the call from user A"
+	exit 1
+fi
 
-        reactor.callWhenRunning(self.run)
+echo " >>> User B is retrieving user A from parking, then will attempt to repark it."
+asterisk -C $userB_tmpdir/asterisk.conf -rx "channel originate IAX2/usera/701 at parking extension parka at parking"
+sleep 2
 
-        self.asterisk1 = Asterisk(
-         base="/tmp/asterisk-testsuite/callparking/asterisk1")
-        self.asterisk1.install_configs("tests/callparking/configs")
+# Verify that the call is up
+count=`asterisk -C $userA_tmpdir/asterisk.conf -rx "core show channels" | wc -l`
+if test $count -lt 4; then # 4 = header line + channel A linked to B + channel B linked to A + summary line
+	cleanup()
+	echo " *** User B failed to retrieve the call from parking"
+	exit 1
+fi
 
-        self.asterisk2 = Asterisk(
-         base="/tmp/asterisk-testsuite/callparking/asterisk2")
-        self.asterisk2.install_configs("tests/callparking/configs2")
+sleep 10
 
-        self.asterisk3 = Asterisk(
-         base="/tmp/asterisk-testsuite/callparking/asterisk3")
-        self.asterisk3.install_configs("tests/callparking/configs3")
+a_parked=`asterisk -C $userA_tmpdir/asterisk.conf -rx "core show channels" | wc -l`
+if test $a_parked -lt 3; then
+	echo " *** Failed.  When user B hung up, user A was not parked and thus hungup as well."
+	cleanup()
+	exit 1
+fi
 
-    # This gets invoked by the dialplan when userB has parked userA to 701.
-    # Initiate new call userB <--> userC now.
-    def get_result_b(self, agi):
-        self.log_last_step("got AGI connection from userB. "
-         "Initiate new call between userB and userC now")
-        self.asterisk1.cli_originate(
-         "IAX2/userB at 127.0.0.1:4572/c_exten extension bridge_to_B at parking")
-        return agi.finish()
+cleanup()
 
-    # This gets invoked by the dialplan when userC has parked userB to 702.
-    # Initiate new call between userC and parked userA (@701) now.
-    def get_result_c(self, agi):
-        self.log_last_step("got AGI connection from userC. "
-         "Now retrieve userA -> call 701")
-        self.asterisk3.cli_originate(
-         "IAX2/userA at 127.0.0.1:4570/701 extension retrieve_A at parking")
-        return agi.finish()
+exit 0
 
-    # This gets invoked by the dialplan when userC has retrieved userA.
-    # Initiate new call between userC and parked userB (@702) now.
-    def get_result_retrieve_A(self, agi):
-        self.log_last_step("got AGI connection from userC. "
-         "userA retrieved successfully, now retrieve userB")
-        self.asterisk3.cli_originate(
-         "IAX2/userA at 127.0.0.1:4570/702 extension retrieve_B at parking")
-        return agi.finish()
-
-    # This gets invoked by the dialplan when userC has retrieved userB.
-    # Test successful!
-    def get_result_retrieve_B(self, agi):
-        self.log_last_step("got AGI connection from userC. "
-         "userB retrieved successfully -> Test successful")
-        self.passed = True
-        reactor.callLater(2, self.read_result)
-        return agi.finish()
-
-    def read_result(self):
-        if self.done:
-            return
-        self.done = True
-
-        self.log_last_step("Reading results")
-
-        # get lock output in case of deadlock before tearing down.
-        self.asterisk1.cli_exec("core show locks")
-        self.asterisk2.cli_exec("core show locks")
-        self.asterisk3.cli_exec("core show locks")
-
-        # if channels are still up for some reason, we want to know that
-        self.asterisk1.cli_exec("core show channels")
-        self.asterisk2.cli_exec("core show channels")
-        self.asterisk3.cli_exec("core show channels")
-
-        if (self.passed):
-            self.log_last_step("Test Passed...")
-        else:
-            self.log_last_step("Test Failed... view result of "
-             "'core show globals' in log for more detailed failure results.")
-
-        if reactor.running:
-            print "Stopping Reactor ..."
-            reactor.stop()
-
-    # This is a callparking test.
-    # 1.  userA calls userB
-    # 2.  userB dials # -> 700, to park userA (701).
-    # 3.  userB calls userC
-    # 4.  userC dials # -> 700, to park userB (702).
-    # 5.  userC dials 701 and retrieves userA
-    # 6.  userC dials 702 and retrieves userB
-
-    def launch_test(self):
-        self.asterisk1.cli_exec("core set verbose 10")
-        self.asterisk2.cli_exec("core set verbose 10")
-        self.asterisk3.cli_exec("core set verbose 10")
-
-        self.log_last_step("Originating call to begin test")
-        self.asterisk1.cli_originate(
-         "IAX2/userA at 127.0.0.1:4571/b_exten extension bridge_to_A at parking")
-
-    def start_asterisk(self):
-        self.log_last_step("Starting Asterisk")
-        self.asterisk1.start()
-        self.asterisk2.start()
-        self.asterisk3.start()
-
-    def stop_asterisk(self):
-        self.asterisk1.stop()
-        self.asterisk2.stop()
-        self.asterisk3.stop()
-
-    def log_last_step(self, step):
-        print step
-        self.last_step = step
-
-    def run(self):
-        self.start_asterisk()
-
-        # start test in 5 seconds
-        reactor.callLater(5, self.launch_test)
-
-        # stop and read results after timeout
-        reactor.callLater(self.timeout, self.read_result)
-
-
-def main(argv=None):
-    if argv is None:
-        argv = sys.argv
-
-    # Run CallParking Test
-    call_parking_test = CallParkingTest(argv)
-    reactor.run()
-    call_parking_test.stop_asterisk()
-    if call_parking_test.passed != True:
-        return 1
-    return 0
-
-if __name__ == "__main__":
-    sys.exit(main() or 0)
-
-# vim:sw=4:ts=4:expandtab:textwidth=79

Modified: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/test-config.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/test-config.yaml?view=diff&rev=804&r1=788&r2=804
==============================================================================
--- asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/test-config.yaml (original)
+++ asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/test-config.yaml Mon Oct 11 16:49:57 2010
@@ -1,10 +1,7 @@
 testinfo:
     summary:     'Test Call Parking'
     description: |
-        'This test verifies the Call Parking routine used in the feature code.'
+        'This test verifies that retrieving a parked call does not hamper the ability to park it once again.'
 
 properties:
     minversion: '1.4'
-    dependencies:
-        - python : 'twisted'
-        - python : 'starpy'

Added: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/extensions.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/extensions.conf?view=auto&rev=804
==============================================================================
--- asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/extensions.conf (added)
+++ asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/extensions.conf Mon Oct 11 16:49:57 2010
@@ -1,0 +1,15 @@
+[general]
+static=yes
+writeprotect=no
+lastaction=""
+
+[parking]
+include => parkedcalls
+
+; User A starts out by calling user B, with inband DTMF activated for transfer
+exten => callb,1,Dial(IAX2/userb/userb at parking,,t)
+; What channel A will be doing
+exten => wait,1,Wait(100)
+
+; When user B calls in, we will go directly to the parkedcalls context, so nothing else is needed here.
+

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/extensions.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/extensions.conf
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision Yoyo

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/extensions.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/iax.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/iax.conf?view=auto&rev=804
==============================================================================
--- asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/iax.conf (added)
+++ asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/iax.conf Mon Oct 11 16:49:57 2010
@@ -1,0 +1,14 @@
+[general]
+bindport=4571
+bindaddr=127.0.0.1
+transfer=yes
+disallow=all
+allow=ulaw
+jitterbuffer=no
+forcejitterbuffer=no
+
+[userb]
+type=friend
+host=127.0.0.1
+port=4572
+context=parking

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/iax.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/iax.conf
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision Yoyo

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userA/iax.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/extensions.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/extensions.conf?view=auto&rev=804
==============================================================================
--- asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/extensions.conf (added)
+++ asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/extensions.conf Mon Oct 11 16:49:57 2010
@@ -1,0 +1,14 @@
+[parking]
+
+; When user A calls user B, user B will attempt to callpark user A.
+exten => callb,1,Answer
+exten => callb,n(park),Wait(1)
+exten => callb,n,SendDTMF(#)
+exten => callb,n,Wait(3)
+exten => callb,n,SendDTMF(700)
+exten => callb,n,Wait(1)
+exten => callb,n,Hangup
+
+; After retrieving the parked call, try parking it again
+exten => parka,1,Goto(callb,park)
+

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/extensions.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/extensions.conf
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision Yoyo

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/extensions.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/iax.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/iax.conf?view=auto&rev=804
==============================================================================
--- asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/iax.conf (added)
+++ asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/iax.conf Mon Oct 11 16:49:57 2010
@@ -1,0 +1,15 @@
+[general]
+bindport=4572
+bindaddr=127.0.0.1
+transfer=yes
+disallow=all
+allow=ulaw
+jitterbuffer=no
+forcejitterbuffer=no
+
+[usera]
+type=friend
+host=127.0.0.1
+port=4571
+context=parking
+

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/iax.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/iax.conf
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision Yoyo

Propchange: asterisk/team/tilghman/callparking_retrieval/tests/callparking_retrieval/userB/iax.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the asterisk-commits mailing list