[svn-commits] file: testsuite/asterisk/trunk r4792 - in /asterisk/trunk/tests/rest_api/reco...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Mar 6 12:24:29 CST 2014


Author: file
Date: Thu Mar  6 12:24:26 2014
New Revision: 4792

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=4792
Log:
Add a test for nominal recording situation.

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

Added:
    asterisk/trunk/tests/rest_api/recording/nominal/
    asterisk/trunk/tests/rest_api/recording/nominal/configs/
    asterisk/trunk/tests/rest_api/recording/nominal/configs/ast1/
    asterisk/trunk/tests/rest_api/recording/nominal/configs/ast1/extensions.conf   (with props)
    asterisk/trunk/tests/rest_api/recording/nominal/recording.py   (with props)
    asterisk/trunk/tests/rest_api/recording/nominal/test-config.yaml   (with props)
Modified:
    asterisk/trunk/tests/rest_api/recording/tests.yaml

Added: asterisk/trunk/tests/rest_api/recording/nominal/configs/ast1/extensions.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/recording/nominal/configs/ast1/extensions.conf?view=auto&rev=4792
==============================================================================
--- asterisk/trunk/tests/rest_api/recording/nominal/configs/ast1/extensions.conf (added)
+++ asterisk/trunk/tests/rest_api/recording/nominal/configs/ast1/extensions.conf Thu Mar  6 12:24:26 2014
@@ -1,0 +1,6 @@
+[default]
+
+exten => s,1,NoOp()
+	same => n,Answer()
+	same => n,Stasis(testsuite)
+	same => n,Hangup()

Propchange: asterisk/trunk/tests/rest_api/recording/nominal/configs/ast1/extensions.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/rest_api/recording/nominal/configs/ast1/extensions.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/rest_api/recording/nominal/configs/ast1/extensions.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/trunk/tests/rest_api/recording/nominal/recording.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/recording/nominal/recording.py?view=auto&rev=4792
==============================================================================
--- asterisk/trunk/tests/rest_api/recording/nominal/recording.py (added)
+++ asterisk/trunk/tests/rest_api/recording/nominal/recording.py Thu Mar  6 12:24:26 2014
@@ -1,0 +1,120 @@
+'''
+Copyright (C) 2014, Digium, Inc.
+Joshua Colp <jcolp at digium.com>
+
+This program is free software, distributed under the terms of
+the GNU General Public License Version 2.
+'''
+
+import logging
+import requests
+from twisted.internet import reactor
+
+LOGGER = logging.getLogger(__name__)
+
+
+class TestLogic(object):
+    def __init__(self):
+        self.channel_id = None
+
+TEST = TestLogic()
+
+
+def fail_test():
+    TEST.test_object.set_passed(False)
+    TEST.test_object.stop_reactor()
+
+
+def on_start(ari, event, test_object):
+    TEST.test_object = test_object
+    TEST.ari = ari
+
+    LOGGER.debug("on_start(%r)" % event)
+    TEST.channel_id = event['channel']['id']
+
+    LOGGER.info("Channel '%s' connected to Stasis. Starting the test")
+    LOGGER.info("Attempting to answer the channel.")
+
+    try:
+        TEST.ari.post('channels', TEST.channel_id, 'answer')
+    except requests.exceptions.HTTPError:
+        LOGGER.error('Failed to answer.')
+        fail_test()
+        return True
+
+    LOGGER.info("Answered the channel. Starting the baseline recording.")
+
+    try:
+        TEST.ari.post('channels', TEST.channel_id, 'record',
+                      name="superfly", format="wav")
+    except requests.exceptions.HTTPError:
+        LOGGER.error("Failed to record.")
+        fail_test()
+        return True
+
+    LOGGER.info("Baseline recording started successfully.")
+
+    return True
+
+def on_recording_started(ari, event, test_object):
+    LOGGER.info("Recording started")
+
+    if event['recording']['name'] != 'superfly':
+        LOGGER.error('Recording start event does not contain correct name')
+        fail_test()
+        return
+    elif event['recording']['format'] != 'wav':
+        LOGGER.error('Recording start event does not contain correct format')
+        fail_test()
+        return
+    elif event['recording']['target_uri'] != 'channel:' + TEST.channel_id:
+        LOGGER.error('Recording start event does not contain correct target URI')
+        fail_test()
+        return
+    elif event['recording']['state'] != 'recording':
+        LOGGER.error('Recording start event does not contain correct state')
+        fail_test()
+        return
+
+    LOGGER.info("Now stopping recording")
+
+    try:
+        TEST.ari.post('recordings/live', 'superfly', 'stop')
+    except requests.exceptions.HTTPError:
+        LOGGER.error('Failed to stop recording.')
+        fail_test()
+        return
+
+    LOGGER.info("Recording stopped successfully. Leave Stasis.")
+    try:
+        TEST.ari.post('channels', TEST.channel_id, 'continue')
+    except requests.exceptions.HTTPError:
+        LOGGER.error('Failed to leave stasis. Crud.')
+        fail_test()
+        return
+
+    LOGGER.info("All tests complete: The channel should be out of stasis.")
+
+    return True
+
+def on_recording_finished(ari, event, test_object):
+    LOGGER.info("Recording finished")
+
+    if event['recording']['name'] != 'superfly':
+        LOGGER.error('Recording start event does not contain correct name')
+        fail_test()
+        return
+    elif event['recording']['format'] != 'wav':
+        LOGGER.error('Recording start event does not contain correct format')
+        fail_test()
+        return
+    elif event['recording']['target_uri'] != 'channel:' + TEST.channel_id:
+        LOGGER.error('Recording start event does not contain correct target URI')
+        fail_test()
+        return
+    elif event['recording']['state'] != 'done':
+        LOGGER.error('Recording start event does not contain correct state')
+        fail_test()
+        return
+
+    return True

