pio 0.2.7 → 0.3.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +1 -0
- data/CONTRIBUTING.md +12 -0
- data/Gemfile +26 -23
- data/Guardfile +5 -0
- data/README.md +61 -19
- data/Rakefile +54 -56
- data/lib/pio/arp/frame.rb +8 -6
- data/lib/pio/arp/message.rb +9 -23
- data/lib/pio/arp/reply.rb +6 -15
- data/lib/pio/arp/request.rb +7 -16
- data/lib/pio/arp.rb +14 -17
- data/lib/pio/icmp/frame.rb +131 -0
- data/lib/pio/icmp/message.rb +100 -0
- data/lib/pio/icmp/reply.rb +17 -0
- data/lib/pio/icmp/request.rb +17 -0
- data/lib/pio/icmp.rb +27 -0
- data/lib/pio/ipv4_address.rb +22 -39
- data/lib/pio/lldp/chassis_id_tlv.rb +13 -16
- data/lib/pio/lldp/end_of_lldpdu_value.rb +4 -5
- data/lib/pio/lldp/frame.rb +21 -32
- data/lib/pio/lldp/management_address_value.rb +3 -4
- data/lib/pio/lldp/optional_tlv.rb +13 -22
- data/lib/pio/lldp/organizationally_specific_value.rb +3 -4
- data/lib/pio/lldp/port_description_value.rb +3 -4
- data/lib/pio/lldp/port_id_tlv.rb +6 -9
- data/lib/pio/lldp/system_capabilities_value.rb +3 -4
- data/lib/pio/lldp/system_description_value.rb +3 -4
- data/lib/pio/lldp/system_name_value.rb +3 -4
- data/lib/pio/lldp/ttl_tlv.rb +6 -9
- data/lib/pio/lldp.rb +20 -36
- data/lib/pio/mac.rb +30 -53
- data/lib/pio/message_util.rb +19 -0
- data/lib/pio/type/config.reek +4 -0
- data/lib/pio/type/ethernet_header.rb +7 -4
- data/lib/pio/type/ip_address.rb +5 -8
- data/lib/pio/type/ipv4_header.rb +37 -0
- data/lib/pio/type/mac_address.rb +7 -8
- data/lib/pio/util.rb +21 -0
- data/lib/pio/version.rb +2 -2
- data/lib/pio.rb +4 -4
- data/pio.gemspec +15 -17
- data/pio.org +499 -76
- data/pio.org_archive +86 -0
- data/rubocop-todo.yml +9 -0
- data/spec/pio/arp/reply_spec.rb +106 -118
- data/spec/pio/arp/request_spec.rb +90 -101
- data/spec/pio/arp_spec.rb +105 -113
- data/spec/pio/icmp/reply_spec.rb +132 -0
- data/spec/pio/icmp/request_spec.rb +131 -0
- data/spec/pio/icmp_spec.rb +159 -0
- data/spec/pio/ipv4_address_spec.rb +87 -97
- data/spec/pio/lldp_spec.rb +237 -186
- data/spec/pio/mac_spec.rb +82 -93
- data/spec/spec_helper.rb +10 -13
- metadata +20 -2
data/spec/pio/mac_spec.rb
CHANGED
@@ -1,121 +1,110 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
it { should_not eq 42 }
|
20
|
-
it { should_not eq "INVALID_MAC_ADDRESS" }
|
21
|
-
end
|
22
|
-
describe "#eql?" do
|
23
|
-
it { expect( subject ).to eql Mac.new( "11:22:33:44:55:66" ) }
|
24
|
-
it { expect( subject ).to eql "11:22:33:44:55:66" }
|
25
|
-
it { expect( subject ).not_to eql Mac.new( "66:55:44:33:22:11" ) }
|
26
|
-
it { expect( subject ).not_to eql "66:55:44:33:22:11" }
|
27
|
-
it { expect( subject ).to eql 0x112233445566 }
|
28
|
-
it { expect( subject ).not_to eql 42 }
|
29
|
-
it { expect( subject ).not_to eql "INVALID_MAC_ADDRESS" }
|
30
|
-
end
|
31
|
-
|
32
|
-
its( :hash ) { should eq Mac.new( "11:22:33:44:55:66" ).hash }
|
33
|
-
|
34
|
-
its( :to_i ) { should eq 0x112233445566 }
|
35
|
-
its( :to_a ) { should eq [ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 ] }
|
36
|
-
its( :to_s ) { should eq "11:22:33:44:55:66" }
|
37
|
-
describe "#to_str" do
|
38
|
-
context %{when "MAC = " + subject} do
|
39
|
-
it { expect( "MAC = " + subject ).to eq "MAC = 11:22:33:44:55:66" }
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
its( :multicast? ){ should be_true }
|
44
|
-
its( :broadcast? ){ should be_false }
|
45
|
-
its( :reserved? ){ should be_false }
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'pio/mac'
|
3
|
+
|
4
|
+
describe Pio::Mac do
|
5
|
+
context '.new' do
|
6
|
+
subject { Pio::Mac.new(value) }
|
7
|
+
|
8
|
+
context 'with "11:22:33:44:55:66"' do
|
9
|
+
let(:value) { '11:22:33:44:55:66' }
|
10
|
+
|
11
|
+
describe '#==' do
|
12
|
+
it { should eq Pio::Mac.new('11:22:33:44:55:66') }
|
13
|
+
it { should eq '11:22:33:44:55:66' }
|
14
|
+
it { should_not eq Pio::Mac.new('66:55:44:33:22:11') }
|
15
|
+
it { should_not eq '66:55:44:33:22:11' }
|
16
|
+
it { should eq 0x112233445566 }
|
17
|
+
it { should_not eq 42 }
|
18
|
+
it { should_not eq 'INVALID_MAC_ADDRESS' }
|
46
19
|
end
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
let( :value ) { reserved_address }
|
56
|
-
its( :reserved? ) { should be_true }
|
57
|
-
end
|
58
|
-
end
|
20
|
+
describe '#eql?' do
|
21
|
+
it { expect(subject).to eql Pio::Mac.new('11:22:33:44:55:66') }
|
22
|
+
it { expect(subject).to eql '11:22:33:44:55:66' }
|
23
|
+
it { expect(subject).not_to eql Pio::Mac.new('66:55:44:33:22:11') }
|
24
|
+
it { expect(subject).not_to eql '66:55:44:33:22:11' }
|
25
|
+
it { expect(subject).to eql 0x112233445566 }
|
26
|
+
it { expect(subject).not_to eql 42 }
|
27
|
+
it { expect(subject).not_to eql 'INVALID_MAC_ADDRESS' }
|
59
28
|
end
|
60
29
|
|
30
|
+
its(:hash) { should eq Pio::Mac.new('11:22:33:44:55:66').hash }
|
61
31
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
its( :multicast? ){ should be_false }
|
70
|
-
its( :broadcast? ){ should be_false }
|
71
|
-
its( :reserved? ){ should be_false }
|
32
|
+
its(:to_i) { should eq 0x112233445566 }
|
33
|
+
its(:to_a) { should eq [0x11, 0x22, 0x33, 0x44, 0x55, 0x66] }
|
34
|
+
its(:to_s) { should eq '11:22:33:44:55:66' }
|
35
|
+
describe '#to_str' do
|
36
|
+
context 'when "MAC = " + subject' do
|
37
|
+
it { expect('MAC = ' + subject).to eq 'MAC = 11:22:33:44:55:66' }
|
38
|
+
end
|
72
39
|
end
|
73
40
|
|
41
|
+
its(:multicast?) { should be_true }
|
42
|
+
its(:broadcast?) { should be_false }
|
43
|
+
its(:reserved?) { should be_false }
|
44
|
+
end
|
74
45
|
|
75
|
-
|
76
|
-
|
46
|
+
context 'with reserved address' do
|
47
|
+
(0x0..0xf).each do | each |
|
48
|
+
octet = sprintf('%02x', each)
|
49
|
+
reserved_address = "01:80:c2:00:00:#{ octet }"
|
77
50
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
its( :multicast? ){ should be_true }
|
83
|
-
its( :broadcast? ){ should be_true }
|
84
|
-
its( :reserved? ){ should be_false }
|
51
|
+
context "when #{ reserved_address }" do
|
52
|
+
let(:value) { reserved_address }
|
53
|
+
its(:reserved?) { should be_true }
|
54
|
+
end
|
85
55
|
end
|
56
|
+
end
|
86
57
|
|
58
|
+
context 'with 0' do
|
59
|
+
let(:value) { 0 }
|
87
60
|
|
88
|
-
|
89
|
-
|
61
|
+
it { should eq Pio::Mac.new(0) }
|
62
|
+
its(:to_i) { should eq 0 }
|
63
|
+
its(:to_a) { should eq [0x00, 0x00, 0x00, 0x00, 0x00, 0x00] }
|
64
|
+
its(:to_s) { should eq '00:00:00:00:00:00' }
|
65
|
+
its(:multicast?) { should be_false }
|
66
|
+
its(:broadcast?) { should be_false }
|
67
|
+
its(:reserved?) { should be_false }
|
68
|
+
end
|
90
69
|
|
91
|
-
|
92
|
-
|
70
|
+
context 'with 0xffffffffffff' do
|
71
|
+
let(:value) { 0xffffffffffff }
|
93
72
|
|
73
|
+
it { should eq Pio::Mac.new(0xffffffffffff) }
|
74
|
+
its(:to_i) { should eq 0xffffffffffff }
|
75
|
+
its(:to_a) { should eq [0xff, 0xff, 0xff, 0xff, 0xff, 0xff] }
|
76
|
+
its(:to_s) { should eq 'ff:ff:ff:ff:ff:ff' }
|
77
|
+
its(:multicast?) { should be_true }
|
78
|
+
its(:broadcast?) { should be_true }
|
79
|
+
its(:reserved?) { should be_false }
|
80
|
+
end
|
94
81
|
|
95
|
-
|
96
|
-
|
82
|
+
context 'with "INVALID MAC ADDRESS"' do
|
83
|
+
let(:value) { 'INVALID MAC ADDRESS' }
|
97
84
|
|
98
|
-
|
99
|
-
|
85
|
+
it { expect { subject }.to raise_error(Pio::Mac::InvalidValueError) }
|
86
|
+
end
|
100
87
|
|
88
|
+
context 'with -1' do
|
89
|
+
let(:value) { -1 }
|
101
90
|
|
102
|
-
|
103
|
-
|
91
|
+
it { expect { subject }.to raise_error(Pio::Mac::InvalidValueError) }
|
92
|
+
end
|
104
93
|
|
105
|
-
|
106
|
-
|
94
|
+
context 'with 0x1000000000000' do
|
95
|
+
let(:value) { 0x1000000000000 }
|
107
96
|
|
97
|
+
it { expect { subject }.to raise_error(Pio::Mac::InvalidValueError) }
|
98
|
+
end
|
108
99
|
|
109
|
-
|
110
|
-
|
100
|
+
context 'with [ 1, 2, 3 ]' do
|
101
|
+
let(:value) { [1, 2, 3] }
|
111
102
|
|
112
|
-
|
113
|
-
end
|
103
|
+
it { expect { subject }.to raise_error(Pio::Mac::InvalidValueError) }
|
114
104
|
end
|
115
105
|
end
|
116
106
|
end
|
117
107
|
|
118
|
-
|
119
108
|
### Local variables:
|
120
109
|
### mode: Ruby
|
121
110
|
### coding: utf-8-unix
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
2
3
|
|
3
|
-
require
|
4
|
+
require 'rubygems'
|
4
5
|
|
5
|
-
require
|
6
|
+
require 'simplecov'
|
6
7
|
SimpleCov.start
|
7
8
|
|
8
|
-
require
|
9
|
-
require
|
10
|
-
|
9
|
+
require 'rspec'
|
10
|
+
require 'rspec/autorun'
|
11
11
|
|
12
12
|
RSpec.configure do | config |
|
13
13
|
config.expect_with :rspec do | c |
|
@@ -15,20 +15,17 @@ RSpec.configure do | config |
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
18
|
# Requires supporting files with custom matchers and macros, etc,
|
20
19
|
# in ./support/ and its subdirectories.
|
21
|
-
Dir[ "#{ File.dirname(
|
22
|
-
require File.expand_path(
|
20
|
+
Dir[ "#{ File.dirname(__FILE__) }/support/**/*.rb"].each do | each |
|
21
|
+
require File.expand_path(each)
|
23
22
|
end
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
require "coveralls"
|
24
|
+
if ENV['TRAVIS']
|
25
|
+
require 'coveralls'
|
28
26
|
Coveralls.wear!
|
29
27
|
end
|
30
28
|
|
31
|
-
|
32
29
|
### Local variables:
|
33
30
|
### mode: Ruby
|
34
31
|
### coding: utf-8-unix
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yasuhito Takamiya
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bindata
|
@@ -34,7 +34,9 @@ extra_rdoc_files:
|
|
34
34
|
files:
|
35
35
|
- .gitignore
|
36
36
|
- .rspec
|
37
|
+
- .rubocop.yml
|
37
38
|
- .travis.yml
|
39
|
+
- CONTRIBUTING.md
|
38
40
|
- Gemfile
|
39
41
|
- Guardfile
|
40
42
|
- LICENSE
|
@@ -46,6 +48,11 @@ files:
|
|
46
48
|
- lib/pio/arp/message.rb
|
47
49
|
- lib/pio/arp/reply.rb
|
48
50
|
- lib/pio/arp/request.rb
|
51
|
+
- lib/pio/icmp.rb
|
52
|
+
- lib/pio/icmp/frame.rb
|
53
|
+
- lib/pio/icmp/message.rb
|
54
|
+
- lib/pio/icmp/reply.rb
|
55
|
+
- lib/pio/icmp/request.rb
|
49
56
|
- lib/pio/ipv4_address.rb
|
50
57
|
- lib/pio/lldp.rb
|
51
58
|
- lib/pio/lldp/chassis_id_tlv.rb
|
@@ -61,16 +68,24 @@ files:
|
|
61
68
|
- lib/pio/lldp/system_name_value.rb
|
62
69
|
- lib/pio/lldp/ttl_tlv.rb
|
63
70
|
- lib/pio/mac.rb
|
71
|
+
- lib/pio/message_util.rb
|
72
|
+
- lib/pio/type/config.reek
|
64
73
|
- lib/pio/type/ethernet_header.rb
|
65
74
|
- lib/pio/type/ip_address.rb
|
75
|
+
- lib/pio/type/ipv4_header.rb
|
66
76
|
- lib/pio/type/mac_address.rb
|
77
|
+
- lib/pio/util.rb
|
67
78
|
- lib/pio/version.rb
|
68
79
|
- pio.gemspec
|
69
80
|
- pio.org
|
70
81
|
- pio.org_archive
|
82
|
+
- rubocop-todo.yml
|
71
83
|
- spec/pio/arp/reply_spec.rb
|
72
84
|
- spec/pio/arp/request_spec.rb
|
73
85
|
- spec/pio/arp_spec.rb
|
86
|
+
- spec/pio/icmp/reply_spec.rb
|
87
|
+
- spec/pio/icmp/request_spec.rb
|
88
|
+
- spec/pio/icmp_spec.rb
|
74
89
|
- spec/pio/ipv4_address_spec.rb
|
75
90
|
- spec/pio/lldp_spec.rb
|
76
91
|
- spec/pio/mac_spec.rb
|
@@ -103,6 +118,9 @@ test_files:
|
|
103
118
|
- spec/pio/arp/reply_spec.rb
|
104
119
|
- spec/pio/arp/request_spec.rb
|
105
120
|
- spec/pio/arp_spec.rb
|
121
|
+
- spec/pio/icmp/reply_spec.rb
|
122
|
+
- spec/pio/icmp/request_spec.rb
|
123
|
+
- spec/pio/icmp_spec.rb
|
106
124
|
- spec/pio/ipv4_address_spec.rb
|
107
125
|
- spec/pio/lldp_spec.rb
|
108
126
|
- spec/pio/mac_spec.rb
|