[Asterisk-code-review] pjsip: Add resolver test for NAPTR record order. (testsuite[master])
Joshua Colp
asteriskteam at digium.com
Fri Jun 5 18:53:11 CDT 2015
Joshua Colp has submitted this change and it was merged.
Change subject: pjsip: Add resolver test for NAPTR record order.
......................................................................
pjsip: Add resolver test for NAPTR record order.
This test ensures that the NAPTR record with the lowest order value is
used when multiple records with different order values exist. If the
record with the lowest order value is used, the TCP transport will be
used. Otherwise the UDP transport will be used. A SIPp instance only
listens on TCP and therefore the test will only pass if the call is sent
over TCP.
ASTERISK-25012 #close
Reported by: Matt Jordan
Change-Id: I751fdcb9120fc7af2c44d041a96e4aa550e979cc
---
A tests/channels/pjsip/resolver/naptr/order/configs/ast1/extensions.conf
A tests/channels/pjsip/resolver/naptr/order/configs/ast1/pjsip.conf
A tests/channels/pjsip/resolver/naptr/order/configs/ast1/resolver_unbound.conf
A tests/channels/pjsip/resolver/naptr/order/dns_zones/example.com
A tests/channels/pjsip/resolver/naptr/order/sipp/uas.xml
A tests/channels/pjsip/resolver/naptr/order/test-config.yaml
M tests/channels/pjsip/resolver/naptr/tests.yaml
7 files changed, 176 insertions(+), 0 deletions(-)
Approvals:
Joshua Colp: Looks good to me, approved; Verified
Jonathan Rose: Looks good to me, but someone else must approve
diff --git a/tests/channels/pjsip/resolver/naptr/order/configs/ast1/extensions.conf b/tests/channels/pjsip/resolver/naptr/order/configs/ast1/extensions.conf
new file mode 100644
index 0000000..4a2d2ba
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/order/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/order/configs/ast1/pjsip.conf b/tests/channels/pjsip/resolver/naptr/order/configs/ast1/pjsip.conf
new file mode 100644
index 0000000..4f2b4e1
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/order/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/order/configs/ast1/resolver_unbound.conf b/tests/channels/pjsip/resolver/naptr/order/configs/ast1/resolver_unbound.conf
new file mode 100644
index 0000000..38ef153
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/order/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/order/dns_zones/example.com b/tests/channels/pjsip/resolver/naptr/order/dns_zones/example.com
new file mode 100644
index 0000000..de1cc60
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/order/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', 90, 40, '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/order/sipp/uas.xml b/tests/channels/pjsip/resolver/naptr/order/sipp/uas.xml
new file mode 100644
index 0000000..e72519e
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/order/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/order/test-config.yaml b/tests/channels/pjsip/resolver/naptr/order/test-config.yaml
new file mode 100644
index 0000000..a8766c2
--- /dev/null
+++ b/tests/channels/pjsip/resolver/naptr/order/test-config.yaml
@@ -0,0 +1,54 @@
+testinfo:
+ summary: 'Test NAPTR record order to ensure lowest order is used.'
+ description: |
+ 'This test verifies that when multiple NAPTR records exist with
+ different order values, the record with the lowest order is used.
+
+ A call is place to example.com without a transport specified resulting
+ in a NAPTR lookup. If the record with the lowest order is used then the
+ SRV record for the TCP transport is used. If the NAPTR record with the
+ higher order 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 633aa1d..355dcee 100644
--- a/tests/channels/pjsip/resolver/naptr/tests.yaml
+++ b/tests/channels/pjsip/resolver/naptr/tests.yaml
@@ -3,3 +3,4 @@
- test: 'transport_tcp'
- test: 'transport_udp'
- test: 'transport_unspecified'
+ - test: 'order'
--
To view, visit https://gerrit.asterisk.org/596
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I751fdcb9120fc7af2c44d041a96e4aa550e979cc
Gerrit-PatchSet: 1
Gerrit-Project: testsuite
Gerrit-Branch: master
Gerrit-Owner: John Bigelow <jbigelow at digium.com>
Gerrit-Reviewer: Jonathan Rose <jrose at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
More information about the asterisk-code-review
mailing list