[svn-commits] mnick: testsuite/asterisk/trunk r733 - in /asterisk/trunk/tests: ./ one-step-...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Aug 17 04:04:52 CDT 2010


Author: mnick
Date: Tue Aug 17 04:04:47 2010
New Revision: 733

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=733
Log:
added GSOC2010 Test "one-step-parking"

Added:
    asterisk/trunk/tests/one-step-parking/
    asterisk/trunk/tests/one-step-parking/configs/
    asterisk/trunk/tests/one-step-parking/configs/extensions.conf   (with props)
    asterisk/trunk/tests/one-step-parking/configs/features.conf   (with props)
    asterisk/trunk/tests/one-step-parking/configs/iax.conf   (with props)
    asterisk/trunk/tests/one-step-parking/configs2/
    asterisk/trunk/tests/one-step-parking/configs2/extensions.conf   (with props)
    asterisk/trunk/tests/one-step-parking/configs2/iax.conf   (with props)
    asterisk/trunk/tests/one-step-parking/run-test   (with props)
    asterisk/trunk/tests/one-step-parking/test-config.yaml   (with props)
Modified:
    asterisk/trunk/tests/tests.yaml

Added: asterisk/trunk/tests/one-step-parking/configs/extensions.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/one-step-parking/configs/extensions.conf?view=auto&rev=733
==============================================================================
--- asterisk/trunk/tests/one-step-parking/configs/extensions.conf (added)
+++ asterisk/trunk/tests/one-step-parking/configs/extensions.conf Tue Aug 17 04:04:47 2010
@@ -1,0 +1,34 @@
+[general]
+static=yes
+writeprotect=no
+
+[parking]
+exten => a_dials,1,Answer()
+exten => a_dials,n,NOOP(calling userA and bridge them to userB!)
+exten => a_dials,n,Dial(IAX2/userA at 127.0.0.1:4570/a_exten,10,kK)
+exten => a_dials,n,NOOP(Okay, userA should be parked now!)
+exten => a_dials,n,Hangup()
+
+exten => a_exten,1,Answer()
+exten => a_exten,n,NOOP(Hey, incoming call from userB)
+exten => a_exten,n,Wait(1)
+exten => a_exten,n,NOOP(waiting for DTMF '110' from userB)
+exten => a_exten,n,Read(sync,,3,,,10) ;read 3 digits, 5 sec timeout
+exten => a_exten,n,GotoIF($["${sync}"="110"]?DTMFpass:DTMFfail)
+exten => a_exten,n(DTMFpass),NOOP(read '${sync}' and expected '110' --> OK)
+
+exten => a_exten,n,NOOP(somewhere in the future I get parked!)
+exten => a_exten,n,NOOP(I will send DTMF '999' every 5 seconds in order to sync when I get reconnected)
+exten => a_exten,n,Set(count=1)
+
+exten => a_exten,n(sync),Wait(5)
+exten => a_exten,n,NOOP(Attempt ${count} to sync)
+exten => a_exten,n,Set(count=$[${count}+1])
+exten => a_exten,n,SendDTMF(999)
+exten => a_exten,n,Goto(sync)
+
+exten => a_exten,n(DTMFfail),NOOP(read '${sync}' and expected '110' --> FAILURE)
+exten => a_exten,n,Hangup()
+
+
+include => parkedcalls

Propchange: asterisk/trunk/tests/one-step-parking/configs/extensions.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/one-step-parking/configs/extensions.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/one-step-parking/configs/extensions.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/trunk/tests/one-step-parking/configs/features.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/one-step-parking/configs/features.conf?view=auto&rev=733
==============================================================================
--- asterisk/trunk/tests/one-step-parking/configs/features.conf (added)
+++ asterisk/trunk/tests/one-step-parking/configs/features.conf Tue Aug 17 04:04:47 2010
@@ -1,0 +1,8 @@
+[general]
+parkext => 700			; What extension to dial to park	(all parking lots)
+parkpos => 701-720		; What extensions to park calls on. (defafult parking lot)
+context => parkedcalls		; Which context parked calls are in (default parking lot)
+parkingtime => 45		; Number of seconds a call can be parked for 
+
+[featuremap]
+parkcall => #72        ; Park call (one step parking)  -- Make sure to set the K and/or k option in the Dial() app call!

Propchange: asterisk/trunk/tests/one-step-parking/configs/features.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/one-step-parking/configs/features.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/one-step-parking/configs/features.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/trunk/tests/one-step-parking/configs/iax.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/one-step-parking/configs/iax.conf?view=auto&rev=733
==============================================================================
--- asterisk/trunk/tests/one-step-parking/configs/iax.conf (added)
+++ asterisk/trunk/tests/one-step-parking/configs/iax.conf Tue Aug 17 04:04:47 2010
@@ -1,0 +1,16 @@
+[general]
+bindport=4570
+bindaddr=127.0.0.1
+
+transfer=yes
+disallow=all
+allow=alaw
+allow=ulaw
+jitterbuffer=no
+forcejitterbuffer=no
+
+[userA]
+type=friend
+host=127.0.0.1
+port=4570
+context=parking

