and added files
[bcm963xx.git] / userapps / opensource / net-snmp / perl / SNMP / t / async.t
1 #!./perl
2
3 BEGIN {
4     unless(grep /blib/, @INC) {
5         chdir 't' if -d 't';
6         @INC = '../lib' if -d '../lib';
7     }
8 }
9
10 use Test;
11 BEGIN {plan tests => 20}
12 use SNMP;
13 use vars qw($agent_port $comm $agent_host);
14 require "t/startagent.pl";
15
16
17 sub cb1; # forward reference
18 sub cb2;
19 sub cb3;
20 sub cb4;
21 sub cb5;
22 sub cb6;
23 sub cb7;
24 sub cbDummy;
25
26 $SNMP::verbose = 0;
27 $SNMP::dump_packet = 0;
28
29 my $sess = new SNMP::Session(DestHost => $agent_host, 
30                           Version => 1, 
31                           Community => $comm, 
32                           RemotePort => $agent_port);
33
34 # try getting unregistered OID.
35 my $result = $sess->get([["HooHaaHooHaa","0"]], [\&cbDummy, $sess]);
36 ok(!defined($result));
37
38 # this get should work
39 $result = $sess->get([["sysDescr","0"]], [\&cb1, $sess]);
40 ok($result);
41
42 SNMP::MainLoop();
43
44 sub cb1{
45     my $sess = shift;
46     my $vlist = shift;
47
48     ok(defined($vlist));
49     my $tag = $vlist->[0]->tag;
50     ok($tag eq 'sysDescr');
51     my $val = $vlist->[0]->val;
52     ok(defined $val);
53     my $iid = $vlist->[0]->iid;
54     my $type = $vlist->[0]->type;
55     ok($type eq 'OCTETSTR');
56     my $res = $sess->getnext([["sysDescr",0]], [\&cb2, $sess]);
57     ok ($res);
58 } # end of cb1
59
60 sub cb2{
61     my $sess = shift;
62     my $vlist = shift;
63
64     ok(defined($vlist));
65     ok(ref($vlist->[0]) =~ /Varbind/);
66     ok($vlist->[0][0] eq 'sysObjectID');
67     my $res = $sess->get([[".1.3.6.1.2.1.1.1.0"]], [\&cb3, $sess]);
68     ok($res);
69 } # end of cb2
70
71 sub cb3{
72     my $sess = shift;
73     my $vlist = shift;
74
75     ok(defined($vlist));
76
77     ok($vlist->[0][0] eq 'sysDescr');
78
79     my $res = $sess->getnext([["sysDescr",0]], [\&cb4, $sess]);
80     ok($res);
81 } # end of cb3
82
83 sub cb4{
84     my $sess = shift;
85     my $vlist = shift;
86
87     ok(defined $vlist);
88     my $res = $sess->set("sysDescr.0", "hahaha", [\&cb5, $sess]);
89 } # end of cb4
90
91 sub cb5{
92     my $sess = shift;
93     my $vlist = shift;
94
95     ok(defined($vlist));
96
97     my $res = $sess->set("sysORID.1", ".1.3.6.1.2.1.1.1", [\&cb6, $sess]);
98     ok(defined $res);
99 } # end of cb5
100
101 sub cb6{
102     my $sess = shift;
103     my $vlist = shift;
104     my $tag = $vlist->[0]->tag;
105     my $val = $vlist->[0]->val;
106
107     ok($tag =~ /^sysORID/);
108 # create list of varbinds for GETS, val field can be null or omitted
109     my $vars =
110         new SNMP::VarList (
111                            ['sysDescr', '0', ''],
112                            ['sysObjectID', '0'],
113                            ['sysUpTime', '0'],
114                            ['sysContact', '0'],
115                            ['sysName', '0'],
116                            ['sysLocation', '0'],
117                            ['sysServices', '0'],
118                            ['ifNumber', '0'],
119                            ['ifDescr', '1'],
120                            ['ifSpeed', '1'],
121                            ['snmpInPkts', '0'],
122                            ['snmpInBadVersions', '0'],
123                            ['snmpInBadCommunityNames', '0'],
124                            ['snmpInBadCommunityUses', '0'],
125                            ['snmpInASNParseErrs', '0'],
126                            ['snmpEnableAuthenTraps', '0'],
127                            ['sysORID', '1'],
128                            ['sysORDescr', '1'],
129                            ['sysORUpTime', '1'],
130                            ['sysORLastChange', '0'],
131                            ['ipInHdrErrors', '0'],
132                            ['ipDefaultTTL', '0'],
133                            ['ipInHdrErrors', '0'],
134                            );
135     my $res = $sess->get($vars, [\&cb7, $sess]);
136     ok(defined $res);
137 } # end of cb6
138
139 sub cb7{
140     my $sess = shift;
141     my $vlist = shift;
142
143
144     my $tag = $vlist->[0]->tag;
145     my $val = $vlist->[0]->val;
146
147     ok(@{$vlist} == 23);
148
149     snmptest_cleanup();
150
151     exit(0);
152 } # end of cb7
153
154 sub cbDummy {
155     warn("error: this should not get called");
156 }
157