testscript.dtd: Elements - Entities - Source | Intro - Index
FRAMES / NO FRAMES

<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
This is the Definition of the tags and attributes for the elements of
the test script. The test script defines a set of event triggered tags
and attributes for event driven scripts that are read by the ISSI 
test framework. 
A test script defines an event triggered set of actions. Event triggers
are events (such as real-clock time, SIP or PTT message arrivals at
an emulated RFSS) that trigger a scripting action. Scripting actions
are specified using xml tags where ever possible so that parameters
may be checked at the time the script is parsed. This reduces runtime
errors. Following this design approach, all call setup actions are
specified using xml tags. In addition we support actions to specify
fragments of jython code (a Java implementation of Python). These
fragments of jython code may invoke a set of functions specific to the
RFSS or SU for which they are specified.  


@title DIETS Event Driven Test Script Specification
@root test-script
-->

<!--
The top level tag for the test script.
-->
<!ELEMENT test-script (( su-to-su-call-setup-scenario | 
            group-call-setup-scenario | 
            roaming-scenario | 
            su-script | 
            rfss-script )* , post-condition*)  >


<!--
The tag for setting up an SU to SU Call. 
-->
<!ELEMENT su-to-su-call-setup-scenario  (trigger)>


<!-- 
The tag for setting up a group call. This specifies the attributes 
necessary for group call setup and teardown.
NOTE: Some of these parameters affect the call setup params going
out with the invite and others affect the INVITE Priority
header. 
-->
<!ELEMENT group-call-setup-scenario (trigger) >

<!--
The tag for emulating an SU Roaming action.
-->
<!ELEMENT roaming-scenario (trigger) >

<!--
This tag specifies the attributes and code fragment necessary to script
an SU action. Scripted actions are for actions specific to an SU such
as turning the SU ON or OFF or sending a talk spurt to the peer of an
SU to SU call to a group call. The methods that can be invoked from the
script are described in the following section.--> 

<!ELEMENT su-script (trigger, script)  >

<!--
This tag specifies a code fragment to be executed at an emulated
RFSS. Scripted actions are specific to that emulated RFSS such as
dropping or adding RF resources, RTP resources etc. The methods that can
be invoked from the script are described in the following section. 
The jython code fragment can invoke
any of the methods of the 
<a href="../../doc/javadoc/gov/nist/p25/issi/rfss/tester/RfssScriptInterface.html">RfssScriptInterface </a>. The Jython global value
<b>currentRfss</b> refers to the emulated RFSS on which this 
script is executed.

-->

<!ELEMENT rfss-script (trigger, script) >


<!-- Encloses a piece of jython code. 
 -->
