OpenTTCN/Knowledge base/Creating SNMP BER Codec/CodecTest.ttcn

From OpenTTCN

Jump to: navigation, search

  OpenTTCN DocZone

  Home | Developer's corner | Knowledge base | Working documents | Documentation | OpenTTCN IDE | Tutorials | Training | How do I | Frequently asked questions | Technical support


CodecTest.ttcn


Back to main article >>

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; }
}

}
Views
Personal tools