[Asterisk-code-review] tests/rest api/applications: Add a subscribe-all test (testsuite[master])

Matt Jordan asteriskteam at digium.com
Wed Sep 9 19:21:29 CDT 2015


Matt Jordan has uploaded a new change for review.

  https://gerrit.asterisk.org/1190

Change subject: tests/rest_api/applications: Add a subscribe-all test
......................................................................

tests/rest_api/applications: Add a subscribe-all test

This patch adds a test that subscribes to all channels, bridges, device state,
and endpoint state using the applications resource. It verifies that given
those subscriptions, we receive the expected events over the WebSocket.

Change-Id: Ib87ec091c848366b8ed4485f832e23e1a0a37ed4
---
A tests/rest_api/applications/subscribe-all/configs/ast1/extensions.conf
A tests/rest_api/applications/subscribe-all/configs/ast1/pjsip.conf
A tests/rest_api/applications/subscribe-all/configs/ast1/sorcery.conf
A tests/rest_api/applications/subscribe-all/test-config.yaml
M tests/rest_api/applications/tests.yaml
5 files changed, 302 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.asterisk.org:29418/testsuite refs/changes/90/1190/1

diff --git a/tests/rest_api/applications/subscribe-all/configs/ast1/extensions.conf b/tests/rest_api/applications/subscribe-all/configs/ast1/extensions.conf
new file mode 100644
index 0000000..62dea66
--- /dev/null
+++ b/tests/rest_api/applications/subscribe-all/configs/ast1/extensions.conf
@@ -0,0 +1,14 @@
+
+[default]
+
+exten => echo,1,NoOp()
+ same => n,Echo()
+
+exten => dial_alice,1,NoOp()
+ same => n,Dial(PJSIP/1000 at alice)
+ same => n,Hangup()
+
+exten => 1000,1,NoOp()
+ same => n,Answer()
+ same => n,Wait(1)
+ same => n,Hangup()
diff --git a/tests/rest_api/applications/subscribe-all/configs/ast1/pjsip.conf b/tests/rest_api/applications/subscribe-all/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..cf1adfb
--- /dev/null
+++ b/tests/rest_api/applications/subscribe-all/configs/ast1/pjsip.conf
@@ -0,0 +1,8 @@
+[global]
+debug=yes
+type=global
+
+[local-transport-udp]
+type=transport
+bind=127.0.0.1
+protocol=udp
diff --git a/tests/rest_api/applications/subscribe-all/configs/ast1/sorcery.conf b/tests/rest_api/applications/subscribe-all/configs/ast1/sorcery.conf
new file mode 100644
index 0000000..73c95bf
--- /dev/null
+++ b/tests/rest_api/applications/subscribe-all/configs/ast1/sorcery.conf
@@ -0,0 +1,6 @@
+[res_pjsip]
+endpoint=memory,ps_endpoints
+aor=memory,ps_aor
+
+[res_pjsip_endpoint_identifier_ip]
+identify=memory,ps_identify
\ No newline at end of file
diff --git a/tests/rest_api/applications/subscribe-all/test-config.yaml b/tests/rest_api/applications/subscribe-all/test-config.yaml
new file mode 100644
index 0000000..57b1405
--- /dev/null
+++ b/tests/rest_api/applications/subscribe-all/test-config.yaml
@@ -0,0 +1,273 @@
+testinfo:
+    summary: Test subscribing to all resources
+    description: |
+        This test verifies that we can subscribe to
+        all channels, bridges, endpoints, and device
+        states using the applications resource.
+
+test-modules:
+    add-test-to-search-path: True
+    test-object:
+        config-section: test-object-config
+        typename: ari.AriBaseTestObject
+    modules:
+        -
+            config-section: pluggable-config
+            typename: pluggable_modules.EventActionModule
+        -
+            typename: pluggable_modules.ARIHangupMonitor
+
+pluggable-config:
+    -
+        ari-start:
+        ari-requests:
+            -
+                method: 'post'
+                uri: 'applications/testsuite/subscription?eventSource=bridge:'
+                expect: 200
+            -
+                method: 'post'
+                uri: 'applications/testsuite/subscription?eventSource=channel:'
+                expect: 200
+            -
+                method: 'post'
+                uri: 'applications/testsuite/subscription?eventSource=endpoint:'
+                expect: 200
+            -
+                method: 'post'
+                uri: 'applications/testsuite/subscription?eventSource=deviceState:'
+                expect: 200
+            -
+                method: 'put'
+                uri: 'asterisk/config/dynamic/res_pjsip/endpoint/alice'
+                body: { 'fields': [ { 'attribute': 'allow', 'value': '!all,ulaw,alaw' },
+                                    { 'attribute': 'context', 'value': 'default' },
+                                    { 'attribute': 'aors', 'value': 'alice' } ] }
+                expect: 200
+            -
+                method: 'put'
+                uri: 'asterisk/config/dynamic/res_pjsip/aor/alice'
+                body: { 'fields': [ { 'attribute': 'contact', 'value': 'sip:alice at 127.0.0.1:5060;transport=udp' } ] }
+                expect: 200
+            -
+                method: 'put'
+                uri: 'asterisk/config/dynamic/res_pjsip/identify/alice'
+                body: { 'fields': [ { 'attribute': 'match', 'value': '127.0.0.1' },
+                                    { 'attribute': 'endpoint', 'value': 'alice' } ] }
+                expect: 200
+            -
+                method: 'post'
+                uri: 'channels'
+                params:
+                    endpoint: 'Local/dial_alice at default'
+                    extension: 'echo'
+                expect: 200
+    -
+        # Matching of endpoint and device state subscriptions
+        ari-events:
+            -
+                match:
+                    type: 'PeerStatusChange'
+                    endpoint:
+                        technology: 'PJSIP'
+                        resource: 'alice'
+                        state: 'offline'
+                    application: 'testsuite'
+                    peer:
+                        peer_status: 'Unreachable'
+                count: 2
+            -
+                match:
+                    type: 'DeviceStateChanged'
+                    device_state:
+                        name: 'PJSIP/alice'
+                        state: 'INUSE'
+                count: 1
+            -
+                match:
+                    type: 'DeviceStateChanged'
+                    device_state:
+                        name: 'Local/dial_alice at default'
+                        state: 'INUSE'
+                count: 2
+            -
+                match:
+                    type: 'DeviceStateChanged'
+                    device_state:
+                        name: 'Local/dial_alice at default'
+                        state: 'NOT_INUSE'
+                count: '>1'
+    -
+        # Matching of channel subscription
+        ari-events:
+            -
+                match:
+                    type: 'ChannelCreated'
+                    channel:
+                        name: 'Local/dial_alice at default-00000000;1'
+                count: 1
+            -
+                match:
+                    type: 'ChannelCreated'
+                    channel:
+                        name: 'Local/dial_alice at default-00000000;2'
+                count: 1
+            -
+                match:
+                    type: 'ChannelCreated'
+                    channel:
+                        name: 'PJSIP/alice-00000000'
+                count: 1
+            -
+                match:
+                    type: 'ChannelCreated'
+                    channel:
+                        name: 'PJSIP/alice-00000001'
+                count: 1
+            -
+                match:
+                    type: 'ChannelStateChange'
+                    channel:
+                        name: 'PJSIP/alice-00000001'
+                        state: 'Up'
+                count: 1
+            -
+                match:
+                    type: 'ChannelStateChange'
+                    channel:
+                        name: 'PJSIP/alice-00000000'
+                        state: 'Up'
+                count: 1
+            -
+                match:
+                    type: 'ChannelStateChange'
+                    channel:
+                        name: 'Local/dial_alice at default-00000000;2'
+                        state: 'Up'
+                count: 1
+            -
+                match:
+                    type: 'ChannelStateChange'
+                    channel:
+                        name: 'Local/dial_alice at default-00000000;1'
+                        state: 'Up'
+                count: 1
+            -
+                match:
+                    type: 'ChannelHangupRequest'
+                    channel:
+                        name: 'PJSIP/alice-00000001'
+                count: 1
+            -
+                match:
+                    type: 'ChannelDestroyed'
+                    channel:
+                        name: 'PJSIP/alice-00000001'
+                count: 1
+            -
+                match:
+                    type: 'ChannelHangupRequest'
+                    channel:
+                        name: 'PJSIP/alice-00000000'
+                count: 1
+            -
+                match:
+                    type: 'ChannelDestroyed'
+                    channel:
+                        name: 'PJSIP/alice-00000000'
+                count: 1
+            -
+                match:
+                    type: 'ChannelDestroyed'
+                    channel:
+                        name: 'Local/dial_alice at default-00000000;1'
+                count: 1
+            -
+                match:
+                    type: 'ChannelDestroyed'
+                    channel:
+                        name: 'Local/dial_alice at default-00000000;2'
+                count: 1
+    -
+        # Matching of bridge subscription
+        ari-events:
+            -
+                match:
+                    type: 'BridgeCreated'
+                    bridge:
+                        technology: 'simple_bridge'
+                        bridge_type: 'mixing'
+                        bridge_class: 'basic'
+                count: 1
+            -
+                match:
+                    type: 'ChannelEnteredBridge'
+                    channel:
+                        name: 'PJSIP/alice-00000000'
+                    bridge:
+                        technology: 'simple_bridge'
+                        bridge_type: 'mixing'
+                        bridge_class: 'basic'
+                count: 1
+            -
+                match:
+                    type: 'ChannelEnteredBridge'
+                    channel:
+                        name: 'Local/dial_alice at default-00000000;2'
+                    bridge:
+                        technology: 'simple_bridge'
+                        bridge_type: 'mixing'
+                        bridge_class: 'basic'
+                count: 1
+            -
+                match:
+                    type: 'ChannelLeftBridge'
+                    channel:
+                        name: 'PJSIP/alice-00000000'
+                    bridge:
+                        technology: 'simple_bridge'
+                        bridge_type: 'mixing'
+                        bridge_class: 'basic'
+                count: 1
+            -
+                match:
+                    type: 'ChannelLeftBridge'
+                    channel:
+                        name: 'Local/dial_alice at default-00000000;2'
+                    bridge:
+                        technology: 'simple_bridge'
+                        bridge_type: 'mixing'
+                        bridge_class: 'basic'
+                count: 1
+            -
+                match:
+                    type: 'BridgeDestroyed'
+                    bridge:
+                        technology: 'simple_bridge'
+                        bridge_type: 'mixing'
+                        bridge_class: 'basic'
+                count: 1
+
+
+properties:
+    minversion: '13.7.0'
+    dependencies:
+        - python : autobahn.websocket
+        - python : requests
+        - python : twisted
+        - python : starpy
+        - asterisk : res_ari_channels
+        - asterisk : res_ari_bridges
+        - asterisk : res_ari_endpoints
+        - asterisk : res_ari_applications
+        - asterisk : res_ari_asterisk
+        - asterisk : res_ari_device_states
+        - asterisk : app_echo
+        - asterisk : app_dial
+        - asterisk : chan_pjsip
+        - asterisk : res_pjsip_endpoint_identifier_ip
+        - asterisk : res_pjsip
+    tags:
+        - ARI
+
+
diff --git a/tests/rest_api/applications/tests.yaml b/tests/rest_api/applications/tests.yaml
index 5d5c4be..2d98c2d 100644
--- a/tests/rest_api/applications/tests.yaml
+++ b/tests/rest_api/applications/tests.yaml
@@ -2,6 +2,7 @@
 tests:
     - test: 'errors'
     - dir: 'subscribe-endpoint'
+    - test: 'subscribe-all'
     - test: 'subscribe-bridge'
     - test: 'subscribe-device-state'
     - test: 'double-subscribe-device-state'

-- 
To view, visit https://gerrit.asterisk.org/1190
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib87ec091c848366b8ed4485f832e23e1a0a37ed4
Gerrit-PatchSet: 1
Gerrit-Project: testsuite
Gerrit-Branch: master
Gerrit-Owner: Matt Jordan <mjordan at digium.com>



More information about the asterisk-code-review mailing list