<p>Friendly Automation <strong>submitted</strong> this change.</p><p><a href="https://gerrit.asterisk.org/c/testsuite/+/16544">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Kevin Harwell: Looks good to me, approved
  Friendly Automation: Approved for Submit

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">tests/pjsip/config_options/remove_unavailable: Test new config option<br><br>A new PJSIP option to remove unavailable contacts when an inbound<br>registration exceeds max_contacts has been added.  A new test is<br>added to the testsuite to test the behavior of this option.<br><br>ASTERISK-29525<br><br>Change-Id: I336bd2bac512396b33407882066a8ec66a914f5c<br>---<br>A tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/configs/ast1/pjsip.conf<br>A tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-disabled-1.xml<br>A tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-disabled-2.xml<br>A tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-enabled.xml<br>A tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/test-config.yaml<br>M tests/channels/pjsip/registration/inbound/nominal/config_options/tests.yaml<br>6 files changed, 440 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/configs/ast1/pjsip.conf b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/configs/ast1/pjsip.conf</span><br><span>new file mode 100644</span><br><span>index 0000000..e2c82fe</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/configs/ast1/pjsip.conf</span><br><span>@@ -0,0 +1,47 @@</span><br><span style="color: hsl(120, 100%, 40%);">+[system]</span><br><span style="color: hsl(120, 100%, 40%);">+type=system</span><br><span style="color: hsl(120, 100%, 40%);">+timer_t1=100</span><br><span style="color: hsl(120, 100%, 40%);">+timer_b=6400</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[local-transport-template](!)</span><br><span style="color: hsl(120, 100%, 40%);">+type=transport</span><br><span style="color: hsl(120, 100%, 40%);">+bind=127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[local-transport-udp](local-transport-template)</span><br><span style="color: hsl(120, 100%, 40%);">+protocol=udp</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[endpoint-template](!)</span><br><span style="color: hsl(120, 100%, 40%);">+type=endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+context=default</span><br><span style="color: hsl(120, 100%, 40%);">+allow=!all,ulaw</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[alice](endpoint-template)</span><br><span style="color: hsl(120, 100%, 40%);">+aors=alice</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[alice]</span><br><span style="color: hsl(120, 100%, 40%);">+type=aor</span><br><span style="color: hsl(120, 100%, 40%);">+max_contacts=1</span><br><span style="color: hsl(120, 100%, 40%);">+remove_unavailable=yes</span><br><span style="color: hsl(120, 100%, 40%);">+qualify_frequency=5</span><br><span style="color: hsl(120, 100%, 40%);">+qualify_timeout=3.0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[bob](endpoint-template)</span><br><span style="color: hsl(120, 100%, 40%);">+aors=bob</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[bob]</span><br><span style="color: hsl(120, 100%, 40%);">+type=aor</span><br><span style="color: hsl(120, 100%, 40%);">+max_contacts=2</span><br><span style="color: hsl(120, 100%, 40%);">+remove_unavailable=yes</span><br><span style="color: hsl(120, 100%, 40%);">+qualify_frequency=5</span><br><span style="color: hsl(120, 100%, 40%);">+qualify_timeout=3.0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[charlie](endpoint-template)</span><br><span style="color: hsl(120, 100%, 40%);">+aors=charlie</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[charlie]</span><br><span style="color: hsl(120, 100%, 40%);">+type=aor</span><br><span style="color: hsl(120, 100%, 40%);">+max_contacts=2</span><br><span style="color: hsl(120, 100%, 40%);">+remove_existing=yes</span><br><span style="color: hsl(120, 100%, 40%);">+remove_unavailable=yes</span><br><span style="color: hsl(120, 100%, 40%);">+qualify_frequency=5</span><br><span style="color: hsl(120, 100%, 40%);">+qualify_timeout=3.0</span><br><span>diff --git a/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-disabled-1.xml b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-disabled-1.xml</span><br><span>new file mode 100644</span><br><span>index 0000000..0a65a3c</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-disabled-1.xml</span><br><span>@@ -0,0 +1,78 @@</span><br><span style="color: hsl(120, 100%, 40%);">+<?xml version="1.0" encoding="ISO-8859-1" ?></span><br><span style="color: hsl(120, 100%, 40%);">+<!DOCTYPE scenario SYSTEM "sipp.dtd"></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<scenario name="Basic Sipstone UAC"></span><br><span style="color: hsl(120, 100%, 40%);">+    <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-1</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-1@127.0.0.2:5062>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 600</span><br><span style="color: hsl(120, 100%, 40%);">+                  Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="200" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+            <action></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected contacts are present and that the expires is correct with a 5 second tolerance --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:alice-1@127.0.0.2:5062&gt;;expires=(600|59[5-9])" search_in="msg" check_it="true" assign_to="1"/></span><br><span style="color: hsl(120, 100%, 40%);">+                </action></span><br><span style="color: hsl(120, 100%, 40%);">+       </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <pause milliseconds="15000"/></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-2</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-2@127.0.0.3:5063>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 300</span><br><span style="color: hsl(120, 100%, 40%);">+                  Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="200" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+            <action></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected contacts are present and that the expires is correct with a 5 second tolerance --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:alice-2@127.0.0.3:5063&gt;;expires=(300|29[5-9])" search_in="msg" check_it="true" assign_to="2"/></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected old contacts are *not* present --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:alice-1@127.0.0.2:5062&gt;" search_in="msg" check_it_inverse="true" assign_to="3" /></span><br><span style="color: hsl(120, 100%, 40%);">+             </action></span><br><span style="color: hsl(120, 100%, 40%);">+       </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-3</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-3@127.0.0.4:5064>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 60</span><br><span style="color: hsl(120, 100%, 40%);">+                   Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="403" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+    </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <Reference variables="1" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="2" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="3" /></span><br><span style="color: hsl(120, 100%, 40%);">+</scenario></span><br><span>diff --git a/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-disabled-2.xml b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-disabled-2.xml</span><br><span>new file mode 100644</span><br><span>index 0000000..ee932d9</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-disabled-2.xml</span><br><span>@@ -0,0 +1,106 @@</span><br><span style="color: hsl(120, 100%, 40%);">+<?xml version="1.0" encoding="ISO-8859-1" ?></span><br><span style="color: hsl(120, 100%, 40%);">+<!DOCTYPE scenario SYSTEM "sipp.dtd"></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<scenario name="Basic Sipstone UAC"></span><br><span style="color: hsl(120, 100%, 40%);">+ <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-1</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-1@127.0.0.2:5062>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 600</span><br><span style="color: hsl(120, 100%, 40%);">+                  Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="200" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+            <action></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected contacts are present and that the expires is correct with a 5 second tolerance --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:bob-1@127.0.0.2:5062&gt;;expires=(600|59[5-9])" search_in="msg" check_it="true" assign_to="1"/></span><br><span style="color: hsl(120, 100%, 40%);">+          </action></span><br><span style="color: hsl(120, 100%, 40%);">+       </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-2</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-2@127.0.0.3:5063>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 300</span><br><span style="color: hsl(120, 100%, 40%);">+                  Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="200" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+            <action></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected contacts are present and that the expires is correct with a 5 second tolerance --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:bob-1@127.0.0.2:5062&gt;;expires=(600|59[5-9])" search_in="msg" check_it="true" assign_to="2"/></span><br><span style="color: hsl(120, 100%, 40%);">+                  <ereg regexp="Contact: &lt;sip:bob-2@127.0.0.3:5063&gt;;expires=(300|29[5-9])" search_in="msg" check_it="true" assign_to="3"/></span><br><span style="color: hsl(120, 100%, 40%);">+          </action></span><br><span style="color: hsl(120, 100%, 40%);">+       </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <pause milliseconds="15000"/></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-3</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-3@127.0.0.4:5064>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 60</span><br><span style="color: hsl(120, 100%, 40%);">+                   Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="200" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+            <action></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected old contacts are *not* present --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:bob-2@127.0.0.3:5063&gt;" search_in="msg" check_it_inverse="true" assign_to="4" /></span><br><span style="color: hsl(120, 100%, 40%);">+                       <!-- Ensure the expected contacts are present and that the expires is correct with a 5 second tolerance --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:bob-1@127.0.0.2:5062&gt;;expires=(58[0-5])" search_in="msg" check_it="true" assign_to="5"/></span><br><span style="color: hsl(120, 100%, 40%);">+                      <ereg regexp="Contact: &lt;sip:bob-3@127.0.0.4:5064&gt;;expires=(60|5[5-9])" search_in="msg" check_it="true" assign_to="6"/></span><br><span style="color: hsl(120, 100%, 40%);">+            </action></span><br><span style="color: hsl(120, 100%, 40%);">+       </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-4</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-4@127.0.0.5:5065>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Contact: "[service]" <sip:[service]-5@127.0.0.6:5066>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 60</span><br><span style="color: hsl(120, 100%, 40%);">+                   Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="403" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+    </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <Reference variables="1" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="2" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="3" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="4" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="5" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="6" /></span><br><span style="color: hsl(120, 100%, 40%);">+</scenario></span><br><span>diff --git a/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-enabled.xml b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-enabled.xml</span><br><span>new file mode 100644</span><br><span>index 0000000..333af6e</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/sipp/register-remove-existing-enabled.xml</span><br><span>@@ -0,0 +1,86 @@</span><br><span style="color: hsl(120, 100%, 40%);">+<?xml version="1.0" encoding="ISO-8859-1" ?></span><br><span style="color: hsl(120, 100%, 40%);">+<!DOCTYPE scenario SYSTEM "sipp.dtd"></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+<scenario name="Basic Sipstone UAC"></span><br><span style="color: hsl(120, 100%, 40%);">+   <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-1</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-1@127.0.0.2:5062>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 600</span><br><span style="color: hsl(120, 100%, 40%);">+                  Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="200" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+            <action></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected contacts are present and that the expires is correct with a 5 second tolerance --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:charlie-1@127.0.0.2:5062&gt;;expires=(600|59[5-9])" search_in="msg" check_it="true" assign_to="1"/></span><br><span style="color: hsl(120, 100%, 40%);">+              </action></span><br><span style="color: hsl(120, 100%, 40%);">+       </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <pause milliseconds="15000"/></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-2</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-2@127.0.0.3:5063>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 60</span><br><span style="color: hsl(120, 100%, 40%);">+                   Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="200" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+            <action></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected contacts are present and that the expires is correct with a 5 second tolerance --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:charlie-1@127.0.0.2:5062&gt;;expires=(58[0-5])" search_in="msg" check_it="true" assign_to="2"/></span><br><span style="color: hsl(120, 100%, 40%);">+                  <ereg regexp="Contact: &lt;sip:charlie-2@127.0.0.3:5063&gt;;expires=(60|5[5-9])" search_in="msg" check_it="true" assign_to="3"/></span><br><span style="color: hsl(120, 100%, 40%);">+                </action></span><br><span style="color: hsl(120, 100%, 40%);">+       </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <send retrans="500"></span><br><span style="color: hsl(120, 100%, 40%);">+          <![CDATA[</span><br><span style="color: hsl(120, 100%, 40%);">+                  REGISTER sip:[remote_ip]:[remote_port] SIP/2.0</span><br><span style="color: hsl(120, 100%, 40%);">+                        Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]</span><br><span style="color: hsl(120, 100%, 40%);">+                      From: "[service]" <sip:[service]@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number]-3</span><br><span style="color: hsl(120, 100%, 40%);">+                   To: "[service]" <sip:[service]@[remote_ip]:[remote_port]></span><br><span style="color: hsl(120, 100%, 40%);">+                     Call-ID: [call_id]</span><br><span style="color: hsl(120, 100%, 40%);">+                    CSeq: 1 REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+                      Max-Forwards: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                      Contact: "[service]" <sip:[service]-3@127.0.0.4:5064>;transport=[transport]</span><br><span style="color: hsl(120, 100%, 40%);">+                   Subject: Performance Test</span><br><span style="color: hsl(120, 100%, 40%);">+                     Expires: 70</span><br><span style="color: hsl(120, 100%, 40%);">+                   Content-Length: 0</span><br><span style="color: hsl(120, 100%, 40%);">+             ]]></span><br><span style="color: hsl(120, 100%, 40%);">+        </send></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <recv response="200" rtd="true"></span><br><span style="color: hsl(120, 100%, 40%);">+            <action></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected contacts are present and that the expires is correct with a 5 second tolerance --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:charlie-2@127.0.0.3:5063&gt;;expires=(60|5[5-9])" search_in="msg" check_it="true" assign_to="4"/></span><br><span style="color: hsl(120, 100%, 40%);">+                        <ereg regexp="Contact: &lt;sip:charlie-3@127.0.0.4:5064&gt;;expires=(70|6[5-9])" search_in="msg" check_it="true" assign_to="5"/></span><br><span style="color: hsl(120, 100%, 40%);">+                        <!-- Ensure the expected old contacts are *not* present --></span><br><span style="color: hsl(120, 100%, 40%);">+                     <ereg regexp="Contact: &lt;sip:charlie-1@127.0.0.2:5062&gt;" search_in="msg" check_it_inverse="true" assign_to="6" /></span><br><span style="color: hsl(120, 100%, 40%);">+           </action></span><br><span style="color: hsl(120, 100%, 40%);">+       </recv></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       <Reference variables="1" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="2" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="3" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="4" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="5" /></span><br><span style="color: hsl(120, 100%, 40%);">+   <Reference variables="6" /></span><br><span style="color: hsl(120, 100%, 40%);">+</scenario></span><br><span>diff --git a/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/test-config.yaml b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/test-config.yaml</span><br><span>new file mode 100644</span><br><span>index 0000000..97da1f2</span><br><span>--- /dev/null</span><br><span>+++ b/tests/channels/pjsip/registration/inbound/nominal/config_options/remove_unavailable/test-config.yaml</span><br><span>@@ -0,0 +1,122 @@</span><br><span style="color: hsl(120, 100%, 40%);">+testinfo:</span><br><span style="color: hsl(120, 100%, 40%);">+    summary:     'Register contacts to test the remove_unavailable option'</span><br><span style="color: hsl(120, 100%, 40%);">+    description: |</span><br><span style="color: hsl(120, 100%, 40%);">+        'When remove_existing is enabled:</span><br><span style="color: hsl(120, 100%, 40%);">+         When remove_unavailable is enabled, any existing AOR contacts not</span><br><span style="color: hsl(120, 100%, 40%);">+         affected by the new registration and are unavailable are removed</span><br><span style="color: hsl(120, 100%, 40%);">+         if they push the number of contacts over the max_contacts setting.</span><br><span style="color: hsl(120, 100%, 40%);">+         If there are no unavailable contacts for this AOR, then default back</span><br><span style="color: hsl(120, 100%, 40%);">+         to the regular remove_existing behavior and remove the contact that</span><br><span style="color: hsl(120, 100%, 40%);">+         is soonest to expire.</span><br><span style="color: hsl(120, 100%, 40%);">+         A single registration still cannot try to add more contacts than</span><br><span style="color: hsl(120, 100%, 40%);">+         the max_contacts setting.  The number of contacts cannot go over the</span><br><span style="color: hsl(120, 100%, 40%);">+         max_contacts setting.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+         Using IPv4 and UDP, run SIPp scenarios that register contacts in a</span><br><span style="color: hsl(120, 100%, 40%);">+         series of registrations. This ensures that with the remove_unavailable</span><br><span style="color: hsl(120, 100%, 40%);">+         pjsip.conf configuration option enabled, the unavailable contacts are</span><br><span style="color: hsl(120, 100%, 40%);">+         removed and the new contacts are added as expected.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+         When remove_existing is not enabled:</span><br><span style="color: hsl(120, 100%, 40%);">+         When remove_unavailable is enabled, search the AOR for any unavailable</span><br><span style="color: hsl(120, 100%, 40%);">+         contacts not involved in this registration, and remove enough contacts</span><br><span style="color: hsl(120, 100%, 40%);">+         so that the total number of registered contacts remains at or below</span><br><span style="color: hsl(120, 100%, 40%);">+         max_contacts.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+         Using IPv4 and UDP, run SIPp scenarios that register contacts in a</span><br><span style="color: hsl(120, 100%, 40%);">+         series of registrations. This ensures that with the remove_unavailable</span><br><span style="color: hsl(120, 100%, 40%);">+         pjsip.conf configuration option enabled, the unavailable contacts are</span><br><span style="color: hsl(120, 100%, 40%);">+         removed and the new contacts are added as expected.'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test-modules:</span><br><span style="color: hsl(120, 100%, 40%);">+    test-object:</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'test-object-config'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'sipp.SIPpTestCase'</span><br><span style="color: hsl(120, 100%, 40%);">+    modules:</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            config-section: 'ami-config'</span><br><span style="color: hsl(120, 100%, 40%);">+            typename: 'ami.AMIEventModule'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test-object-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    memcheck-delay-stop: 7</span><br><span style="color: hsl(120, 100%, 40%);">+    fail-on-any: False</span><br><span style="color: hsl(120, 100%, 40%);">+    test-iterations:</span><br><span style="color: hsl(120, 100%, 40%);">+        -</span><br><span style="color: hsl(120, 100%, 40%);">+            scenarios:</span><br><span style="color: hsl(120, 100%, 40%);">+                # IPv4 & UDP & 1 existing contact</span><br><span style="color: hsl(120, 100%, 40%);">+                - { 'key-args': {'scenario': 'register-remove-existing-disabled-1.xml', '-i': '127.0.0.1', '-p': '5061', '-s': 'alice'} }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                # IPv4 & UDP & 2 existing contacts</span><br><span style="color: hsl(120, 100%, 40%);">+                - { 'key-args': {'scenario': 'register-remove-existing-disabled-2.xml', '-i': '127.0.0.1', '-p': '5161', '-s': 'bob'} }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+               # IPv4 & UDP & remove_existing</span><br><span style="color: hsl(120, 100%, 40%);">+                - { 'key-args': {'scenario': 'register-remove-existing-enabled.xml', '-i': '127.0.0.1', '-p': '5261', '-s': 'charlie'} }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ami-config:</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'TestEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                State: 'AOR_CONTACT_ADDED'</span><br><span style="color: hsl(120, 100%, 40%);">+                AOR: 'alice'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '2'</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'TestEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                State: 'AOR_CONTACT_REMOVED'</span><br><span style="color: hsl(120, 100%, 40%);">+                AOR: 'alice'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'TestEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                State: 'AOR_CONTACT_ADDED'</span><br><span style="color: hsl(120, 100%, 40%);">+                AOR: 'bob'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '3'</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'TestEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                State: 'AOR_CONTACT_REMOVED'</span><br><span style="color: hsl(120, 100%, 40%);">+                AOR: 'bob'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'TestEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                State: 'AOR_CONTACT_ADDED'</span><br><span style="color: hsl(120, 100%, 40%);">+                AOR: 'charlie'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '3'</span><br><span style="color: hsl(120, 100%, 40%);">+    -</span><br><span style="color: hsl(120, 100%, 40%);">+        type: 'headermatch'</span><br><span style="color: hsl(120, 100%, 40%);">+        id: '0'</span><br><span style="color: hsl(120, 100%, 40%);">+        conditions:</span><br><span style="color: hsl(120, 100%, 40%);">+            match:</span><br><span style="color: hsl(120, 100%, 40%);">+                Event: 'TestEvent'</span><br><span style="color: hsl(120, 100%, 40%);">+                State: 'AOR_CONTACT_REMOVED'</span><br><span style="color: hsl(120, 100%, 40%);">+                AOR: 'charlie'</span><br><span style="color: hsl(120, 100%, 40%);">+        count: '1'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+properties:</span><br><span style="color: hsl(120, 100%, 40%);">+    dependencies:</span><br><span style="color: hsl(120, 100%, 40%);">+        - buildoption: 'TEST_FRAMEWORK'</span><br><span style="color: hsl(120, 100%, 40%);">+        - python: 'twisted'</span><br><span style="color: hsl(120, 100%, 40%);">+        - python: 'starpy'</span><br><span style="color: hsl(120, 100%, 40%);">+        - sipp:</span><br><span style="color: hsl(120, 100%, 40%);">+            version: 'v3.3'</span><br><span style="color: hsl(120, 100%, 40%);">+        - asterisk: 'res_pjsip'</span><br><span style="color: hsl(120, 100%, 40%);">+    tags:</span><br><span style="color: hsl(120, 100%, 40%);">+        - pjsip</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/tests/channels/pjsip/registration/inbound/nominal/config_options/tests.yaml b/tests/channels/pjsip/registration/inbound/nominal/config_options/tests.yaml</span><br><span>index 6542018..5dda52e 100644</span><br><span>--- a/tests/channels/pjsip/registration/inbound/nominal/config_options/tests.yaml</span><br><span>+++ b/tests/channels/pjsip/registration/inbound/nominal/config_options/tests.yaml</span><br><span>@@ -3,3 +3,4 @@</span><br><span>     - test: 'minimum_expiration'</span><br><span>     - test: 'maximum_expiration'</span><br><span>     - test: 'remove_existing'</span><br><span style="color: hsl(120, 100%, 40%);">+    - test: 'remove_unavailable'</span><br><span></span><br></pre><div style="white-space:pre-wrap"></div><p>To view, visit <a href="https://gerrit.asterisk.org/c/testsuite/+/16544">change 16544</a>. To unsubscribe, or for help writing mail filters, 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/c/testsuite/+/16544"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: testsuite </div>
<div style="display:none"> Gerrit-Branch: 18 </div>
<div style="display:none"> Gerrit-Change-Id: I336bd2bac512396b33407882066a8ec66a914f5c </div>
<div style="display:none"> Gerrit-Change-Number: 16544 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Joe <ynadiv@corpit.xyz> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-Reviewer: Kevin Harwell <kharwell@digium.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>