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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +2 -0
  4. data/bin/byebug +16 -0
  5. data/features/arp.feature +2 -2
  6. data/features/dhcp.feature +4 -4
  7. data/features/icmp.feature +2 -2
  8. data/features/lldp.feature +1 -1
  9. data/features/open_flow10/barrier_reply.feature +4 -4
  10. data/features/open_flow10/barrier_request.feature +4 -4
  11. data/features/open_flow10/echo_reply.feature +6 -6
  12. data/features/open_flow10/echo_request.feature +6 -6
  13. data/features/open_flow10/exact_match.feature +2 -2
  14. data/features/open_flow10/features_reply.feature +2 -2
  15. data/features/open_flow10/features_request.feature +4 -4
  16. data/features/open_flow10/flow_mod.feature +6 -6
  17. data/features/open_flow10/flow_stats_reply.feature +105 -0
  18. data/features/open_flow10/flow_stats_request.feature +90 -0
  19. data/features/open_flow10/hello.feature +4 -4
  20. data/features/open_flow10/packet_in.feature +2 -2
  21. data/features/open_flow10/packet_out.feature +1 -1
  22. data/features/open_flow10/port_status.feature +1 -1
  23. data/features/open_flow13/apply_actions.feature +3 -3
  24. data/features/open_flow13/echo_reply.feature +7 -7
  25. data/features/open_flow13/echo_request.feature +7 -7
  26. data/features/open_flow13/features_reply.feature +2 -2
  27. data/features/open_flow13/features_request.feature +4 -4
  28. data/features/open_flow13/flow_mod.feature +5 -5
  29. data/features/open_flow13/goto_table.feature +2 -2
  30. data/features/open_flow13/hello.feature +5 -5
  31. data/features/open_flow13/match.feature +81 -81
  32. data/features/open_flow13/meter.feature +2 -2
  33. data/features/open_flow13/packet_in.feature +3 -3
  34. data/features/open_flow13/packet_out.feature +3 -3
  35. data/features/open_flow13/send_out_port.feature +2 -2
  36. data/features/open_flow13/write_metadata.feature +2 -2
  37. data/features/open_flow_read.feature +12 -10
  38. data/features/step_definitions/packet_data_steps.rb +3 -3
  39. data/lib/pio/open_flow.rb +4 -1
  40. data/lib/pio/open_flow/message.rb +3 -0
  41. data/lib/pio/open_flow10.rb +2 -0
  42. data/lib/pio/open_flow10/flow_mod.rb +1 -16
  43. data/lib/pio/open_flow10/flow_stats_reply.rb +59 -0
  44. data/lib/pio/open_flow10/flow_stats_request.rb +64 -0
  45. data/lib/pio/open_flow10/match.rb +17 -0
  46. data/lib/pio/open_flow10/stats_type.rb +27 -0
  47. data/lib/pio/version.rb +1 -1
  48. data/pio.gemspec +2 -2
  49. data/spec/pio/open_flow10/flow_stats_reply_spec.rb +39 -0
  50. data/spec/pio/open_flow10/flow_stats_request_spec.rb +38 -0
  51. metadata +185 -173
@@ -6,7 +6,7 @@ Feature: Pio::Match
6
6
  Pio::Match.new
7
7
  """
8
8
  Then it should finish successfully
9
- And the message have the following fields and values:
9
+ And the message has the following fields and values:
10
10
  | field | value |
11
11
  | match_fields | [] |
12
12
 
@@ -16,7 +16,7 @@ Feature: Pio::Match
16
16
  Pio::Match.new(in_port: 1)
17
17
  """
18
18
  Then it should finish successfully
19
- And the message have the following fields and values:
19
+ And the message has the following fields and values:
20
20
  | field | value |
21
21
  | in_port | 1 |
22
22
 
@@ -26,7 +26,7 @@ Feature: Pio::Match
26
26
  Pio::Match.new(metadata: 1)
27
27
  """
28
28
  Then it should finish successfully
29
- And the message have the following fields and values:
29
+ And the message has the following fields and values:
30
30
  | field | value |
31
31
  | metadata | 1 |
32
32
 
@@ -36,7 +36,7 @@ Feature: Pio::Match
36
36
  Pio::Match.new(metadata: 1, metadata_mask: 1)
37
37
  """
38
38
  Then it should finish successfully
39
- And the message have the following fields and values:
39
+ And the message has the following fields and values:
40
40
  | field | value |
41
41
  | metadata | 1 |
42
42
  | metadata_mask | 1 |
@@ -47,7 +47,7 @@ Feature: Pio::Match
47
47
  Pio::Match.new(ether_source_address: '01:02:03:04:05:06')
48
48
  """
49
49
  Then it should finish successfully
50
- And the message have the following fields and values:
50
+ And the message has the following fields and values:
51
51
  | field | value |
52
52
  | ether_source_address | 01:02:03:04:05:06 |
53
53
 
@@ -57,7 +57,7 @@ Feature: Pio::Match
57
57
  Pio::Match.new(ether_destination_address: '01:02:03:04:05:06')
58
58
  """
59
59
  Then it should finish successfully
60
- And the message have the following fields and values:
60
+ And the message has the following fields and values:
61
61
  | field | value |
