pio 0.30.0 → 0.30.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 (442) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +6 -49
  4. data/Rakefile +4 -4
  5. data/features/{arp.feature → arp/arp.feature} +14 -30
  6. data/features/arp/arp_reply.feature +69 -0
  7. data/features/arp/arp_request.feature +67 -0
  8. data/features/dhcp.feature +157 -162
  9. data/features/ethernet_header.feature +149 -0
  10. data/features/icmp/icmp.feature +47 -0
  11. data/features/icmp/icmp_reply.feature +93 -0
  12. data/features/icmp/icmp_request.feature +89 -0
  13. data/features/ipv4_header.feature +89 -0
  14. data/features/lldp.feature +5 -8
  15. data/features/open_flow/header.feature +13 -0
  16. data/features/open_flow/nicira_resubmit.feature +4 -22
  17. data/features/open_flow/nicira_resubmit_table.feature +6 -16
  18. data/features/open_flow10/aggregate_stats_reply.feature +5 -7
  19. data/features/open_flow10/aggregate_stats_request.feature +12 -14
  20. data/features/open_flow10/bad_request.feature +7 -24
  21. data/features/open_flow10/barrier_reply.feature +14 -25
  22. data/features/open_flow10/barrier_request.feature +12 -25
  23. data/features/open_flow10/description_stats_reply.feature +9 -7
  24. data/features/open_flow10/description_stats_request.feature +12 -25
  25. data/features/open_flow10/echo_reply.feature +14 -35
  26. data/features/open_flow10/echo_request.feature +16 -39
  27. data/features/open_flow10/enqueue.feature +3 -4
  28. data/features/open_flow10/exact_match.feature +5 -5
  29. data/features/open_flow10/features_reply.feature +28 -73
  30. data/features/open_flow10/features_request.feature +10 -28
  31. data/features/open_flow10/flow_mod.feature +4 -188
  32. data/features/open_flow10/flow_removed.feature +28 -30
  33. data/features/open_flow10/flow_stats_reply.feature +5 -89
  34. data/features/open_flow10/flow_stats_request.feature +12 -42
  35. data/features/open_flow10/hello.feature +10 -32
  36. data/features/open_flow10/hello_failed.feature +7 -57
  37. data/features/open_flow10/packet_in.feature +130 -49
  38. data/features/open_flow10/packet_out.feature +29 -18
  39. data/features/open_flow10/port_stats_request.feature +8 -29
  40. data/features/open_flow10/port_status.feature +22 -21
  41. data/features/open_flow10/queue_stats_request.feature +12 -30
  42. data/features/open_flow10/send_out_port.feature +17 -25
  43. data/features/open_flow10/set_destination_mac_address.feature +3 -4
  44. data/features/open_flow10/set_ip_destination_address.feature +3 -4
  45. data/features/open_flow10/set_source_ip_address.feature +3 -4
  46. data/features/open_flow10/set_source_mac_address.feature +3 -4
  47. data/features/open_flow10/set_tos.feature +3 -4
  48. data/features/open_flow10/set_transport_destination_port.feature +3 -4
  49. data/features/open_flow10/set_transport_source_port.feature +3 -4
  50. data/features/open_flow10/set_vlan_priority.feature +3 -4
  51. data/features/open_flow10/set_vlan_vid.feature +3 -4
  52. data/features/open_flow10/strip_vlan_header.feature +3 -4
  53. data/features/open_flow10/table_stats_request.feature +11 -13
  54. data/features/open_flow10/vendor_action.feature +4 -5
  55. data/features/open_flow13/apply_actions.feature +15 -18
  56. data/features/open_flow13/bad_request.feature +7 -13
  57. data/features/open_flow13/copy_ttl_inwards.feature +13 -0
  58. data/features/open_flow13/copy_ttl_outwards.feature +13 -0
  59. data/features/open_flow13/decrement_ip_ttl.feature +11 -0
  60. data/features/open_flow13/echo_reply.feature +16 -42
  61. data/features/open_flow13/echo_request.feature +16 -42
  62. data/features/open_flow13/features_reply.feature +4 -25
  63. data/features/open_flow13/features_request.feature +7 -36
  64. data/features/open_flow13/flow_mod.feature +16 -76
  65. data/features/open_flow13/goto_table.feature +18 -20
  66. data/features/open_flow13/hello.feature +7 -37
  67. data/features/open_flow13/hello_failed.feature +7 -30
  68. data/features/open_flow13/match.feature +239 -248
  69. data/features/open_flow13/meter.feature +18 -20
  70. data/features/open_flow13/nicira_conjunction.feature +15 -0
  71. data/features/open_flow13/nicira_reg_load.feature +27 -42
  72. data/features/open_flow13/nicira_reg_move.feature +41 -35
  73. data/features/open_flow13/nicira_send_out_port.feature +21 -13
  74. data/features/open_flow13/nicira_stack_pop.feature +26 -0
  75. data/features/open_flow13/nicira_stack_push.feature +26 -0
  76. data/features/open_flow13/packet_in.feature +7 -34
  77. data/features/open_flow13/packet_out.feature +7 -45
  78. data/features/open_flow13/send_out_port.feature +19 -28
  79. data/features/open_flow13/set_arp_operation.feature +4 -5
  80. data/features/open_flow13/set_arp_sender_hardware_address.feature +3 -4
  81. data/features/open_flow13/set_arp_sender_protocol_address.feature +3 -4
  82. data/features/open_flow13/set_destination_mac_address.feature +3 -4
  83. data/features/open_flow13/set_ip_ttl.feature +12 -0
  84. data/features/open_flow13/set_metadata.feature +3 -4
  85. data/features/open_flow13/set_source_mac_address.feature +3 -4
  86. data/features/open_flow13/stats_request.feature +4 -7
  87. data/features/open_flow13/write_metadata.feature +20 -22
  88. data/features/open_flow_read.feature +24 -5
  89. data/features/open_flow_version.feature +1 -1
  90. data/features/parser.feature +8 -9
  91. data/features/step_definitions/open_flow_steps.rb +11 -16
  92. data/features/step_definitions/packet_data_steps.rb +16 -32
  93. data/features/step_definitions/ruby_steps.rb +7 -0
  94. data/features/step_definitions/show_stats_steps.rb +3 -3
  95. data/features/support/env.rb +1 -0
  96. data/features/support/hooks.rb +2 -2
  97. data/features/udp.feature +26 -27
  98. data/lib/pio.rb +1 -1
  99. data/lib/pio/arp.rb +9 -6
  100. data/lib/pio/arp/format.rb +3 -7
  101. data/lib/pio/arp/message.rb +8 -4
  102. data/lib/pio/arp/reply.rb +9 -32
  103. data/lib/pio/arp/request.rb +9 -33
  104. data/lib/pio/class_inspector.rb +18 -0
  105. data/lib/pio/dhcp.rb +2 -2
  106. data/lib/pio/dhcp/frame.rb +4 -4
  107. data/lib/pio/dhcp/optional_tlv.rb +3 -3
  108. data/lib/pio/ethernet_frame.rb +20 -0
  109. data/lib/pio/ethernet_header.rb +35 -13
  110. data/lib/pio/icmp.rb +8 -5
  111. data/lib/pio/icmp/format.rb +19 -22
  112. data/lib/pio/icmp/message.rb +18 -4
  113. data/lib/pio/icmp/reply.rb +8 -34
  114. data/lib/pio/icmp/request.rb +8 -43
  115. data/lib/pio/instance_inspector.rb +14 -0
  116. data/lib/pio/ipv4_address.rb +11 -11
  117. data/lib/pio/ipv4_header.rb +24 -2
  118. data/lib/pio/lldp/frame.rb +2 -2
  119. data/lib/pio/lldp/optional_tlv.rb +2 -2
  120. data/lib/pio/mac.rb +7 -3
  121. data/lib/pio/message.rb +50 -0
  122. data/lib/pio/monkey_patch/bindata_record.rb +6 -0
  123. data/lib/pio/monkey_patch/bindata_string.rb +10 -0
  124. data/lib/pio/monkey_patch/integer/base_conversions.rb +1 -1
  125. data/lib/pio/monkey_patch/uint.rb +9 -0
  126. data/lib/pio/monkey_patch/uint/base_conversions.rb +14 -0
  127. data/lib/pio/open_flow.rb +38 -52
  128. data/lib/pio/open_flow/action.rb +8 -4
  129. data/lib/pio/open_flow/buffer_id.rb +19 -0
  130. data/lib/pio/open_flow/datapath_id.rb +3 -3
  131. data/lib/pio/open_flow/error_message.rb +32 -0
  132. data/lib/pio/open_flow/flags.rb +15 -6
  133. data/lib/pio/open_flow/flow_match.rb +10 -0
  134. data/lib/pio/open_flow/header.rb +26 -0
  135. data/lib/pio/open_flow/hello_failed_code.rb +1 -1
  136. data/lib/pio/open_flow/instruction.rb +10 -0
  137. data/lib/pio/open_flow/message.rb +49 -14
  138. data/lib/pio/open_flow/nicira_resubmit.rb +13 -11
  139. data/lib/pio/open_flow/nicira_resubmit_table.rb +17 -10
  140. data/lib/pio/open_flow/parser.rb +19 -0
  141. data/lib/pio/open_flow/port.rb +2 -2
  142. data/lib/pio/open_flow/transaction_id.rb +2 -2
  143. data/lib/pio/open_flow/version.rb +22 -0
  144. data/lib/pio/open_flow10/actions.rb +16 -16
  145. data/lib/pio/open_flow10/aggregate_stats/reply.rb +2 -1
  146. data/lib/pio/open_flow10/aggregate_stats/request.rb +1 -3
  147. data/lib/pio/open_flow10/barrier/reply.rb +1 -1
  148. data/lib/pio/open_flow10/barrier/request.rb +1 -1
  149. data/lib/pio/open_flow10/description_stats/reply.rb +1 -1
  150. data/lib/pio/open_flow10/description_stats/request.rb +1 -3
  151. data/lib/pio/open_flow10/echo/reply.rb +3 -3
  152. data/lib/pio/open_flow10/echo/request.rb +3 -3
  153. data/lib/pio/open_flow10/enqueue.rb +3 -3
  154. data/lib/pio/open_flow10/error.rb +3 -13
  155. data/lib/pio/open_flow10/error/bad_request.rb +5 -29
  156. data/lib/pio/open_flow10/error/bad_request/bad_request_code.rb +35 -0
  157. data/lib/pio/open_flow10/error/error_type10.rb +1 -1
  158. data/lib/pio/open_flow10/error/hello_failed.rb +6 -4
  159. data/lib/pio/open_flow10/exact_match.rb +12 -10
  160. data/lib/pio/open_flow10/features/reply.rb +16 -31
  161. data/lib/pio/open_flow10/features/request.rb +1 -4
  162. data/lib/pio/open_flow10/flow_mod.rb +8 -33
  163. data/lib/pio/open_flow10/flow_mod/command.rb +28 -0
  164. data/lib/pio/open_flow10/flow_removed.rb +2 -17
  165. data/lib/pio/open_flow10/flow_removed/reason.rb +22 -0
  166. data/lib/pio/open_flow10/flow_stats/reply.rb +3 -4
  167. data/lib/pio/open_flow10/flow_stats/request.rb +1 -3
  168. data/lib/pio/open_flow10/hello.rb +1 -4
  169. data/lib/pio/open_flow10/match.rb +13 -12
  170. data/lib/pio/open_flow10/packet_in.rb +32 -28
  171. data/lib/pio/open_flow10/packet_in/reason.rb +25 -0
  172. data/lib/pio/open_flow10/packet_out.rb +5 -6
  173. data/lib/pio/open_flow10/phy_port16.rb +36 -58
  174. data/lib/pio/open_flow10/port_stats/request.rb +1 -3
  175. data/lib/pio/open_flow10/port_status.rb +23 -30
  176. data/lib/pio/open_flow10/port_status/reason.rb +21 -0
  177. data/lib/pio/open_flow10/queue_stats/request.rb +1 -3
  178. data/lib/pio/open_flow10/send_out_port.rb +2 -2
  179. data/lib/pio/open_flow10/set_tos.rb +2 -2
  180. data/lib/pio/open_flow10/set_transport_port.rb +4 -2
  181. data/lib/pio/open_flow10/set_vlan_priority.rb +1 -1
  182. data/lib/pio/open_flow10/set_vlan_vid.rb +1 -1
  183. data/lib/pio/open_flow10/stats_reply.rb +7 -10
  184. data/lib/pio/open_flow10/stats_request.rb +16 -15
  185. data/lib/pio/open_flow10/stats_type.rb +1 -1
  186. data/lib/pio/open_flow10/table_stats/request.rb +1 -3
  187. data/lib/pio/open_flow10/vendor_action.rb +22 -20
  188. data/lib/pio/open_flow13.rb +7 -0
  189. data/lib/pio/open_flow13/actions.rb +34 -32
  190. data/lib/pio/open_flow13/apply.rb +25 -22
  191. data/lib/pio/open_flow13/copy_ttl_inwards.rb +15 -0
  192. data/lib/pio/open_flow13/copy_ttl_outwards.rb +15 -0
  193. data/lib/pio/open_flow13/decrement_ip_ttl.rb +15 -0
  194. data/lib/pio/open_flow13/echo/reply.rb +3 -3
  195. data/lib/pio/open_flow13/echo/request.rb +3 -3
  196. data/lib/pio/open_flow13/error.rb +7 -18
  197. data/lib/pio/open_flow13/error/bad_request.rb +4 -3
  198. data/lib/pio/open_flow13/error/error_type13.rb +1 -1
  199. data/lib/pio/open_flow13/error/hello_failed.rb +3 -2
  200. data/lib/pio/open_flow13/features/reply.rb +9 -16
  201. data/lib/pio/open_flow13/features/request.rb +1 -1
  202. data/lib/pio/open_flow13/flow_mod.rb +14 -19
  203. data/lib/pio/open_flow13/goto_table.rb +26 -24
  204. data/lib/pio/open_flow13/hello.rb +3 -4
  205. data/lib/pio/open_flow13/match.rb +173 -9
  206. data/lib/pio/open_flow13/meter.rb +23 -20
  207. data/lib/pio/open_flow13/nicira_conjunction.rb +26 -0
  208. data/lib/pio/open_flow13/nicira_reg_load.rb +44 -24
  209. data/lib/pio/open_flow13/nicira_reg_move.rb +77 -35
  210. data/lib/pio/open_flow13/nicira_send_out_port.rb +37 -21
  211. data/lib/pio/open_flow13/nicira_stack_pop.rb +49 -0
  212. data/lib/pio/open_flow13/nicira_stack_push.rb +49 -0
  213. data/lib/pio/open_flow13/packet_in.rb +11 -8
  214. data/lib/pio/open_flow13/packet_out.rb +9 -8
  215. data/lib/pio/open_flow13/set_ip_ttl.rb +16 -0
  216. data/lib/pio/open_flow13/stats_request.rb +2 -4
  217. data/lib/pio/open_flow13/write_metadata.rb +40 -38
  218. data/lib/pio/options.rb +8 -3
  219. data/lib/pio/parser.rb +7 -16
  220. data/lib/pio/ruby_dumper.rb +69 -0
  221. data/lib/pio/type/ether_type.rb +31 -0
  222. data/lib/pio/type/ip_address.rb +8 -0
  223. data/lib/pio/type/mac_address.rb +10 -0
  224. data/lib/pio/udp.rb +3 -3
  225. data/lib/pio/udp_header.rb +1 -1
  226. data/lib/pio/version.rb +1 -1
  227. data/pio.gemspec +5 -38
  228. data/spec/pio/arp/reply_spec.rb +0 -4
  229. data/spec/pio/arp/request_spec.rb +0 -4
  230. data/spec/pio/arp_spec.rb +0 -4
  231. data/spec/pio/icmp/reply_spec.rb +4 -8
  232. data/spec/pio/icmp/request_spec.rb +6 -10
  233. data/spec/pio/icmp_spec.rb +8 -12
  234. data/spec/pio/monkey_patch/integer_spec.rb +23 -0
  235. data/spec/pio/open_flow/nicira_resubmit_spec.rb +19 -0
  236. data/spec/pio/open_flow/nicira_resubmit_table_spec.rb +20 -0
  237. data/spec/pio/open_flow10/error/hello_failed_spec.rb +2 -2
  238. data/spec/pio/open_flow10/flow_mod_spec.rb +24 -24
  239. data/spec/pio/open_flow10/flow_stats_request_spec.rb +3 -3
  240. data/spec/pio/open_flow10/hello_spec.rb +0 -2
  241. data/spec/pio/open_flow10/match_spec.rb +38 -38
  242. data/spec/pio/open_flow10/packet_out_spec.rb +0 -349
  243. data/spec/pio/open_flow10/phy_port16_spec.rb +5 -5
  244. data/spec/pio/open_flow13/error/hello_failed_spec.rb +2 -2
  245. data/spec/pio/open_flow13/goto_table_spec.rb +2 -2
  246. data/spec/pio/open_flow13/hello_spec.rb +15 -15
  247. data/spec/pio/open_flow13/match_spec.rb +29 -29
  248. data/spec/pio/open_flow13/meter_spec.rb +2 -2
  249. data/spec/pio/open_flow13/nicira_reg_load_spec.rb +71 -0
  250. data/spec/pio/open_flow13/nicira_reg_move_spec.rb +40 -0
  251. data/spec/pio/open_flow13/nicira_send_out_port_spec.rb +29 -0
  252. data/spec/pio/open_flow13/write_metadata_spec.rb +3 -3
  253. data/spec/pio/open_flow_spec.rb +6 -6
  254. data/spec/spec_helper.rb +1 -1
  255. data/spec/support/shared_examples_for_openflow_messages.rb +5 -13
  256. metadata +191 -790
  257. data/LICENSE +0 -674
  258. data/bin/_guard-core +0 -16
  259. data/bin/byebug +0 -16
  260. data/bin/cc-tddium-post-worker +0 -16
  261. data/bin/cdiff +0 -16
  262. data/bin/coderay +0 -16
  263. data/bin/colortab +0 -16
  264. data/bin/coveralls +0 -16
  265. data/bin/cucumber +0 -16
  266. data/bin/decolor +0 -16
  267. data/bin/flay +0 -16
  268. data/bin/flog +0 -16
  269. data/bin/guard +0 -16
  270. data/bin/htmldiff +0 -16
  271. data/bin/inch +0 -16
  272. data/bin/ldiff +0 -16
  273. data/bin/listen +0 -16
  274. data/bin/minitar +0 -16
  275. data/bin/pry +0 -16
  276. data/bin/rake +0 -16
  277. data/bin/reek +0 -16
  278. data/bin/relish +0 -16
  279. data/bin/restclient +0 -16
  280. data/bin/rspec +0 -16
  281. data/bin/rubocop +0 -16
  282. data/bin/ruby-parse +0 -16
  283. data/bin/ruby-rewrite +0 -16
  284. data/bin/ruby_parse +0 -16
  285. data/bin/ruby_parse_extract_error +0 -16
  286. data/bin/sparkr +0 -16
  287. data/bin/term_display +0 -16
  288. data/bin/term_mandel +0 -16
  289. data/bin/terminal-notifier +0 -16
  290. data/bin/thor +0 -16
  291. data/bin/unparser +0 -16
  292. data/bin/yard +0 -16
  293. data/bin/yardoc +0 -16
  294. data/bin/yri +0 -16
  295. data/features/arp-storm.pcap +0 -0
  296. data/features/arp.pcap +0 -0
  297. data/features/dhcp.pcap +0 -0
  298. data/features/icmp.feature +0 -130
  299. data/features/icmp.pcap +0 -0
  300. data/features/icmpv6.pcap +0 -0
  301. data/features/lldp.detailed.pcap +0 -0
  302. data/features/lldp.minimal.pcap +0 -0
  303. data/features/open_flow10/aggregate_stats_reply.raw +0 -0
  304. data/features/open_flow10/aggregate_stats_request.raw +0 -0
  305. data/features/open_flow10/bad_request.raw +0 -0
  306. data/features/open_flow10/barrier_reply.raw +0 -0
  307. data/features/open_flow10/barrier_request.raw +0 -0
  308. data/features/open_flow10/description_stats_reply.raw +0 -0
  309. data/features/open_flow10/description_stats_request.raw +0 -0
  310. data/features/open_flow10/echo_reply.raw +0 -0
  311. data/features/open_flow10/echo_request.raw +0 -0
  312. data/features/open_flow10/error.raw +0 -0
  313. data/features/open_flow10/features_reply.raw +0 -0
  314. data/features/open_flow10/features_request.raw +0 -0
  315. data/features/open_flow10/flow_mod_add.raw +0 -0
  316. data/features/open_flow10/flow_mod_delete.raw +0 -0
  317. data/features/open_flow10/flow_mod_delete_strict.raw +0 -0
  318. data/features/open_flow10/flow_mod_modify.raw +0 -0
  319. data/features/open_flow10/flow_mod_modify_strict.raw +0 -0
  320. data/features/open_flow10/flow_removed.raw +0 -0
  321. data/features/open_flow10/flow_stats_reply.raw +0 -0
  322. data/features/open_flow10/flow_stats_request.raw +0 -0
  323. data/features/open_flow10/get_config_reply.raw +0 -0
  324. data/features/open_flow10/get_config_request.raw +0 -0
  325. data/features/open_flow10/hello.raw +0 -0
  326. data/features/open_flow10/hello_failed.raw +0 -0
  327. data/features/open_flow10/nx_flow_mod_add.raw +0 -0
  328. data/features/open_flow10/nx_flow_mod_delete.raw +0 -0
  329. data/features/open_flow10/nx_flow_mod_delete_strict.raw +0 -0
  330. data/features/open_flow10/nx_flow_mod_modify.raw +0 -0
  331. data/features/open_flow10/nx_flow_mod_modify_strict.raw +0 -0
  332. data/features/open_flow10/nxast_learn.raw +0 -0
  333. data/features/open_flow10/packet_in.raw +0 -0
  334. data/features/open_flow10/packet_in_arp_reply.raw +0 -0
  335. data/features/open_flow10/packet_in_arp_request.raw +0 -0
  336. data/features/open_flow10/packet_in_cbench.raw +0 -0
  337. data/features/open_flow10/packet_out.raw +0 -0
  338. data/features/open_flow10/port_mod.raw +0 -0
  339. data/features/open_flow10/port_stats_reply.raw +0 -0
  340. data/features/open_flow10/port_stats_request.raw +0 -0
  341. data/features/open_flow10/port_status.raw +0 -0
  342. data/features/open_flow10/queue_get_config_reply.raw +0 -0
  343. data/features/open_flow10/queue_get_config_request.raw +0 -0
  344. data/features/open_flow10/queue_stats_request.raw +0 -0
  345. data/features/open_flow10/set_config.raw +0 -0
  346. data/features/open_flow10/table_stats_reply.raw +0 -0
  347. data/features/open_flow10/table_stats_request.raw +0 -0
  348. data/features/open_flow10/vendor.raw +0 -0
  349. data/features/open_flow10/vendor_stats_request.raw +0 -0
  350. data/features/open_flow13/action_copy_ttl_in.raw +0 -0
  351. data/features/open_flow13/action_copy_ttl_out.raw +0 -0
  352. data/features/open_flow13/action_dec_mpls_ttl.raw +0 -0
  353. data/features/open_flow13/action_dec_nw_ttl.raw +0 -0
  354. data/features/open_flow13/action_group.raw +0 -0
  355. data/features/open_flow13/action_pop_mpls.raw +0 -0
  356. data/features/open_flow13/action_pop_pbb.raw +0 -0
  357. data/features/open_flow13/action_pop_vlan.raw +0 -0
  358. data/features/open_flow13/action_push_mpls.raw +0 -0
  359. data/features/open_flow13/action_push_pbb.raw +0 -0
  360. data/features/open_flow13/action_push_vlan.raw +0 -0
  361. data/features/open_flow13/action_set_field.raw +0 -0
  362. data/features/open_flow13/action_set_mpls_ttl.raw +0 -0
  363. data/features/open_flow13/action_set_nw_ttl.raw +0 -0
  364. data/features/open_flow13/action_set_queue.raw +0 -0
  365. data/features/open_flow13/apply_actions.raw +0 -0
  366. data/features/open_flow13/bad_request.raw +0 -0
  367. data/features/open_flow13/echo_reply_body.raw +0 -0
  368. data/features/open_flow13/echo_reply_no_body.raw +0 -0
  369. data/features/open_flow13/echo_request_body.raw +0 -0
  370. data/features/open_flow13/echo_request_no_body.raw +0 -0
  371. data/features/open_flow13/features_reply.raw +0 -0
  372. data/features/open_flow13/features_request.raw +0 -0
  373. data/features/open_flow13/flow_add_apply_no_match.raw +0 -0
  374. data/features/open_flow13/flow_mod_add_apply_no_match.raw +0 -0
  375. data/features/open_flow13/flow_mod_no_match_or_instructions.raw +0 -0
  376. data/features/open_flow13/hello_failed.raw +0 -0
  377. data/features/open_flow13/hello_no_version_bitmap.raw +0 -0
  378. data/features/open_flow13/hello_version_bitmap.raw +0 -0
  379. data/features/open_flow13/instruction_clear_actions.raw +0 -0
  380. data/features/open_flow13/instruction_goto_table.raw +0 -0
  381. data/features/open_flow13/instruction_meter.raw +0 -0
  382. data/features/open_flow13/instruction_write_actions.raw +0 -0
  383. data/features/open_flow13/instruction_write_metadata.raw +0 -0
  384. data/features/open_flow13/oxm_arp_op_field.raw +0 -0
  385. data/features/open_flow13/oxm_arp_sha_field.raw +0 -0
  386. data/features/open_flow13/oxm_arp_spa_field.raw +0 -0
  387. data/features/open_flow13/oxm_arp_tha_field.raw +0 -0
  388. data/features/open_flow13/oxm_arp_tpa_field.raw +0 -0
  389. data/features/open_flow13/oxm_ether_destination_field.raw +0 -0
  390. data/features/open_flow13/oxm_ether_source_field.raw +0 -0
  391. data/features/open_flow13/oxm_ether_type_field.raw +0 -0
  392. data/features/open_flow13/oxm_experimenter_stratos_basic_dot11.raw +0 -0
  393. data/features/open_flow13/oxm_icmpv4_code_field.raw +0 -0
  394. data/features/open_flow13/oxm_icmpv4_type_field.raw +0 -0
  395. data/features/open_flow13/oxm_in_phy_port_field.raw +0 -0
  396. data/features/open_flow13/oxm_in_port_field.raw +0 -0
  397. data/features/open_flow13/oxm_invalid_field.raw +0 -0
  398. data/features/open_flow13/oxm_ip_dscp_field.raw +0 -0
  399. data/features/open_flow13/oxm_ip_ecn_field.raw +0 -0
  400. data/features/open_flow13/oxm_ipv4_destination_field.raw +0 -0
  401. data/features/open_flow13/oxm_ipv4_source_field.raw +0 -0
  402. data/features/open_flow13/oxm_ipv6_destination_field.raw +0 -0
  403. data/features/open_flow13/oxm_ipv6_source_field.raw +0 -0
  404. data/features/open_flow13/oxm_masked_arp_sha_field.raw +0 -0
  405. data/features/open_flow13/oxm_masked_arp_spa_field.raw +0 -0
  406. data/features/open_flow13/oxm_masked_arp_tha_field.raw +0 -0
  407. data/features/open_flow13/oxm_masked_arp_tpa_field.raw +0 -0
  408. data/features/open_flow13/oxm_masked_ether_destination_field.raw +0 -0
  409. data/features/open_flow13/oxm_masked_ether_source_field.raw +0 -0
  410. data/features/open_flow13/oxm_masked_ipv4_destination_field.raw +0 -0
  411. data/features/open_flow13/oxm_masked_ipv4_source_field.raw +0 -0
  412. data/features/open_flow13/oxm_masked_ipv6_destination_field.raw +0 -0
  413. data/features/open_flow13/oxm_masked_ipv6_source_field.raw +0 -0
  414. data/features/open_flow13/oxm_masked_tunnel_id_field.raw +0 -0
  415. data/features/open_flow13/oxm_metadata_field.raw +0 -0
  416. data/features/open_flow13/oxm_metadata_masked_field.raw +0 -0
  417. data/features/open_flow13/oxm_no_fields.raw +0 -0
  418. data/features/open_flow13/oxm_sctp_destination_field.raw +0 -0
  419. data/features/open_flow13/oxm_sctp_source_field.raw +0 -0
  420. data/features/open_flow13/oxm_tcp_destination_field.raw +0 -0
  421. data/features/open_flow13/oxm_tcp_field.raw +0 -0
  422. data/features/open_flow13/oxm_tcp_source_field.raw +0 -0
  423. data/features/open_flow13/oxm_tunnel_id_field.raw +0 -0
  424. data/features/open_flow13/oxm_udp_destination_field.raw +0 -0
  425. data/features/open_flow13/oxm_udp_field.raw +0 -0
  426. data/features/open_flow13/oxm_udp_source_field.raw +0 -0
  427. data/features/open_flow13/oxm_vlan_pcp_field.raw +0 -0
  428. data/features/open_flow13/oxm_vlan_vid_field.raw +0 -0
  429. data/features/open_flow13/packet_in.raw +0 -0
  430. data/features/open_flow13/packet_out.raw +0 -0
  431. data/features/open_flow13/send_out_port.raw +0 -0
  432. data/features/open_flow13/table_stats_reply.raw +0 -0
  433. data/features/open_flow13/table_stats_request.raw +0 -0
  434. data/features/step_definitions/LICENSE +0 -675
  435. data/features/udp_no_payload.raw +0 -0
  436. data/features/udp_with_payload.raw +0 -0
  437. data/lib/pio/icmp/options.rb +0 -21
  438. data/lib/pio/open_flow/error.rb +0 -19
  439. data/lib/pio/open_flow/open_flow_header.rb +0 -31
  440. data/lib/pio/open_flow13/buffer_id.rb +0 -17
  441. data/spec/pio/arp/reply/options_spec.rb +0 -143
  442. data/spec/pio/arp/request/options_spec.rb +0 -113
