Operations & Labels
Overview
The operations
parameter in the ExecuteReport
JSON-RPC message is an array of
operations to perform. Operation may perform logic processing, may send outbound
messages, or may wait for inbound messages. They may generate debug/trace messages
to the trace_log
, and may perform checks which are recorded in the check_log
.
A successful check will generate a pass
entry in the check_log
. A failed
check will generate a fail
entry in the check_log
. An unrecoverable check
failure will generate an abort
entry in the check_log
and will abandon processing
for this test instance (although the test run will continue if there are other
instances in this run).
Operation Basics
All operations have some basic attributes in common:
Attribute | Type | Description |
---|---|---|
type
|
String | [Required] A unique identifier describing the type of operation to perform. |
label
|
String |
An optional label name. This is only required if this operation is to be the target
of a branch operation. Naturally, the label value must be unique within the
list of operations for this test instance.
|
arguments_not_used
|
Boolean | An optional performance testing flag. This flag is available when performance testing overhead needs to be kept to a minimum. If set and no match constraints are provided for an operation the bytes will not be decoded when evaluating the operation. |
Example Operations
The following is an example ExecuteTest
JSON-RPC request. It contains a sequence of
operations including a branch
operation.
{
"inap": {
"extensions": {
"400": "OCTET STRING",
"401": "OCTET STRING"
}
},
"vars": {
"suffix": "999001",
"cli": "027654321"
},
"operations": [
{ "type": "eval", "expression": "$v->{cause} = 22" },
{ "type": "eval", "expression": "$v->{cause} = $v->{cause} + 3", "label": "add" },
{ "type": "branch", "expression": "$v->{cause} < 30", "on_true": "add" },
{
"type": "inap.ssp_to_scp.InitialDP",
"arguments": {
"serviceKey": 3000,
"calledPartyNumber_digits": "{'1800' . $v->{suffix}}",
"calledPartyNumber_noa": 3,
"callingPartyNumber_digits": "{$v->{cli}}",
"callingPartyNumber_noa": 3,
"locationNumber_digits": "61415015122",
"locationNumber_noa": 4,
"callingPartysCategory_hex": "f7",
"highLayerCompatibility_hex": "9181",
"serviceInteractionIndicators_hex": "300ba009810102820101880100",
"forwardCallIndicators_hex": "2001",
"bearerCapability": {
"bearerCap_hex": "8090a3"
},
"eventTypeBCSM": 3,
"callReferenceNumber_auto": 1,
"extensions": [
{ "type": "400", "value_octet_string": "BOSS" }
]
}
},
{
"type": "inap.ssp_from_scp.ReleaseCall",
"arguments" : {
"initialCallSegment_cause": "30"
}
},
{
"type": "assert",
"expression": "$i->{ReleaseCall}{initialCallSegment_cause} > 22",
"abort": "{'Bad Cause ' . $i->{ReleaseCall}{initialCallSegment_cause} . ', <= 22.'}",
"pass": "{'OK Cause ' . $i->{ReleaseCall}{initialCallSegment_cause} . ', > 22.'}",
}
]
}
Operations vs. Steps
For tracing purposes, operations are assigned a numeric index op_idx
starting from zero based on
their position in the operations
array. The first operation is 0
, the next is 1
, etc.
Tracing will also report the step_idx
. The first operation execution is step 0
, the next is
1
, etc. In the absence of any branch
operations, the step index and operation index values
will be identical. However, when branching occurs, the step index will continue to increase while
the operation index will change according to which operation is being performed.