net-snmp2 0.3.0 → 0.3.1

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +18 -1
  3. data/examples/agent.rb +1 -0
  4. data/examples/inform.rb +23 -0
  5. data/examples/trap_handler.rb +15 -0
  6. data/examples/{v1_trap_session.rb → v1_trap.rb} +2 -7
  7. data/examples/{v2_trap_session.rb → v2_trap.rb} +2 -7
  8. data/history.md +17 -0
  9. data/lib/net-snmp2.rb +1 -1
  10. data/lib/net/snmp/agent/agent.rb +44 -13
  11. data/lib/net/snmp/agent/provider.rb +56 -1
  12. data/lib/net/snmp/agent/provider_dsl.rb +11 -0
  13. data/lib/net/snmp/debug.rb +10 -19
  14. data/lib/net/snmp/error.rb +13 -6
  15. data/lib/net/snmp/listener.rb +2 -4
  16. data/lib/net/snmp/message.rb +52 -25
  17. data/lib/net/snmp/mib/mib.rb +2 -1
  18. data/lib/net/snmp/mib/node.rb +1 -1
  19. data/lib/net/snmp/oid.rb +5 -2
  20. data/lib/net/snmp/pdu.rb +15 -10
  21. data/lib/net/snmp/repl/manager_repl.rb +20 -7
  22. data/lib/net/snmp/session.rb +78 -45
  23. data/lib/net/snmp/trap_handler/trap_handler.rb +13 -9
  24. data/lib/net/snmp/trap_handler/v2_inform_dsl.rb +16 -0
  25. data/lib/net/snmp/trap_session.rb +64 -42
  26. data/lib/net/snmp/version.rb +1 -1
  27. data/lib/net/snmp/wrapper.rb +2 -8
  28. data/net-snmp2.gemspec +1 -1
  29. data/spec/README.md +36 -40
  30. data/spec/async_spec.rb +92 -87
  31. data/spec/em_spec.rb +3 -3
  32. data/spec/error_spec.rb +2 -2
  33. data/spec/fiber_spec.rb +8 -7
  34. data/spec/mib_spec.rb +8 -8
  35. data/spec/net-snmp_spec.rb +3 -3
  36. data/spec/oid_spec.rb +5 -5
  37. data/spec/spec_helper.rb +5 -0
  38. data/spec/sync_spec.rb +50 -56
  39. data/spec/test_agent.rb +150 -0
  40. data/spec/test_mib.rb +6 -0
  41. data/spec/thread_spec.rb +4 -4
  42. data/spec/trap_spec.rb +3 -12
  43. data/spec/utility_spec.rb +4 -4
  44. data/spec/wrapper_spec.rb +6 -6
  45. metadata +11 -6
  46. data/lib/net/snmp/agent/request_dispatcher.rb +0 -38
@@ -0,0 +1,6 @@
1
+ $test_mib = {
2
+ 'sysDescr.0' => 'net-snmp2 unit testing agent',
3
+ 'sysName.0' => 'net-snmp2-agent',
4
+ 'sysContact.0' => 'jared.breeden@gmail.com',
5
+ 'sysObjectID.0' => Net::SNMP::OID.new('1.3.6.1.4.1.8072.3.2.10')
6
+ }
@@ -4,15 +4,15 @@ describe "in a thread" do
4
4
  it "should get an oid asynchronously in a thread" do
5
5
  did_callback = false
6
6
  dispatch_thread = Net::SNMP::Dispatcher.thread_loop
7
- Net::SNMP::Session.open(:peername => 'test.net-snmp.org', :community => 'demopublic') do |s|
7
+ Net::SNMP::Session.open(:peername => 'localhost', :community => 'public') do |s|
8
8
  s.get(["sysDescr.0", "sysContact.0"]) do |op, result|
9
9
  did_callback = true
10
- result.varbinds[0].value.should eql("test.net-snmp.org")
11
- result.varbinds[1].value.should match(/Coders/)
10
+ expect(result.varbinds[0].value).to eq $test_mib['sysDescr.0']
11
+ expect(result.varbinds[1].value).to eq $test_mib['sysContact.0']
12
12
  end
13
13
  end
14
14
  sleep 3
15
- did_callback.should be(true)
15
+ expect(did_callback).to be(true)
16
16
 
17
17
  Thread.kill(dispatch_thread)
18
18
  end
@@ -15,14 +15,14 @@ describe Net::SNMP::TrapSession do
15
15
  uptime: 1000,
16
16
  agent_addr: '127.0.0.1'
17
17
  )
18
- res.should eq(:success)
18
+ expect(res).to eq(:success)
19
19
  end
20
20
  end
21
21
 
22
22
  it "should send v2 trap" do
23
23
  Net::SNMP::TrapSession.open(:peername => 'localhost:163', :version => '2c') do |sess|
24
24
  res = sess.trap_v2(:oid => 'sysContact.0', :uptime => 1000)
25
- res.should eq(:success)
25
+ expect(res).to eq(:success)
26
26
  end
27
27
  end
28
28
 
@@ -30,16 +30,7 @@ describe Net::SNMP::TrapSession do
30
30
  did_callback = false
31
31
  Net::SNMP::TrapSession.open(:peername => 'localhost:163', :version => '2c') do |sess|
32
32
  resp = sess.inform(:oid => 'coldStart.0')
33
- has_cold_start_oid = false
34
- # Got some weird segfaults when using rspec's ".should include {...}"
35
- # matcher, so I did this manually.
36
- resp.varbinds.each do |vb|
37
- if (vb.oid.to_s == Net::SNMP::MIB.translate('snmpTrapOID.0')) &&
38
- (vb.value.to_s == Net::SNMP::MIB.translate('coldStart.0'))
39
- has_cold_start_oid = true
40
- end
41
- end
42
- has_cold_start_oid.should eq(true)
33
+ expect(resp).to eq(:success)
43
34
  end
44
35
  end
45
36
  end
@@ -2,9 +2,9 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe Net::SNMP::Utility do
4
4
  it "should compare oids" do
5
- Net::SNMP::Utility.oid_lex_cmp('1.3.5', '1.3.7').should eql(-1)
6
- Net::SNMP::Utility.oid_lex_cmp('1.3.7', '1.3.5').should eql(1)
7
- Net::SNMP::Utility.oid_lex_cmp('1.3.7', '1.3.7.1').should eql(-1)
8
- Net::SNMP::Utility.oid_lex_cmp('1.3.5', '1.3.5').should eql(0)
5
+ expect(Net::SNMP::Utility.oid_lex_cmp('1.3.5', '1.3.7')).to eql(-1)
6
+ expect(Net::SNMP::Utility.oid_lex_cmp('1.3.7', '1.3.5')).to eql(1)
7
+ expect(Net::SNMP::Utility.oid_lex_cmp('1.3.7', '1.3.7.1')).to eql(-1)
8
+ expect(Net::SNMP::Utility.oid_lex_cmp('1.3.5', '1.3.5')).to eql(0)
9
9
  end
10
10
  end
@@ -2,8 +2,8 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "Net::SNMP::Wrapper" do
4
4
  def init_session
5
- community = "demopublic"
6
- peername = "test.net-snmp.org"
5
+ community = "public"
6
+ peername = "localhost"
7
7
 
8
8
  @session = Net::SNMP::Wrapper::SnmpSession.new(nil)
9
9
  Net::SNMP::Wrapper.snmp_sess_init(@session.pointer)
@@ -33,11 +33,11 @@ describe "Net::SNMP::Wrapper" do
33
33
 
34
34
  response_ptr = FFI::MemoryPointer.new(:pointer)
35
35
  status = Net::SNMP::Wrapper.snmp_sess_synch_response(@handle, @pdu.pointer, response_ptr)
36
- status.should eql(0)
36
+ expect(status).to eql(0)
37
37
 
38
38
  response = Net::SNMP::Wrapper::SnmpPdu.new(response_ptr.read_pointer)
39
39
  value = response.variables.val[:string].read_string(response.variables.val_len)
40
- value.should eql('test.net-snmp.org')
40
+ expect(value).to eq $test_mib['sysDescr.0']
41
41
  end
42
42
 
43
43
  it "wrapper should snmpget asynchronously" do
@@ -63,7 +63,7 @@ describe "Net::SNMP::Wrapper" do
63
63
  Net::SNMP::Wrapper.snmp_select_info(fds, fdset, tval.pointer, block )