@@ -1,12 +1,11 @@
1
1
  @open_flow13
2
- Feature: Pio::SendOutPort
2
+ Feature: SendOutPort
3
3
  Scenario: new(1)
4
- When I try to create an OpenFlow action with:
4
+ When I create an OpenFlow action with:
5
5
  """
6
6
  Pio::SendOutPort.new(1)
7
7
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
8
+ Then the message has the following fields and values:
10
9
  | field | value |
11
10
  | action_type | 0 |
12
11
  | action_length | 16 |
@@ -14,12 +13,11 @@ Feature: Pio::SendOutPort
14
13
  | max_length | :no_buffer |
15
14
 
16
15
  Scenario: new(:all)
17
- When I try to create an OpenFlow action with:
16
+ When I create an OpenFlow action with:
18
17
  """
19
18
  Pio::SendOutPort.new(:all)
20
19
  """
21
- Then it should finish successfully
22
- And the action has the following fields and values:
20
+ Then the action has the following fields and values:
23
21
  | field | value |
24
22
  | action_type | 0 |
25
23
  | action_length | 16 |
@@ -27,12 +25,11 @@ Feature: Pio::SendOutPort
27
25
  | max_length | :no_buffer |
28
26
 
29
27
  Scenario: new(:controller)
30
- When I try to create an OpenFlow action with:
28
+ When I create an OpenFlow action with:
31
29
  """
32
30
  Pio::SendOutPort.new(:controller)
33
31
  """
34
- Then it should finish successfully
35
- And the action has the following fields and values:
32
+ Then the action has the following fields and values:
36
33
  | field | value |
37
34
  | action_type | 0 |
38
35
  | action_length | 16 |
@@ -40,12 +37,11 @@ Feature: Pio::SendOutPort
40
37
  | max_length | :no_buffer |
41
38
 
42
39
  Scenario: new(:local)
43
- When I try to create an OpenFlow action with:
40
+ When I create an OpenFlow action with:
44
41
  """
45
42
  Pio::SendOutPort.new(:local)
46
43
  """
47
- Then it should finish successfully
48
- And the action has the following fields and values:
44
+ Then the action has the following fields and values:
49
45
  | field | value |
50
46
  | action_type | 0 |
51
47
  | action_length | 16 |
@@ -53,12 +49,11 @@ Feature: Pio::SendOutPort
53
49
  | max_length | :no_buffer |
54
50
 
55
51
  Scenario: new(:table)
56
- When I try to create an OpenFlow action with:
52
+ When I create an OpenFlow action with:
57
53
  """
58
54
  Pio::SendOutPort.new(:table)
59
55
  """
60
- Then it should finish successfully
61
- And the action has the following fields and values:
56
+ Then the action has the following fields and values:
62
57
  | field | value |
63
58
  | action_type | 0 |
64
59
  | action_length | 16 |
@@ -66,12 +61,11 @@ Feature: Pio::SendOutPort
66
61
  | max_length | :no_buffer |
67
62
 
68
63
  Scenario: new(:in_port)
69
- When I try to create an OpenFlow action with:
64
+ When I create an OpenFlow action with:
70
65
  """