Propchange: asterisk/trunk/tests/rest_api/recording/nominal/recording.py
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/rest_api/recording/nominal/recording.py
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/rest_api/recording/nominal/recording.py
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: asterisk/trunk/tests/rest_api/recording/nominal/test-config.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/recording/nominal/test-config.yaml?view=auto&rev=4792
==============================================================================
--- asterisk/trunk/tests/rest_api/recording/nominal/test-config.yaml (added)
+++ asterisk/trunk/tests/rest_api/recording/nominal/test-config.yaml Thu Mar  6 12:24:26 2014
@@ -1,0 +1,58 @@
+testinfo:
+    summary: Test expected events and responses for recording.
+    description: |
+        Put a channel in stasis then record a file from it.
+
+test-modules:
+    add-test-to-search-path: True
+    test-object:
+        config-section: test-object-config
+        typename: ari.AriTestObject
+    modules:
+        -   config-section: ari-config
+            typename: ari.WebSocketEventModule
+
+ari-config:
+    apps: testsuite
+    events:
+        -   conditions:
+                match:
+                    type: StasisStart
+                    application: testsuite
+                    args: []
+            count: 1
+            callback:
+                module: recording
+                method: on_start
+        -   conditions:
+                match:
+                    type: RecordingStarted
+            callback:
+                module: recording
+                method: on_recording_started
+            count: 1
+        -   conditions:
+                match:
+                    type: RecordingFinished
+            callback:
+                module: recording
+                method: on_recording_finished
+            count: 1
+        -   conditions:
+                match:
+                    type: StasisEnd
+                    application: testsuite
+            count: 1
+
+properties:
+    minversion: '12.0.0'
+    dependencies:
+        - python : autobahn.websocket
+        - python : requests
+        - python : twisted
+        - python : starpy
+        - asterisk : res_ari_channels
+        - asterisk : res_ari_recordings
+        - asterisk : app_echo
+    tags:
+        - ARI

Propchange: asterisk/trunk/tests/rest_api/recording/nominal/test-config.yaml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/rest_api/recording/nominal/test-config.yaml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/rest_api/recording/nominal/test-config.yaml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: asterisk/trunk/tests/rest_api/recording/tests.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/rest_api/recording/tests.yaml?view=diff&rev=4792&r1=4791&r2=4792
==============================================================================
--- asterisk/trunk/tests/rest_api/recording/tests.yaml (original)
+++ asterisk/trunk/tests/rest_api/recording/tests.yaml Thu Mar  6 12:24:26 2014
@@ -2,3 +2,4 @@
 tests:
     - test: 'file_conflicts'
     - test: 'format_unavailable'
+    - test: 'nominal'




More information about the svn-commits mailing list