pio 0.24.2 → 0.25.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/CHANGELOG.md +5 -0
- data/README.md +2 -0
- data/bin/byebug +16 -0
- data/features/arp.feature +2 -2
- data/features/dhcp.feature +4 -4
- data/features/icmp.feature +2 -2
- data/features/lldp.feature +1 -1
- data/features/open_flow10/barrier_reply.feature +4 -4
- data/features/open_flow10/barrier_request.feature +4 -4
- data/features/open_flow10/echo_reply.feature +6 -6
- data/features/open_flow10/echo_request.feature +6 -6
- data/features/open_flow10/exact_match.feature +2 -2
- data/features/open_flow10/features_reply.feature +2 -2
- data/features/open_flow10/features_request.feature +4 -4
- data/features/open_flow10/flow_mod.feature +6 -6
- data/features/open_flow10/flow_stats_reply.feature +105 -0
- data/features/open_flow10/flow_stats_request.feature +90 -0
- data/features/open_flow10/hello.feature +4 -4
- data/features/open_flow10/packet_in.feature +2 -2
- data/features/open_flow10/packet_out.feature +1 -1
- data/features/open_flow10/port_status.feature +1 -1
- data/features/open_flow13/apply_actions.feature +3 -3
- data/features/open_flow13/echo_reply.feature +7 -7
- data/features/open_flow13/echo_request.feature +7 -7
- data/features/open_flow13/features_reply.feature +2 -2
- data/features/open_flow13/features_request.feature +4 -4
- data/features/open_flow13/flow_mod.feature +5 -5
- data/features/open_flow13/goto_table.feature +2 -2
- data/features/open_flow13/hello.feature +5 -5
- data/features/open_flow13/match.feature +81 -81
- data/features/open_flow13/meter.feature +2 -2
- data/features/open_flow13/packet_in.feature +3 -3
- data/features/open_flow13/packet_out.feature +3 -3
- data/features/open_flow13/send_out_port.feature +2 -2
- data/features/open_flow13/write_metadata.feature +2 -2
- data/features/open_flow_read.feature +12 -10
- data/features/step_definitions/packet_data_steps.rb +3 -3
- data/lib/pio/open_flow.rb +4 -1
- data/lib/pio/open_flow/message.rb +3 -0
- data/lib/pio/open_flow10.rb +2 -0
- data/lib/pio/open_flow10/flow_mod.rb +1 -16
- data/lib/pio/open_flow10/flow_stats_reply.rb +59 -0
- data/lib/pio/open_flow10/flow_stats_request.rb +64 -0
- data/lib/pio/open_flow10/match.rb +17 -0
- data/lib/pio/open_flow10/stats_type.rb +27 -0
- data/lib/pio/version.rb +1 -1
- data/pio.gemspec +2 -2
- data/spec/pio/open_flow10/flow_stats_reply_spec.rb +39 -0
- data/spec/pio/open_flow10/flow_stats_request_spec.rb +38 -0
- metadata +185 -173
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41786852c14579687e22106e6e20821d9fe84e03
|
4
|
+
data.tar.gz: eb8c1aff56d304773f7043648002cb52367fe651
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd60d4cf128ac6cfd18dd02d8ca8a4370e14be9025efcd103fd1c27d8206ed142f58d7171372594377ab6e37f9edda5f4c638709cf81b92b4c6c034c28212ba0
|
7
|
+
data.tar.gz: 349b05ac02ec3a0b366a2090724fdc6d307c2c5b2036aa8fff81805a9e592a17c46406d6c6fdfe073c72e14da0eb2db0f670e77d0b8bb20dd7a9a22fabb8ae6f
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,11 @@
|
|
3
3
|
## develop (unreleased)
|
4
4
|
|
5
5
|
|
6
|
+
## 0.25.0 (8/6/2015)
|
7
|
+
### New features
|
8
|
+
* [#211](https://github.com/trema/pio/pull/211): Add new classes `Pio::FlowStats::Request` and `Pio::FlowStats::Reply`.
|
9
|
+
|
10
|
+
|
6
11
|
## 0.24.2 (8/4/2015)
|
7
12
|
### Bugs fixed
|
8
13
|
* [#209](https://github.com/trema/pio/issues/209): `Pio::OpenFlow.read` cannot parse Barrier messages.
|
data/README.md
CHANGED
@@ -31,6 +31,8 @@ supports the following packet formats:
|
|
31
31
|
- [Exact Match](https://relishapp.com/trema/pio/docs/open-flow10/pio-exactmatch)
|
32
32
|
- [Barrier Request](https://relishapp.com/trema/pio/docs/open-flow10/pio-barrier-request)
|
33
33
|
- [Barrier Reply](https://relishapp.com/trema/pio/docs/open-flow10/pio-barrier-reply)
|
34
|
+
- [Flow Stats Request](https://relishapp.com/trema/pio/docs/open-flow10/pio-flowstats-request)
|
35
|
+
- [Flow Stats Reply](https://relishapp.com/trema/pio/docs/open-flow10/pio-flowstats-reply)
|
34
36
|
- OpenFlow 1.3
|
35
37
|
- [Hello](https://relishapp.com/trema/pio/docs/open-flow13/pio-hello)
|
36
38
|
- [Echo Request](https://relishapp.com/trema/pio/docs/open-flow13/pio-echo-request)
|
data/bin/byebug
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'byebug' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('byebug', 'byebug')
|
data/features/arp.feature
CHANGED
@@ -9,7 +9,7 @@ Feature: Pio::Arp
|
|
9
9
|
)
|
10
10
|
"""
|
11
11
|
Then it should finish successfully
|
12
|
-
And the packet
|
12
|
+
And the packet has the following fields and values:
|
13
13
|
| field | value |
|
14
14
|
| class | Pio::Arp::Request |
|
15
15
|
| destination_mac | ff:ff:ff:ff:ff:ff |
|
@@ -36,7 +36,7 @@ Feature: Pio::Arp
|
|
36
36
|
)
|
37
37
|
"""
|
38
38
|
Then it should finish successfully
|
39
|
-
And the packet
|
39
|
+
And the packet has the following fields and values:
|
40
40
|
| field | value |
|
41
41
|
| class | Pio::Arp::Reply |
|
42
42
|
| destination_mac | 00:26:82:eb:ea:d1 |
|
data/features/dhcp.feature
CHANGED
@@ -15,7 +15,7 @@ Feature: Pio::Dhcp
|
|
15
15
|
)
|
16
16
|
"""
|
17
17
|
Then it should finish successfully
|
18
|
-
And the packet
|
18
|
+
And the packet has the following fields and values:
|
19
19
|
| field | value |
|
20
20
|
| class | Pio::Dhcp::Ack |
|
21
21
|
| destination_mac | 11:22:33:44:55:66 |
|
@@ -64,7 +64,7 @@ Feature: Pio::Dhcp
|
|
64
64
|
)
|
65
65
|
"""
|
66
66
|
Then it should finish successfully
|
67
|
-
And the packet
|
67
|
+
And the packet has the following fields and values:
|
68
68
|
| field | value |
|
69
69
|
| class | Pio::Dhcp::Discover |
|
70
70
|
| destination_mac | ff:ff:ff:ff:ff:ff |
|
@@ -112,7 +112,7 @@ Feature: Pio::Dhcp
|
|
112
112
|
)
|
113
113
|
"""
|
114
114
|
Then it should finish successfully
|
115
|
-
And the packet
|
115
|
+
And the packet has the following fields and values:
|
116
116
|
| field | value |
|
117
117
|
| class | Pio::Dhcp::Request |
|
118
118
|
| destination_mac | ff:ff:ff:ff:ff:ff |
|
@@ -166,7 +166,7 @@ Feature: Pio::Dhcp
|
|
166
166
|
)
|
167
167
|
"""
|
168
168
|
Then it should finish successfully
|
169
|
-
And the packet
|
169
|
+
And the packet has the following fields and values:
|
170
170
|
| field | value |
|
171
171
|
| class | Pio::Dhcp::Offer |
|
172
172
|
| destination_mac | 11:22:33:44:55:66 |
|
data/features/icmp.feature
CHANGED
@@ -10,7 +10,7 @@ Feature: Pio::Icmp
|
|
10
10
|
)
|
11
11
|
"""
|
12
12
|
Then it should finish successfully
|
13
|
-
And the packet
|
13
|
+
And the packet has the following fields and values:
|
14
14
|
| field | value |
|
15
15
|
| class | Pio::Icmp::Request |
|
16
16
|
| destination_mac | 00:26:82:eb:ea:d1 |
|
@@ -49,7 +49,7 @@ Feature: Pio::Icmp
|
|
49
49
|
)
|
50
50
|
"""
|
51
51
|
Then it should finish successfully
|
52
|
-
And the packet
|
52
|
+
And the packet has the following fields and values:
|
53
53
|
| field | value |
|
54
54
|
| class | Pio::Icmp::Reply |
|
55
55
|
| destination_mac | 00:16:9d:1d:9c:c4 |
|
data/features/lldp.feature
CHANGED
@@ -5,7 +5,7 @@ Feature: Pio::Lldp
|
|
5
5
|
Pio::Lldp.new(dpid: 0x123, port_number: 12, source_mac: '11:22:33:44:55:66')
|
6
6
|
"""
|
7
7
|
Then it should finish successfully
|
8
|
-
And the message
|
8
|
+
And the message has the following fields and values:
|
9
9
|
| field | value |
|
10
10
|
| class | Pio::Lldp |
|
11
11
|
| destination_mac | 01:80:c2:00:00:0e |
|
@@ -6,7 +6,7 @@ Feature: Pio::Barrier::Reply
|
|
6
6
|
Pio::Barrier::Reply.new
|
7
7
|
"""
|
8
8
|
Then it should finish successfully
|
9
|
-
And the message
|
9
|
+
And the message has the following fields and values:
|
10
10
|
| field | value |
|
11
11
|
| ofp_version | 1 |
|
12
12
|
| message_type | 19 |
|
@@ -21,7 +21,7 @@ Feature: Pio::Barrier::Reply
|
|
21
21
|
Pio::Barrier::Reply.new(transaction_id: 123)
|
22
22
|
"""
|
23
23
|
Then it should finish successfully
|
24
|
-
And the message
|
24
|
+
And the message has the following fields and values:
|
25
25
|
| field | value |
|
26
26
|
| ofp_version | 1 |
|
27
27
|
| message_type | 19 |
|
@@ -36,7 +36,7 @@ Feature: Pio::Barrier::Reply
|
|
36
36
|
Pio::Barrier::Reply.new(xid: 123)
|
37
37
|
"""
|
38
38
|
Then it should finish successfully
|
39
|
-
And the message
|
39
|
+
And the message has the following fields and values:
|
40
40
|
| field | value |
|
41
41
|
| ofp_version | 1 |
|
42
42
|
| message_type | 19 |
|
@@ -48,7 +48,7 @@ Feature: Pio::Barrier::Reply
|
|
48
48
|
Scenario: read
|
49
49
|
When I try to parse a file named "open_flow10/barrier_reply.raw" with "Barrier::Reply" class
|
50
50
|
Then it should finish successfully
|
51
|
-
And the message
|
51
|
+
And the message has the following fields and values:
|
52
52
|
| field | value |
|
53
53
|
| ofp_version | 1 |
|
54
54
|
| message_type | 19 |
|
@@ -6,7 +6,7 @@ Feature: Pio::Barrier::Request
|
|
6
6
|
Pio::Barrier::Request.new
|
7
7
|
"""
|
8
8
|
Then it should finish successfully
|
9
|
-
And the message
|
9
|
+
And the message has the following fields and values:
|
10
10
|
| field | value |
|
11
11
|
| ofp_version | 1 |
|
12
12
|
| message_type | 18 |
|
@@ -21,7 +21,7 @@ Feature: Pio::Barrier::Request
|
|
21
21
|
Pio::Barrier::Request.new(transaction_id: 123)
|
22
22
|
"""
|
23
23
|
Then it should finish successfully
|
24
|
-
And the message
|
24
|
+
And the message has the following fields and values:
|
25
25
|
| field | value |
|
26
26
|
| ofp_version | 1 |
|
27
27
|
| message_type | 18 |
|
@@ -36,7 +36,7 @@ Feature: Pio::Barrier::Request
|
|
36
36
|
Pio::Barrier::Request.new(xid: 123)
|
37
37
|
"""
|
38
38
|
Then it should finish successfully
|
39
|
-
And the message
|
39
|
+
And the message has the following fields and values:
|
40
40
|
| field | value |
|
41
41
|
| ofp_version | 1 |
|
42
42
|
| message_type | 18 |
|
@@ -48,7 +48,7 @@ Feature: Pio::Barrier::Request
|
|
48
48
|
Scenario: read
|
49
49
|
When I try to parse a file named "open_flow10/barrier_request.raw" with "Barrier::Request" class
|
50
50
|
Then it should finish successfully
|
51
|
-
And the message
|
51
|
+
And the message has the following fields and values:
|
52
52
|
| field | value |
|
53
53
|
| ofp_version | 1 |
|
54
54
|
| message_type | 18 |
|
@@ -6,7 +6,7 @@ Feature: Pio::Echo::Reply
|
|
6
6
|
Pio::Echo::Reply.new
|
7
7
|
"""
|
8
8
|
Then it should finish successfully
|
9
|
-
And the message
|
9
|
+
And the message has the following fields and values:
|
10
10
|
| field | value |
|
11
11
|
| ofp_version | 1 |
|
12
12
|
| message_type | 3 |
|
@@ -22,7 +22,7 @@ Feature: Pio::Echo::Reply
|
|
22
22
|
Pio::Echo::Reply.new(transaction_id: 123)
|
23
23
|
"""
|
24
24
|
Then it should finish successfully
|
25
|
-
And the message
|
25
|
+
And the message has the following fields and values:
|
26
26
|
| field | value |
|
27
27
|
| ofp_version | 1 |
|
28
28
|
| message_type | 3 |
|
@@ -38,7 +38,7 @@ Feature: Pio::Echo::Reply
|
|
38
38
|
Pio::Echo::Reply.new(xid: 123)
|
39
39
|
"""
|
40
40
|
Then it should finish successfully
|
41
|
-
And the message
|
41
|
+
And the message has the following fields and values:
|
42
42
|
| field | value |
|
43
43
|
| ofp_version | 1 |
|
44
44
|
| message_type | 3 |
|
@@ -61,7 +61,7 @@ Feature: Pio::Echo::Reply
|
|
61
61
|
Pio::Echo::Reply.new(body: 'echo reply body')
|
62
62
|
"""
|
63
63
|
Then it should finish successfully
|
64
|
-
And the message
|
64
|
+
And the message has the following fields and values:
|
65
65
|
| field | value |
|
66
66
|
| ofp_version | 1 |
|
67
67
|
| message_type | 3 |
|
@@ -77,7 +77,7 @@ Feature: Pio::Echo::Reply
|
|
77
77
|
Pio::Echo::Reply.new(user_data: 'echo reply body')
|
78
78
|
"""
|
79
79
|
Then it should finish successfully
|
80
|
-
And the message
|
80
|
+
And the message has the following fields and values:
|
81
81
|
| field | value |
|
82
82
|
| ofp_version | 1 |
|
83
83
|
| message_type | 3 |
|
@@ -90,7 +90,7 @@ Feature: Pio::Echo::Reply
|
|
90
90
|
Scenario: read (no message body)
|
91
91
|
When I try to parse a file named "open_flow10/echo_reply.raw" with "Pio::Echo::Reply" class
|
92
92
|
Then it should finish successfully
|
93
|
-
And the message
|
93
|
+
And the message has the following fields and values:
|
94
94
|
| field | value |
|
95
95
|
| ofp_version | 1 |
|
96
96
|
| message_type | 3 |
|
@@ -6,7 +6,7 @@ Feature: Pio::Echo::Request
|
|
6
6
|
Pio::Echo::Request.new
|
7
7
|
"""
|
8
8
|
Then it should finish successfully
|
9
|
-
And the message
|
9
|
+
And the message has the following fields and values:
|
10
10
|
| field | value |
|
11
11
|
| ofp_version | 1 |
|
12
12
|
| message_type | 2 |
|
@@ -22,7 +22,7 @@ Feature: Pio::Echo::Request
|
|
22
22
|
Pio::Echo::Request.new(transaction_id: 123)
|
23
23
|
"""
|
24
24
|
Then it should finish successfully
|
25
|
-
And the message
|
25
|
+
And the message has the following fields and values:
|
26
26
|
| field | value |
|
27
27
|
| ofp_version | 1 |
|
28
28
|
| message_type | 2 |
|
@@ -38,7 +38,7 @@ Feature: Pio::Echo::Request
|
|
38
38
|
Pio::Echo::Request.new(xid: 123)
|
39
39
|
"""
|
40
40
|
Then it should finish successfully
|
41
|
-
And the message
|
41
|
+
And the message has the following fields and values:
|
42
42
|
| field | value |
|
43
43
|
| ofp_version | 1 |
|
44
44
|
| message_type | 2 |
|
@@ -54,7 +54,7 @@ Feature: Pio::Echo::Request
|
|
54
54
|
Pio::Echo::Request.new(body: 'echo request body')
|
55
55
|
"""
|
56
56
|
Then it should finish successfully
|
57
|
-
And the message
|
57
|
+
And the message has the following fields and values:
|
58
58
|
| field | value |
|
59
59
|
| ofp_version | 1 |
|
60
60
|
| message_type | 2 |
|
@@ -70,7 +70,7 @@ Feature: Pio::Echo::Request
|
|
70
70
|
Pio::Echo::Request.new(user_data: 'echo request body')
|
71
71
|
"""
|
72
72
|
Then it should finish successfully
|
73
|
-
And the message
|
73
|
+
And the message has the following fields and values:
|
74
74
|
| field | value |
|
75
75
|
| ofp_version | 1 |
|
76
76
|
| message_type | 2 |
|
@@ -83,7 +83,7 @@ Feature: Pio::Echo::Request
|
|
83
83
|
Scenario: read (no message body)
|
84
84
|
When I try to parse a file named "open_flow10/echo_request.raw" with "Pio::Echo::Request" class
|
85
85
|
Then it should finish successfully
|
86
|
-
And the message
|
86
|
+
And the message has the following fields and values:
|
87
87
|
| field | value |
|
88
88
|
| ofp_version | 1 |
|
89
89
|
| message_type | 2 |
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Feature: Pio::ExactMatch
|
2
2
|
Scenario: new (from ARP request Packet In)
|
3
3
|
When I create an exact match from "open_flow10/packet_in_arp_request.raw"
|
4
|
-
And the message
|
4
|
+
And the message has the following fields and values:
|
5
5
|
| field | value |
|
6
6
|
| wildcards | {} |
|
7
7
|
| in_port | 1 |
|
@@ -19,7 +19,7 @@ Feature: Pio::ExactMatch
|
|
19
19
|
|
20
20
|
Scenario: new (from Cbench Packet In)
|
21
21
|
When I create an exact match from "open_flow10/packet_in_cbench.raw"
|
22
|
-
And the message
|
22
|
+
And the message has the following fields and values:
|
23
23
|
| field | value |
|
24
24
|
| wildcards | {} |
|
25
25
|
| in_port | 1 |
|
@@ -21,7 +21,7 @@ Feature: Pio::Features::Reply
|
|
21
21
|
)
|
22
22
|
"""
|
23
23
|
Then it should finish successfully
|
24
|
-
And the message
|
24
|
+
And the message has the following fields and values:
|
25
25
|
| field | value |
|
26
26
|
| ofp_version | 1 |
|
27
27
|
| message_type | 6 |
|
@@ -50,7 +50,7 @@ Feature: Pio::Features::Reply
|
|
50
50
|
Scenario: read
|
51
51
|
When I try to parse a file named "open_flow10/features_reply.raw" with "Features::Reply" class
|
52
52
|
Then it should finish successfully
|
53
|
-
And the message
|
53
|
+
And the message has the following fields and values:
|
54
54
|
| field | value |
|
55
55
|
| ofp_version | 1 |
|
56
56
|
| message_type | 6 |
|
@@ -6,7 +6,7 @@ Feature: Pio::Features::Request
|
|
6
6
|
Pio::Features::Request.new
|
7
7
|
"""
|
8
8
|
Then it should finish successfully
|
9
|
-
And the message
|
9
|
+
And the message has the following fields and values:
|
10
10
|
| field | value |
|
11
11
|
| ofp_version | 1 |
|
12
12
|
| message_type | 5 |
|
@@ -21,7 +21,7 @@ Feature: Pio::Features::Request
|
|
21
21
|
Pio::Features::Request.new(transaction_id: 123)
|
22
22
|
"""
|
23
23
|
Then it should finish successfully
|
24
|
-
And the message
|
24
|
+
And the message has the following fields and values:
|
25
25
|
| field | value |
|
26
26
|
| ofp_version | 1 |
|
27
27
|
| message_type | 5 |
|
@@ -36,7 +36,7 @@ Feature: Pio::Features::Request
|
|
36
36
|
Pio::Features::Request.new(xid: 123)
|
37
37
|
"""
|
38
38
|
Then it should finish successfully
|
39
|
-
And the message
|
39
|
+
And the message has the following fields and values:
|
40
40
|
| field | value |
|
41
41
|
| ofp_version | 1 |
|
42
42
|
| message_type | 5 |
|
@@ -48,7 +48,7 @@ Feature: Pio::Features::Request
|
|
48
48
|
Scenario: read
|
49
49
|
When I try to parse a file named "open_flow10/features_request.raw" with "Pio::Features::Request" class
|
50
50
|
Then it should finish successfully
|
51
|
-
And the message
|
51
|
+
And the message has the following fields and values:
|
52
52
|
| field | value |
|
53
53
|
| ofp_version | 1 |
|
54
54
|
| message_type | 5 |
|
@@ -16,7 +16,7 @@ Feature: Pio::FlowMod
|
|
16
16
|
)
|
17
17
|
"""
|
18
18
|
Then it should finish successfully
|
19
|
-
And the message
|
19
|
+
And the message has the following fields and values:
|
20
20
|
| field | value |
|
21
21
|
| ofp_version | 1 |
|
22
22
|
| message_type | 14 |
|
@@ -45,7 +45,7 @@ Feature: Pio::FlowMod
|
|
45
45
|
Scenario: read (Flow Mod Add)
|
46
46
|
When I try to parse a file named "open_flow10/flow_mod_add.raw" with "Pio::FlowMod" class
|
47
47
|
Then it should finish successfully
|
48
|
-
And the message
|
48
|
+
And the message has the following fields and values:
|
49
49
|
| field | value |
|
50
50
|
| ofp_version | 1 |
|
51
51
|
| message_type | 14 |
|
@@ -82,7 +82,7 @@ Feature: Pio::FlowMod
|
|
82
82
|
Scenario: read (Flow Mod Modify)
|
83
83
|
When I try to parse a file named "open_flow10/flow_mod_modify.raw" with "Pio::FlowMod" class
|
84
84
|
Then it should finish successfully
|
85
|
-
And the message
|
85
|
+
And the message has the following fields and values:
|
86
86
|
| field | value |
|
87
87
|
| ofp_version | 1 |
|
88
88
|
| message_type | 14 |
|
@@ -119,7 +119,7 @@ Feature: Pio::FlowMod
|
|
119
119
|
Scenario: read (Flow Mod Modify Strict)
|
120
120
|
When I try to parse a file named "open_flow10/flow_mod_modify_strict.raw" with "Pio::FlowMod" class
|
121
121
|
Then it should finish successfully
|
122
|
-
And the message
|
122
|
+
And the message has the following fields and values:
|
123
123
|
| field | value |
|
124
124
|
| ofp_version | 1 |
|
125
125
|
| message_type | 14 |
|
@@ -156,7 +156,7 @@ Feature: Pio::FlowMod
|
|
156
156
|
Scenario: read (Flow Mod Delete)
|
157
157
|
When I try to parse a file named "open_flow10/flow_mod_delete.raw" with "Pio::FlowMod" class
|
158
158
|
Then it should finish successfully
|
159
|
-
And the message
|
159
|
+
And the message has the following fields and values:
|
160
160
|
| field | value |
|
161
161
|
| ofp_version | 1 |
|
162
162
|
| message_type | 14 |
|
@@ -191,7 +191,7 @@ Feature: Pio::FlowMod
|
|
191
191
|
Scenario: read (Flow Mod Delete Strict)
|
192
192
|
When I try to parse a file named "open_flow10/flow_mod_delete_strict.raw" with "Pio::FlowMod" class
|
193
193
|
Then it should finish successfully
|
194
|
-
And the message
|
194
|
+
And the message has the following fields and values:
|
195
195
|
| field | value |
|
196
196
|
| ofp_version | 1 |
|
197
197
|
| message_type | 14 |
|
@@ -0,0 +1,105 @@
|
|
1
|
+
@open_flow10
|
2
|
+
Feature: Pio::FlowStats::Reply
|
3
|
+
Scenario: new
|
4
|
+
When I try to create an OpenFlow message with:
|
5
|
+
"""
|
6
|
+
Pio::FlowStats::Reply.new
|
7
|
+
"""
|
8
|
+
Then it should finish successfully
|
9
|
+
And the message has the following fields and values:
|
10
|
+
| field | value |
|
11
|
+
| ofp_version | 1 |
|
12
|
+
| message_type | 17 |
|
13
|
+
| message_length | 12 |
|
14
|
+
| transaction_id | 0 |
|
15
|
+
| xid | 0 |
|
16
|
+
| stats_type | :flow |
|
17
|
+
| stats.size | 0 |
|
18
|
+
|
19
|
+
@wip
|
20
|
+
Scenario: new(more options)
|
21
|
+
When I try to create an OpenFlow message with:
|
22
|
+
"""
|
23
|
+
Pio::FlowStats::Reply.new(more options)
|
24
|
+
"""
|
25
|
+
Then it should finish successfully
|
26
|
+
|
27
|
+
Scenario: read
|
28
|
+
When I try to parse a file named "open_flow10/flow_stats_reply.raw" with "FlowStats::Reply" class
|
29
|
+
Then it should finish successfully
|
30
|
+
And the message has the following fields and values:
|
31
|
+
| field | value |
|
32
|
+
| ofp_version | 1 |
|
33
|
+
| message_type | 17 |
|
34
|
+
| message_length | 228 |
|
35
|
+
| transaction_id | 6 |
|
36
|
+
| xid | 6 |
|
37
|
+
| stats_type | :flow |
|
38
|
+
| stats.size | 2 |
|
39
|
+
| stats[0].entry_length | 104 |
|
40
|
+
| stats[0].table_id | 3 |
|
41
|
+
| stats[0].match.wildcards.keys.size | 14 |
|
42
|
+
| stats[0].match.wildcards.fetch(:ether_destination_address) | true |
|
43
|
+
| stats[0].match.wildcards.fetch(:ether_source_address) | true |
|
44
|
+
| stats[0].match.wildcards.fetch(:ether_type) | true |
|
45
|
+
| stats[0].match.wildcards.fetch(:in_port) | true |
|
46
|
+
| stats[0].match.wildcards.fetch(:ip_destination_address) | 31 |
|
47
|
+
| stats[0].match.wildcards.fetch(:ip_destination_address_all) | true |
|
48
|
+
| stats[0].match.wildcards.fetch(:ip_protocol) | true |
|
49
|
+
| stats[0].match.wildcards.fetch(:ip_source_address) | 31 |
|
50
|
+
| stats[0].match.wildcards.fetch(:ip_source_address_all) | true |
|
51
|
+
| stats[0].match.wildcards.fetch(:ip_tos) | true |
|
52
|
+
| stats[0].match.wildcards.fetch(:transport_destination_port) | true |
|
53
|
+
| stats[0].match.wildcards.fetch(:transport_source_port) | true |
|
54
|
+
| stats[0].match.wildcards.fetch(:vlan_priority) | true |
|
55
|
+
| stats[0].match.wildcards.fetch(:vlan_vid) | true |
|
56
|
+
| stats[0].duration_sec | 1 |
|
57
|
+
| stats[0].duration_nsec | 2 |
|
58
|
+
| stats[0].priority | 100 |
|
59
|
+
| stats[0].idle_timeout | 5 |
|
60
|
+
| stats[0].hard_timeout | 10 |
|
61
|
+
| stats[0].cookie.to_hex | 0x123456789abcdef |
|
62
|
+
| stats[0].packet_count | 10 |
|
63
|
+
| stats[0].byte_count | 1000 |
|
64
|
+
| stats[0].actions.length | 2 |
|
65
|
+
| stats[0].actions[0].class | Pio::OpenFlow10::SendOutPort |
|
66
|
+
| stats[0].actions[0].port_number | 1 |
|
67
|
+
| stats[0].actions[0].max_len | 0 |
|
68
|
+
| stats[0].actions[1].class | Pio::OpenFlow10::SendOutPort |
|
69
|
+
| stats[0].actions[1].port_number | 2 |
|
70
|
+
| stats[0].actions[1].max_len | 0 |
|
71
|
+
| stats[1].entry_length | 112 |
|
72
|
+
| stats[1].table_id | 4 |
|
73
|
+
| stats[1].match.wildcards.keys.size | 14 |
|
74
|
+
| stats[1].match.wildcards.fetch(:ether_destination_address) | true |
|
75
|
+
| stats[1].match.wildcards.fetch(:ether_source_address) | true |
|
76
|
+
| stats[1].match.wildcards.fetch(:ether_type) | true |
|
77
|
+
| stats[1].match.wildcards.fetch(:in_port) | true |
|
78
|
+
| stats[1].match.wildcards.fetch(:ip_destination_address) | 31 |
|
79
|
+
| stats[1].match.wildcards.fetch(:ip_destination_address_all) | true |
|
80
|
+
| stats[1].match.wildcards.fetch(:ip_protocol) | true |
|
81
|
+
| stats[1].match.wildcards.fetch(:ip_source_address) | 31 |
|
82
|
+
| stats[1].match.wildcards.fetch(:ip_source_address_all) | true |
|
83
|
+
| stats[1].match.wildcards.fetch(:ip_tos) | true |
|
84
|
+
| stats[1].match.wildcards.fetch(:transport_destination_port) | true |
|
85
|
+
| stats[1].match.wildcards.fetch(:transport_source_port) | true |
|
86
|
+
| stats[1].match.wildcards.fetch(:vlan_priority) | true |
|
87
|
+
| stats[1].match.wildcards.fetch(:vlan_vid) | true |
|
88
|
+
| stats[1].duration_sec | 1 |
|
89
|
+
| stats[1].duration_nsec | 2 |
|
90
|
+
| stats[1].priority | 100 |
|
91
|
+
| stats[1].idle_timeout | 5 |
|
92
|
+
| stats[1].hard_timeout | 10 |
|
93
|
+
| stats[1].cookie.to_hex | 0x123456789abcdef |
|
94
|
+
| stats[1].packet_count | 10 |
|
95
|
+
| stats[1].byte_count | 1000 |
|
96
|
+
| stats[1].actions.length | 3 |
|
97
|
+
| stats[1].actions[0].class | Pio::OpenFlow10::SendOutPort |
|
98
|
+
| stats[1].actions[0].port_number | 1 |
|
99
|
+
| stats[1].actions[0].max_len | 0 |
|
100
|
+
| stats[1].actions[1].class | Pio::OpenFlow10::SendOutPort |
|
101
|
+
| stats[1].actions[1].port_number | 2 |
|
102
|
+
| stats[1].actions[1].max_len | 0 |
|
103
|
+
| stats[1].actions[2].class | Pio::OpenFlow10::SendOutPort |
|
104
|
+
| stats[1].actions[2].port_number | 3 |
|
105
|
+
| stats[1].actions[2].max_len | 0 |
|