62
62
  | ether_destination_address | 01:02:03:04:05:06 |
63
63
 
@@ -67,7 +67,7 @@ Feature: Pio::Match
67
67
  Pio::Match.new(ether_source_address: '01:02:03:04:05:06', ether_source_address_mask: 'ff:ff:ff:00:00:00')
68
68
  """
69
69
  Then it should finish successfully
70
- And the message have the following fields and values:
70
+ And the message has the following fields and values:
71
71
  | field | value |
72
72
  | ether_source_address | 01:02:03:04:05:06 |
73
73
  | ether_source_address_mask | ff:ff:ff:00:00:00 |
@@ -78,7 +78,7 @@ Feature: Pio::Match
78
78
  Pio::Match.new(ether_destination_address: '01:02:03:04:05:06', ether_destination_address_mask: 'ff:ff:ff:00:00:00')
79
79
  """
80
80
  Then it should finish successfully
81
- And the message have the following fields and values:
81
+ And the message has the following fields and values:
82
82
  | field | value |
83
83
  | ether_destination_address | 01:02:03:04:05:06 |
84
84
  | ether_destination_address_mask | ff:ff:ff:00:00:00 |
@@ -89,7 +89,7 @@ Feature: Pio::Match
89
89
  Pio::Match.new(ether_type: 0x0800)
90
90
  """
91
91
  Then it should finish successfully
92
- And the message have the following fields and values:
92
+ And the message has the following fields and values:
93
93
  | field | value |
94
94
  | ether_type | 2048 |
95
95
 
@@ -99,7 +99,7 @@ Feature: Pio::Match
99
99
  Pio::Match.new(vlan_vid: 10)
100
100
  """
101
101
  Then it should finish successfully
102
- And the message have the following fields and values:
102
+ And the message has the following fields and values:
103
103
  | field | value |
104
104
  | vlan_vid | 10 |
105
105
 
@@ -109,7 +109,7 @@ Feature: Pio::Match
109
109
  Pio::Match.new(vlan_vid: 10, vlan_pcp: 5)
110
110
  """
111
111
  Then it should finish successfully
112
- And the message have the following fields and values:
112
+ And the message has the following fields and values:
113
113
  | field | value |
114
114
  | vlan_vid | 10 |
115
115
  | vlan_pcp | 5 |
@@ -120,7 +120,7 @@ Feature: Pio::Match
120
120
  Pio::Match.new(ether_type: 2048, ip_dscp: 46)
121
121
  """
122
122
  Then it should finish successfully
123
- And the message have the following fields and values:
123
+ And the message has the following fields and values:
124
124
  | field | value |
125
125
  | ether_type | 2048 |
126
126
  | ip_dscp | 46 |
@@ -131,7 +131,7 @@ Feature: Pio::Match
131
131
  Pio::Match.new(ether_type: 2048, ip_ecn: 46)
132
132
  """
133
133
  Then it should finish successfully
134
- And the message have the following fields and values:
134
+ And the message has the following fields and values:
135
135
  | field | value |
136
136
  | ether_type | 2048 |
137
137
  | ip_ecn | 3 |
@@ -142,7 +142,7 @@ Feature: Pio::Match
142
142
  Pio::Match.new(ether_type: 0x0800, ipv4_source_address: '192.168.0.1')
143
143
  """
144
144
  Then it should finish successfully
145
- And the message have the following fields and values:
145
+ And the message has the following fields and values:
146
146
  | field | value |
147
147
  | ether_type | 2048 |
148
148
  | ipv4_source_address | 192.168.0.1 |
@@ -153,7 +153,7 @@ Feature: Pio::Match
153
153
  Pio::Match.new(ether_type: 0x0800, ipv4_destination_address: '192.168.0.1')
154
154
  """
155
155
  Then it should finish successfully
156
- And the message have the following fields and values:
156
+ And the message has the following fields and values:
157
157
  | field | value |
158
158
  | ether_type | 2048 |
159
159
  | ipv4_destination_address | 192.168.0.1 |
@@ -164,7 +164,7 @@ Feature: Pio::Match
164
164
  Pio::Match.new(ether_type: 0x0800, ipv4_source_address: '192.168.0.1', ipv4_source_address_mask: '255.255.0.0')
165
165
  """
166
166
  Then it should finish successfully
167
- And the message have the following fields and values:
167
+ And the message has the following fields and values:
168
168
  | field | value |
169
169
  | ether_type | 2048 |
170
170
  | ipv4_source_address | 192.168.0.1 |
@@ -176,7 +176,7 @@ Feature: Pio::Match
176
176
  Pio::Match.new(ether_type: 0x0800, ipv4_destination_address: '192.168.0.1', ipv4_destination_address_mask: '255.255.0.0')
177
177
  """
178
178
  Then it should finish successfully
179
- And the message have the following fields and values:
179
+ And the message has the following fields and values:
180
180
  | field | value |
181
181
  | ether_type | 2048 |
182
182
  | ipv4_destination_address | 192.168.0.1 |
@@ -188,7 +188,7 @@ Feature: Pio::Match
188
188
  Pio::Match.new(ether_type: 0x0800, ip_protocol: 6, tcp_source_port: 1111)
189
189
  """