71
66
  Pio::SendOutPort.new(:in_port)
72
67
  """
73
- Then it should finish successfully
74
- And the action has the following fields and values:
68
+ Then the action has the following fields and values:
75
69
  | field | value |
76
70
  | action_type | 0 |
77
71
  | action_length | 16 |
@@ -79,12 +73,11 @@ Feature: Pio::SendOutPort
79
73
  | max_length | :no_buffer |
80
74
 
81
75
  Scenario: new(:normal)
82
- When I try to create an OpenFlow action with:
76
+ When I create an OpenFlow action with:
83
77
  """
84
78
  Pio::SendOutPort.new(:normal)
85
79
  """
86
- Then it should finish successfully
87
- And the action has the following fields and values:
80
+ Then the action has the following fields and values:
88
81
  | field | value |
89
82
  | action_type | 0 |
90
83
  | action_length | 16 |
@@ -92,12 +85,11 @@ Feature: Pio::SendOutPort
92
85
  | max_length | :no_buffer |
93
86
 
94
87
  Scenario: new(:flood)
95
- When I try to create an OpenFlow action with:
88
+ When I create an OpenFlow action with:
96
89
  """
97
90
  Pio::SendOutPort.new(:flood)
98
91
  """
99
- Then it should finish successfully
100
- And the action has the following fields and values:
92
+ Then the action has the following fields and values:
101
93
  | field | value |
102
94
  | action_type | 0 |
103
95
  | action_length | 16 |
@@ -105,9 +97,8 @@ Feature: Pio::SendOutPort
105
97
  | max_length | :no_buffer |
106
98
 
107
99
  Scenario: read
108
- When I try to parse a file named "open_flow13/send_out_port.raw" with "Pio::SendOutPort" class
109
- Then it should finish successfully
110
- And the message has the following fields and values:
100
+ When I parse a file named "open_flow13/send_out_port.raw" with "Pio::SendOutPort" class
101
+ Then the message has the following fields and values:
111
102
  | field | value |
112
103
  | action_type | 0 |
113
104
  | action_length | 16 |
@@ -1,13 +1,12 @@
1
1
  @open_flow13
2
- Feature: Pio::SetArpOperation
2
+ Feature: SetArpOperation
3
3
 
4
4
  Scenario: new(Pio::Arp::Reply::OPERATION)
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
- Pio::SetArpOperation.new(Pio::Arp::Reply::OPERATION)
7
+ Pio::SetArpOperation.new(Pio::Arp::Reply.operation)
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type | 25 |
13
12
  | action_length | 16 |
@@ -1,13 +1,12 @@
1
1
  @open_flow13
2
- Feature: Pio::SetArpSenderHardwareAddress
2
+ Feature: SetArpSenderHardwareAddress
3
3
 
4
4
  Scenario: new('00:00:de:ad:be:ef')
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::SetArpSenderHardwareAddress.new('00:00:de:ad:be:ef')
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type | 25 |
13
12
  | action_length | 16 |
@@ -1,13 +1,12 @@
1
1
  @open_flow13
2
- Feature: Pio::SetArpSenderProtocolAddress
2
+ Feature: SetArpSenderProtocolAddress
3
3
 
4
4
  Scenario: new('192.168.1.1')
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::SetArpSenderProtocolAddress.new('192.168.1.1')
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type | 25 |
13
12
  | action_length | 16 |
@@ -1,13 +1,12 @@
1
1
  @open_flow13
2
- Feature: Pio::SetDestinationMacAddress
2
+ Feature: SetDestinationMacAddress
3
3
 
4
4
  Scenario: new('11:22:33:44:55:66')
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::SetDestinationMacAddress.new('11:22:33:44:55:66')
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type | 25 |
13
12
  | action_length | 16 |
@@ -0,0 +1,12 @@
1
+ @open_flow13
2
+ Feature: SetIpTtl
3
+
4
+ Scenario: new(10)
5
+ When I create an OpenFlow action with:
6
+ """
7
+ Pio::SetIpTtl.new(10)
8
+ """
9
+ Then the action has the following fields and values:
10
+ | field | value |
11
+ | action_type | 23 |
12
+ | ttl | 10 |
@@ -1,13 +1,12 @@
1
1
  @open_flow13
2
- Feature: Pio::SetMetadata
2
+ Feature: SetMetadata
3
3
 
4
4
  Scenario: new(0x123)
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::SetMetadata.new(0x123)
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type | 25 |
13
12
  | action_length | 16 |
@@ -1,13 +1,12 @@
1
1
  @open_flow13
2
- Feature: Pio::SetSourceMacAddress
2
+ Feature: SetSourceMacAddress
3
3
 
4
4
  Scenario: new('11:22:33:44:55:66')
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::SetSourceMacAddress.new('11:22:33:44:55:66')
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type | 25 |
13
12
  | action_length | 16 |
@@ -1,19 +1,16 @@
1
- Feature: Pio::StatsRequest
1
+ Feature: StatsRequest
2
2
  Background:
3
3
  Given I use OpenFlow 1.3
4
4
 
5
5
  @wip
6
6
  Scenario: new
7
- When I try to create an OpenFlow message with:
7
+ When I create an OpenFlow message with:
8
8
  """
9
9
  Pio::StatsRequest.new(stats_type: :table)
10
10
  """
11
- Then it should finish successfully
12
- And the message has the following fields and values:
11
+ Then the message has the following fields and values:
13
12
  | field | value |
14
- | ofp_version | 4 |
15
- | message_type | 16 |
16
- | message_length | 12 |
13
+ | version | 4 |
17
14
  | transaction_id | 0 |
18
15
  | xid | 0 |
19
16
  | stats_type | :table |
@@ -1,28 +1,26 @@
1
1
  @open_flow13
2
- Feature: Pio::WriteMetadata
2
+ Feature: WriteMetadata
3
3
  Scenario: new(metadata: 1)
4
- When I try to create an OpenFlow instruction with:
4
+ When I create an OpenFlow instruction with:
5
5
  """
6
- Pio::WriteMetadata.new(metadata: 1)
6
+ Pio::OpenFlow13::WriteMetadata.new(metadata: 1)
7
7
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
10
- | field | value |
11
- | class | Pio::WriteMetadata |
12
- | instruction_type | 2 |
13
- | instruction_length | 24 |
14
- | to_binary_s.length | 24 |
15
- | metadata | 1 |
16
- | metadata_mask | 0 |
8
+ Then the message has the following fields and values:
9
+ | field | value |
10
+ | class | Pio::OpenFlow13::WriteMetadata |
11
+ | instruction_type | 2 |
12
+ | instruction_length | 24 |
13
+ | to_binary_s.length | 24 |
14
+ | metadata | 1 |
15
+ | metadata_mask | 0 |
17
16
 