64
64
  FFI::LibC.select(fds.read_int, fdset, nil, nil, nil)
65
65
  Net::SNMP::Wrapper.snmp_read(fdset)
66
- did_callback.should be(1)
67
- result.should eql('test.net-snmp.org')
66
+ expect(did_callback).to be(1)
67
+ expect(result).to eq $test_mib['sysDescr.0']
68
68
  end
69
69
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-snmp2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ron McClain
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-10 00:00:00.000000000 Z
12
+ date: 2014-11-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nice-ffi
@@ -88,16 +88,17 @@ files:
88
88
  - bin/mib2rb
89
89
  - bin/net-snmp2
90
90
  - examples/agent.rb
91
+ - examples/inform.rb
91
92
  - examples/manager.rb
92
93
  - examples/trap_handler.rb
93
- - examples/v1_trap_session.rb
94
- - examples/v2_trap_session.rb
94
+ - examples/v1_trap.rb
95
+ - examples/v2_trap.rb
96
+ - history.md
95
97
  - lib/net-snmp2.rb
96
98
  - lib/net/snmp.rb
97
99
  - lib/net/snmp/agent/agent.rb
98
100
  - lib/net/snmp/agent/provider.rb
99
101
  - lib/net/snmp/agent/provider_dsl.rb
100
- - lib/net/snmp/agent/request_dispatcher.rb
101
102
  - lib/net/snmp/constants.rb
102
103
  - lib/net/snmp/debug.rb
103
104
  - lib/net/snmp/dispatcher.rb
@@ -114,6 +115,7 @@ files:
114
115
  - lib/net/snmp/session.rb
115
116
  - lib/net/snmp/trap_handler/trap_handler.rb
116
117
  - lib/net/snmp/trap_handler/v1_trap_dsl.rb
118
+ - lib/net/snmp/trap_handler/v2_inform_dsl.rb
117
119
  - lib/net/snmp/trap_handler/v2_trap_dsl.rb
118
120
  - lib/net/snmp/trap_session.rb
119
121
  - lib/net/snmp/utility.rb
@@ -131,6 +133,8 @@ files:
131
133
  - spec/oid_spec.rb
132
134
  - spec/spec_helper.rb
133
135
  - spec/sync_spec.rb
136
+ - spec/test_agent.rb
137
+ - spec/test_mib.rb
134
138
  - spec/thread_spec.rb
135
139
  - spec/trap_spec.rb
136
140
  - spec/utility_spec.rb
@@ -141,9 +145,10 @@ metadata: {}
141
145
  post_install_message:
142
146
  rdoc_options:
143
147
  - --main=README.md
148
+ - --markup=markdown
144
149
  - --line-numbers
145
150
  - --inline-source
146
- - --title=net-snmp2-0.3.0 Documentation
151
+ - --title=net-snmp2-0.3.1 Documentation
147
152
  require_paths:
148
153
  - lib
149
154
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -1,38 +0,0 @@
1
- module Net::SNMP
2
-
3
- # RequestDispatcher module handles calling all required providers for a request
4
- # in the context of a ProviderDsl object (which itself provides the agent DSL)
5
-
6
- module RequestDispatcher
7
-
8
- def self.dispatch(message, providers)
9
- response_pdu = Message::response_pdu_for(message)
10
- context = ProviderDsl.new
11
- context.message = message
12
- context.response_pdu = response_pdu
13
- message.pdu.varbinds.each_with_index do |vb, index|
14
- context.varbind = vb
15
- provider = providers.find { |p| p.oid == :all || vb.oid.to_s.start_with?(p.oid.to_s) }
16
- if provider
17
- if message.pdu.command == Constants::SNMP_MSG_GETBULK && index < message.pdu.non_repeaters
18
- handler = provider.handler_for(Constants::SNMP_MSG_GETNEXT)
19
- else
20
- handler = provider.handler_for(message)
21
- end
22
- if handler
23
- context.instance_exec(&handler)
24
- else
25
- Debug.warn "No handler for command: #{message.pdu.command} @ #{vb.oid}"
26
- context.no_such_object
27
- end
28
- else
29
- Debug.warn "No provider for oid: #{vb.oid}"
30
- context.no_such_object
31
- end
32
- end
33
-
34
- response_pdu
35
- end
36
-
37
- end
38
- end