[asterisk-commits] Add NAPTR test for preference. (testsuite[master])

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jun 11 18:41:15 CDT 2015


Matt Jordan has submitted this change and it was merged.

Change subject: Add NAPTR test for preference.
......................................................................


Add NAPTR test for preference.

This test is very similar to the NAPTR order test. The difference is
that the NAPTR records in this test have the same order but different
preference values. We ensure that the record with the lowest preference
value is chosen.

A SIPp scenario listens on a TCP transport. If the NAPTR record with the
lower preference value is used, then the resolution result should end up
sending the INVITE to this SIPp scenario. If the other NAPTR record is
chosen, then Asterisk will end up erroneously sending on a UDP
transport, resulting in the SIPp scenario timing out.

ASTERISK-25013 #close
Reported by: Matt Jordan

Change-Id: Iabed2613bc934becb3c8e6381e4af1634aa553be
---
A tests/channels/pjsip/resolver/naptr/preference/configs/ast1/extensions.conf
A tests/channels/pjsip/resolver/naptr/preference/configs/ast1/pjsip.conf
A tests/channels/pjsip/resolver/naptr/preference/configs/ast1/resolver_unbound.conf
A tests/channels/pjsip/resolver/naptr/preference/dns_zones/example.com
A tests/channels/pjsip/resolver/naptr/preference/sipp/uas.xml
A tests/channels/pjsip/resolver/naptr/preference/test-config.yaml
M tests/channels/pjsip/resolver/naptr/tests.yaml
7 files changed, 177 insertions(+), 0 deletions(-)

Approvals:
  Matt Jordan: Looks good to me, approved; Verified
  Joshua Colp: Looks good to me, but someone else must approve