18
17
  Scenario: read
19
- When I try to parse a file named "open_flow13/instruction_write_metadata.raw" with "Pio::WriteMetadata" class
20
- Then it should finish successfully
21
- And the message has the following fields and values:
22
- | field | value |
23
- | class | Pio::WriteMetadata |
24
- | instruction_type | 2 |
25
- | instruction_length | 24 |
26
- | to_binary_s.length | 24 |
27
- | metadata | 1 |
28
- | metadata_mask | 1 |
18
+ When I parse a file named "open_flow13/instruction_write_metadata.raw" with "Pio::OpenFlow13::WriteMetadata" class
19
+ Then the message has the following fields and values:
20
+ | field | value |
21
+ | class | Pio::OpenFlow13::WriteMetadata |
22
+ | instruction_type | 2 |
23
+ | instruction_length | 24 |
24
+ | to_binary_s.length | 24 |
25
+ | metadata | 1 |
26
+ | metadata_mask | 1 |
@@ -1,5 +1,5 @@
1
- Feature: Pio::OpenFlow.read
2
- Scenario: OpenFlow10
1
+ Feature: OpenFlow.read
2
+ Scenario: OpenFlow 1.0
3
3
  Given I switch the Pio::OpenFlow version to "OpenFlow10"
4
4
  Then the following each raw file should be parsed into its corresponding object using OpenFlow.read
