[asterisk-commits] jbigelow: testsuite/asterisk/trunk r6415 - in /asterisk/trunk/tests/rest_api/...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Feb 13 16:46:16 CST 2015
Author: jbigelow
Date: Fri Feb 13 16:46:10 2015
New Revision: 6415
URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=6415
Log:
Testsuite: Attended transfers from Stasis bridge to Stasis bridge.
This adds the Attended Transfers from a Stasis bridge to a Stasis bridge tests
1.6 & 1.7 as described on the StasisStart/StasisEnd Test Plan at:
https://wiki.asterisk.org/wiki/pages/viewpage.action?pageId=30279826
Notes:
* The tests may occasionally fail due to bug ASTERISK-24755.
* These tests constantly fail due to ASTERISK-24782. The YAML config
'expected-result: False' has been set for the tests. Once the bug has been
resolved the config line should be removed from both.
ASTERISK-24580 #close
Review: https://reviewboard.asterisk.org/r/4416/
Added:
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/extensions.conf (with props)
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/pjsip.conf (with props)
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/test-config.yaml (with props)
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/extensions.conf (with props)
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/pjsip.conf (with props)
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/test-config.yaml (with props)
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/tests.yaml (with props)
Modified:
asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/tests.yaml
Added: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/extensions.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/extensions.conf?view=auto&rev=6415
==============================================================================
--- asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/extensions.conf (added)
+++ asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/extensions.conf Fri Feb 13 16:46:10 2015
@@ -1,0 +1,22 @@
+[default]
+
+exten => dummy,1,NoOp()
+ same => n,Answer()
+ same => n,Stasis(testsuite,dummy)
+ same => n,Hangup()
+
+exten => echo,1,NoOp()
+ same => n,Answer()
+ same => n,Echo()
+ same => n,Hangup()
+
+exten => stasis_one,1,NoOp()
+ same => n,Answer()
+ same => n,Stasis(app_A)
+ same => n,Hangup
+
+exten => stasis_two,1,NoOp()
+ same => n,Answer()
+ same => n,Stasis(app_B)
+ same => n,Hangup
+
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/extensions.conf
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/extensions.conf
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/extensions.conf
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/pjsip.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/pjsip.conf?view=auto&rev=6415
==============================================================================
--- asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/pjsip.conf (added)
+++ asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/pjsip.conf Fri Feb 13 16:46:10 2015
@@ -1,0 +1,54 @@
+[global]
+type=global
+debug=yes
+
+[system]
+type=system
+
+[local]
+type=transport
+protocol=udp
+bind=127.0.0.1:5060
+
+[alice]
+type=endpoint
+context=default
+disallow=all
+allow=ulaw
+direct_media=no
+media_address=127.0.0.1
+aors=alice
+
+[alice]
+type=aor
+max_contacts=1
+contact=sip:alice at 127.0.0.1:5061\;transport=udp
+
+[bob]
+type=endpoint
+context=default
+disallow=all
+allow=ulaw
+direct_media=no
+media_address=127.0.0.1
+aors=bob
+
+[bob]
+type=aor
+max_contacts=1
+contact=sip:bob at 127.0.0.1:5062\;transport=udp
+
+[carol]
+type=endpoint
+context=default
+disallow=all
+allow=ulaw
+direct_media=no
+media_address=127.0.0.1
+aors=carol
+
+[carol]
+type=aor
+max_contacts=1
+contact=sip:carol at 127.0.0.1:5063\;transport=udp
+
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/pjsip.conf
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/pjsip.conf
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/configs/ast1/pjsip.conf
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/test-config.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/test-config.yaml?view=auto&rev=6415
==============================================================================
--- asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/test-config.yaml (added)
+++ asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/test-config.yaml Fri Feb 13 16:46:10 2015
@@ -1,0 +1,503 @@
+testinfo:
+ summary: |
+ "Transfer (attended) Stasis bridge to Stasis bridge in different Stasis
+ apps"
+ description: |
+ "Upon the kick off local channel entering into the Stasis(testsuite)
+ app, a call is made from the 'alice' PJSUA account that is put into
+ Stasis(app_A). The Stasis bridge 'test_bridge_a' is created and
+ alice is added to it. A channel is originated to the 'bob' PJSUA
+ account and put into the same Stasis(app_A) app and bridge with
+ alice. Alice begins an attended transfer by making another call. The
+ second alice channel is put into the different app Stasis(app_B), the
+ Stasis bridge 'test_bridge_b' is created, and the second alice channel
+ is added to Stasis bridge. A channel is then originated to the 'carol'
+ PJSUA account and put into the same Stasis(app_B) app and bridge
+ with the second alice channel.
+
+ Alice then completes the attended transfer essentially transferring
+ the Stasis bridge to the other Stasis bridge via different Stasis
+ apps. Asterisk does this by creating a Local channel where each half
+ is swapped in place of the two alice channels. After the transfer is
+ successful with a local replacement channel half in the Stasis bridge
+ with bob via app_A and another in the Stasis bridge with carol via
+ app_B, bob is hung up. Carol is then hung up and so is the local
+ replacement channel half that was in the Stasis bridge with bob. This
+ causes the other local replacement channel half that was in the Stasis
+ bridge with carol to be hung up and triggers the hang up of the kick
+ off local channel and the destruction of the stasis bridge.
+
+ This test verifies that a Stasis bridge can be transferred (attended)
+ to a Stasis bridge via different Stasis apps. It also verifies that
+ the StasisStart & StasisEnd events occur for the alice(both), bob,
+ carol, and local replacement channels."
+ issues:
+ - jira: 'ASTERISK-24782'
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'ari.AriOriginateTestObject'
+ modules:
+ -
+ config-section: 'pjsua-config'
+ typename: 'phones.PjsuaPhoneController'
+ -
+ config-section: pluggable-config
+ typename: 'pluggable_modules.EventActionModule'
+
+test-object-config:
+ apps: testsuite,app_A,app_B
+ test-iterations:
+ -
+ channelId: 'dummy'
+ endpoint: 'Local/dummy at default'
+ context: 'default'
+ extension: 'echo'
+ priority: '1'
+
+pjsua-config:
+ transports:
+ -
+ name: 'local-ipv4-1'
+ bind: '127.0.0.1'
+ bindport: '5061'
+ -
+ name: 'local-ipv4-2'
+ bind: '127.0.0.1'
+ bindport: '5062'
+ -
+ name: 'local-ipv4-3'
+ bind: '127.0.0.1'
+ bindport: '5063'
+ accounts:
+ -
+ name: 'alice'
+ username: 'alice'
+ domain: '127.0.0.1'
+ transport: 'local-ipv4-1'
+ -
+ name: 'bob'
+ username: 'bob'
+ domain: '127.0.0.1'
+ transport: 'local-ipv4-2'
+ -
+ name: 'carol'
+ username: 'carol'
+ domain: '127.0.0.1'
+ transport: 'local-ipv4-3'
+
+pluggable-config:
+ # Upon kickoff channel entering Stasis app: create a bridge, don't add
+ # kickoff channel to bridge, instruct alice to place call to
+ # Stasis(app_A).
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'testsuite'
+ args: ['dummy']
+ channel:
+ id: 'dummy;2'
+ count: 1
+ pjsua_phone:
+ action: 'call'
+ pjsua_account: 'alice'
+ call_uri: 'sip:stasis_one at 127.0.0.1'
+ # Upon alice entering the Stasis app: create the stasis bridge
+ # 'test_bridge_a', add alice's first channel to the Stasis bridge, and
+ # originate a call to bob.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'app_A'
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ ari-requests:
+ -
+ method: 'post'
+ uri: 'bridges/test_bridge_a'
+ -
+ method: 'post'
+ uri: 'bridges/test_bridge_a/addChannel'
+ params:
+ channel: '{channel.id}'
+ -
+ method: 'post'
+ uri: 'channels/bob'
+ params:
+ endpoint: 'PJSIP/bob'
+ context: 'default'
+ extension: 'stasis_one'
+ priority: '1'
+ # Ensure alice's first channel enters the Stasis bridge 'test_bridge_a'.
+ -
+ ari-events:
+ match:
+ type: ChannelEnteredBridge
+ application: 'app_A'
+ bridge:
+ id: 'test_bridge_a'
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ # Ensure bob enters the Stasis app. Then add bob to the Stasis bridge
+ # with alice's first channel.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'app_A'
+ channel:
+ name: 'PJSIP/bob-.*'
+ count: 1
+ ari-requests:
+ method: 'post'
+ uri: 'bridges/test_bridge_a/addChannel'
+ params:
+ channel: '{channel.id}'
+ # Ensure bob's channel enters the Stasis bridge with alice's first
+ # channel. Then instruct alice to place another call to Stasis(app_B).
+ -
+ ari-events:
+ match:
+ type: ChannelEnteredBridge
+ application: 'app_A'
+ bridge:
+ id: 'test_bridge_a'
+ channel:
+ name: 'PJSIP/bob-.*'
+ count: 1
+ pjsua_phone:
+ action: 'call'
+ pjsua_account: 'alice'
+ call_uri: 'sip:stasis_two at 127.0.0.1'
+ # Upon alice's second channel entering the Stasis app: create the stasis
+ # bridge 'test_bridge_b', add alice's second channel to the Stasis bridge,
+ # and originate a call to carol.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'app_B'
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ ari-requests:
+ -
+ method: 'post'
+ uri: 'bridges/test_bridge_b'
+ -
+ method: 'post'
+ uri: 'bridges/test_bridge_b/addChannel'
+ params:
+ channel: '{channel.id}'
+ -
+ method: 'post'
+ uri: 'channels/carol'
+ params:
+ endpoint: 'PJSIP/carol'
+ context: 'default'
+ extension: 'stasis_two'
+ priority: '1'
+ # Ensure alice's second channel enters the Stasis bridge 'test_bridge_b'.
+ -
+ ari-events:
+ match:
+ type: ChannelEnteredBridge
+ application: 'app_B'
+ bridge:
+ id: 'test_bridge_b'
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ # Ensure carol enters the Stasis app. Then add carol to the Stasis bridge
+ # with alice's second channel.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'app_B'
+ channel:
+ name: 'PJSIP/carol-.*'
+ count: 1
+ ari-requests:
+ method: 'post'
+ uri: 'bridges/test_bridge_b/addChannel'
+ params:
+ channel: '{channel.id}'
+ # Ensure carol's channel enters the Stasis bridge with alice's second
+ # channel. Then instruct alice to perform an attended transfer. This is to
+ # transfer the remote side of the first channel which is a Stasis bridge
+ # via Stasis(app_A) to the remote side of the second channel which is also
+ # a Stasis bridge via Stasis(app_B). Essentially bob will be in the Stasis
+ # bridge 'test_bridge_a', carol will be in the Stasis bridge
+ # 'test_bridge_b', and the halves of a local channel will be in each thus
+ # linking the two Stasis bridges via different Stasis apps.
+ -
+ ari-events:
+ match:
+ type: ChannelEnteredBridge
+ application: 'app_B'
+ bridge:
+ id: 'test_bridge_b'
+ channel:
+ name: 'PJSIP/carol-.*'
+ count: 1
+ pjsua_phone:
+ action: 'transfer'
+ pjsua_account: 'alice'
+ transfer_type: 'attended'
+ # Ensure the attended transfer occurs with the proper info.
+ -
+ ari-events:
+ match:
+ type: BridgeAttendedTransfer
+ application: 'app_B'
+ transferer_first_leg:
+ name: 'PJSIP/alice-.*'
+ transferer_first_leg_bridge:
+ id: 'test_bridge_a'
+ bridge_class: 'stasis'
+ transferer_second_leg:
+ name: 'PJSIP/alice-.*'
+ transferer_second_leg_bridge:
+ id: 'test_bridge_b'
+ bridge_class: 'stasis'
+ transferee:
+ name: 'PJSIP/bob-.*'
+ transfer_target:
+ id: 'carol'
+ destination_type: 'link'
+ destination_link_first_leg:
+ name: 'Local/_attended at transfer-.*;1'
+ destination_link_second_leg:
+ name: 'Local/_attended at transfer-.*;2'
+ result: 'Success'
+ count: 1
+ # Ensure the local channel half for the transfer that is replacing alice's
+ # first channel enters the Stasis(app_A) application.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'app_A'
+ channel:
+ name: 'Local/_attended at transfer-.*;1'
+ replace_channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ # Ensure alice's first channel leaves the Stasis bridge.
+ -
+ ari-events:
+ match:
+ type: ChannelLeftBridge
+ application: 'app_A'
+ bridge:
+ id: 'test_bridge_a'
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ # Ensure the local channel half for the transfer that is replacing alice's
+ # first channel enters the Stasis bridge 'test_bridge_a'.
+ -
+ ari-events:
+ match:
+ type: ChannelEnteredBridge
+ application: 'app_A'
+ bridge:
+ id: 'test_bridge_a'
+ channel:
+ name: 'Local/_attended at transfer-.*;1'
+ count: 1
+ # Ensure alice's first channel exits the Stasis app.
+ -
+ ari-events:
+ match:
+ type: StasisEnd
+ application: 'app_A'
+ channel:
+ name: 'PJSIP/alice-.*'
+ dialplan:
+ exten: 'stasis_one'
+ count: 1
+ # Ensure the local channel half for the transfer that is replacing alice's
+ # second channel enters the Stasis(app_B) application.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'app_B'
+ channel:
+ name: 'Local/_attended at transfer-.*;2'
+ replace_channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ # Ensure alice's second channel leaves the Stasis bridge.
+ -
+ ari-events:
+ match:
+ type: ChannelLeftBridge
+ application: 'app_B'
+ bridge:
+ id: 'test_bridge_b'
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ # Ensure the local channel half for the transfer that is replacing alice's
+ # second channel enters the Stasis bridge 'test_bridge_b'.
+ -
+ ari-events:
+ match:
+ type: ChannelEnteredBridge
+ application: 'app_B'
+ bridge:
+ id: 'test_bridge_b'
+ channel:
+ name: 'Local/_attended at transfer-.*;2'
+ count: 1
+ # Ensure alice's second channel exits the Stasis app. Then hang up bob.
+ -
+ ari-events:
+ match:
+ type: StasisEnd
+ application: 'app_B'
+ channel:
+ name: 'PJSIP/alice-.*'
+ dialplan:
+ exten: 'stasis_two'
+ count: 1
+ ami-actions:
+ action:
+ action: 'Hangup'
+ channel: '/^PJSIP/bob-.*$/'
+ # Upon hanging up bob, ensure bob leaves the Stasis bridge.
+ -
+ ari-events:
+ match:
+ type: ChannelLeftBridge
+ application: 'app_A'
+ bridge:
+ id: 'test_bridge_a'
+ channel:
+ name: 'PJSIP/bob-.*'
+ count: 1
+ # Ensure bob exits the Stasis app. Then hang up carol.
+ -
+ ari-events:
+ match:
+ type: StasisEnd
+ application: 'app_A'
+ channel:
+ name: 'PJSIP/bob-.*'
+ dialplan:
+ exten: 'stasis_one'
+ count: 1
+ ami-actions:
+ action:
+ action: 'Hangup'
+ channel: 'carol'
+ # Ensure carol leaves the Stasis bridge.
+ -
+ ari-events:
+ match:
+ type: ChannelLeftBridge
+ application: 'app_B'
+ bridge:
+ id: 'test_bridge_b'
+ channel:
+ name: 'PJSIP/carol-.*'
+ count: 1
+ # Ensure carol exits the Stasis app. Then hang up the local replacement
+ # channel half in Stasis bridge 'test_bridge_a'.
+ -
+ ari-events:
+ match:
+ type: StasisEnd
+ application: 'app_B'
+ channel:
+ name: 'PJSIP/carol-.*'
+ dialplan:
+ exten: 'stasis_two'
+ count: 1
+ ami-actions:
+ action:
+ action: 'Hangup'
+ channel: '/^Local/_attended at transfer-.*;1$/'
+ # Ensure the local channel half that was bridged with bob in the Stasis
+ # bridge leaves the bridge.
+ -
+ ari-events:
+ match:
+ type: ChannelLeftBridge
+ application: 'app_A'
+ bridge:
+ id: 'test_bridge_a'
+ channel:
+ name: 'Local/_attended at transfer-.*;1'
+ count: 1
+ # Ensure the local channel half that was bridged with bob exits the Stasis
+ # app.
+ -
+ ari-events:
+ match:
+ type: StasisEnd
+ application: 'app_A'
+ channel:
+ name: 'Local/_attended at transfer-.*;1'
+ dialplan:
+ exten: 'stasis_one'
+ count: 1
+ # Ensure the other local channel half that was bridged with carol in the
+ # Stasis bridge leaves the bridge.
+ -
+ ari-events:
+ match:
+ type: ChannelLeftBridge
+ application: 'app_B'
+ bridge:
+ id: 'test_bridge_b'
+ channel:
+ name: 'Local/_attended at transfer-.*;2'
+ count: 1
+ # Ensure the local channel half that was bridged with carol exits the
+ # Stasis app. Then hang up the kickoff local channel halves and destroy the
+ # Stasis bridge.
+ -
+ ari-events:
+ match:
+ type: StasisEnd
+ application: 'app_B'
+ channel:
+ name: 'Local/_attended at transfer-.*;2'
+ dialplan:
+ exten: 'stasis_two'
+ count: 1
+ ami-actions:
+ action:
+ action: 'Hangup'
+ channel: '/^Local/dummy at default-.*;2$/'
+ ari-requests:
+ method: 'delete'
+ uri: 'bridges/test_bridge'
+
+properties:
+ minversion: '13.1.0'
+ dependencies:
+ - python : autobahn.websocket
+ - python : requests
+ - python : twisted
+ - python : starpy
+ - python : pjsua
+ - asterisk : app_stasis
+ - asterisk : res_ari_channels
+ - asterisk : res_ari_bridges
+ - asterisk : res_pjsip
+ tags:
+ - ARI
+ - pjsip
+ # Expect test to fail until ASTERISK-24782 is resolved.
+ expected-result: False
+
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/test-config.yaml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/test-config.yaml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/different_stasis_app/test-config.yaml
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/extensions.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/extensions.conf?view=auto&rev=6415
==============================================================================
--- asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/extensions.conf (added)
+++ asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/extensions.conf Fri Feb 13 16:46:10 2015
@@ -1,0 +1,22 @@
+[default]
+
+exten => dummy,1,NoOp()
+ same => n,Answer()
+ same => n,Stasis(testsuite,dummy)
+ same => n,Hangup()
+
+exten => echo,1,NoOp()
+ same => n,Answer()
+ same => n,Echo()
+ same => n,Hangup()
+
+exten => stasis_one,1,NoOp()
+ same => n,Answer()
+ same => n,Stasis(testsuite,one)
+ same => n,Hangup
+
+exten => stasis_two,1,NoOp()
+ same => n,Answer()
+ same => n,Stasis(testsuite,two)
+ same => n,Hangup
+
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/extensions.conf
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/extensions.conf
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/extensions.conf
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/pjsip.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/pjsip.conf?view=auto&rev=6415
==============================================================================
--- asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/pjsip.conf (added)
+++ asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/pjsip.conf Fri Feb 13 16:46:10 2015
@@ -1,0 +1,54 @@
+[global]
+type=global
+debug=yes
+
+[system]
+type=system
+
+[local]
+type=transport
+protocol=udp
+bind=127.0.0.1:5060
+
+[alice]
+type=endpoint
+context=default
+disallow=all
+allow=ulaw
+direct_media=no
+media_address=127.0.0.1
+aors=alice
+
+[alice]
+type=aor
+max_contacts=1
+contact=sip:alice at 127.0.0.1:5061\;transport=udp
+
+[bob]
+type=endpoint
+context=default
+disallow=all
+allow=ulaw
+direct_media=no
+media_address=127.0.0.1
+aors=bob
+
+[bob]
+type=aor
+max_contacts=1
+contact=sip:bob at 127.0.0.1:5062\;transport=udp
+
+[carol]
+type=endpoint
+context=default
+disallow=all
+allow=ulaw
+direct_media=no
+media_address=127.0.0.1
+aors=carol
+
+[carol]
+type=aor
+max_contacts=1
+contact=sip:carol at 127.0.0.1:5063\;transport=udp
+
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/pjsip.conf
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/pjsip.conf
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/configs/ast1/pjsip.conf
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/test-config.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/test-config.yaml?view=auto&rev=6415
==============================================================================
--- asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/test-config.yaml (added)
+++ asterisk/trunk/tests/rest_api/external_interaction/attended_transfer/stasis_bridge_to_stasis_bridge/same_stasis_app/test-config.yaml Fri Feb 13 16:46:10 2015
@@ -1,0 +1,508 @@
+testinfo:
+ summary: |
+ "Transfer (attended) Stasis bridge to Stasis bridge in same Stasis app"
+ description: |
+ "Upon the kick off local channel entering into the Stasis(testsuite)
+ app, a call is made from the 'alice' PJSUA account that is put into
+ Stasis(testsuite). The Stasis bridge 'test_bridge_a' is created and
+ alice is added to it. A channel is originated to the 'bob' PJSUA
+ account and put into the same Stasis(testsuite) app and bridge with
+ alice. Alice begins an attended transfer by making another call. The
+ second alice channel is put into the same Stasis(testsuite) app, the
+ Stasis bridge 'test_bridge_b' is created, and the second alice channel
+ is added to Stasis bridge. A channel is then originated to the 'carol'
+ PJSUA account and put into the same Stasis(testsuite) app and bridge
+ with the second alice channel.
+
+ Alice then completes the attended transfer essentially transferring
+ the Stasis bridge to the other Stasis bridge within the same Stasis
+ app. Asterisk does this by creating a Local channel where each half is
+ swapped in place of the two alice channels. After the transfer is
+ successful with a local replacement channel half in the Stasis bridge
+ with bob and another in the Stasis bridge with carol, bob is hung up.
+ Carol is then hung up and so is the local replacement channel half
+ that was in the Stasis bridge with bob. This causes the other local
+ replacement channel half that was in the Stasis bridge with carol to
+ be hung up and triggers the hang up of the kick off local channel and
+ the destruction of the stasis bridge.
+
+ This test verifies that a Stasis bridge can be transferred (attended)
+ to a Stasis bridge in the same Stasis app. It also verifies that the
+ StasisStart & StasisEnd events occur for the alice(both), bob, carol,
+ and local replacement channels."
+ issues:
+ - jira: 'ASTERISK-24782'
+
+test-modules:
+ test-object:
+ config-section: test-object-config
+ typename: 'ari.AriOriginateTestObject'
+ modules:
+ -
+ config-section: 'pjsua-config'
+ typename: 'phones.PjsuaPhoneController'
+ -
+ config-section: pluggable-config
+ typename: 'pluggable_modules.EventActionModule'
+
+test-object-config:
+ apps: testsuite
+ test-iterations:
+ -
+ channelId: 'dummy'
+ endpoint: 'Local/dummy at default'
+ context: 'default'
+ extension: 'echo'
+ priority: '1'
+
+pjsua-config:
+ transports:
+ -
+ name: 'local-ipv4-1'
+ bind: '127.0.0.1'
+ bindport: '5061'
+ -
+ name: 'local-ipv4-2'
+ bind: '127.0.0.1'
+ bindport: '5062'
+ -
+ name: 'local-ipv4-3'
+ bind: '127.0.0.1'
+ bindport: '5063'
+ accounts:
+ -
+ name: 'alice'
+ username: 'alice'
+ domain: '127.0.0.1'
+ transport: 'local-ipv4-1'
+ -
+ name: 'bob'
+ username: 'bob'
+ domain: '127.0.0.1'
+ transport: 'local-ipv4-2'
+ -
+ name: 'carol'
+ username: 'carol'
+ domain: '127.0.0.1'
+ transport: 'local-ipv4-3'
+
+pluggable-config:
+ # Upon kickoff channel entering Stasis app: create a bridge, don't add
+ # kickoff channel to bridge, instruct alice to place call to
+ # Stasis(testsuite,one).
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'testsuite'
+ args: ['dummy']
+ channel:
+ id: 'dummy;2'
+ count: 1
+ pjsua_phone:
+ action: 'call'
+ pjsua_account: 'alice'
+ call_uri: 'sip:stasis_one at 127.0.0.1'
+ # Upon alice entering the Stasis app: create the stasis bridge
+ # 'test_bridge_a', add alice's first channel to the Stasis bridge, and
+ # originate a call to bob.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'testsuite'
+ args: ['one']
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ ari-requests:
+ -
+ method: 'post'
+ uri: 'bridges/test_bridge_a'
+ -
+ method: 'post'
+ uri: 'bridges/test_bridge_a/addChannel'
+ params:
+ channel: '{channel.id}'
+ -
+ method: 'post'
+ uri: 'channels/bob'
+ params:
+ endpoint: 'PJSIP/bob'
+ context: 'default'
+ extension: 'stasis_one'
+ priority: '1'
+ # Ensure alice's first channel enters the Stasis bridge 'test_bridge_a'.
+ -
+ ari-events:
+ match:
+ type: ChannelEnteredBridge
+ application: 'testsuite'
+ bridge:
+ id: 'test_bridge_a'
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ # Ensure bob enters the Stasis app. Then add bob to the Stasis bridge
+ # with alice's first channel.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'testsuite'
+ args: ['one']
+ channel:
+ name: 'PJSIP/bob-.*'
+ count: 1
+ ari-requests:
+ method: 'post'
+ uri: 'bridges/test_bridge_a/addChannel'
+ params:
+ channel: '{channel.id}'
+ # Ensure bob's channel enters the Stasis bridge with alice's first
+ # channel. Then instruct alice to place another call to
+ # Stasis(testsuite,two).
+ -
+ ari-events:
+ match:
+ type: ChannelEnteredBridge
+ application: 'testsuite'
+ bridge:
+ id: 'test_bridge_a'
+ channel:
+ name: 'PJSIP/bob-.*'
+ count: 1
+ pjsua_phone:
+ action: 'call'
+ pjsua_account: 'alice'
+ call_uri: 'sip:stasis_two at 127.0.0.1'
+ # Upon alice's second channel entering the Stasis app: create the stasis
+ # bridge 'test_bridge_b', add alice's second channel to the Stasis bridge,
+ # and originate a call to carol.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'testsuite'
+ args: ['two']
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ ari-requests:
+ -
+ method: 'post'
+ uri: 'bridges/test_bridge_b'
+ -
+ method: 'post'
+ uri: 'bridges/test_bridge_b/addChannel'
+ params:
+ channel: '{channel.id}'
+ -
+ method: 'post'
+ uri: 'channels/carol'
+ params:
+ endpoint: 'PJSIP/carol'
+ context: 'default'
+ extension: 'stasis_two'
+ priority: '1'
+ # Ensure alice's second channel enters the Stasis bridge 'test_bridge_b'.
+ -
+ ari-events:
+ match:
+ type: ChannelEnteredBridge
+ application: 'testsuite'
+ bridge:
+ id: 'test_bridge_b'
+ channel:
+ name: 'PJSIP/alice-.*'
+ count: 1
+ # Ensure carol enters the Stasis app. Then add carol to the Stasis bridge
+ # with alice's second channel.
+ -
+ ari-events:
+ match:
+ type: StasisStart
+ application: 'testsuite'
+ args: ['two']
+ channel:
+ name: 'PJSIP/carol-.*'
+ count: 1
+ ari-requests:
[... 326 lines stripped ...]
More information about the asterisk-commits
mailing list