190
190
  Then it should finish successfully
191
- And the message have the following fields and values:
191
+ And the message has the following fields and values:
192
192
  | field | value |
193
193
  | ether_type | 2048 |
194
194
  | ip_protocol | 6 |
@@ -200,7 +200,7 @@ Feature: Pio::Match
200
200
  Pio::Match.new(ether_type: 0x0800, ip_protocol: 6, tcp_destination_port: 80)
201
201
  """
202
202
  Then it should finish successfully
203
- And the message have the following fields and values:
203
+ And the message has the following fields and values:
204
204
  | field | value |
205
205
  | ether_type | 2048 |
206
206
  | ip_protocol | 6 |
@@ -212,7 +212,7 @@ Feature: Pio::Match
212
212
  Pio::Match.new(ether_type: 0x0800, ip_protocol: 17, udp_source_port: 2222)
213
213
  """
214
214
  Then it should finish successfully
215
- And the message have the following fields and values:
215
+ And the message has the following fields and values:
216
216
  | field | value |
217
217
  | ether_type | 2048 |
218
218
  | ip_protocol | 17 |
@@ -224,7 +224,7 @@ Feature: Pio::Match
224
224
  Pio::Match.new(ether_type: 0x0800, ip_protocol: 17, udp_destination_port: 3333)
225
225
  """
226
226
  Then it should finish successfully
227
- And the message have the following fields and values:
227
+ And the message has the following fields and values:
228
228
  | field | value |
229
229
  | ether_type | 2048 |
230
230
  | ip_protocol | 17 |
@@ -236,7 +236,7 @@ Feature: Pio::Match
236
236
  Pio::Match.new(ether_type: 0x0800, ip_protocol: 132, sctp_source_port: 22)
237
237
  """
238
238
  Then it should finish successfully
239
- And the message have the following fields and values:
239
+ And the message has the following fields and values:
240
240
  | field | value |
241
241
  | ether_type | 2048 |
242
242
  | ip_protocol | 132 |
@@ -248,7 +248,7 @@ Feature: Pio::Match
248
248
  Pio::Match.new(ether_type: 0x0800, ip_protocol: 132, sctp_destination_port: 22)
249
249
  """
250
250
  Then it should finish successfully
251
- And the message have the following fields and values:
251
+ And the message has the following fields and values:
252
252
  | field | value |
253
253
  | ether_type | 2048 |
254
254
  | ip_protocol | 132 |
@@ -260,7 +260,7 @@ Feature: Pio::Match
260
260
  Pio::Match.new(ether_type: 0x0800, ip_protocol: 1, icmpv4_type: 8)
261
261
  """
262
262
  Then it should finish successfully
263
- And the message have the following fields and values:
263
+ And the message has the following fields and values:
264
264
  | field | value |
265
265
  | ether_type | 2048 |
266
266
  | ip_protocol | 1 |
@@ -272,7 +272,7 @@ Feature: Pio::Match
272
272
  Pio::Match.new(ether_type: 0x0800, ip_protocol: 1, icmpv4_code: 0)
273
273
  """
274
274
  Then it should finish successfully
275
- And the message have the following fields and values:
275
+ And the message has the following fields and values:
276
276
  | field | value |
277
277
  | ether_type | 2048 |
278
278
  | ip_protocol | 1 |
@@ -284,7 +284,7 @@ Feature: Pio::Match
284
284
  Pio::Match.new(ether_type: 2054, arp_op: 1)
285
285
  """
286
286
  Then it should finish successfully
287
- And the message have the following fields and values:
287
+ And the message has the following fields and values:
288
288
  | field | value |
289
289
  | ether_type | 2054 |
290
290
  | arp_op | 1 |
@@ -295,7 +295,7 @@ Feature: Pio::Match
295
295
  Pio::Match.new(ether_type: 2054, arp_sender_protocol_address: '1.2.3.4')
296
296
  """
297
297
  Then it should finish successfully
298
- And the message have the following fields and values:
298
+ And the message has the following fields and values:
299
299
  | field | value |
300
300
  | ether_type | 2054 |
301
301
  | arp_sender_protocol_address | 1.2.3.4 |
@@ -306,7 +306,7 @@ Feature: Pio::Match
306
306
  Pio::Match.new(ether_type: 2054, arp_sender_protocol_address: '1.2.3.4', arp_sender_protocol_address_mask: '255.255.0.0')
307
307
  """
308
308
  Then it should finish successfully
309
- And the message have the following fields and values:
309
+ And the message has the following fields and values:
310
310
  | field | value |
311
311
  | ether_type | 2054 |
312
312
  | arp_sender_protocol_address | 1.2.3.4 |
@@ -318,7 +318,7 @@ Feature: Pio::Match
318
318
  Pio::Match.new(ether_type: 2054, arp_target_protocol_address: '1.2.3.4')
319
319
  """
320
320
  Then it should finish successfully
321
- And the message have the following fields and values:
321
+ And the message has the following fields and values:
322
322
  | field | value |
323
323
  | ether_type | 2054 |
324
324
  | arp_target_protocol_address | 1.2.3.4 |
@@ -329,7 +329,7 @@ Feature: Pio::Match
329
329
  Pio::Match.new(ether_type: 2054, arp_target_protocol_address: '1.2.3.4', arp_target_protocol_address_mask: '255.255.0.0')
330
330
  """
331
331
  Then it should finish successfully
332
- And the message have the following fields and values:
332
+ And the message has the following fields and values:
333
333
  | field | value |
334
334
  | ether_type | 2054 |
335
335
  | arp_target_protocol_address | 1.2.3.4 |
@@ -341,7 +341,7 @@ Feature: Pio::Match
341
341
  Pio::Match.new(ether_type: 2054, arp_sender_hardware_address: '11:22:33:44:55:66')
342
342
  """
343
343
  Then it should finish successfully
344
- And the message have the following fields and values:
344
+ And the message has the following fields and values:
345
345
  | field | value |
346
346
  | ether_type | 2054 |
347
347
  | arp_sender_hardware_address | 11:22:33:44:55:66 |
@@ -352,7 +352,7 @@ Feature: Pio::Match
352
352
  Pio::Match.new(ether_type: 2054, arp_sender_hardware_address: '11:22:33:44:55:66', arp_sender_hardware_address_mask: 'ff:ff:ff:00:00:00')
353
353
  """
354
354
  Then it should finish successfully
355
- And the message have the following fields and values:
355
+ And the message has the following fields and values:
356
356
  | field | value |
357
357
  | ether_type | 2054 |
358
358
  | arp_sender_hardware_address | 11:22:33:44:55:66 |
@@ -364,7 +364,7 @@ Feature: Pio::Match
364
364
  Pio::Match.new(ether_type: 2054, arp_target_hardware_address: '11:22:33:44:55:66')
365
365
  """
366
366
  Then it should finish successfully
367
- And the message have the following fields and values:
367
+ And the message has the following fields and values:
368
368
  | field | value |
369
369
  | ether_type | 2054 |
370
370
  | arp_target_hardware_address | 11:22:33:44:55:66 |
@@ -375,7 +375,7 @@ Feature: Pio::Match
375
375
  Pio::Match.new(ether_type: 2054, arp_target_hardware_address: '11:22:33:44:55:66', arp_target_hardware_address_mask: 'ff:ff:ff:00:00:00')
376
376
  """
377
377
  Then it should finish successfully
378
- And the message have the following fields and values:
378
+ And the message has the following fields and values:
379
379
  | field | value |
380
380
  | ether_type | 2054 |
381
381
  | arp_target_hardware_address | 11:22:33:44:55:66 |
