<p>Jenkins2 <strong>merged</strong> this change.</p><p><a href="https://gerrit.asterisk.org/8619">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Joshua Colp: Looks good to me, but someone else must approve
Benjamin Keith Ford: Looks good to me, but someone else must approve
Sean Bright: Looks good to me, approved
Jenkins2: Approved for Submit
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">confbridge_talking: Add test that checks talking status with hold<br><br>If a channel in a softmix bridge is put on hold then it's talking status is<br>cleared and an AMI event is raised. This test checks for that event and whether<br>or not the talking status has been set to "on" or "off" when the channel is<br>put on hold.<br><br>ASTERISK-27755<br><br>Change-Id: I99e343439c5a43f178fc466aa2978f6dfd1ab73a<br>---<br>A tests/apps/confbridge/confbridge_talking/configs/ast1/confbridge.conf<br>A tests/apps/confbridge/confbridge_talking/configs/ast1/extensions.conf<br>A tests/apps/confbridge/confbridge_talking/configs/ast1/pjsip.conf<br>A tests/apps/confbridge/confbridge_talking/sipp/invite.xml<br>A tests/apps/confbridge/confbridge_talking/test-config.yaml<br>M tests/apps/confbridge/tests.yaml<br>6 files changed, 261 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/tests/apps/confbridge/confbridge_talking/configs/ast1/confbridge.conf b/tests/apps/confbridge/confbridge_talking/configs/ast1/confbridge.conf<br>new file mode 100644<br>index 0000000..df304ab<br>--- /dev/null<br>+++ b/tests/apps/confbridge/confbridge_talking/configs/ast1/confbridge.conf<br>@@ -0,0 +1,13 @@<br>+[general]<br>+<br>+[default_bridge]<br>+type=bridge<br>+<br>+[default_user]<br>+type=user<br>+<br>+[alice]<br>+type=user<br>+quiet=yes<br>+announce_only_user=no<br>+talk_detection_events=yes<br>diff --git a/tests/apps/confbridge/confbridge_talking/configs/ast1/extensions.conf b/tests/apps/confbridge/confbridge_talking/configs/ast1/extensions.conf<br>new file mode 100644<br>index 0000000..9112e08<br>--- /dev/null<br>+++ b/tests/apps/confbridge/confbridge_talking/configs/ast1/extensions.conf<br>@@ -0,0 +1,5 @@<br>+[default]<br>+<br>+exten => conference,1,Answer()<br>+ same => n,ConfBridge(confbridge,,${CALLERID(num)})<br>+ same => n,Hangup()<br>diff --git a/tests/apps/confbridge/confbridge_talking/configs/ast1/pjsip.conf b/tests/apps/confbridge/confbridge_talking/configs/ast1/pjsip.conf<br>new file mode 100644<br>index 0000000..27796f1<br>--- /dev/null<br>+++ b/tests/apps/confbridge/confbridge_talking/configs/ast1/pjsip.conf<br>@@ -0,0 +1,9 @@<br>+[transport]<br>+type=transport<br>+bind=127.0.0.1<br>+protocol=udp<br>+<br>+[alice]<br>+type=endpoint<br>+allow=!all,ulaw<br>+media_address=127.0.0.1<br>diff --git a/tests/apps/confbridge/confbridge_talking/sipp/invite.xml b/tests/apps/confbridge/confbridge_talking/sipp/invite.xml<br>new file mode 100644<br>index 0000000..14adeea<br>--- /dev/null<br>+++ b/tests/apps/confbridge/confbridge_talking/sipp/invite.xml<br>@@ -0,0 +1,170 @@<br>+<?xml version="1.0" encoding="ISO-8859-1" ?><br>+<!DOCTYPE scenario SYSTEM "sipp.dtd"><br>+<br>+<scenario name="Invite and hold"><br>+ <send retrans="500"><br>+ <![CDATA[<br>+ INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0<br>+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]<br>+ From: "alice" <sip:alice@[local_ip]:[local_port]>;tag=[call_number]<br>+ To: "[service]" <sip:[service]@[remote_ip]:[remote_port]><br>+ Call-ID: [call_id]<br>+ CSeq: [cseq] INVITE<br>+ Contact: sip:alice@[local_ip]:[local_port]<br>+ Max-Forwards: 70<br>+ Supported: replaces, 100rel, timer, norefersub<br>+ Session-Expires: 1800<br>+ Content-Type: application/sdp<br>+ Content-Length: [len]<br>+<br>+ v=0<br>+ o=- 1324901698 1324901698 IN IP[local_ip_type] [local_ip]<br>+ s=-<br>+ c=IN IP[media_ip_type] [media_ip]<br>+ t=0 0<br>+ m=audio 12345 RTP/AVP 0 101<br>+ a=sendrecv<br>+ a=rtpmap:0 PCMU/8000<br>+ a=rtpmap:101 telephone-event/8000<br>+<br>+ ]]><br>+ </send><br>+<br>+ <recv response="100" optional="true" /><br>+ <recv response="180" optional="true" /><br>+ <recv response="200" /><br>+<br>+ <send><br>+ <![CDATA[<br>+ ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0<br>+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]<br>+ From: <sip:alice@[local_ip]>;tag=[call_number]<br>+ To: <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]<br>+ CSeq: [cseq] ACK<br>+ Call-ID: [call_id]<br>+ Max-Forwards: 70<br>+ Content-Length: 0<br>+<br>+ ]]><br>+ </send><br>+<br>+ <pause milliseconds="3000"/><br>+<br>+ <!-- Start playing audio to be "detected" --><br>+ <nop><br>+ <action><br>+ <exec rtp_stream="lib/python/asterisk/audio.ulaw,3,0"/><br>+ </action><br>+ </nop><br>+<br>+ <pause milliseconds="3000"/><br>+<br>+ <!-- Now send a hold reinvite --><br>+ <send retrans="500"><br>+ <![CDATA[<br>+ INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0<br>+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]<br>+ From: "alice" <sip:alice@[local_ip]:[local_port]>;tag=[call_number]<br>+ To: "[service]" <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]<br>+ [last_Call-ID:]<br>+ CSeq: [cseq] INVITE<br>+ Contact: sip:alice@[local_ip]:[local_port]<br>+ Max-Forwards: 70<br>+ Content-Type: application/sdp<br>+ Content-Length: [len]<br>+<br>+ v=0<br>+ o=- 1324901698 1324901698 IN IP[local_ip_type] [local_ip]<br>+ s=-<br>+ c=IN IP[media_ip_type] [media_ip]<br>+ t=0 0<br>+ m=audio 12345 RTP/AVP 0 101<br>+ a=sendonly<br>+ a=rtpmap:0 PCMU/8000<br>+ a=rtpmap:101 telephone-event/8000<br>+<br>+ ]]><br>+ </send><br>+<br>+ <recv response="100" optional="true" /><br>+ <recv response="180" optional="true" /><br>+ <recv response="200" /><br>+<br>+ <send><br>+ <![CDATA[<br>+ ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0<br>+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]<br>+ From: <sip:alice@[local_ip]>;tag=[call_number]<br>+ To: <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]<br>+ CSeq: [cseq] ACK<br>+ Call-ID: [call_id]<br>+ Max-Forwards: 70<br>+ Content-Length: 0<br>+<br>+ ]]><br>+ </send><br>+<br>+ <pause milliseconds="3000"/><br>+<br>+ <!-- Then take off hold --><br>+ <send retrans="500"><br>+ <![CDATA[<br>+ INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0<br>+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]<br>+ From: "alice" <sip:alice@[local_ip]:[local_port]>;tag=[call_number]<br>+ To: "[service]" <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]<br>+ [last_Call-ID:]<br>+ CSeq: [cseq] INVITE<br>+ Contact: sip:alice@[local_ip]:[local_port]<br>+ Max-Forwards: 70<br>+ Content-Type: application/sdp<br>+ Content-Length: [len]<br>+<br>+ v=0<br>+ o=- 1324901698 1324901698 IN IP[local_ip_type] [local_ip]<br>+ s=-<br>+ c=IN IP[media_ip_type] [media_ip]<br>+ t=0 0<br>+ m=audio 12345 RTP/AVP 0 101<br>+ a=sendrecv<br>+ a=rtpmap:0 PCMU/8000<br>+ a=rtpmap:101 telephone-event/8000<br>+<br>+ ]]><br>+ </send><br>+<br>+ <recv response="100" optional="true" /><br>+ <recv response="180" optional="true" /><br>+ <recv response="200" /><br>+<br>+ <send><br>+ <![CDATA[<br>+ ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0<br>+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]<br>+ From: <sip:alice@[local_ip]>;tag=[call_number]<br>+ To: <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]<br>+ CSeq: [cseq] ACK<br>+ Call-ID: [call_id]<br>+ Max-Forwards: 70<br>+ Content-Length: 0<br>+<br>+ ]]><br>+ </send><br>+<br>+ <pause milliseconds="1000"/><br>+<br>+ <send><br>+ <![CDATA[<br>+ BYE sip:[remote_ip]:[remote_port] SIP/2.0<br>+ Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]<br>+ From: <sip:alice@[local_ip]:[local_port]>;tag=[call_number]<br>+ To: <sip:[service]@[remote_ip]>[peer_tag_param]<br>+ CSeq: [cseq] BYE<br>+ Call-ID: [call_id]<br>+ Contact: <sip:[service]@[local_ip]:[local_port]><br>+ Max-Forwards: 70<br>+ Content-Length: 0<br>+ ]]><br>+ </send><br>+<br>+</scenario><br>diff --git a/tests/apps/confbridge/confbridge_talking/test-config.yaml b/tests/apps/confbridge/confbridge_talking/test-config.yaml<br>new file mode 100644<br>index 0000000..3bd5612<br>--- /dev/null<br>+++ b/tests/apps/confbridge/confbridge_talking/test-config.yaml<br>@@ -0,0 +1,63 @@<br>+testinfo:<br>+ summary: 'Test talk detection in a confbridge'<br>+ description: |<br>+ This test makes sure that the appropriate 'ConfbridgeTalking' events are<br>+ received when talking is detected and when the phone is put on hold.<br>+<br>+test-modules:<br>+ test-object:<br>+ config-section: test-object-config<br>+ typename: 'sipp.SIPpTestCase'<br>+ modules:<br>+ -<br>+ config-section: 'ami-config'<br>+ typename: 'pluggable_modules.EventActionModule'<br>+<br>+test-object-config:<br>+ test-iterations:<br>+ -<br>+ scenarios:<br>+ - { 'key-args': {'scenario': 'invite.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'conference'} }<br>+<br>+ami-config:<br>+ -<br>+ ami-events:<br>+ conditions:<br>+ match:<br>+ Event: 'ConfbridgeTalking'<br>+ Channel: 'PJSIP/alice-*'<br>+ TalkingStatus: 'on'<br>+ count: 2<br>+ -<br>+ ami-events:<br>+ conditions:<br>+ match:<br>+ Event: 'Hold'<br>+ Channel: 'PJSIP/alice-*'<br>+ count: 1<br>+ -<br>+ ami-events:<br>+ conditions:<br>+ match:<br>+ Event: 'ConfbridgeTalking'<br>+ Channel: 'PJSIP/alice-*'<br>+ TalkingStatus: 'off'<br>+ count: 1<br>+ -<br>+ ami-events:<br>+ conditions:<br>+ match:<br>+ Event: 'Unhold'<br>+ Channel: 'PJSIP/alice-*'<br>+ count: 1<br>+<br>+properties:<br>+ tags:<br>+ - confbridge<br>+ - apps<br>+ dependencies:<br>+ - python : 'twisted'<br>+ - python : 'starpy'<br>+ - asterisk : 'app_confbridge'<br>+ - asterisk : 'chan_pjsip'<br>+<br>diff --git a/tests/apps/confbridge/tests.yaml b/tests/apps/confbridge/tests.yaml<br>index 48e7fca..3008383 100644<br>--- a/tests/apps/confbridge/tests.yaml<br>+++ b/tests/apps/confbridge/tests.yaml<br>@@ -8,6 +8,7 @@<br> - test: 'confbridge_recording'<br> - test: 'confbridge_result'<br> - test: 'confbridge_start_muted'<br>+ - test: 'confbridge_talking'<br> - test: 'confbridge_timeout'<br> - test: 'confbridge_triple_lindy'<br> - test: 'confbridge_waitmarked_kick'<br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/8619">change 8619</a>. To unsubscribe, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/8619"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: testsuite </div>
<div style="display:none"> Gerrit-Branch: 15 </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I99e343439c5a43f178fc466aa2978f6dfd1ab73a </div>
<div style="display:none"> Gerrit-Change-Number: 8619 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Kevin Harwell <kharwell@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Benjamin Keith Ford <bford@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins2 </div>
<div style="display:none"> Gerrit-Reviewer: Joshua Colp <jcolp@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Sean Bright <sean.bright@gmail.com> </div>