OpenTTCN/Knowledge base/Creating SNMP BER Codec/CodecTest.ttcn
From OpenTTCN
Home | Developer's corner | Knowledge base | Working documents | Documentation | OpenTTCN IDE | Tutorials | Training | How do I | Frequently asked questions | Technical support |
CodecTest.ttcn
module CodecTest
{
import from SNMPv2_PDU all;
import from SNMPv2_Message all;
import from MIB_Example { const sysUpTime }
type component ComponentType
{
}
testcase TC_CodecTest()
runs on ComponentType
{
log("****************** Group 1 ******************");
var template SNMP_message v_snmpmsg :=
{
version := snmp_version_v2c,
community := char2oct("demopublic"),
data :=
{
get_request :=
{
request_id := 151437390,
error_status := 0,
error_index := 0,
variable_bindings :=
{
{
name := objid { sysUpTime 0 },
value_ :=
{
value_ :=
{
application_wide :=
{
timeticks_value := 1
}
}
}
}
}
}
}
}
log("Type : SNMP_Message", v_snmpmsg);
var bitstring bs := encvalue(v_snmpmsg);
var octetstring os := bit2oct(bs);
log("encoded:", os);
if (os !=
'302E020101040A64656D6F7075626C6963A01D02040906C0'O &
'4E020100020100300F300D06082B06010201010300430101'O)
{
setverdict(fail, "encoded value mismatch"); stop;
}
var SNMP_message v_snmpmsg_2;
var integer rv := decvalue(bs, v_snmpmsg_2);
log("decoded:", v_snmpmsg_2);
if (v_snmpmsg_2 == valueof(v_snmpmsg))
{ setverdict(pass); } else { setverdict(fail, "decoded value mismatch"); stop; }
log("****************** Group 2 ******************");
v_snmpmsg :=
{
version := snmp_version_v2c,
community := char2oct("demopublic"),
data :=
{
response :=
{
request_id := 151437390,
error_status := 0,
error_index := 0,
variable_bindings :=
{
{
name := objid { sysUpTime 0 },
value_ :=
{
value_ :=
{
application_wide :=
{
timeticks_value := 235283552
}
}
}
}
}
}
}
}
log("Type : SNMP_Message", v_snmpmsg);
bs := encvalue(v_snmpmsg);
os := bit2oct(bs);
log("encoded:", os);
if (os !=
'3031020101040A64656D6F7075626C6963A22002040906C04E'O &
'0201000201003012301006082B0601020101030043040E062460'O)
{
setverdict(fail, "encoded value mismatch"); stop;
}
rv := decvalue(bs, v_snmpmsg_2);
log("decoded:", v_snmpmsg_2);
if (v_snmpmsg_2 == valueof(v_snmpmsg))
{ setverdict(pass); } else { setverdict(fail, "decoded value mismatch"); stop; }
}
}