<!ELEMENT script (#PCDATA)>

<!-- The trigger action ( specifies the event condition for the enclosing tag)
-->

<!ELEMENT trigger EMPTY>

<!-- An optional post condition that is evaluated after the test completes -->
<!ELEMENT post-condition (#PCDATA)>

<!-- 

@attr type  the type of trigger. Can be one of the following types :
   <ul>
    <li> <b> time </b> trigger - fires on time relative to the 
       start of test.
    <li><b> ptt_message</b> trigger - fires on arrival of the type 
    of PTT message specified.
    <li><b>sip_request</b> trigger - fires on arrival of the type
    of SIP request specified.
    <li><b>sip_response</b> trigger - fires on arrival of the type
    of SIP response specified.
   </ul>

@attr refId - a reference ID to allow us to specify relative time triggers.
    If this is set, then the trigger fires after another named
    event firing. This allows us to specify event dependencies.
    

@attr oneShot - true implies that the trigger fires just once.

@attr value - the trigger value. Its interpretation depends upon the type
    of trigger. For time trigger, value is a time value. For sip_message
    trigger, value specifies the type of message. For a ptt_message
    the value specifies the Ptt message type.

-->
<!ATTLIST trigger
    type  (time|ptt_message|sip_request|sip_response) #REQUIRED
    oneShot (true|false) "true"
    refId CDATA #IMPLIED
    value CDATA #REQUIRED
>

<!--
@attr  testName - the test name 
@attr  rtpMessageLog the location where to put the logged rtp and ptt messages.
@attr  sipMessageLog the location where to put the sip messages.
@attr  generateSipTrace whether or not to capture a sip trace.
@attr  generatePttTrace whether or not to capture a PTT trace.
@attr  testCompletionDelay time after the final expected sip message is seen
    to when the test is considered to be completed.
@attr traceGenerationTime time to generate the trace for this test.

-->

<!ATTLIST test-script
    testName CDATA #IMPLIED
    rtpMessageLog CDATA "logs/messagelog.ptt"
    sipMessageLog CDATA "logs/messagelog.sip" 
    generateSipTrace (yes|no) "yes" 
    generatePttTrace (yes|no) "no"
    testCompletionDelay CDATA "0"
    traceGenerationTime CDATA "25"
    
>
<!-- 

@attr locationSelector  If the location predicate returns true then the
         assertion predicate is run. 
          return true if the assertion is to be checked at 
          the RFSS for which it evaluated to true.

@attr assertion  is the name of the function that will be 
                     invoked that should be returning a boolean value.
-->

<!ATTLIST post-condition 
        assertion CDATA #REQUIRED
        locationSelector  CDATA #REQUIRED
>


<!-- 

@attr id an identifier for this stanza (can be referred to in 
            scripts ).

@attr callingSuName  name of the calling SU. Must be defined in the
    associated topology.xml

@attr calledSuName  name of the called SU. Must be defined in the
    assoicated topology.xml

@attr isEmergency  whether or not this is an emergency call.

@attr terminateAfter   time after which the call is Terminated ( with a BYE)

@attr isTerminatedByCalledServing a flag which indicates whether the called
    party terminates call. 

@attr cancelAfter time after which to cancel the call. Note that cancel may
    not succeed.

@attr talkSpurtSentBy which end sends a talk spurt after setup  (this is an
        optional attribute ).

@attr isTalkSpurtForced whether or not talk spurt is forced.

-->
<!ATTLIST su-to-su-call-setup-scenario
    id        ID        #REQUIRED
    callingSuName     CDATA     #REQUIRED
    calledSuName      CDATA     #REQUIRED
    cancelAfter       CDATA "UNBOUNDED"
    terminateAfter    CDATA "UNBOUNDED"
    isTerminatedByCalledServing (true|false) "false"
    isEmergency       (true|false) "false" 
    talkSpurtSentBy   CDATA  #IMPLIED
    isTalkSpurtForced (true|false) "false" 
>

<!-- 

@attr id a unique identifier for this stanza 
             (can be referred to in scripts ).

@attr callingSuName   name of the calling SU

@attr calledGroupName  name of the called group

@attr priority  the call priority 

@attr isEmergency  "emergency" flag

@attr isConfirmed  "confirmed group call" flag

@attr cancelAfter  time after which call is canceled

@attr terminateAfter  time after which the call is Terminated ( with a BYE)

@attr isTalkSpurtSentAfterCallSetup calling SU send a talk spurt after call setup.

@attr isTalkSpurtForced a flag that indicates if the talk spurt 
        is forced or not.

-->
<!ATTLIST group-call-setup-scenario
    id      ID  #REQUIRED
    callingSuName   CDATA   #REQUIRED
    calledGroupName CDATA   #REQUIRED
    priority    CDATA   "1"
    isEmergency     (true|false) "false"
    isConfirmed     (true|false) "false"
    cancelAfter     CDATA "UNBOUNDED"
    terminateAfter  CDATA "UNBOUNDED"
    isTalkSpurtSentAfterCallSetup  (true|false)  "false"
    isTalkSpurtForced (true|false) "false"
>

<!-- 
@attr id - a unique identifier for this event triggered action.

@attr suName - symbolic name of the su that is moving.

@attr destinationRfssName - symbolic name of the destination RFSS.

@attr delay - time taken for the move.

-->
<!ATTLIST roaming-scenario
    id ID #REQUIRED
    suName CDATA #REQUIRED
    destinationRfssName CDATA #REQUIRED
    delay CDATA "0"
    
>

<!-- 

@attr id - the unique id for this su script.
@attr suName - must specify an su that is defined in the associated
    topology.xml file.

@attr id = the unique id for this SU script.

@attr suName = the name of the SU that this script references.
    this must be defined in the associated topology.xml file 
    for the test script.

@attr description = the decription of this scripting action.

@attr method = the jython method to invoke in the enclosed script.

-->
    
<!ATTLIST su-script
    id           ID    #REQUIRED
    suName           CDATA #REQUIRED
    description              CDATA #IMPLIED
    method           CDATA #REQUIRED
>

<!-- 


@attr id = the unique id for this RFSS script.
@attr rfssName = the name of the emulated RFSS that this script references.
@attr description = the decription of this scripting action.
@attr method = the jython method to invoke in the enclosed script.

-->
<!ATTLIST rfss-script
    id          ID    #REQUIRED
    rfssName        CDATA #REQUIRED
    description             CDATA #IMPLIED
    method          CDATA #REQUIRED
>