5
5
  | raw file | result object |
@@ -19,8 +19,27 @@ Feature: Pio::OpenFlow.read
19
19
  | open_flow10/flow_stats_request.raw | Pio::OpenFlow10::FlowStats::Request |
20
20
  | open_flow10/hello.raw | Pio::OpenFlow10::Hello |
21
21
  | open_flow10/hello_failed.raw | Pio::OpenFlow10::Error::HelloFailed |
22
- | open_flow10/packet_in.raw | Pio::OpenFlow10::PacketIn |
23
22
  | open_flow10/packet_out.raw | Pio::OpenFlow10::PacketOut |
23
+ | open_flow10/port_stats_request.raw | Pio::OpenFlow10::PortStats::Request |
24
24
  | open_flow10/port_status.raw | Pio::OpenFlow10::PortStatus |
25
- | open_flow13/bad_request.raw | Pio::OpenFlow13::Error::BadRequest |
26
- | open_flow13/hello_failed.raw | Pio::OpenFlow13::Error::HelloFailed |
25
+ | open_flow10/queue_stats_request.raw | Pio::OpenFlow10::QueueStats::Request |
26
+ | open_flow10/table_stats_request.raw | Pio::OpenFlow10::TableStats::Request |
27
+
28
+ Scenario: OpenFlow 1.3
29
+ Given I switch the Pio::OpenFlow version to "OpenFlow13"
30
+ Then the following each raw file should be parsed into its corresponding object using OpenFlow.read
31
+ | raw file | result object |
32
+ | open_flow13/bad_request.raw | Pio::OpenFlow13::Error::BadRequest |
33
+ | open_flow13/echo_reply_body.raw | Pio::OpenFlow13::Echo::Reply |
34
+ | open_flow13/echo_reply_no_body.raw | Pio::OpenFlow13::Echo::Reply |
35
+ | open_flow13/echo_request_body.raw | Pio::OpenFlow13::Echo::Request |
36
+ | open_flow13/echo_request_no_body.raw | Pio::OpenFlow13::Echo::Request |
37
+ | open_flow13/features_reply.raw | Pio::OpenFlow13::Features::Reply |
38
+ | open_flow13/features_request.raw | Pio::OpenFlow13::Features::Request |
39
+ | open_flow13/flow_mod_add_apply_no_match.raw | Pio::OpenFlow13::FlowMod |
40
+ | open_flow13/flow_mod_no_match_or_instructions.raw | Pio::OpenFlow13::FlowMod |
41
+ | open_flow13/hello_failed.raw | Pio::OpenFlow13::Error::HelloFailed |
42
+ | open_flow13/hello_no_version_bitmap.raw | Pio::OpenFlow13::Hello |
43
+ | open_flow13/hello_version_bitmap.raw | Pio::OpenFlow13::Hello |
44
+ | open_flow13/packet_in.raw | Pio::OpenFlow13::PacketIn |
45
+ | open_flow13/packet_out.raw | Pio::OpenFlow13::PacketOut |
@@ -1,4 +1,4 @@
1
- Feature: Pio::OpenFlow.version
1
+ Feature: OpenFlow.version
2
2
  Scenario: OpenFlow 1.0