Propchange: asterisk/trunk/tests/one-step-parking/configs/iax.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/one-step-parking/configs/iax.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/one-step-parking/configs/iax.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/trunk/tests/one-step-parking/configs2/extensions.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/one-step-parking/configs2/extensions.conf?view=auto&rev=733
==============================================================================
--- asterisk/trunk/tests/one-step-parking/configs2/extensions.conf (added)
+++ asterisk/trunk/tests/one-step-parking/configs2/extensions.conf Tue Aug 17 04:04:47 2010
@@ -1,0 +1,40 @@
+[general]
+static=yes
+writeprotect=no
+lastaction=""
+
+[parking]
+exten => b_exten,1,Answer()
+exten => b_exten,n,NOOP(incoming call from userA)
+exten => b_exten,n,Wait(1)
+exten => b_exten,n,SendDTMF(1w1w0)
+exten => b_exten,n,Wait(1)
+exten => b_exten,n,NOOP(trying to park the call- one step parking)
+exten => b_exten,n,SET(GLOBAL(lastaction)=park)
+exten => b_exten,n,SendDTMF(#w7w2)
+exten => b_exten,n,Wait(2)
+exten => b_exten,n,Hangup()
+
+exten => h,1,GotoIF($["${GLOBAL(lastaction)}"="park"]?retrieve)
+exten => h,n,Hangup()
+exten => h,n(retrieve),NOOP(Got Hangup due to successfull parking -> call 701 in order to retrieve userA)
+exten => h,n,SET(GLOBAL(lastaction)=initCall)
+exten => h,n,AGI(agi://127.0.0.1:4600) ; initiate call to retrieve userA
+exten => h,n,Hangup()
+
+exten => retrieve_A,1,Answer()
+exten => retrieve_A,n,NOOP(okay, I should now be connected to userA -> trying to sync)
+exten => retrieve_A,n(sync),Wait(1)
+exten => retrieve_A,n,Read(sync,,3,,,8) ;wait more than 5 but less than 10 seconds
+exten => retrieve_A,n,GotoIf($["${sync}"="999"]?DTMFpass:DTMFfail)
+exten => retrieve_A,n(DTMFpass),NOOP(read '${sync}' and expected '999' - OK)
+exten => retrieve_A,n,NOOP(TEST PASSED!)
+exten => retrieve_A,n,Set(GLOBAL(lastaction)=success)
+exten => retrieve_A,n,AGI(agi://127.0.0.1:4574)
+exten => retrieve_A,n,Hangup()
+
+exten => retrieve_A,n(DTMFfail),NOOP(read '${sync}' and exptected '999' - FAILURE)
+exten => retrieve_A,n,NOOP(trying to sync again!)
+exten => retrieve_A,n,Goto(sync)
+
+

Propchange: asterisk/trunk/tests/one-step-parking/configs2/extensions.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/one-step-parking/configs2/extensions.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/one-step-parking/configs2/extensions.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/trunk/tests/one-step-parking/configs2/iax.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/one-step-parking/configs2/iax.conf?view=auto&rev=733
==============================================================================
--- asterisk/trunk/tests/one-step-parking/configs2/iax.conf (added)
+++ asterisk/trunk/tests/one-step-parking/configs2/iax.conf Tue Aug 17 04:04:47 2010
@@ -1,0 +1,16 @@
+[general]
+
+bindport=4571
+bindaddr=127.0.0.1
+transfer=yes
+disallow=all
+allow=alaw
+allow=ulaw
+jitterbuffer=no
+forcejitterbuffer=no
+
+[userA]
+type=friend
+host=127.0.0.1
+port=4570
+context=parking

Propchange: asterisk/trunk/tests/one-step-parking/configs2/iax.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/one-step-parking/configs2/iax.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/one-step-parking/configs2/iax.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/trunk/tests/one-step-parking/run-test
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/one-step-parking/run-test?view=auto&rev=733
==============================================================================
--- asterisk/trunk/tests/one-step-parking/run-test (added)
+++ asterisk/trunk/tests/one-step-parking/run-test Tue Aug 17 04:04:47 2010
@@ -1,0 +1,154 @@
+#!/usr/bin/env python
+'''
+Copyright (C) 2010, Digium, Inc.
+Matthias Nick <mnick86 at gmail.com>
+
+This program is free software, distributed under the terms of
+the GNU General Public License Version 2.
+'''
+
+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
+
+sys.path.append("lib/python")
+from asterisk.asterisk import Asterisk
+from asterisk.version import AsteriskVersion
+
+
+class OneStepParkingTest:
+    def __init__(self, argv):
+        self.passed = False
+        self.done = False
+
+        # Test timeout in seconds
+        self.timeout = 60
+        self.last_step = ""
+
+        # 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)
+
+        # FastAGI, listen for results from dialplan
+        self.agi_dial_a = fastagi.FastAGIFactory(self.get_result_dial_a)
+        self.agi_b = fastagi.FastAGIFactory(self.get_result_b)
+        reactor.listenTCP(4600, self.agi_dial_a,
+         self.timeout, '127.0.0.1')  # retrieve userA (Dial 701)
+        reactor.listenTCP(4574, self.agi_b,
+         self.timeout, '127.0.0.1')  # success
+
+        reactor.callWhenRunning(self.run)
+
+        print self.ast_version
+        self.asterisk1 = Asterisk(
+         base="/tmp/asterisk-testsuite/one-step-parking")
+        self.asterisk1.install_configs("tests/one-step-parking/configs")
+
+        self.asterisk2 = Asterisk(
+         base="/tmp/asterisk-testsuite/one-step-parking")
+        self.asterisk2.install_configs("tests/one-step-parking/configs2")
+
+    # This gets invoked by the dialplan when userA gets parked (701)
+    # and userB is trying to retrieve userA by dialing 701
+    def get_result_dial_a(self, agi):
+        self.log_last_step("Dial userA (701)")
+        self.asterisk2.cli_originate(
+         "IAX2/userA at 127.0.0.1:4570/701 extension retrieve_A at parking")
+        return self.finish_agi(agi)
+
+   # This gets invoked by the dialplan when test succeeds.
+    def get_result_b(self, agi):
+        self.log_last_step("got AGI connection from userB -> test successful")
+        self.passed = True
+        reactor.callLater(2, self.read_result)
+        return self.finish_agi(agi)
+
+   # Finish the AGI connection
+    def finish_agi(self, agi):
+        sequence = fastagi.InSequence()
+        sequence.append(agi.finish)
+        return sequence()
+
+    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")
+
+        # 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.stop_asterisk()
+
+        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 one step parking test
+    # 1.  A calls B
+    # 2.  B dials * --> one step parking
+    # 3.  A gets parked
+    # 4.  B calls 701 and retrieves A
+    def launch_test(self):
+        self.asterisk2.cli_exec("core set verbose 10")
+        self.asterisk1.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 a_dials at parking")
+
+    def start_asterisk(self):
+        self.log_last_step("Starting Asterisk")
+        self.asterisk1.start()
+        self.asterisk2.start()
+
+    def stop_asterisk(self):
+        self.asterisk1.stop()
+        self.asterisk2.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 one-step-parking Test
+    one_step_parking_test = OneStepParkingTest(argv)
+    reactor.run()
+    if one_step_parking_test.passed != True:
+        return 1
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main() or 0)

Propchange: asterisk/trunk/tests/one-step-parking/run-test
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/one-step-parking/run-test
------------------------------------------------------------------------------
    svn:executable = *

Propchange: asterisk/trunk/tests/one-step-parking/run-test
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/one-step-parking/run-test
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/trunk/tests/one-step-parking/test-config.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/one-step-parking/test-config.yaml?view=auto&rev=733
==============================================================================
--- asterisk/trunk/tests/one-step-parking/test-config.yaml (added)
+++ asterisk/trunk/tests/one-step-parking/test-config.yaml Tue Aug 17 04:04:47 2010
@@ -1,0 +1,10 @@
+testinfo:
+    summary:     'Test One Step Parking'
+    description: |
+        'This test verifies the One Step Parking routine used in the feature code.'
+
+properties:
+    minversion: '1.4'
+    dependencies:
+        - python : 'twisted'
+        - python : 'starpy'

Propchange: asterisk/trunk/tests/one-step-parking/test-config.yaml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/one-step-parking/test-config.yaml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/one-step-parking/test-config.yaml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: asterisk/trunk/tests/tests.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/tests.yaml?view=diff&rev=733&r1=732&r2=733
==============================================================================
--- asterisk/trunk/tests/tests.yaml (original)
+++ asterisk/trunk/tests/tests.yaml Tue Aug 17 04:04:47 2010
@@ -32,6 +32,7 @@
     - test: 'feature_blonde_transfer'
     - test: 'feature_attended_transfer'
     - test: 'blind-transfer-parkingtimeout'
+    - test: 'one-step-parking'
     #- test: 'callparking'
     - test: 'mixmonitor'
     - test: 'chanspy/chanspy_w_mixmonitor'




More information about the svn-commits mailing list