diff --git a/tests/channels/pjsip/resolver/naptr/preference/configs/ast1/extensions.conf b/tests/channels/pjsip/resolver/naptr/preference/configs/ast1/extensions.conf
new file mode 100644
index 0000000..4a2d2ba
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/preference/configs/ast1/extensions.conf
@@ -0,0 +1,6 @@
+[default]
+
+exten => s,1,NoOp()
+ same => n,Wait(1)
+ same => n,Dial(PJSIP/rick/sip:example.com)
+ same => n,Hangup()
diff --git a/tests/channels/pjsip/resolver/naptr/preference/configs/ast1/pjsip.conf b/tests/channels/pjsip/resolver/naptr/preference/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..4f2b4e1
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/preference/configs/ast1/pjsip.conf
@@ -0,0 +1,14 @@
+[transport-tcp]
+type=transport
+protocol=tcp
+bind=0.0.0.0:5060
+
+[transport=udp]
+type=transport
+protocol=udp
+bind=0.0.0.0:5060
+
+[rick]
+type=endpoint
+context=default
+allow=!all,ulaw,alaw,g722
diff --git a/tests/channels/pjsip/resolver/naptr/preference/configs/ast1/resolver_unbound.conf b/tests/channels/pjsip/resolver/naptr/preference/configs/ast1/resolver_unbound.conf
new file mode 100644
index 0000000..38ef153
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/preference/configs/ast1/resolver_unbound.conf
@@ -0,0 +1,3 @@
+[general]
+nameserver = 127.0.0.1 at 10053
+resolv =
diff --git a/tests/channels/pjsip/resolver/naptr/preference/dns_zones/example.com b/tests/channels/pjsip/resolver/naptr/preference/dns_zones/example.com
new file mode 100644
index 0000000..7e563df
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/preference/dns_zones/example.com
@@ -0,0 +1,33 @@
+zone = [
+    SOA(
+        # For whom we are the authority
+        'example.com',
+
+        # This nameserver's name
+        mname = "ns1.example.com",
+
+        # Mailbox of individual who handles this
+        rname = "root.example.com",
+
+        # Unique serial identifying this SOA data
+        serial = 2003010601,
+
+        # Time interval before zone should be refreshed
+        refresh = "1H",
+
+        # Interval before failed refresh should be retried
+        retry = "1H",
+
+        # Upper limit on time interval before expiry
+        expire = "1H",
+
+        # Minimum TTL
+        minimum = "1H"
+    ),
+
+    NAPTR('example.com', 50, 50, 'S', 'SIP+D2T', '', '_sip._tcp.example.com'),
+    NAPTR('example.com', 50, 90, 'S', 'SIP+D2U', '', '_sip._udp.example.com'),
+    SRV('_sip._tcp.example.com', 0, 1, 5061, 'pbx.example.com'),
+    SRV('_sip._udp.example.com', 0, 1, 5061, 'pbx.example.com'),
+    A('pbx.example.com', '127.0.0.1'),
+]
diff --git a/tests/channels/pjsip/resolver/naptr/preference/sipp/uas.xml b/tests/channels/pjsip/resolver/naptr/preference/sipp/uas.xml
new file mode 100644
index 0000000..e72519e
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/preference/sipp/uas.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE scenario SYSTEM "sipp.dtd">
+
+<scenario name="Receive INVITE with audio, immediately answer, and then hangup">
+  <Global variables="remote_tag" />
+  <recv request="INVITE" crlf="true">
+      <action>
+          <!-- Save the from tag. We'll need it when we send our BYE -->
+          <ereg regexp=".*(;tag=.*)"
+              header="From:"
+              search_in="hdr"
+              check_it="true"
+              assign_to="remote_tag"/>
+      </action>
+  </recv>
+
+  <send retrans="500">
+    <![CDATA[
+
+      SIP/2.0 200 OK
+      [last_Via:]
+      [last_From:]
+      [last_To:];tag=[call_number]
+      [last_Call-ID:]
+      [last_CSeq:]
+      Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+      Content-Type: application/sdp
+      Content-Length: [len]
+
+      v=0
+      o=- 1324901698 1324901698 IN IP4 [local_ip]
+      s=-
+      c=IN IP4 [local_ip]
+      t=0 0
+      m=audio 2226 RTP/AVP 0 101
+      a=sendrecv
+      a=rtpmap:0 PCMU/8000
+      a=rtpmap:101 telephone-event/8000
+
+    ]]>
+  </send>
+
+  <recv request="ACK" rtd="true" crlf="true">
+  </recv>
+
+  <send retrans="500">
+    <![CDATA[
+
+      BYE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
+      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
+      From: ua1 <sip:ua1@[local_ip]:[local_port]>;tag=[call_number]
+      To: [$remote_tag]
+      [last_Call-ID:]
+      CSeq: [cseq] BYE
+      Contact: <sip:[local_ip]:[local_port];transport=[transport]>
+      Max-Forwards: 70
+      Content-Length: 0
+
+    ]]>
+  </send>
+
+  <recv response="200">
+  </recv>
+
+</scenario>
diff --git a/tests/channels/pjsip/resolver/naptr/preference/test-config.yaml b/tests/channels/pjsip/resolver/naptr/preference/test-config.yaml
new file mode 100644
index 0000000..63a491d
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/preference/test-config.yaml
@@ -0,0 +1,55 @@
+testinfo:
+    summary: 'Test NAPTR record order to ensure lowest order is used.'
+    description: |
+        'This test verifies that when multiple NAPTR records exist with
+        same order but different preference values, the record with the
+        lowest preference is used.
+
+        A call is placed to example.com without a transport specified resulting
+        in a NAPTR lookup. If the record with the lowest preference is used then
+        the SRV record for the TCP transport is used. If the NAPTR record with
+        the higher preference is used then the SRV record for the UDP transport
+        is used. Since the SIPp instance is only listening on TCP, the test will
+        fail if UDP is used due to the wrong NAPTR record being used.'
+
+test-modules:
+    test-object:
+        config-section: test-object-config
+        typename: 'sipp.SIPpTestCase'
+    modules:
+        -
+            config-section: originator
+            typename: 'pluggable_modules.Originator'
+        -
+            config-section: dns-server-config
+            typename: 'dns_server.DNSServer'
+
+test-object-config:
+    test-iterations:
+        -
+            scenarios:
+                - { 'key-args': {'scenario': 'uas.xml', '-i': '127.0.0.1',
+                                 '-p': '5061', '-t': 't1'} }
+
+originator:
+    trigger: 'ami_connect'
+    ignore-originate-failure: 'no'
+    id: '0'
+    channel: 'Local/s at default'
+    application: 'Echo'
+    async: 'True'
+
+dns-server-config:
+    port: 10053
+    python-zones:
+        -
+            example.com
+
+properties:
+    minversion: '14.0.0'
+    dependencies:
+        - app : 'sipp'
+        - asterisk : 'res_pjsip'
+        - asterisk : 'res_resolver_unbound'
+    tags:
+        - pjsip
diff --git a/tests/channels/pjsip/resolver/naptr/tests.yaml b/tests/channels/pjsip/resolver/naptr/tests.yaml
index 355dcee..77ef509 100644
--- a/tests/channels/pjsip/resolver/naptr/tests.yaml
+++ b/tests/channels/pjsip/resolver/naptr/tests.yaml
@@ -4,3 +4,4 @@
     - test: 'transport_udp'
     - test: 'transport_unspecified'
     - test: 'order'
+    - test: 'preference'

-- 
To view, visit https://gerrit.asterisk.org/635
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Iabed2613bc934becb3c8e6381e4af1634aa553be
Gerrit-PatchSet: 1
Gerrit-Project: testsuite
Gerrit-Branch: master
Gerrit-Owner: Mark Michelson <mmichelson at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Matt Jordan <mjordan at digium.com>



More information about the asterisk-commits mailing list