@@ -387,7 +387,7 @@ Feature: Pio::Match
387
387
  Pio::Match.new(ether_type: 0x86dd, ipv6_source_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee')
388
388
  """
389
389
  Then it should finish successfully
390
- And the message have the following fields and values:
390
+ And the message has the following fields and values:
391
391
  | field | value |
392
392
  | ether_type | 34525 |
393
393
  | ipv6_source_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
@@ -398,7 +398,7 @@ Feature: Pio::Match
398
398
  Pio::Match.new(ether_type: 0x86dd, ipv6_source_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee', ipv6_source_address_mask: 'ffff:ffff:ffff:ffff::')
399
399
  """
400
400
  Then it should finish successfully
401
- And the message have the following fields and values:
401
+ And the message has the following fields and values:
402
402
  | field | value |
403
403
  | ether_type | 34525 |
404
404
  | ipv6_source_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
@@ -410,7 +410,7 @@ Feature: Pio::Match
410
410
  Pio::Match.new(ether_type: 0x86dd, ipv6_destination_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee')
411
411
  """
412
412
  Then it should finish successfully
413
- And the message have the following fields and values:
413
+ And the message has the following fields and values:
414
414
  | field | value |
415
415
  | ether_type | 34525 |
416
416
  | ipv6_destination_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
@@ -421,7 +421,7 @@ Feature: Pio::Match
421
421
  Pio::Match.new(ether_type: 0x86dd, ipv6_destination_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee', ipv6_destination_address_mask: 'ffff:ffff:ffff:ffff::')
422
422
  """
423
423
  Then it should finish successfully
424
- And the message have the following fields and values:
424
+ And the message has the following fields and values:
425
425
  | field | value |
426
426
  | ether_type | 34525 |
427
427
  | ipv6_destination_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
@@ -433,7 +433,7 @@ Feature: Pio::Match
433
433
  Pio::Match.new(tunnel_id: 1)
434
434
  """
435
435
  Then it should finish successfully
436
- And the message have the following fields and values:
436
+ And the message has the following fields and values:
437
437
  | field | value |
438
438
  | tunnel_id | 1 |
439
439
 
@@ -443,7 +443,7 @@ Feature: Pio::Match
443
443
  Pio::Match.new(tunnel_id: 1, tunnel_id_mask: 9223372036854775808)
444
444
  """
445
445
  Then it should finish successfully
446
- And the message have the following fields and values:
446
+ And the message has the following fields and values:
447
447
  | field | value |
448
448
  | tunnel_id | 1 |
449
449
  | tunnel_id_mask | 9223372036854775808 |
@@ -451,28 +451,28 @@ Feature: Pio::Match
451
451
  Scenario: read (file: open_flow13/oxm_no_fields.raw)
452
452
  When I try to parse a file named "open_flow13/oxm_no_fields.raw" with "Pio::Match" class
453
453
  Then it should finish successfully
454
- And the message have the following fields and values:
454
+ And the message has the following fields and values:
455
455
  | field | value |
456
456
  | match_fields | [] |
457
457
 
458
458
  Scenario: read (file: open_flow13/oxm_in_port_field.raw)
459
459
  When I try to parse a file named "open_flow13/oxm_in_port_field.raw" with "Pio::Match" class
460
460
  Then it should finish successfully
461
- And the message have the following fields and values:
461
+ And the message has the following fields and values:
462
462
  | field | value |
463
463
  | in_port | 1 |
464
464
 
465
465
  Scenario: read (file: open_flow13/oxm_metadata_field.raw)
466
466
  When I try to parse a file named "open_flow13/oxm_metadata_field.raw" with "Pio::Match" class
467
467
  Then it should finish successfully
468
- And the message have the following fields and values:
468
+ And the message has the following fields and values:
469
469
  | field | value |
470
470
  | metadata | 1 |
471
471
 
472
472
  Scenario: read (file: open_flow13/oxm_metadata_masked_field.raw)
473
473
  When I try to parse a file named "open_flow13/oxm_metadata_masked_field.raw" with "Pio::Match" class
474
474
  Then it should finish successfully
475
- And the message have the following fields and values:
475
+ And the message has the following fields and values:
476
476
  | field | value |
477
477
  | metadata | 1 |
478
478
  | metadata_mask | 18446744069414584320 |
@@ -480,21 +480,21 @@ Feature: Pio::Match
480
480
  Scenario: read (file: open_flow13/oxm_ether_destination_field.raw)
481
481
  When I try to parse a file named "open_flow13/oxm_ether_destination_field.raw" with "Pio::Match" class
482
482
  Then it should finish successfully
483
- And the message have the following fields and values:
483
+ And the message has the following fields and values:
484
484
  | field | value |
485
485
  | ether_destination_address | ff:ff:ff:ff:ff:ff |
486
486
 
487
487
  Scenario: read (file: open_flow13/oxm_ether_source_field.raw)
488
488
  When I try to parse a file named "open_flow13/oxm_ether_source_field.raw" with "Pio::Match" class
489
489
  Then it should finish successfully
490
- And the message have the following fields and values:
490
+ And the message has the following fields and values:
491
491
  | field | value |
492
492
  | ether_source_address | 01:02:03:04:05:06 |
493
493
 
494
494
  Scenario: read (file: open_flow13/oxm_masked_ether_destination_field.raw)
495
495
  When I try to parse a file named "open_flow13/oxm_masked_ether_destination_field.raw" with "Pio::Match" class
496
496
  Then it should finish successfully
497
- And the message have the following fields and values:
497
+ And the message has the following fields and values:
498
498
  | field | value |
499
499
  | ether_destination_address | ff:ff:ff:ff:ff:ff |
500
500
  | ether_destination_address_mask | ff:ff:ff:00:00:00 |
@@ -502,7 +502,7 @@ Feature: Pio::Match
502
502
  Scenario: read (file: open_flow13/oxm_masked_ether_source_field.raw)
503
503
  When I try to parse a file named "open_flow13/oxm_masked_ether_source_field.raw" with "Pio::Match" class
504
504
  Then it should finish successfully
505
- And the message have the following fields and values:
505
+ And the message has the following fields and values:
506
506
  | field | value |
507
507
  | ether_source_address | 01:02:03:04:05:06 |
508
508
  | ether_source_address_mask | ff:ff:ff:00:00:00 |
@@ -510,21 +510,21 @@ Feature: Pio::Match
510
510
  Scenario: read (file: open_flow13/oxm_ether_type_field.raw)
511
511
  When I try to parse a file named "open_flow13/oxm_ether_type_field.raw" with "Pio::Match" class
512
512
  Then it should finish successfully
513
- And the message have the following fields and values:
513
+ And the message has the following fields and values:
514
514
  | field | value |
515
515
  | ether_type | 0 |
516
516
 
517
517
  Scenario: read (file: open_flow13/oxm_vlan_vid_field.raw)
518
518
  When I try to parse a file named "open_flow13/oxm_vlan_vid_field.raw" with "Pio::Match" class
519
519
  Then it should finish successfully
520
- And the message have the following fields and values:
520
+ And the message has the following fields and values:
521
521
  | field | value |
522
522
  | vlan_vid | 10 |
523
523
 
524
524
  Scenario: read (file: open_flow13/oxm_vlan_pcp_field.raw)
525
525
  When I try to parse a file named "open_flow13/oxm_vlan_pcp_field.raw" with "Pio::Match" class
526
526
  Then it should finish successfully
527
- And the message have the following fields and values:
527
+ And the message has the following fields and values:
528
528
  | field | value |
529
529
  | vlan_vid | 10 |
530
530
  | vlan_pcp | 5 |
@@ -532,7 +532,7 @@ Feature: Pio::Match
532
532
  Scenario: read (file: open_flow13/oxm_ip_dscp_field.raw)
533
533
  When I try to parse a file named "open_flow13/oxm_ip_dscp_field.raw" with "Pio::Match" class
534
534
  Then it should finish successfully
535
- And the message have the following fields and values:
535
+ And the message has the following fields and values:
536
536
  | field | value |
537
537
  | ether_type | 2048 |
538
538
  | ip_dscp | 46 |
@@ -540,7 +540,7 @@ Feature: Pio::Match
540
540
  Scenario: read (file: open_flow13/oxm_ip_ecn_field.raw)
541
541
  When I try to parse a file named "open_flow13/oxm_ip_ecn_field.raw" with "Pio::Match" class
542
542
  Then it should finish successfully
543
- And the message have the following fields and values:
543
+ And the message has the following fields and values:
544
544
  | field | value |
545
545
  | ether_type | 2048 |
546
546
  | ip_ecn | 3 |
@@ -548,7 +548,7 @@ Feature: Pio::Match
548
548
  Scenario: read (file: open_flow13/oxm_ipv4_source_field.raw)
549
549
  When I try to parse a file named "open_flow13/oxm_ipv4_source_field.raw" with "Pio::Match" class
550
550
  Then it should finish successfully
551
- And the message have the following fields and values:
551
+ And the message has the following fields and values:
552
552
  | field | value |
553
553
  | ether_type | 2048 |
554
554
  | ipv4_source_address | 1.2.3.4 |
@@ -556,7 +556,7 @@ Feature: Pio::Match
556
556
  Scenario: read (file: open_flow13/oxm_ipv4_destination_field.raw)
557
557
  When I try to parse a file named "open_flow13/oxm_ipv4_destination_field.raw" with "Pio::Match" class
558
558
  Then it should finish successfully
559
- And the message have the following fields and values:
559
+ And the message has the following fields and values:
560
560
  | field | value |
561
561
  | ether_type | 2048 |
562
562
  | ipv4_destination_address | 11.22.33.44 |
@@ -564,7 +564,7 @@ Feature: Pio::Match
564
564
  Scenario: read (file: open_flow13/oxm_masked_ipv4_source_field.raw)
565
565
  When I try to parse a file named "open_flow13/oxm_masked_ipv4_source_field.raw" with "Pio::Match" class
566
566
  Then it should finish successfully
567
- And the message have the following fields and values:
567
+ And the message has the following fields and values:
568
568
  | field | value |
569
569
  | ether_type | 2048 |
570
570
  | ipv4_source_address | 1.2.3.4 |
@@ -573,7 +573,7 @@ Feature: Pio::Match
573
573
  Scenario: read (file: open_flow13/oxm_masked_ipv4_destination_field.raw)
574
574
  When I try to parse a file named "open_flow13/oxm_masked_ipv4_destination_field.raw" with "Pio::Match" class
575
575
  Then it should finish successfully
576
- And the message have the following fields and values:
576
+ And the message has the following fields and values:
577
577
  | field | value |
578
578
  | ether_type | 2048 |
579
579
  | ipv4_destination_address | 11.22.33.44 |
@@ -582,7 +582,7 @@ Feature: Pio::Match
582
582
  Scenario: read (file: open_flow13/oxm_tcp_source_field.raw)
583
583
  When I try to parse a file named "open_flow13/oxm_tcp_source_field.raw" with "Pio::Match" class
584
584
  Then it should finish successfully
585
- And the message have the following fields and values:
585
+ And the message has the following fields and values:
586
586
  | field | value |
587
587
  | ether_type | 2048 |
588
588
  | ip_protocol | 6 |
@@ -591,7 +591,7 @@ Feature: Pio::Match
591
591
  Scenario: read (file: open_flow13/oxm_tcp_destination_field.raw)
592
592
  When I try to parse a file named "open_flow13/oxm_tcp_destination_field.raw" with "Pio::Match" class
593
593
  Then it should finish successfully
594
- And the message have the following fields and values:
594
+ And the message has the following fields and values:
595
595
  | field | value |
596
596
  | ether_type | 2048 |
597
597
  | ip_protocol | 6 |
@@ -600,7 +600,7 @@ Feature: Pio::Match
600
600
  Scenario: read (file: open_flow13/oxm_udp_source_field.raw)
601
601
  When I try to parse a file named "open_flow13/oxm_udp_source_field.raw" with "Pio::Match" class
602
602
  Then it should finish successfully
603
- And the message have the following fields and values:
603
+ And the message has the following fields and values:
604
604
  | field | value |
605
605
  | ether_type | 2048 |
606
606
  | ip_protocol | 17 |
@@ -609,7 +609,7 @@ Feature: Pio::Match
609
609
  Scenario: read (file: open_flow13/oxm_udp_destination_field.raw)
610
610
  When I try to parse a file named "open_flow13/oxm_udp_destination_field.raw" with "Pio::Match" class
611
611
  Then it should finish successfully
612
- And the message have the following fields and values:
612
+ And the message has the following fields and values:
613
613
  | field | value |
614
614
  | ether_type | 2048 |
615
615
  | ip_protocol | 17 |
@@ -618,7 +618,7 @@ Feature: Pio::Match
618
618
  Scenario: read (file: open_flow13/oxm_sctp_source_field.raw)
619
619
  When I try to parse a file named "open_flow13/oxm_sctp_source_field.raw" with "Pio::Match" class
620
620
  Then it should finish successfully
621
- And the message have the following fields and values:
621
+ And the message has the following fields and values:
622
622
  | field | value |
623
623
  | ether_type | 2048 |
624
624
  | ip_protocol | 132 |
@@ -627,7 +627,7 @@ Feature: Pio::Match
627
627
  Scenario: read (file: open_flow13/oxm_sctp_destination_field.raw)
628
628
  When I try to parse a file named "open_flow13/oxm_sctp_destination_field.raw" with "Pio::Match" class
629
629
  Then it should finish successfully
630
- And the message have the following fields and values:
630
+ And the message has the following fields and values:
631
631
  | field | value |
632
632
  | ether_type | 2048 |
633
633
  | ip_protocol | 132 |
@@ -636,7 +636,7 @@ Feature: Pio::Match
636
636
  Scenario: read (file: open_flow13/oxm_icmpv4_type_field.raw)
637
637
  When I try to parse a file named "open_flow13/oxm_icmpv4_type_field.raw" with "Pio::Match" class
638
638
  Then it should finish successfully
639
- And the message have the following fields and values:
639
+ And the message has the following fields and values:
640
640
  | field | value |
641
641
  | ether_type | 2048 |
642
642
  | ip_protocol | 1 |
@@ -645,7 +645,7 @@ Feature: Pio::Match
645
645
  Scenario: read (file: open_flow13/oxm_icmpv4_code_field.raw)
646
646
  When I try to parse a file named "open_flow13/oxm_icmpv4_code_field.raw" with "Pio::Match" class
647
647
  Then it should finish successfully
648
- And the message have the following fields and values:
648
+ And the message has the following fields and values:
649
649
  | field | value |
650
650
  | ether_type | 2048 |
651
651
  | ip_protocol | 1 |
@@ -654,7 +654,7 @@ Feature: Pio::Match
654
654
  Scenario: read (file: open_flow13/oxm_arp_op_field.raw)
655
655
  When I try to parse a file named "open_flow13/oxm_arp_op_field.raw" with "Pio::Match" class
656
656
  Then it should finish successfully
657
- And the message have the following fields and values:
657
+ And the message has the following fields and values:
658
658
  | field | value |
659
659
  | ether_type | 2054 |
660
660
  | arp_op | 1 |
@@ -662,7 +662,7 @@ Feature: Pio::Match
662
662
  Scenario: read (file: open_flow13/oxm_arp_spa_field.raw)
663
663
  When I try to parse a file named "open_flow13/oxm_arp_spa_field.raw" with "Pio::Match" class
664
664
  Then it should finish successfully
665
- And the message have the following fields and values:
665
+ And the message has the following fields and values:
666
666
  | field | value |
667
667
  | ether_type | 2054 |
668
668
  | arp_sender_protocol_address | 1.2.3.4 |
@@ -670,7 +670,7 @@ Feature: Pio::Match
670
670
  Scenario: read (file: open_flow13/oxm_masked_arp_spa_field.raw)
671
671
  When I try to parse a file named "open_flow13/oxm_masked_arp_spa_field.raw" with "Pio::Match" class
672
672
  Then it should finish successfully
673
- And the message have the following fields and values:
673
+ And the message has the following fields and values:
674
674
  | field | value |
675
675
  | ether_type | 2054 |
676
676
  | arp_sender_protocol_address | 1.2.3.4 |
@@ -679,7 +679,7 @@ Feature: Pio::Match
679
679
  Scenario: read (file: open_flow13/oxm_arp_tpa_field.raw)
680
680
  When I try to parse a file named "open_flow13/oxm_arp_tpa_field.raw" with "Pio::Match" class
681
681
  Then it should finish successfully
682
- And the message have the following fields and values:
682
+ And the message has the following fields and values:
683
683
  | field | value |
684
684
  | ether_type | 2054 |
685
685
  | arp_target_protocol_address | 1.2.3.4 |
@@ -687,7 +687,7 @@ Feature: Pio::Match
687
687
  Scenario: read (file: open_flow13/oxm_masked_arp_tpa_field.raw)
688
688
  When I try to parse a file named "open_flow13/oxm_masked_arp_tpa_field.raw" with "Pio::Match" class
689
689
  Then it should finish successfully
690
- And the message have the following fields and values:
690
+ And the message has the following fields and values:
691
691
  | field | value |
692
692
  | ether_type | 2054 |
693
693
  | arp_target_protocol_address | 1.2.3.4 |
@@ -696,7 +696,7 @@ Feature: Pio::Match
696
696
  Scenario: read (file: open_flow13/oxm_arp_sha_field.raw)
697
697
  When I try to parse a file named "open_flow13/oxm_arp_sha_field.raw" with "Pio::Match" class
698
698
  Then it should finish successfully
699
- And the message have the following fields and values:
699
+ And the message has the following fields and values:
700
700
  | field | value |
701
701
  | ether_type | 2054 |
702
702
  | arp_sender_hardware_address | 11:22:33:44:55:66 |
@@ -704,7 +704,7 @@ Feature: Pio::Match
704
704
  Scenario: read (file: open_flow13/oxm_masked_arp_sha_field.raw)
705
705
  When I try to parse a file named "open_flow13/oxm_masked_arp_sha_field.raw" with "Pio::Match" class
706
706
  Then it should finish successfully
707
- And the message have the following fields and values:
707
+ And the message has the following fields and values:
708
708
  | field | value |
709
709
  | ether_type | 2054 |
710
710
  | arp_sender_hardware_address | 11:22:33:44:55:66 |
@@ -713,7 +713,7 @@ Feature: Pio::Match
713
713
  Scenario: read (file: open_flow13/oxm_arp_tha_field.raw)
714
714
  When I try to parse a file named "open_flow13/oxm_arp_tha_field.raw" with "Pio::Match" class
715
715
  Then it should finish successfully
716
- And the message have the following fields and values:
716
+ And the message has the following fields and values:
717
717
  | field | value |
718
718
  | ether_type | 2054 |
719
719
  | arp_target_hardware_address | 11:22:33:44:55:66 |
@@ -721,7 +721,7 @@ Feature: Pio::Match
721
721
  Scenario: read (file: open_flow13/oxm_masked_arp_tha_field.raw)
722
722
  When I try to parse a file named "open_flow13/oxm_masked_arp_tha_field.raw" with "Pio::Match" class
723
723
  Then it should finish successfully
724
- And the message have the following fields and values:
724
+ And the message has the following fields and values:
725
725
  | field | value |
726
726
  | ether_type | 2054 |
727
727
  | arp_target_hardware_address | 11:22:33:44:55:66 |
@@ -730,7 +730,7 @@ Feature: Pio::Match
730
730
  Scenario: read (file: open_flow13/oxm_ipv6_source_field.raw)
731
731
  When I try to parse a file named "open_flow13/oxm_ipv6_source_field.raw" with "Pio::Match" class
732
732
  Then it should finish successfully
733
- And the message have the following fields and values:
733
+ And the message has the following fields and values:
734
734
  | field | value |
735
735
  | ether_type | 34525 |
736
736
  | ipv6_source_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
@@ -738,7 +738,7 @@ Feature: Pio::Match
738
738
  Scenario: read (file: open_flow13/oxm_masked_ipv6_source_field.raw)
739
739
  When I try to parse a file named "open_flow13/oxm_masked_ipv6_source_field.raw" with "Pio::Match" class
740
740
  Then it should finish successfully
741
- And the message have the following fields and values:
741
+ And the message has the following fields and values:
742
742
  | field | value |
743
743
  | ether_type | 34525 |
744
744
  | ipv6_source_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
@@ -747,7 +747,7 @@ Feature: Pio::Match
747
747
  Scenario: read (file: open_flow13/oxm_ipv6_destination_field.raw)
748
748
  When I try to parse a file named "open_flow13/oxm_ipv6_destination_field.raw" with "Pio::Match" class
749
749
  Then it should finish successfully
750
- And the message have the following fields and values:
750
+ And the message has the following fields and values:
751
751
  | field | value |
752
752
  | ether_type | 34525 |
753
753
  | ipv6_destination_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
@@ -755,7 +755,7 @@ Feature: Pio::Match
755
755
  Scenario: read (file: open_flow13/oxm_masked_ipv6_destination_field.raw)
756
756
  When I try to parse a file named "open_flow13/oxm_masked_ipv6_destination_field.raw" with "Pio::Match" class
757
757
  Then it should finish successfully
758
- And the message have the following fields and values:
758
+ And the message has the following fields and values:
759
759
  | field | value |
760
760
  | ether_type | 34525 |
761
761
  | ipv6_destination_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
@@ -764,14 +764,14 @@ Feature: Pio::Match
764
764
  Scenario: read (file: open_flow13/oxm_tunnel_id_field.raw)
765
765
  When I try to parse a file named "open_flow13/oxm_tunnel_id_field.raw" with "Pio::Match" class
766
766
  Then it should finish successfully
767
- And the message have the following fields and values:
767
+ And the message has the following fields and values:
768
768
  | field | value |
769
769
  | tunnel_id | 1 |
770
770
 
771
771
  Scenario: read (file: open_flow13/oxm_masked_tunnel_id_field.raw)
772
772
  When I try to parse a file named "open_flow13/oxm_masked_tunnel_id_field.raw" with "Pio::Match" class
773
773
  Then it should finish successfully
774
- And the message have the following fields and values:
774
+ And the message has the following fields and values:
775
775
  | field | value |
776
776
  | tunnel_id | 1 |
777
777
  | tunnel_id_mask | 9223372036854775808 |
@@ -783,7 +783,7 @@ Feature: Pio::Match
783
783
  Scenario: read (file: open_flow13/oxm_experimenter_stratos_basic_dot11.raw)
784
784
  When I try to parse a file named "open_flow13/oxm_experimenter_stratos_basic_dot11.raw" with "Pio::Match" class
785
785
  Then it should finish successfully
786
- And the message have the following fields and values:
786
+ And the message has the following fields and values:
787
787
  | field | value |
788
788
  | match_fields.at(0).oxm_field | 0 |
789
789
  | match_fields.at(0).experimenter | 4278247501 |