Author: mjordan Date: Thu Aug 14 15:08:43 2014 New Revision: 5441 URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=5441 Log: tests/manager: Add MixMonitor AMI test
This patch adds a test for the MixMonitor AMI action. It attaches a MixMonitor to a Local channel and playback audio through the other side of the Local channel. When the playback is complete, the resulting sound file is passed through the SoundChecker pluggable module and verified to be of approximately the correct size and that it has energy within it. Review: https://reviewboard.asterisk.org/r/3795/ ASTERISK-24028 #close patches: mixmonitor_record.diff uploaded by tcambron (License 6611) Added: asterisk/trunk/tests/manager/mixmonitor/ asterisk/trunk/tests/manager/mixmonitor/configs/ asterisk/trunk/tests/manager/mixmonitor/configs/ast1/ asterisk/trunk/tests/manager/mixmonitor/configs/ast1/extensions.conf (with props) asterisk/trunk/tests/manager/mixmonitor/start_mix.py (with props) asterisk/trunk/tests/manager/mixmonitor/test-config.yaml (with props) Modified: asterisk/trunk/tests/manager/tests.yaml Added: asterisk/trunk/tests/manager/mixmonitor/configs/ast1/extensions.conf URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/manager/mixmonitor/configs/ast1/extensions.conf?view=auto&rev=5441 ============================================================================== --- asterisk/trunk/tests/manager/mixmonitor/configs/ast1/extensions.conf (added) +++ asterisk/trunk/tests/manager/mixmonitor/configs/ast1/extensions.conf Thu Aug 14 15:08:43 2014 @@ -1,0 +1,19 @@ +[default] +exten => s,1,Answer() + same => n,Playback(tt-monkeys) + same => n,Hangup() + +exten => echo,1,Answer() + same => n,Echo() + same => n,Hangup() + +[soundtest] +exten => audio,1,Answer() + same => n,Set(TALK_DETECTED=0) + same => n,BackgroundDetect(${SOUNDFILE},1,20,,20000) + same => n,GoToIf($[${TALK_DETECTED}=0]?true:false) + same => n(false),UserEvent(soundcheck, status: pass) + same => n,Hangup() + + same => n(true),UserEvent(soundcheck, status: fail) + same => n,Hangup() Propchange: asterisk/trunk/tests/manager/mixmonitor/configs/ast1/extensions.conf ------------------------------------------------------------------------------ svn:eol-style = native Propchange: asterisk/trunk/tests/manager/mixmonitor/configs/ast1/extensions.conf ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Propchange: asterisk/trunk/tests/manager/mixmonitor/configs/ast1/extensions.conf ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: asterisk/trunk/tests/manager/mixmonitor/start_mix.py URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/manager/mixmonitor/start_mix.py?view=auto&rev=5441 ============================================================================== --- asterisk/trunk/tests/manager/mixmonitor/start_mix.py (added) +++ asterisk/trunk/tests/manager/mixmonitor/start_mix.py Thu Aug 14 15:08:43 2014 @@ -1,0 +1,29 @@ +""" +Copyright (C) 2014, Digium, Inc. +Tyler Cambron <tcamb...@digium.com> + +This program is free software, distributed under the terms of +the GNU General Public License Version 2. +""" + +import logging + +LOGGER = logging.getLogger(__name__) + + +def record(ami, event): + """ + When the event specified in the test-config is triggered, the variable + 'channel' is set to the channelid of the channel where the event occurs. + 'channel' is then used to create the MixMonitor command message that is + sent to asterisk to begin the recording of the playback. + """ + channel = event.get('destchannel') + if not channel: + channel = event.get('channel') + if not channel: + return False + message = {'Action': 'MixMonitor', 'Channel': '%s' % channel, + 'File': 'theRecording.wav', 'options': 'r'} + ami.sendMessage(message) + return True Propchange: asterisk/trunk/tests/manager/mixmonitor/start_mix.py ------------------------------------------------------------------------------ svn:eol-style = native Propchange: asterisk/trunk/tests/manager/mixmonitor/start_mix.py ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Propchange: asterisk/trunk/tests/manager/mixmonitor/start_mix.py ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: asterisk/trunk/tests/manager/mixmonitor/test-config.yaml URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/manager/mixmonitor/test-config.yaml?view=auto&rev=5441 ============================================================================== --- asterisk/trunk/tests/manager/mixmonitor/test-config.yaml (added) +++ asterisk/trunk/tests/manager/mixmonitor/test-config.yaml Thu Aug 14 15:08:43 2014 @@ -1,0 +1,93 @@ +testinfo: + summary: 'Test MixMonitor recording functionality applications' + description: | + 'This test verifies basic functionality of the recording feature in + MixMonitor by creating a local channel that upon being answered triggers + the MixMonitor and records the playback of tt-monkeys. The test passes + when the SoundChecker pluggable module verifies that the file is the + correct size and contains energy, meaning a file was created and stored + the recording correctly.' +test-modules: + add-test-to-search-path: True + test-object: + config-section: test-object-config + typename: 'test_case.TestCaseModule' + modules: + - config-section: ami-config-11 + typename: 'ami.AMIEventModule' + minversion: '11.0.0' + maxversion: '12.0.0' + - config-section: ami-config-12 + typename: 'ami.AMIEventModule' + minversion: '12.0.0' + - config-section: start-call + typename: 'pluggable_modules.Originator' + + - config-section: sound-file-analyzer + typename: 'pluggable_modules.SoundChecker' + +test-object-config: + asterisk-instances: 1 + connect-ami: true + +start-call: + channel: 'Local/s@default' + context: 'default' + exten: 'echo' + priority: 1 + trigger: 'ami_connect' + async: True + +ami-config-11: + - + type: 'callback' + conditions: + match: + Event: 'Newchannel' + Channel: 'Local/s@default-00000000;1' + callbackModule: 'start_mix' + callbackMethod: 'record' + +ami-config-12: + - + type: 'callback' + conditions: + match: + Event: 'DialEnd' + DestChannel: 'Local/s@default-.*' + callbackModule: 'start_mix' + callbackMethod: 'record' + +sound-file-analyzer: + auto-stop: True + sound-file-config: + - + trigger: + match: + id: 0 + event: 'Hangup' + channel: 'Local/s@default-.*' + id: 0 + sound-file: + file-name: 'monitor/theRecording.wav' + file-path-type: 'relative' + actions: + - + type: 'size_check' + size: 258000 + tolerance: 5000 + - + type: 'energy_check' + channel: 'Local/audio@soundtest' + context: 'default' + exten: 's' + priority: '1' + +properties: + minversion: '11.0.0' + dependencies: + - python : 'twisted' + - python : 'starpy' + - asterisk: 'app_mixmonitor' + tags: + - mixmonitor Propchange: asterisk/trunk/tests/manager/mixmonitor/test-config.yaml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: asterisk/trunk/tests/manager/mixmonitor/test-config.yaml ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Propchange: asterisk/trunk/tests/manager/mixmonitor/test-config.yaml ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: asterisk/trunk/tests/manager/tests.yaml URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/manager/tests.yaml?view=diff&rev=5441&r1=5440&r2=5441 ============================================================================== --- asterisk/trunk/tests/manager/tests.yaml (original) +++ asterisk/trunk/tests/manager/tests.yaml Thu Aug 14 15:08:43 2014 @@ -13,6 +13,7 @@ - test: 'exten_state_list' - test: 'presence_state_changed' - test: 'presence_state_list' + - test: 'mixmonitor' - test: 'manager_vars' - test: 'status' - test: 'userevent' -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits