snmp 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/test/test_ber.rb DELETED
@@ -1,243 +0,0 @@
1
- # encoding: ascii-8bit
2
- # frozen_string_literal: true
3
-
4
- require 'minitest/autorun'
5
- require 'snmp/varbind'
6
- require 'snmp/ber'
7
-
8
- class ASN1_Test < Minitest::Test
9
-
10
- include SNMP::BER::Encode
11
- include SNMP::BER::Decode
12
-
13
- def test_decode_tlv_empty
14
- tag, value, data = decode_tlv("\001\000")
15
- assert_equal(1, tag)
16
- assert_equal("", value)
17
- assert_equal("", data)
18
-
19
- tag, value, data = decode_tlv("\001\000\111")
20
- assert_equal(1, tag)
21
- assert_equal("", value)
22
- assert_equal("\111", data)
23
- end
24
-
25
- # Decode TLV data with the short-format length field.
26
- def test_decode_tlv_short
27
- tag, value, data = decode_tlv("\001\002\023\044")
28
- assert_equal(1, tag)
29
- assert_equal("\023\044", value)
30
- assert_equal("", data)
31
- end
32
-
33
- # Extra bytes of data are returned.
34
- def test_decode_tlv_short_extra
35
- tag, value, data = decode_tlv("\001\002\023\044\000")
36
- assert_equal(1, tag)
37
- assert_equal("\023\044", value)
38
- assert_equal("\000", data)
39
- end
40
-
41
- # Decode TLV data with long-format length field
42
- def test_decode_tlv_long
43
- long_data = "".dup; 128.times { |i| long_data << i.chr }
44
- tag, value, data = decode_tlv("\001\201\200" + long_data)
45
- assert_equal(1, tag)
46
- assert_equal(long_data, value)
47
- assert_equal("", data)
48
- end
49
-
50
- # Long format with extra bytes - use four bytes for length
51
- def test_decode_tlv_long_extra
52
- long_data = "".dup; 129.times { |i| long_data << i.chr }
53
- tag, value, data = decode_tlv("\001\204\000\000\000\201" + long_data + "\123\123\123")
54
- assert_equal(1, tag)
55
- assert_equal(long_data, value)
56
- assert_equal("\123\123\123", data)
57
- end
58
-
59
- # Check invalid length - ASN.1 says that first length octet can't be 255.
60
- def test_bad_length
61
- assert_raises(BER::InvalidLength) {
62
- decode_tlv("\001\377\001")
63
- }
64
- end
65
-
66
- # Check if input data is too short
67
- def test_out_of_data
68
- assert_raises(BER::OutOfData) {
69
- decode_tlv("\001\001")
70
- }
71
- assert_raises(BER::OutOfData) {
72
- decode_tlv("\001")
73
- }
74
- assert_raises(BER::OutOfData) {
75
- decode_tlv("")
76
- }
77
- end
78
-
79
- # Decode single-octet ASN.1 integer.
80
- # Number is negative (2's complement) if high order bit is 1.
81
- def test_decode_integer_octet
82
- i, data = decode_integer("\002\001\042")
83
- assert_equal(34, i)
84
- assert_equal("", data)
85
- i, data = decode_integer("\002\001\377")
86
- assert_equal(-1, i)
87
- assert_equal("", data)
88
- end
89
-
90
- # Decode multi-octet ASN.1 integer.
91
- def test_decode_integer
92
- i, data = decode_integer("\002\004\001\002\003\004")
93
- assert_equal(16909060, i)
94
- assert_equal("", data)
95
-
96
- i, data = decode_integer("\002\004\377\377\377\376")
97
- assert_equal(-2, i)
98
- assert_equal("", data)
99
-
100
- i, data = decode_integer("\002\003\000\377\376")
101
- assert_equal(65534, i)
102
- assert_equal("", data)
103
-
104
- i, data = decode_integer("\002\002\000\377")
105
- assert_equal(255, i)
106
- assert_equal("", data)
107
-
108
- assert_raises(BER::InvalidTag) {
109
- decode_integer("\001\004\001\002\003\004")
110
- }
111
- end
112
-
113
- def test_decode_timeticks
114
- i, data = decode_timeticks("\103\004\001\002\003\004")
115
- assert_equal(16909060, i)
116
- assert_equal("", data)
117
-
118
- assert_raises(BER::InvalidTag) {
119
- decode_timeticks("\002\004\001\002\003\004")
120
- }
121
- end
122
-
123
- # Decode ASN.1 octet string
124
- def test_decode_octet_string
125
- s, _ = decode_octet_string("\004\202\000\005hello")
126
- assert_equal("hello",s)
127
- assert_raises(BER::InvalidTag) {
128
- decode_octet_string("\005\202\000\005hello")
129
- }
130
- end
131
-
132
- def test_decode_ip_address
133
- ip, _ = decode_ip_address("@\004\001\002\003\004")
134
- assert_equal(ip, "\001\002\003\004")
135
- assert_raises(BER::InvalidTag) {
136
- decode_ip_address("\004\004\001\002\003\004")
137
- }
138
- assert_raises(BER::InvalidLength) {
139
- decode_ip_address("@\005\001\002\003\004\005")
140
- }
141
- end
142
-
143
- # Decode ASN.1 sequence
144
- def test_decode_sequence
145
- seq, data = decode_sequence("\060\003\002\001\077")
146
- assert_equal("\002\001\077", seq)
147
- assert_equal("", data)
148
-
149
- seq, data = decode_sequence("\060\003\002\001\077\002\001\001")
150
- assert_equal("\002\001\077", seq)
151
- assert_equal("\002\001\001", data)
152
-
153
- assert_raises(BER::InvalidTag) {
154
- decode_sequence("\061\003\002\001\077")
155
- }
156
- end
157
-
158
- def test_decode_object_id
159
- # Handle an empty object identifier because net-snmp does it and
160
- # they probably had a good reason.
161
- object_id, remainder = decode_object_id("\006\000")
162
- assert_equal([], object_id)
163
- assert_equal("", remainder)
164
-
165
- object_id, remainder = decode_object_id("\006\001+")
166
- assert_equal([1,3], object_id);
167
- assert_equal("", remainder)
168
-
169
- object_id, remainder = decode_object_id("\006\002+\006")
170
- assert_equal([1,3,6], object_id);
171
- assert_equal("", remainder)
172
-
173
- object_id, remainder = decode_object_id("\006\003+\202\001")
174
- assert_equal([1,3,257], object_id);
175
- assert_equal("", remainder)
176
-
177
- object_id, remainder = decode_object_id("\006\003S\202\001")
178
- assert_equal([2,3,257], object_id);
179
- assert_equal("", remainder)
180
-
181
- object_id, remainder = decode_object_id("\006\001\000")
182
- assert_equal([0,0], object_id);
183
- assert_equal("", remainder)
184
-
185
- assert_raises(BER::InvalidTag) do
186
- decode_object_id("\007\001+")
187
- end
188
- end
189
-
190
- def test_encode_length
191
- assert_equal("\000", encode_length(0))
192
- assert_equal("\001", encode_length(1))
193
- assert_equal("\177", encode_length(127))
194
- assert_equal("\201\200", encode_length(128))
195
- assert_equal("\202\002\001", encode_length(513))
196
- assert_raises(BER::InvalidLength) { encode_length(-1) }
197
- end
198
-
199
- def test_encode_integer
200
- assert_equal("\002\001\000", encode_integer(0))
201
- assert_equal("\002\001\001", encode_integer(1))
202
- assert_equal("\002\001\177", encode_integer(127))
203
- assert_equal("\002\002\000\200", encode_integer(128))
204
- assert_equal("\002\002\000\377", encode_integer(255))
205
- assert_equal("\002\002\001\000", encode_integer(256))
206
-
207
- assert_equal("\002\001\377", encode_integer(-1))
208
- assert_equal("\002\001\200", encode_integer(-128))
209
- assert_equal("\002\002\377\177", encode_integer(-129))
210
- end
211
-
212
- def test_encode_octet_string
213
- assert_equal("\004\015Dave was here", encode_octet_string("Dave was here"))
214
- assert_equal("\004\000", encode_octet_string(""))
215
- end
216
-
217
- def test_encode_sequence
218
- assert_equal("0\015Dave was here", encode_sequence("Dave was here"))
219
- assert_equal("0\000", encode_sequence(""))
220
- end
221
-
222
- def test_encode_null
223
- assert_equal("\005\000", encode_null)
224
- end
225
-
226
- def test_encode_exception
227
- assert_equal("\200\000", encode_exception(0x80))
228
- end
229
-
230
- def test_encode_object_id
231
- assert_equal("\006\001".dup << 80.chr, encode_object_id([2]))
232
- assert_equal("\006\001\000", encode_object_id([0,0]))
233
- assert_equal("\006\001+", encode_object_id([1,3]))
234
- assert_equal("\006\002+\006", encode_object_id([1,3,6]))
235
- assert_equal("\006\003+\202\001", encode_object_id([1,3,257]))
236
- assert_equal("\006\003".dup << 82.chr << "\202\001", encode_object_id([2,2,257]))
237
- assert_raises(BER::InvalidObjectId) { encode_object_id([3,2,257]) }
238
- assert_raises(BER::InvalidObjectId) { encode_object_id([]) }
239
-
240
- assert_equal("\006\a+\203\377\177\203\377\177",
241
- encode_object_id(SNMP::ObjectId.new("1.3.65535.65535")))
242
- end
243
- end
data/test/test_manager.rb DELETED
@@ -1,351 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'minitest/autorun'
4
- require 'snmp/manager'
5
-
6
- class EchoTransport
7
- def initialize
8
- end
9
-
10
- def close
11
- end
12
-
13
- def send(data, host, port)
14
- @data = data
15
- end
16
-
17
- def recv(max_bytes)
18
- SNMP::Message.decode(@data).response.encode[0,max_bytes]
19
- end
20
- end
21
-
22
- class TestConfig < Minitest::Test
23
-
24
- include SNMP
25
-
26
- def test_new_style_symbols
27
- config = Manager::Config.new(:host => "test")
28
- assert_equal("test", config.host)
29
- end
30
-
31
- def test_defaults
32
- config = Manager::Config.new({})
33
- assert_equal("localhost", config.host)
34
- end
35
-
36
- def test_old_style_symbols
37
- config = Manager::Config.new(:Transport => "transport")
38
- assert_equal("transport", config.transport)
39
- end
40
-
41
- def test_invalid_option
42
- assert_raises(RuntimeError) { Manager::Config.new(:fly_to_the_moon => true) }
43
- end
44
-
45
- def test_ipv6_address_guessing
46
- config = Manager::Config.new(:host => "::1")
47
- assert(config.use_IPv6)
48
- assert_equal("::1", config.host)
49
- end
50
-
51
- def test_applied_config
52
- config = Manager::Config.new(:host => "1:2:3:4:5:6:7:8", :port => 42, :timeout => 3)
53
- config.host
54
- config.use_IPv6
55
- config.retries
56
- assert_equal({:host=>"1:2:3:4:5:6:7:8", :retries=>5, :use_IPv6=>true,
57
- :Host => "1:2:3:4:5:6:7:8", :Retries => 5}, config.applied_config)
58
- end
59
- end
60
-
61
- class TestManager < Minitest::Test
62
-
63
- include SNMP
64
-
65
- def setup
66
- @manager = Manager.new(:Transport => EchoTransport.new)
67
- end
68
-
69
- def teardown
70
- @manager.close
71
- end
72
-
73
- def test_defaults
74
- assert_equal('localhost', @manager.config[:host])
75
- assert_equal(161, @manager.config[:port])
76
- assert_equal('public', @manager.config[:write_community])
77
- end
78
-
79
- def test_community
80
- @manager = Manager.new(:WriteCommunity=>'private', :Transport => EchoTransport.new)
81
- assert_equal('public', @manager.config[:community])
82
- assert_equal('private', @manager.config[:write_community])
83
-
84
- @manager = Manager.new(:Community=>'test', :Transport => EchoTransport.new)
85
- assert_equal('test', @manager.config[:community])
86
- assert_equal('test', @manager.config[:write_community])
87
-
88
- @manager = Manager.new(:Community=>'test', :WriteCommunity=>'private',
89
- :Transport => EchoTransport.new)
90
- assert_equal('test', @manager.config[:community])
91
- assert_equal('private', @manager.config[:write_community])
92
- end
93
-
94
- def test_transport_instance
95
- @manager = Manager.new(:Transport => EchoTransport.new)
96
- response = @manager.get("1.2.3.4")
97
- assert_equal("1.2.3.4", response.varbind_list.first.name.to_s)
98
- end
99
-
100
- def test_get
101
- response = @manager.get("1.2.3.4")
102
- assert_equal("1.2.3.4", response.varbind_list.first.name.to_s)
103
-
104
- response = @manager.get([ObjectId.new("1.2.3.4"), ObjectId.new("1.2.3.4.5")])
105
- assert_equal(ObjectId.new("1.2.3.4.5"), response.varbind_list[1].name)
106
- end
107
-
108
- def test_get_with_nil
109
- assert_raises(ArgumentError) { @manager.get(nil) }
110
- end
111
-
112
- def test_get_value
113
- value = @manager.get_value("1.2.3.4")
114
- assert_equal(Null, value)
115
-
116
- value = @manager.get_value(["1.2.3.4"])
117
- assert_equal([Null], value)
118
-
119
- values = @manager.get_value(["1.2.3.4", "1.2.3.4.5"])
120
- assert_equal(2, values.length)
121
- assert_equal(Null, values[0])
122
- assert_equal(Null, values[1])
123
- end
124
-
125
- def test_get_next
126
- response = @manager.get_next("1.2.3.4")
127
- assert_equal("1.2.3.4", response.varbind_list.first.name.to_s)
128
-
129
- response = @manager.get_next([ObjectId.new("1.2.3.4"), ObjectId.new("1.2.3.4.5")])
130
- assert_equal(ObjectId.new("1.2.3.4.5"), response.varbind_list[1].name)
131
- end
132
-
133
- def test_get_next_with_nil
134
- assert_raises(ArgumentError) { @manager.get_next(nil) }
135
- end
136
-
137
- def test_set
138
- v0 = VarBind.new("1.3.6.1.3.1.1.1.0", OctetString.new("Hello1"))
139
- v1 = VarBind.new("1.3.6.1.3.1.1.1.0", OctetString.new("Hello2"))
140
- response = @manager.set([v0, v1])
141
- assert_equal("Hello1", response.varbind_list[0].value.to_s)
142
- assert_equal("Hello2", response.varbind_list[1].value.to_s)
143
- end
144
-
145
- def test_set_with_nil
146
- assert_raises(ArgumentError) { @manager.set(nil) }
147
- end
148
-
149
- def test_single_set
150
- varbind = VarBind.new("1.3.6.1.3.1.1.1.0", OctetString.new("Hello"))
151
- response = @manager.set(varbind)
152
- assert_equal("Hello", response.varbind_list.first.value.to_s)
153
- end
154
-
155
- def test_get_bulk
156
- response = @manager.get_bulk(1, 3, ["1.3.6.1.3.1.1.1.0", "1.3.6.1.3.1.1.2.0"])
157
- assert_equal(:noError, response.error_status)
158
- assert_equal(0, response.error_index)
159
- assert_equal(2, response.varbind_list.length)
160
- assert_equal("SNMPv2-SMI::experimental.1.1.1.0", response.varbind_list[0].name.to_s)
161
- assert_equal("SNMPv2-SMI::experimental.1.1.2.0", response.varbind_list[1].name.to_s)
162
- end
163
-
164
- def test_get_bulk_with_nil
165
- assert_raises(ArgumentError) { @manager.get_bulk(nil, nil, nil) }
166
- end
167
-
168
- def test_walk
169
- old_verbose = $VERBOSE
170
- $VERBOSE = nil
171
- @manager.walk("ifTable") { fail "Expected break from OID not increasing" }
172
- ensure
173
- $VERBOSE = old_verbose
174
- end
175
-
176
- def test_walk_with_nil
177
- assert_raises(ArgumentError) { @manager.walk(nil) {} }
178
- end
179
-
180
- def test_request_id
181
- id = RequestId.new
182
- fail if id.next < 0 or id.next >= 2**31
183
-
184
- id.force_next(1)
185
- assert_equal(1, id.next)
186
-
187
- id.force_next(RequestId::MAX_REQUEST_ID-1)
188
- assert_equal(RequestId::MAX_REQUEST_ID-1, id.next)
189
-
190
- assert_raises(RuntimeError) { id.force_next(RequestId::MAX_REQUEST_ID) }
191
- assert_raises(RuntimeError) { id.force_next(0) }
192
- end
193
-
194
- def test_trap_v1
195
- manager = Manager.new(:Transport => EchoTransport.new, :Version => :SNMPv1)
196
- sent_data = manager.trap_v1(
197
- "enterprises.9",
198
- "10.1.2.3",
199
- :enterpriseSpecific,
200
- 42,
201
- 12345,
202
- [VarBind.new("1.3.6.1.2.3.4", SNMP::Integer.new(1))]
203
- )
204
- pdu = Message.decode(sent_data).pdu
205
- assert_equal(ObjectId.new("1.3.6.1.4.1.9"), pdu.enterprise)
206
- assert_equal(IpAddress.new("10.1.2.3"), pdu.agent_addr)
207
- assert_equal(:enterpriseSpecific, pdu.generic_trap)
208
- assert_equal(42, pdu.specific_trap)
209
- assert_equal(TimeTicks.new(12345), pdu.timestamp)
210
- assert_equal(1, pdu.vb_list.length)
211
- end
212
-
213
- def test_trap_v1_with_nil
214
- assert_raises(ArgumentError) { @manager.trap_v1(nil) }
215
- end
216
-
217
- def test_trap_v2
218
- sent_data = @manager.trap_v2(1234, "1.3.6.1.2.3.4")
219
- pdu = Message.decode(sent_data).pdu
220
- assert_equal(1234, pdu.sys_up_time)
221
- assert_equal("1.3.6.1.2.3.4", pdu.trap_oid.to_s)
222
- assert_equal(2, pdu.vb_list.length)
223
-
224
- sent_data = @manager.trap_v2(1234, "1.3.6.1.2.3.4", ["1.2.3", "1.4.5.6"])
225
- pdu = Message.decode(sent_data).pdu
226
- assert_equal(1234, pdu.sys_up_time)
227
- assert_equal("1.3.6.1.2.3.4", pdu.trap_oid.to_s)
228
- assert_equal(4, pdu.vb_list.length)
229
- assert_equal("1.4.5.6", pdu.vb_list.last.name.to_s)
230
- end
231
-
232
- def test_trap_v2_with_nil
233
- assert_raises(ArgumentError) { @manager.trap_v2(nil, nil, nil) }
234
- end
235
-
236
- def test_inform
237
- response = @manager.inform(1234, "1.3.6.1.2.3.4")
238
- assert_equal(1234, response.vb_list[0].value)
239
- assert_equal("SNMPv2-SMI::mgmt.3.4", response.vb_list[1].value.to_s)
240
- assert_equal(2, response.vb_list.length)
241
-
242
- response = @manager.inform(1234, "1.3.6.1.2.3.4", ["1.2.3", "1.4.5.6"])
243
- assert_equal(1234, response.vb_list[0].value)
244
- assert_equal("SNMPv2-SMI::mgmt.3.4", response.vb_list[1].value.to_s)
245
- assert_equal(4, response.vb_list.length)
246
- end
247
- end
248
-
249
- class TrapTestTransport
250
- include SNMP
251
- def initialize
252
- @count = 0
253
- sys_up_varbind = VarBind.new(ObjectId.new("1.3.6.1.2.1.1.3.0"),
254
- TimeTicks.new(1234))
255
- trap_oid_varbind = VarBind.new(ObjectId.new("1.3.6.1.6.3.1.1.4.1.0"),
256
- ObjectId.new("1.2.3"))
257
- trap = SNMPv2_Trap.new(42, VarBindList.new([sys_up_varbind, trap_oid_varbind]))
258
- message = Message.new(:SNMPv2c, "public", trap)
259
- @data = message.encode
260
- end
261
-
262
- def close
263
- end
264
-
265
- def recvfrom(max_bytes)
266
- @count += 1
267
- case @count
268
- when 1
269
- return @data, "127.0.0.1"
270
- when 2
271
- Thread.exit
272
- else
273
- raise "Huh?"
274
- end
275
- end
276
- end
277
-
278
-
279
- class TestTrapListener < Minitest::Test
280
- include SNMP
281
-
282
- def test_init_no_handlers
283
- init_called = false
284
- m = TrapListener.new(:ServerTransport => TrapTestTransport.new) do |manager|
285
- init_called = true
286
- end
287
- m.join
288
- assert(init_called)
289
- end
290
-
291
- def test_v2c_handler
292
- default_called = false
293
- v2c_called = false
294
- m = TrapListener.new(:ServerTransport => TrapTestTransport.new) do |manager|
295
- manager.on_trap_default { default_called = true }
296
- manager.on_trap_v2c { v2c_called = true }
297
- end
298
- m.join
299
- assert(!default_called)
300
- assert(v2c_called)
301
- end
302
-
303
- def test_oid_handler
304
- default_called = false
305
- v2c_called = false
306
- oid_called = false
307
- m = TrapListener.new(:ServerTransport => TrapTestTransport.new) do |manager|
308
- manager.on_trap("1.2.3") do |trap|
309
- assert_equal(ObjectId.new("1.2.3"), trap.trap_oid)
310
- assert_equal("127.0.0.1", trap.source_ip)
311
- oid_called = true
312
- end
313
- manager.on_trap_default { default_called = true }
314
- manager.on_trap_v2c { v2c_called = true }
315
- end
316
- m.join
317
- assert(!default_called)
318
- assert(!v2c_called)
319
- assert(oid_called)
320
- end
321
-
322
- ##
323
- # Should filter traps with a 'public' community if that community is not accepted
324
- #
325
- def test_reject_community
326
- assert !public_trap_passes?("test")
327
- assert !public_trap_passes?(["foo", "bar"])
328
- assert !public_trap_passes?([])
329
- end
330
-
331
- ##
332
- # Should accept traps with a 'public' community if that community is allowed.
333
- #
334
- def test_accept_community
335
- assert public_trap_passes? "public"
336
- assert public_trap_passes? ["test", "public"]
337
- assert public_trap_passes? nil
338
- end
339
-
340
- def public_trap_passes?(community_filter)
341
- default_called = false
342
- m = TrapListener.new(
343
- :community => community_filter,
344
- :server_transport => TrapTestTransport.new) do |manager|
345
- manager.on_trap_default { default_called = true }
346
- end
347
- m.join
348
- default_called
349
- end
350
-
351
- end
data/test/test_mib.rb DELETED
@@ -1,102 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'minitest/autorun'
4
- require 'snmp/mib'
5
-
6
- module SNMP
7
-
8
- class TestMib < Minitest::Test
9
-
10
- def setup
11
- @mib = MIB.new
12
- @mib.load_module("SNMPv2-SMI")
13
- @mib.load_module("SNMPv2-MIB")
14
- @mib.load_module("IF-MIB")
15
- end
16
-
17
- def test_name_to_oid
18
- oid = @mib.oid("1.2.3.4")
19
- assert_equal("1.2.3.4", oid.to_s)
20
-
21
- oid = @mib.oid("ifTable")
22
- assert_equal("1.3.6.1.2.1.2.2", oid.to_s)
23
-
24
- oid = @mib.oid("sysDescr.0")
25
- assert_equal("1.3.6.1.2.1.1.1.0", oid.to_s)
26
-
27
- oid = @mib.oid("ifTable.1.23")
28
- assert_equal("1.3.6.1.2.1.2.2.1.23", oid.to_s)
29
-
30
- oid = @mib.oid("IF-MIB::ifTable.1.23")
31
- assert_equal("1.3.6.1.2.1.2.2.1.23", oid.to_s)
32
-
33
- assert_raises(MIB::ModuleNotLoadedError) {
34
- @mib.oid("IFMIB::ifTable.1.23")
35
- }
36
-
37
- assert_raises(ArgumentError) {
38
- @mib.oid("IF-MIB::")
39
- }
40
-
41
- assert_raises(ArgumentError) {
42
- MIB.new.oid("sysDescr.0")
43
- }
44
-
45
- assert_equal("1.2.3.4", MIB.new.oid("1.2.3.4").to_s)
46
- end
47
-
48
- def test_varbind_list
49
- vb_list = @mib.varbind_list("1.2.3.4")
50
- assert_equal(1, vb_list.length)
51
- assert_equal("1.2.3.4", vb_list.first.name.to_s)
52
-
53
- vb_list = @mib.varbind_list(["1.2.3.4"])
54
- assert_equal(1, vb_list.length)
55
- assert_equal("1.2.3.4", vb_list.first.name.to_s)
56
-
57
- vb_list = @mib.varbind_list(["IF-MIB::ifTable.1.23", "1.2.3.4"])
58
- assert_equal(2, vb_list.length)
59
- assert_equal("1.3.6.1.2.1.2.2.1.23", vb_list.first.name.to_s)
60
- end
61
-
62
- def test_varbind_list_with_nil
63
- assert_raises(ArgumentError) { @mib.varbind_list(nil) }
64
- end
65
-
66
- def test_varbind
67
- vb = @mib.varbind("1.2.3.4", Null)
68
- assert_equal("1.2.3.4", vb.name.to_s)
69
- assert_equal(Null, vb.value)
70
-
71
- vb = @mib.varbind("IF-MIB::ifTable.3.45", Integer.new(2))
72
- assert_equal("1.3.6.1.2.1.2.2.3.45", vb.name.to_s)
73
- assert_equal(2, vb.value)
74
- end
75
-
76
- def test_list
77
- list = MIB.list_imported(/SNMPv2/)
78
- assert_equal(4, list.length)
79
- end
80
-
81
- def test_name
82
- cases = [["1.3.6.1.2.1.2.2.3.45", "IF-MIB::ifTable.3.45"],
83
- ["1.3.6.1.2.1.1.0", "SNMPv2-MIB::system.0"],
84
- ["1.2.3.4", "1.2.3.4"],
85
- ["1.3", "SNMPv2-SMI::org"],
86
- ["1.2", "1.2"],
87
- ["1", "1"],
88
- ["", ""]]
89
- cases.each do |oid, expected_name|
90
- name = @mib.name(oid)
91
- assert_equal(expected_name, name)
92
- end
93
- end
94
-
95
- # def test_import
96
- # module_name = MIB.import_module('SNMPv2-MIB')
97
- # assert_equal('SNMPv2-MIB', module_name)
98
- # end
99
-
100
- end
101
-
102
- end