Hi Paul,

simply do what the error message asks you to do. A chain of |<recv>| with |optional=true| has to be followed by at least a single |<recv>| without |optional=true|.

So the result would be

|<label id="wait_for_something"/>||
|

|<recv request="INVITE" optional="true" next="respond_reINVITE"/>||
||||
||<recv request="BYE" timeout="300000" ontimeout="send_own_BYE"/>||
||||
||<send next="scenario_end"> |
|  <![CDATA[|
||
|
||     SIP/2.0 200 OK|
||
|     ...|
||
|  ]]>|
||
|</send>||
||||
||<label id="respond_reINVITE"/>||
||||
||<send> |
|  <![CDATA[|
||
|
||     SIP/2.0 200 OK|
||
|    ...|
||
|  ]]>|
||
|</send>||
|
|||
||<recv request="ACK" next="wait_for_something"/>||
||||
||<label id="send_own_BYE"/>||
||||
||<send> |
|  <![CDATA[|
||
|
||     BYE [$received-contact-uri] SIP/2.0||
|
||
|     ...|
||
|  ]]>|
||
|</send>||
|
|||
||<recv response="481" optional="true" next="scenario_end"/>||
||||
||<recv response="200"/>||
||||
||<label id="scenario_end"/>||
||||
||</scenario>|

P.


Dne 10.10.2016 v 16:20 Paul van den IJssel napsal(a):
Hi,

I can't figure out why my UAC script keeps returning the same error message: " :<recv> before <send> sequence without a mandatory message. Please remove one 'optional=true' (element 25)..".

Scenario description:
The UAC scenario sends an INVITE to an IVR, a pcap is played and option 1 is selected in the IVR. After this the PBX (Avaya) fires off 5 reINVITEs. After these 5 reINVITEs the call is put in a queue. Call #1 is answered by the agent and after a few seconds the agent terminates the call. If for some reason the UAC doesn't receive a BYE from the UAS there is a timeout that triggers the UAC to send a BYE.