3
3
  Given I switch the Pio::OpenFlow version to "OpenFlow10"
4
4
  When I get the OpenFlow version string
@@ -1,10 +1,9 @@
1
- Feature: Pio::Parser
1
+ Feature: Parser
2
2
  Scenario: parse icmpv6.pcap
3
- When I try to parse a file named "icmpv6.pcap" with "Pio::Parser" class
4
- Then it should finish successfully
5
- And the message #1 have the following fields and values:
6
- | field | value |
7
- | class | Pio::Parser::EthernetFrame |
8
- | destination_mac | 00:60:97:07:69:ea |
9
- | source_mac | 00:00:86:05:80:da |
10
- | ether_type | 34525 |
3
+ When I parse a file named "icmpv6.pcap" with "Pio::Parser" class
4
+ Then the message #1 have the following fields and values:
5
+ | field | value |
6
+ | class | Pio::EthernetFrame |
7
+ | destination_mac | 00:60:97:07:69:ea |
8
+ | source_mac | 00:00:86:05:80:da |
9
+ | ether_type | 34525 |
@@ -1,40 +1,35 @@
1
1
  Given(/^I switch the Pio::OpenFlow version to "([^"]*)"$/) do |version|
2
- Pio::OpenFlow.switch_version version.to_sym
2
+ Pio::OpenFlow.version = version
3
3
  end
4
4
 
5
5
  When(/^I get the OpenFlow version string$/) do
6
- @version = Pio::OpenFlow.version
6
+ @version = Pio::OpenFlow.version.to_s
7
7
  end
8
8
 
9
9
  Then(/^the version string should be "([^"]*)"$/) do |expected_version_string|
10
10
  expect(@version).to eq(expected_version_string)
11
11
  end
12
12
 
13
- When(/^I try to create a packet with:$/) do |ruby_code|
14
- begin
15
- @result = Pio.module_eval(ruby_code)
16
- rescue
17
- @last_error = $ERROR_INFO
18
- end
13
+ When(/^I create a packet with:$/) do |ruby_code|
14
+ cd('.') { @result = Pio.module_eval(ruby_code) }
19
15
  end
20
16
 
21
- When(/^I try to create an OpenFlow message with:$/) do |ruby_code|
22
- step 'I try to create a packet with:', ruby_code
17
+ When(/^I create an OpenFlow message with:$/) do |ruby_code|
18
+ step 'I create a packet with:', ruby_code
23
19
  end
24
20
 
25
- When(/^I try to create an OpenFlow action with:$/) do |ruby_code|
26
- step 'I try to create a packet with:', ruby_code
21
+ When(/^I create an OpenFlow action with:$/) do |ruby_code|
22
+ step 'I create a packet with:', ruby_code
27
23
  end
28
24
 
29
- When(/^I try to create an OpenFlow instruction with:$/) do |ruby_code|
30
- step 'I try to create a packet with:', ruby_code
25
+ When(/^I create an OpenFlow instruction with:$/) do |ruby_code|
26
+ step 'I create a packet with:', ruby_code
31
27
  end
32
28
 
33
29
  # rubocop:disable LineLength
34
30
  Then(/^the following each raw file should be parsed into its corresponding object using OpenFlow\.read$/) do |table|
35
31
  table.hashes.each do |each|
36
- step %(I try to parse a file named "#{each['raw file']}" with "OpenFlow" class)
37
- step 'it should finish successfully'
32
+ step %(I parse a file named "#{each['raw file']}" with "Pio::OpenFlow" class)
38
33
  step %(the message should be a "#{each['result object']}")
39
34
  end
40
35
  end
@@ -1,43 +1,27 @@
1
- # rubocop:disable LineLength
2
- When(/^I try to parse a file named "(.*?\.raw)" with "(.*?)" class$/) do |path, klass|
3
- full_path = File.expand_path(File.join(__dir__, '..', path))
4
- raw_data = IO.read(full_path)
1
+ When(/^I parse a file named "(.*?\.raw)" with "(.*?)" class$/) do |path, klass|
2
+ raw_data = IO.read(expand_path("%/#{path}"))
5
3
  parser_klass = Pio.const_get(klass)
6
- begin
7
- @result = parser_klass.read(raw_data)
8
- rescue
9
- @last_error = $ERROR_INFO
10
- end
4
+ @result = parser_klass.read(raw_data)
11
5
  end
12
- # rubocop:enable LineLength
13
6
 
14
- # rubocop:disable LineLength
15
- When(/^I try to parse a file named "(.*?\.pcap)" with "(.*?)" class$/) do |path, klass|
16
- full_path = File.expand_path(File.join(__dir__, '..', path))
17
- pcap = Pio::Pcap::Frame.read(IO.read(full_path))
7
+ When(/^I parse a file named "(.*?\.pcap)" with "(.*?)" class$/) do |path, klass|
8
+ pcap = Pio::Pcap::Frame.read(IO.read(expand_path("%/#{path}")))
18
9
  parser_klass = Pio.const_get(klass)
19
- begin
20
- @result = pcap.records.each_with_object([]) do |each, result|
21
- result << parser_klass.read(each.data)
22
- end
23
- rescue
24
- @last_error = $ERROR_INFO
10
+ @result = pcap.records.each_with_object([]) do |each, result|
11
+ result << parser_klass.read(each.data)
25
12
  end
26
13
  end
27
- # rubocop:enable LineLength
28
-
29
- Then(/^it should finish successfully$/) do
30
- expect(@last_error).to be_nil
31
- end
32
-
33
- Then(/^it should fail with "([^"]*)", "([^"]*)"$/) do |error, message|
34
- expect(@last_error.class.to_s).to eq(error)
35
- expect(@last_error.message).to eq(message)
36
- end
37
14
 
38
15
  When(/^I create an exact match from "(.*?)"$/) do |path|
39
- full_path = File.expand_path(File.join(__dir__, '..', path))
40
- @result = Pio::ExactMatch.new(Pio::PacketIn.read(IO.read(full_path)))
16
+ raw_data = case File.extname(path)
17
+ when '.raw'
18
+ IO.read(expand_path("%/#{path}"))
19
+ when '.rb'
20
+ Pio.module_eval(IO.read(expand_path("%/#{path}")))
21
+ else
22
+ raise
23
+ end
24
+ @result = Pio::ExactMatch.new(Pio::PacketIn.read(raw_data))
41
25
  end
42
26
 
43
27
  Then(/^the message should be a "([^"]*)"$/) do |expected_klass|