[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