If all agents are busy the calls in the queue receive Music on Hold and an annunciated message. For this the UAS sends 1 or multiple reINVITEs to the UAC. The number of reINVITEs depends on the queue depth. So either an incoming receives the standard 5 reINVITEs or more (6, 7, 8.. I don't know..). I tried to solve this with 'optional', 'next' and 'label id' configuration option, as seen below. But if I start the SIPp scenario I get an error saying: "2016-10-10 16:16:13.343168 1476108973.343168: <recv> before <send> sequence without a mandatory message. Please remove one 'optional=true' (element 25)..".

Anybody any idea how to get this loop to work?

Regards, Paul

-----------------------------------------------------
looping part of UAC scenario:
-----------------------------------------------------
  <!-- #6  RE-INVITE and response loop                      -->
  <label id="10"/>
  <recv request="INVITE" rrs="true" optional="true" next="11">
  </recv>

  <send retrans="500">
    <![CDATA[

      SIP/2.0 200 OK
      ...
    ]]>
  </send>

  <recv request="ACK" rrs="true" crlf="true" next="10">
  </recv>

  <recv request="BYE" timeout="300000" ontimeout="2" next="3">
  </recv>


-----------------------------------------------------
Flow graph between UAC and UAS:
-----------------------------------------------------
[UAC]  <------------------>  [UAS]
      INVITE ---------->
         100 <----------
         183 <----------
         200 <----------
         ACK ---------->
       Pause [    20.0s]
              [ NOP ]
      INVITE <----------    (reINVITE #1)
         200 ---------->
         ACK <----------

      INVITE <----------    (reINVITE #2)
         200 ---------->
         ACK <----------

      INVITE <----------    (reINVITE #3)
         200 ---------->
         ACK <----------

      INVITE <----------    (reINVITE #4)
         200 ---------->
         ACK <----------

      INVITE <----------    (reINVITE #5)
         200 ---------->
         ACK <----------

      INVITE <----------    (optional reINVITE)
         200 ---------->
         ACK <----------

         BYE <----------
         BYE ---------->
         200 <----------

         200 ---------->

-----------------------------------------------------
UAC Scenario:
-----------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">

<scenario name="UAC with media">
  <send retrans="500">
    <![CDATA[

      INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag09[call_number]
      To: sut <sip:[service]@[remote_ip]:[remote_port]>
      Call-ID: [call_id]
      CSeq: 1 INVITE
      Contact: sip:[field0]@[local_ip]:[local_port]
      Max-Forwards: 70
      P-Asserted-Identity: <sip:[service]@[remote_ip]:[remote_port]>
      Subject: Performance Test
      Content-Type: application/sdp
      Content-Length: [len]

      v=0
      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[local_ip_type] [local_ip]
      t=0 0
      m=audio [auto_media_port] RTP/AVP 8 101
      a=rtpmap:8 PCMA/8000
      a=rtpmap:101 telephone-event/8000
      a=fmtp:101 0-11,16

    ]]>
  </send>

  <recv response="100" optional="true" rrs="true">
  </recv>

  <recv response="183" optional="true" rrs="true">
  </recv>

  <recv response="200" rrs="true" rtd="true" >
  </recv>

  <send>
    <![CDATA[

      ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0
      [routes]
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag09[call_number]
      To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
      Call-ID: [call_id]
      CSeq: 1 ACK
      Contact: sip:[field0]@[local_ip]:[local_port]
      Max-Forwards: 70
      P-Asserted-Identity: <sip:[service]@[remote_ip]:[remote_port]>
      Subject: Performance Test
      Content-Length: 0

    ]]>
  </send>

  <pause milliseconds="20000"/>

  <!-- Play a pre-recorded PCAP file (RTP stream)                   -->
  <nop>
    <action>
<exec play_pcap_audio="/usr/local/etc/sipp-3.3.990/pcap/dtmf_2833_1.pcap"/>
    </action>
  </nop>

  <!-- #1  RE-INVITE and response                        -->
  <recv request="INVITE" rrs="true">
  </recv>

  <send retrans="500">
    <![CDATA[

      SIP/2.0 200 OK
      [last_Record-Route:]
      [last_Via:]
      [last_From:]
      [last_To:];tag=[pid]SIPpTag01[call_number]
      [last_Call-ID:]
      [last_CSeq:]
      Contact: <sip:[field0]@[local_ip]:[local_port]>
      Content-Type: application/sdp
      Content-Length: [len]

      v=0
      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[media_ip_type] 0.0.0.0
      t=0 0
      m=audio [media_port] RTP/AVP 8
      a=ptime:20

    ]]>
  </send>

  <recv request="ACK" rrs="true" crlf="true">
  </recv>

  <!-- #2 RE-INVITE and response                      -->
  <recv request="INVITE" rrs="true">
  </recv>

  <send retrans="500">
    <![CDATA[

      SIP/2.0 200 OK
      [last_Record-Route:]
      [last_Via:]
      [last_From:]
      [last_To:];tag=[pid]SIPpTag01[call_number]
      [last_Call-ID:]
      [last_CSeq:]
      Contact: <sip:[field0]@[local_ip]:5060>
      Content-Type: application/sdp
      Content-Length: [len]

      v=0
      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[media_ip_type] [media_ip]
      t=0 0
      m=audio [media_port] RTP/AVP 8
      a=ptime:20

    ]]>
  </send>

  <recv request="ACK" rtd="true" crlf="true">
  </recv>

  <!-- #3  RE-INVITE and response                        -->
  <recv request="INVITE" rrs="true">
  </recv>

  <send retrans="500">
    <![CDATA[

      SIP/2.0 200 OK
      [last_Record-Route:]
      [last_Via:]
      [last_From:]
      [last_To:];tag=[pid]SIPpTag01[call_number]
      [last_Call-ID:]
      [last_CSeq:]
      Contact: <sip:[field0]@[local_ip]:[local_port]>
      Content-Type: application/sdp
      Content-Length: [len]

      v=0
      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[media_ip_type] 0.0.0.0
      t=0 0
      m=audio [media_port] RTP/AVP 8
      a=ptime:20

    ]]>
  </send>

  <recv request="ACK" rrs="true" crlf="true">
  </recv>

  <!-- #4  RE-INVITE and response                        -->
  <recv request="INVITE" rrs="true">
  </recv>

  <send retrans="500">
    <![CDATA[

      SIP/2.0 200 OK
      [last_Record-Route:]
      [last_Via:]
      [last_From:]
      [last_To:];tag=[pid]SIPpTag01[call_number]
      [last_Call-ID:]
      [last_CSeq:]
      Contact: <sip:[field0]@[local_ip]:[local_port]>
      Content-Type: application/sdp
      Content-Length: [len]

      v=0
      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[media_ip_type] 0.0.0.0
      t=0 0
      m=audio [media_port] RTP/AVP 8
      a=ptime:20

    ]]>
  </send>

  <recv request="ACK" rrs="true" crlf="true">
  </recv>

  <!-- #5  RE-INVITE and response                        -->
  <recv request="INVITE" rrs="true">
  </recv>

  <send retrans="500">
    <![CDATA[

      SIP/2.0 200 OK
      [last_Record-Route:]
      [last_Via:]
      [last_From:]
      [last_To:];tag=[pid]SIPpTag01[call_number]
      [last_Call-ID:]
      [last_CSeq:]
      Contact: <sip:[field0]@[local_ip]:[local_port]>
      Content-Type: application/sdp
      Content-Length: [len]

      v=0
      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[media_ip_type] 0.0.0.0
      t=0 0
      m=audio [media_port] RTP/AVP 8
      a=ptime:20

    ]]>
  </send>

  <recv request="ACK" rrs="true" crlf="true">
  </recv>

  <!-- #6  RE-INVITE and response loop                      -->
  <label id="10"/>
  <recv request="INVITE" rrs="true" optional="true" next="11">
  </recv>

  <send retrans="500">
    <![CDATA[

      SIP/2.0 200 OK
      [last_Record-Route:]
      [last_Via:]
      [last_From:]
      [last_To:];tag=[pid]SIPpTag01[call_number]
      [last_Call-ID:]
      [last_CSeq:]
      Contact: <sip:[field0]@[local_ip]:[local_port]>
      Content-Type: application/sdp
      Content-Length: [len]

      v=0
      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[media_ip_type] 0.0.0.0
      t=0 0
      m=audio [media_port] RTP/AVP 8
      a=ptime:20

    ]]>
  </send>

  <recv request="ACK" rrs="true" crlf="true" next="10">
  </recv>

  <recv request="BYE" timeout="300000" ontimeout="2" next="3">
  </recv>

  <label id="2"/>
  <send retrans="500">
    <![CDATA[

      BYE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
      [routes]
      Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:[field0]@[local_ip]:[local_port]>;tag=[pid]SIPpTag09[call_number]
      To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
      Call-ID: [call_id]
      CSeq: 2 BYE
      Contact: sip:[field0]@[local_ip]:[local_port]
      Max-Forwards: 70
      P-Asserted-Identity: <sip:[service]@[remote_ip]:[remote_port]>
      Subject: Performance Test
      Content-Length: 0

    ]]>
  </send>

  <recv response="200" crlf="true" next="4">
  </recv>

  <label id="3"/>
  <send>
    <![CDATA[

      SIP/2.0 200 OK
      [last_To:]
      [last_From:]
      [last_Call-ID:]
      [last_CSeq:]
      [last_Via:]
      Content-Length: 0

    ]]>
  </send>

  <label id="4"/>

<!-- definition of the response time repartition table (unit is ms) -->
  <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>

<!-- definition of the call length repartition table (unit is ms) -->
  <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>

</scenario>
-----------------------------------------------------



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot


_______________________________________________
Sipp-users mailing list
Sipp-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sipp-users

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Sipp-users mailing list
Sipp-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sipp-users

Reply via email to