<p>Friendly Automation <strong>submitted</strong> this change.</p><p><a href="https://gerrit.asterisk.org/c/testsuite/+/16545">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: <sip:alice-1@127.0.0.2:5062>;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: <sip:alice-2@127.0.0.3:5063>;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: <sip:alice-1@127.0.0.2:5062>" 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: <sip:bob-1@127.0.0.2:5062>;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: <sip:bob-1@127.0.0.2:5062>;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: <sip:bob-2@127.0.0.3:5063>;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: <sip:bob-2@127.0.0.3:5063>" 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: <sip:bob-1@127.0.0.2:5062>;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: <sip:bob-3@127.0.0.4:5064>;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: <sip:charlie-1@127.0.0.2:5062>;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: <sip:charlie-1@127.0.0.2:5062>;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: <sip:charlie-2@127.0.0.3:5063>;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: <sip:charlie-2@127.0.0.3:5063>;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: <sip:charlie-3@127.0.0.4:5064>;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: <sip:charlie-1@127.0.0.2:5062>" 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/+/16545">change 16545</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/+/16545"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: testsuite </div>
<div style="display:none"> Gerrit-Branch: 19 </div>
<div style="display:none"> Gerrit-Change-Id: I336bd2bac512396b33407882066a8ec66a914f5c </div>
<div style="display:none"> Gerrit-Change-Number: 16545 </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>