trema 0.4.6 → 0.4.7

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 (291) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/.travis.yml +24 -7
  4. data/Gemfile +19 -27
  5. data/Guardfile +6 -0
  6. data/README.md +13 -5
  7. data/Rakefile +418 -415
  8. data/bin/quality +2 -2
  9. data/bin/trema +103 -105
  10. data/bin/trema-config +7 -7
  11. data/build.rb +2 -2
  12. data/cruise.rb +109 -83
  13. data/features/dsl/switch_port_specifier.feature +1 -1
  14. data/features/examples/dumper.feature +9 -41
  15. data/features/examples/hello_trema.feature +1 -1
  16. data/features/examples/learning_switch.feature +7 -7
  17. data/features/examples/list_switches.feature +5 -5
  18. data/features/examples/message.set_config.feature +11 -11
  19. data/features/examples/message.vendor-action.feature +7 -7
  20. data/features/examples/message.vendor-stats-request.feature +1 -1
  21. data/features/examples/multi_learning_switch.feature +7 -7
  22. data/features/examples/openflow_message.echo.feature +15 -15
  23. data/features/examples/openflow_message.features_request.feature +12 -12
  24. data/features/examples/openflow_message.hello.feature +13 -13
  25. data/features/examples/packet_in.feature +8 -8
  26. data/features/examples/patch_panel.feature +1 -1
  27. data/features/examples/repeater_hub.feature +7 -7
  28. data/features/examples/switch_info.feature +16 -16
  29. data/features/examples/switch_monitor.feature +11 -11
  30. data/features/examples/transparent_firewall.feature +73 -0
  31. data/features/handlers/switch_ready.feature +1 -1
  32. data/features/step_definitions/misc_steps.rb +24 -24
  33. data/features/step_definitions/send_packets_steps.rb +2 -2
  34. data/features/step_definitions/stats_steps.rb +6 -6
  35. data/features/support/env.rb +15 -15
  36. data/features/support/hooks.rb +9 -9
  37. data/features/switch_event/add_forward_entry.feature +3 -3
  38. data/features/switch_event/delete_forward_entry.feature +3 -3
  39. data/features/switch_event/dump_forward_entries.feature +2 -2
  40. data/features/switch_event/set_forward_entries.feature +2 -2
  41. data/features/trema_commands/dump_flows.feature +1 -0
  42. data/features/trema_commands/help.feature +1 -0
  43. data/features/trema_commands/help_option.feature +1 -0
  44. data/features/trema_commands/kill.feature +1 -0
  45. data/features/trema_commands/killall.feature +1 -0
  46. data/features/trema_commands/port_down.feature +1 -0
  47. data/features/trema_commands/port_up.feature +1 -0
  48. data/features/trema_commands/reset_stats.feature +1 -0
  49. data/features/trema_commands/run.feature +1 -0
  50. data/features/trema_commands/send_packets.feature +2 -1
  51. data/features/trema_commands/show_stats.feature +1 -0
  52. data/features/trema_commands/up.feature +1 -0
  53. data/features/trema_commands/version.feature +1 -0
  54. data/features/trema_commands/version_option.feature +1 -0
  55. data/rubocop-todo.yml +159 -0
  56. data/ruby/blocker.rb +15 -17
  57. data/ruby/extconf.rb +19 -19
  58. data/ruby/sub-process.rb +29 -29
  59. data/ruby/trema/aggregate-stats-reply.rb +2 -2
  60. data/ruby/trema/app.rb +13 -13
  61. data/ruby/trema/cli.rb +45 -45
  62. data/ruby/trema/command.rb +14 -14
  63. data/ruby/trema/command/dump_flows.rb +5 -5
  64. data/ruby/trema/command/kill.rb +13 -13
  65. data/ruby/trema/command/killall.rb +1 -1
  66. data/ruby/trema/command/netns.rb +3 -3
  67. data/ruby/trema/command/port_down.rb +7 -7
  68. data/ruby/trema/command/port_up.rb +7 -7
  69. data/ruby/trema/command/reset_stats.rb +6 -6
  70. data/ruby/trema/command/ruby.rb +2 -2
  71. data/ruby/trema/command/run.rb +23 -23
  72. data/ruby/trema/command/send_packets.rb +9 -9
  73. data/ruby/trema/command/shell.rb +14 -16
  74. data/ruby/trema/command/show_stats.rb +9 -9
  75. data/ruby/trema/command/up.rb +4 -4
  76. data/ruby/trema/command/version.rb +1 -1
  77. data/ruby/trema/controller.rb +10 -10
  78. data/ruby/trema/custom-switch.rb +4 -4
  79. data/ruby/trema/daemon.rb +21 -21
  80. data/ruby/trema/desc-stats-reply.rb +2 -2
  81. data/ruby/trema/dsl.rb +5 -5
  82. data/ruby/trema/dsl/configuration.rb +7 -7
  83. data/ruby/trema/dsl/context.rb +10 -10
  84. data/ruby/trema/dsl/custom-switch.rb +3 -3
  85. data/ruby/trema/dsl/link.rb +2 -2
  86. data/ruby/trema/dsl/netns.rb +9 -9
  87. data/ruby/trema/dsl/parser.rb +14 -14
  88. data/ruby/trema/dsl/rswitch.rb +3 -3
  89. data/ruby/trema/dsl/run.rb +4 -4
  90. data/ruby/trema/dsl/runner.rb +20 -20
  91. data/ruby/trema/dsl/stanza.rb +5 -5
  92. data/ruby/trema/dsl/switch.rb +14 -14
  93. data/ruby/trema/dsl/syntax.rb +54 -54
  94. data/ruby/trema/dsl/vhost.rb +9 -9
  95. data/ruby/trema/dsl/vswitch.rb +4 -4
  96. data/ruby/trema/enqueue.rb +11 -11
  97. data/ruby/trema/exact-match.rb +1 -1
  98. data/ruby/trema/executables.rb +19 -19
  99. data/ruby/trema/flow-stats-reply.rb +2 -2
  100. data/ruby/trema/flow.rb +8 -8
  101. data/ruby/trema/hardware-switch.rb +2 -2
  102. data/ruby/trema/host.rb +18 -18
  103. data/ruby/trema/link.rb +9 -9
  104. data/ruby/trema/mac.rb +1 -5
  105. data/ruby/trema/match.c +0 -1
  106. data/ruby/trema/monkey-patch/integer.rb +3 -3
  107. data/ruby/trema/monkey-patch/integer/base-conversions.rb +1 -1
  108. data/ruby/trema/monkey-patch/integer/ranges.rb +2 -2
  109. data/ruby/trema/monkey-patch/integer/validators.rb +1 -1
  110. data/ruby/trema/monkey-patch/module.rb +2 -2
  111. data/ruby/trema/monkey-patch/module/class-method.rb +2 -2
  112. data/ruby/trema/monkey-patch/module/deprecation.rb +1 -1
  113. data/ruby/trema/monkey-patch/string.rb +1 -1
  114. data/ruby/trema/monkey-patch/string/inflectors.rb +7 -7
  115. data/ruby/trema/netns.rb +6 -6
  116. data/ruby/trema/network-component.rb +7 -7
  117. data/ruby/trema/ofctl.rb +13 -13
  118. data/ruby/trema/open-vswitch.rb +25 -25
  119. data/ruby/trema/openflow-switch.rb +1 -1
  120. data/ruby/trema/ordered-hash.rb +8 -8
  121. data/ruby/trema/packet-in.c +0 -1
  122. data/ruby/trema/packet-queue.rb +8 -8
  123. data/ruby/trema/packetin-filter.rb +9 -9
  124. data/ruby/trema/path.rb +32 -32
  125. data/ruby/trema/phost.rb +5 -5
  126. data/ruby/trema/port-mod.c +0 -1
  127. data/ruby/trema/port-stats-reply.rb +2 -2
  128. data/ruby/trema/port-status-add.rb +2 -2
  129. data/ruby/trema/port-status-delete.rb +2 -2
  130. data/ruby/trema/port-status-modify.rb +2 -2
  131. data/ruby/trema/port.c +0 -1
  132. data/ruby/trema/process.rb +7 -7
  133. data/ruby/trema/queue-stats-reply.rb +2 -2
  134. data/ruby/trema/ruby-switch.rb +6 -6
  135. data/ruby/trema/send-out-port.rb +11 -11
  136. data/ruby/trema/set-eth-addr.rb +5 -5
  137. data/ruby/trema/set-eth-dst-addr.rb +1 -1
  138. data/ruby/trema/set-eth-src-addr.rb +1 -1
  139. data/ruby/trema/set-ip-addr.rb +6 -6
  140. data/ruby/trema/set-ip-dst-addr.rb +1 -1
  141. data/ruby/trema/set-ip-src-addr.rb +1 -1
  142. data/ruby/trema/set-ip-tos.rb +6 -6
  143. data/ruby/trema/set-transport-dst-port.rb +2 -2
  144. data/ruby/trema/set-transport-port.rb +7 -7
  145. data/ruby/trema/set-transport-src-port.rb +3 -3
  146. data/ruby/trema/set-vlan-priority.rb +6 -6
  147. data/ruby/trema/set-vlan-vid.rb +6 -6
  148. data/ruby/trema/shell.rb +10 -10
  149. data/ruby/trema/shell/down.rb +3 -3
  150. data/ruby/trema/shell/killall.rb +1 -1
  151. data/ruby/trema/shell/link.rb +14 -14
  152. data/ruby/trema/shell/reset_stats.rb +6 -6
  153. data/ruby/trema/shell/run.rb +7 -7
  154. data/ruby/trema/shell/send_packets.rb +3 -3
  155. data/ruby/trema/shell/show_stats.rb +7 -7
  156. data/ruby/trema/shell/up.rb +5 -5
  157. data/ruby/trema/shell/vhost.rb +4 -4
  158. data/ruby/trema/shell/vswitch.rb +7 -7
  159. data/ruby/trema/stats-helper.rb +3 -3
  160. data/ruby/trema/stats-reply.c +0 -1
  161. data/ruby/trema/strip-vlan-header.rb +1 -1
  162. data/ruby/trema/switch-daemon.rb +9 -9
  163. data/ruby/trema/switch-manager.rb +9 -9
  164. data/ruby/trema/switch.rb +7 -7
  165. data/ruby/trema/table-stats-reply.rb +2 -2
  166. data/ruby/trema/timers.rb +12 -12
  167. data/ruby/trema/trema.c +0 -1
  168. data/ruby/trema/tremashark.rb +1 -1
  169. data/ruby/trema/util.rb +25 -27
  170. data/ruby/trema/vendor-action.rb +10 -10
  171. data/ruby/trema/vendor-stats-reply.rb +2 -2
  172. data/ruby/trema/version.rb +1 -1
  173. data/spec/spec_helper.rb +50 -52
  174. data/spec/support/action.rb +9 -12
  175. data/spec/support/mandatory-option.rb +15 -18
  176. data/spec/support/matchers/constant.rb +7 -7
  177. data/spec/support/openflow-message.rb +76 -79
  178. data/spec/support/port-status.rb +7 -10
  179. data/spec/trema/app_spec.rb +27 -27
  180. data/spec/trema/barrier-reply_spec.rb +10 -10
  181. data/spec/trema/barrier-request_spec.rb +35 -35
  182. data/spec/trema/cli_spec.rb +63 -63
  183. data/spec/trema/controller_spec.rb +3 -3
  184. data/spec/trema/default-logger_spec.rb +4 -4
  185. data/spec/trema/dsl/configuration_spec.rb +47 -47
  186. data/spec/trema/dsl/link_spec.rb +11 -11
  187. data/spec/trema/dsl/run_spec.rb +19 -19
  188. data/spec/trema/dsl/runner_spec.rb +91 -91
  189. data/spec/trema/dsl/switch_spec.rb +16 -16
  190. data/spec/trema/dsl/syntax_spec.rb +22 -22
  191. data/spec/trema/dsl/vhost_spec.rb +37 -37
  192. data/spec/trema/dsl/vswitch_spec.rb +21 -21
  193. data/spec/trema/echo-reply_spec.rb +29 -29
  194. data/spec/trema/echo-request_spec.rb +54 -54
  195. data/spec/trema/enqueue_spec.rb +25 -25
  196. data/spec/trema/error_spec.rb +30 -30
  197. data/spec/trema/executables_spec.rb +20 -20
  198. data/spec/trema/features-reply_spec.rb +41 -41
  199. data/spec/trema/features-request_spec.rb +35 -35
  200. data/spec/trema/flow-mod_spec.rb +32 -32
  201. data/spec/trema/flow-removed_spec.rb +62 -62
  202. data/spec/trema/get-config-reply_spec.rb +14 -12
  203. data/spec/trema/get-config-request_spec.rb +35 -35
  204. data/spec/trema/hardware-switch_spec.rb +12 -12
  205. data/spec/trema/hello_spec.rb +17 -17
  206. data/spec/trema/host_spec.rb +71 -71
  207. data/spec/trema/link_spec.rb +13 -13
  208. data/spec/trema/list-switches-reply_spec.rb +10 -10
  209. data/spec/trema/match_spec.rb +41 -41
  210. data/spec/trema/open-vswitch_spec.rb +45 -45
  211. data/spec/trema/openflow-error_spec.rb +67 -65
  212. data/spec/trema/packet-in_spec.rb +450 -446
  213. data/spec/trema/packet-out_spec.rb +42 -42
  214. data/spec/trema/packetin-filter_spec.rb +5 -5
  215. data/spec/trema/port-mod_spec.rb +32 -32
  216. data/spec/trema/port-status-add_spec.rb +3 -3
  217. data/spec/trema/port-status-delete_spec.rb +3 -3
  218. data/spec/trema/port-status-modify_spec.rb +16 -16
  219. data/spec/trema/port-status_spec.rb +2 -2
  220. data/spec/trema/port_spec.rb +21 -21
  221. data/spec/trema/process_spec.rb +22 -22
  222. data/spec/trema/queue-get-config-reply_spec.rb +21 -20
  223. data/spec/trema/queue-get-config-request_spec.rb +24 -24
  224. data/spec/trema/send-out-port_spec.rb +42 -42
  225. data/spec/trema/set-config_spec.rb +31 -31
  226. data/spec/trema/set-eth-addr_spec.rb +21 -21
  227. data/spec/trema/set-ip-addr_spec.rb +29 -29
  228. data/spec/trema/set-ip-tos_spec.rb +26 -26
  229. data/spec/trema/set-transport-dst-port_spec.rb +22 -22
  230. data/spec/trema/set-transport-src-port_spec.rb +22 -22
  231. data/spec/trema/set-vlan-priority_spec.rb +23 -23
  232. data/spec/trema/set-vlan-vid_spec.rb +23 -23
  233. data/spec/trema/shell/vhost_spec.rb +21 -21
  234. data/spec/trema/shell/vswitch_spec.rb +30 -30
  235. data/spec/trema/stats-reply_spec.rb +183 -173
  236. data/spec/trema/stats-request_spec.rb +66 -66
  237. data/spec/trema/strip-vlan-header_spec.rb +11 -11
  238. data/spec/trema/switch-daemon_spec.rb +34 -34
  239. data/spec/trema/switch-disconnected_spec.rb +17 -17
  240. data/spec/trema/switch-manager_spec.rb +6 -6
  241. data/spec/trema/tremashark_spec.rb +4 -4
  242. data/spec/trema/util_spec.rb +35 -35
  243. data/spec/trema/vendor-action_spec.rb +26 -26
  244. data/spec/trema/vendor_spec.rb +27 -27
  245. data/spec/trema_spec.rb +2 -2
  246. data/src/examples/cbench_switch/cbench-switch.rb +3 -3
  247. data/src/examples/dumper/dumper.rb +31 -31
  248. data/src/examples/hello_trema/hello-trema.rb +2 -2
  249. data/src/examples/learning_switch/fdb.rb +14 -14
  250. data/src/examples/learning_switch/learning-switch.rb +12 -10
  251. data/src/examples/learning_switch/learning_switch.c +22 -39
  252. data/src/examples/list_switches/list-switches.rb +3 -3
  253. data/src/examples/match_compare/match-compare.rb +20 -20
  254. data/src/examples/multi_learning_switch/multi-learning-switch.rb +12 -12
  255. data/src/examples/openflow_message/echo.rb +4 -4
  256. data/src/examples/openflow_message/example.rb +7 -7
  257. data/src/examples/openflow_message/features-request.rb +31 -31
  258. data/src/examples/openflow_message/hello.rb +2 -2
  259. data/src/examples/openflow_message/set-config.rb +4 -4
  260. data/src/examples/openflow_message/vendor-action.rb +3 -3
  261. data/src/examples/openflow_message/vendor-stats-request.rb +9 -9
  262. data/src/examples/packet_in/packet-in.rb +2 -2
  263. data/src/examples/patch_panel/patch-panel.rb +9 -9
  264. data/src/examples/repeater_hub/repeater-hub.rb +4 -4
  265. data/src/examples/repeater_hub/repeater-hub_spec.rb +65 -65
  266. data/src/examples/simple_router/arp-table.rb +7 -7
  267. data/src/examples/simple_router/interface.rb +10 -10
  268. data/src/examples/simple_router/routing-table.rb +4 -4
  269. data/src/examples/simple_router/simple-router.rb +3 -3
  270. data/src/examples/switch_info/switch-info.rb +9 -9
  271. data/src/examples/switch_monitor/switch-monitor.rb +4 -4
  272. data/src/examples/traffic_monitor/counter.rb +6 -6
  273. data/src/examples/traffic_monitor/fdb.rb +4 -4
  274. data/src/examples/traffic_monitor/traffic-monitor.rb +12 -12
  275. data/src/examples/transparent_firewall/README.md +61 -0
  276. data/src/examples/transparent_firewall/aggregated-delegated-afrinic.txt +713 -0
  277. data/src/examples/transparent_firewall/aggregated-delegated-apnic.txt +3440 -0
  278. data/src/examples/transparent_firewall/aggregated-delegated-arin.txt +11342 -0
  279. data/src/examples/transparent_firewall/aggregated-delegated-lacnic.txt +1937 -0
  280. data/src/examples/transparent_firewall/aggregated-delegated-ripencc.txt +7329 -0
  281. data/src/examples/transparent_firewall/block-rfc1918.rb +86 -0
  282. data/src/examples/transparent_firewall/pass-delegated.rb +178 -0
  283. data/src/examples/transparent_firewall/regen_aggregated.sh +53 -0
  284. data/src/examples/transparent_firewall/stats-to-cidrs.rb +59 -0
  285. data/src/lib/messenger.c +14 -5
  286. data/src/lib/openflow_message.c +0 -5
  287. data/tasks/rubocop.rake +22 -0
  288. data/trema +1 -1
  289. data/trema-config +1 -1
  290. data/trema.gemspec +22 -22
  291. metadata +30 -16
@@ -16,114 +16,114 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema'
21
21
 
22
22
 
23
- describe Trema::FlowRemoved, ".new( VALID OPTIONS )" do
24
- context "when an instance is created" do
23
+ describe Trema::FlowRemoved, '.new( VALID OPTIONS )' do
24
+ context 'when an instance is created' do
25
25
  subject do
26
26
  match = Match.new(
27
27
  :in_port => 1,
28
- :dl_src => "00:00:00:00:00:01",
29
- :dl_dst => "00:00:00:00:00:02",
28
+ :dl_src => '00:00:00:00:00:01',
29
+ :dl_dst => '00:00:00:00:00:02',
30
30
  :dl_vlan => 65535,
31
31
  :dl_vlan_pcp => 0,
32
32
  :dl_type => 0x800,
33
33
  :nw_tos => 0,
34
34
  :nw_proto => 17,
35
- :nw_src => "192.168.0.1",
36
- :nw_dst => "192.168.0.2",
35
+ :nw_src => '192.168.0.1',
36
+ :nw_dst => '192.168.0.2',
37
37
  :tp_src => 1,
38
38
  :tp_dst => 1
39
39
  )
40
40
 
41
41
  FlowRemoved.new(
42
- :datapath_id=>2748,
43
- :transaction_id=>0,
42
+ :datapath_id => 2748,
43
+ :transaction_id => 0,
44
44
  :match => match,
45
45
  :cookie => 123456789,
46
46
  :priority => 65535,
47
47
  :reason => 0,
48
- :duration_sec=>1,
49
- :duration_nsec=>779000000,
50
- :idle_timeout=>1,
51
- :packet_count=> 6,
48
+ :duration_sec => 1,
49
+ :duration_nsec => 779000000,
50
+ :idle_timeout => 1,
51
+ :packet_count => 6,
52
52
  :byte_count => 256
53
53
  )
54
54
  end
55
- its ( :datapath_id ) { should == 2748 }
56
- its ( :transaction_id ) { should == 0 }
57
- its ( :match ) { should be_instance_of( Match ) }
58
- its ( :cookie ) { should == 123456789 }
59
- its ( :priority ) { should == 65535 }
60
- its ( :reason ) { should == 0 }
61
- its ( :duration_sec ) { should == 1 }
62
- its ( :duration_nsec ) { should == 779000000 }
63
- its ( :idle_timeout ) { should == 1 }
64
- its ( :packet_count ) { should == 6 }
65
- its ( :byte_count ) { should == 256 }
55
+ its ( :datapath_id) { should == 2748 }
56
+ its ( :transaction_id) { should == 0 }
57
+ its ( :match) { should be_instance_of(Match) }
58
+ its ( :cookie) { should == 123456789 }
59
+ its ( :priority) { should == 65535 }
60
+ its ( :reason) { should == 0 }
61
+ its ( :duration_sec) { should == 1 }
62
+ its ( :duration_nsec) { should == 779000000 }
63
+ its ( :idle_timeout) { should == 1 }
64
+ its ( :packet_count) { should == 6 }
65
+ its ( :byte_count) { should == 256 }
66
66
  end
67
67
 
68
68
 
69
- context "when a flow expires" do
70
- it "should #flow_removed" do
69
+ context 'when a flow expires' do
70
+ it 'should #flow_removed' do
71
71
  class FlowRemovedController < Controller; end
72
- network {
72
+ network do
73
73
  vswitch { datapath_id 0xabc }
74
- }.run( FlowRemovedController ) {
75
- controller( "FlowRemovedController" ).should_receive( :flow_removed )
76
- controller( "FlowRemovedController" ).send_flow_mod_add(
74
+ end.run(FlowRemovedController) do
75
+ controller('FlowRemovedController').should_receive(:flow_removed)
76
+ controller('FlowRemovedController').send_flow_mod_add(
77
77
  0xabc,
78
78
  :idle_timeout => 1,
79
79
  :send_flow_rem => true
80
80
  )
81
81
  sleep 2 # FIXME: wait to receive flow_removed
82
- }
82
+ end
83
83
  end
84
84
 
85
85
 
86
- it "should #flow_removed with valid attributes as per flow mod add" do
86
+ it 'should #flow_removed with valid attributes as per flow mod add' do
87
87
  class FlowRemovedController < Controller; end
88
88
  match = Match.new(
89
- :in_port=> 1,
90
- :dl_src => "00:00:00:00:00:01",
91
- :dl_dst => "00:00:00:00:00:02",
89
+ :in_port => 1,
90
+ :dl_src => '00:00:00:00:00:01',
91
+ :dl_dst => '00:00:00:00:00:02',
92
92
  :dl_type => 0x800,
93
93
  :dl_vlan => 65535,
94
94
  :dl_vlan_pcp => 0,
95
95
  :nw_tos => 0,
96
96
  :nw_proto => 17,
97
- :nw_src => "192.168.0.1",
98
- :nw_dst => "192.168.0.2",
97
+ :nw_src => '192.168.0.1',
98
+ :nw_dst => '192.168.0.2',
99
99
  :tp_src => 1,
100
100
  :tp_dst => 1
101
101
  )
102
- network {
102
+ network do
103
103
  vswitch { datapath_id 0xabc }
104
- }.run( FlowRemovedController ) {
105
- controller( "FlowRemovedController" ).should_receive( :flow_removed ) do | datapath_id, message |
106
- expect( datapath_id ).to eq( 0xabc )
107
- expect( message.match.in_port ).to eq( 1 )
108
- expect( message.match.dl_src.to_s ).to eq( "00:00:00:00:00:01" )
109
- expect( message.match.dl_dst.to_s ).to eq( "00:00:00:00:00:02" )
110
- expect( message.match.dl_type ).to eq( 0x800 )
111
- expect( message.match.dl_vlan ).to eq( 65535 )
112
- expect( message.match.dl_vlan_pcp ).to eq( 0 )
113
- expect( message.match.nw_tos ).to eq( 0 )
114
- expect( message.match.nw_proto ).to eq( 17 )
115
- expect( Pio::IPv4Address.new( message.match.nw_src ).to_s ).to eq( "192.168.0.1" )
116
- expect( Pio::IPv4Address.new( message.match.nw_dst ).to_s ).to eq( "192.168.0.2" )
117
- expect( message.match.tp_src ).to eq( 1 )
118
- expect( message.match.tp_dst ).to eq( 1 )
119
- expect( message.cookie ).to eq( 123456789 )
120
- expect( message.idle_timeout ).to eq( 1 )
121
- expect( message.reason ).to eq( 0 )
122
- expect( message.duration_sec ).to be >= 1
123
- expect( message.packet_count ).to eq( 0 )
124
- expect( message.byte_count ).to eq( 0 )
104
+ end.run(FlowRemovedController) do
105
+ controller('FlowRemovedController').should_receive(:flow_removed) do | datapath_id, message |
106
+ expect(datapath_id).to eq(0xabc)
107
+ expect(message.match.in_port).to eq(1)
108
+ expect(message.match.dl_src.to_s).to eq('00:00:00:00:00:01')
109
+ expect(message.match.dl_dst.to_s).to eq('00:00:00:00:00:02')
110
+ expect(message.match.dl_type).to eq(0x800)
111
+ expect(message.match.dl_vlan).to eq(65535)
112
+ expect(message.match.dl_vlan_pcp).to eq(0)
113
+ expect(message.match.nw_tos).to eq(0)
114
+ expect(message.match.nw_proto).to eq(17)
115
+ expect(Pio::IPv4Address.new(message.match.nw_src).to_s).to eq('192.168.0.1')
116
+ expect(Pio::IPv4Address.new(message.match.nw_dst).to_s).to eq('192.168.0.2')
117
+ expect(message.match.tp_src).to eq(1)
118
+ expect(message.match.tp_dst).to eq(1)
119
+ expect(message.cookie).to eq(123456789)
120
+ expect(message.idle_timeout).to eq(1)
121
+ expect(message.reason).to eq(0)
122
+ expect(message.duration_sec).to be >= 1
123
+ expect(message.packet_count).to eq(0)
124
+ expect(message.byte_count).to eq(0)
125
125
  end
126
- controller( "FlowRemovedController" ).send_flow_mod_add(
126
+ controller('FlowRemovedController').send_flow_mod_add(
127
127
  0xabc,
128
128
  :match => match,
129
129
  :cookie => 123456789,
@@ -131,7 +131,7 @@ describe Trema::FlowRemoved, ".new( VALID OPTIONS )" do
131
131
  :send_flow_rem => true
132
132
  )
133
133
  sleep 2 # FIXME: wait to receive flow_removed
134
- }
134
+ end
135
135
  end
136
136
  end
137
137
  end
@@ -16,21 +16,23 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema'
21
21
 
22
22
 
23
- describe GetConfigReply, ".new( VALID OPTIONS )" do
24
- subject { GetConfigReply.new( :datapath_id => 123,
25
- :transaction_id => 1234,
26
- :flags => 1,
27
- :miss_send_len => 1024
23
+ describe GetConfigReply, '.new( VALID OPTIONS )' do
24
+ subject do
25
+ GetConfigReply.new(
26
+ :datapath_id => 123,
27
+ :transaction_id => 1234,
28
+ :flags => 1,
29
+ :miss_send_len => 1024
28
30
  )
29
- }
30
- its ( :datapath_id ) { should == 123 }
31
- its ( :transaction_id ) { should == 1234 }
32
- its ( :flags ) { should == 1 }
33
- its ( :miss_send_len ) { should == 1024 }
31
+ end
32
+ its ( :datapath_id) { should == 123 }
33
+ its ( :transaction_id) { should == 1234 }
34
+ its ( :flags) { should == 1 }
35
+ its ( :miss_send_len) { should == 1024 }
34
36
  end
35
37
 
36
38
 
@@ -16,71 +16,71 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema'
21
21
 
22
22
 
23
- shared_examples_for "get config request message" do
23
+ shared_examples_for 'get config request message' do
24
24
  class GetConfigRequestController < Controller; end
25
25
 
26
26
  it "should be logged to the switch's log", :sudo => true do
27
- network {
28
- vswitch( "get-config-request" ) { datapath_id 0xabc }
29
- }.run( GetConfigRequestController ) {
30
- controller( "GetConfigRequestController" ).send_message( 0xabc, subject )
27
+ network do
28
+ vswitch('get-config-request') { datapath_id 0xabc }
29
+ end.run(GetConfigRequestController) do
30
+ controller('GetConfigRequestController').send_message(0xabc, subject)
31
31
  sleep 2 # FIXME: wait to send_message
32
- expect( IO.read( File.join( Trema.log, "openflowd.get-config-request.log" ) ) ).to include( "OFPT_GET_CONFIG_REQUEST" )
33
- }
32
+ expect(IO.read(File.join(Trema.log, 'openflowd.get-config-request.log'))).to include('OFPT_GET_CONFIG_REQUEST')
33
+ end
34
34
  end
35
35
  end
36
36
 
37
37
 
38
38
  module Trema
39
- describe GetConfigRequest, ".new" do
40
- it_should_behave_like "any Openflow message with default transaction ID"
41
- it_should_behave_like "get config request message"
39
+ describe GetConfigRequest, '.new' do
40
+ it_should_behave_like 'any Openflow message with default transaction ID'
41
+ it_should_behave_like 'get config request message'
42
42
  end
43
43
 
44
44
 
45
- describe GetConfigRequest, ".new(nil)" do
46
- subject { GetConfigRequest.new( nil ) }
47
- it_should_behave_like "any Openflow message with default transaction ID"
48
- it_should_behave_like "get config request message"
45
+ describe GetConfigRequest, '.new(nil)' do
46
+ subject { GetConfigRequest.new(nil) }
47
+ it_should_behave_like 'any Openflow message with default transaction ID'
48
+ it_should_behave_like 'get config request message'
49
49
  end
50
50
 
51
51
 
52
- describe GetConfigRequest, ".new(transaction_id)" do
53
- subject { GetConfigRequest.new( transaction_id ) }
54
- it_should_behave_like "any Openflow message with transaction ID"
55
- context "when sent to a switch" do
56
- let( :transaction_id ) { 123 }
57
- it_should_behave_like "get config request message"
52
+ describe GetConfigRequest, '.new(transaction_id)' do
53
+ subject { GetConfigRequest.new(transaction_id) }
54
+ it_should_behave_like 'any Openflow message with transaction ID'
55
+ context 'when sent to a switch' do
56
+ let(:transaction_id) { 123 }
57
+ it_should_behave_like 'get config request message'
58
58
  end
59
59
  end
60
60
 
61
61
 
62
- describe GetConfigRequest, ".new(:transaction_id => value)" do
63
- subject { GetConfigRequest.new( :transaction_id => transaction_id ) }
64
- it_should_behave_like "any Openflow message with transaction ID"
65
- context "when sent to a switch" do
66
- let( :transaction_id ) { 123 }
67
- it_should_behave_like "get config request message"
62
+ describe GetConfigRequest, '.new(:transaction_id => value)' do
63
+ subject { GetConfigRequest.new(:transaction_id => transaction_id) }
64
+ it_should_behave_like 'any Openflow message with transaction ID'
65
+ context 'when sent to a switch' do
66
+ let(:transaction_id) { 123 }
67
+ it_should_behave_like 'get config request message'
68
68
  end
69
69
  end
70
70
 
71
71
 
72
- describe GetConfigRequest, ".new(:xid => value)" do
73
- subject { GetConfigRequest.new( :xid => xid ) }
74
- it_should_behave_like "any Openflow message with xid"
75
- context "when sent to a switch" do
76
- let( :xid ) { 123 }
77
- it_should_behave_like "get config request message"
72
+ describe GetConfigRequest, '.new(:xid => value)' do
73
+ subject { GetConfigRequest.new(:xid => xid) }
74
+ it_should_behave_like 'any Openflow message with xid'
75
+ context 'when sent to a switch' do
76
+ let(:xid) { 123 }
77
+ it_should_behave_like 'get config request message'
78
78
  end
79
79
  end
80
80
 
81
81
 
82
82
  describe GetConfigRequest, '.new("INVALID OPTION")', :nosudo => true do
83
- it { expect { GetConfigRequest.new "INVALID OPTION" }.to raise_error( TypeError ) }
83
+ it { expect { GetConfigRequest.new 'INVALID OPTION' }.to raise_error(TypeError) }
84
84
  end
85
85
  end
86
86
 
@@ -16,32 +16,32 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/dsl/switch"
21
- require "trema/hardware-switch"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema/dsl/switch'
21
+ require 'trema/hardware-switch'
22
22
 
23
23
 
24
24
  module Trema
25
- describe HardwareSwitch, %[dpid = "0xabc"] do
25
+ describe HardwareSwitch, 'dpid = 0xabc' do
26
26
  before :each do
27
27
  stanza = DSL::Switch.new
28
- stanza.dpid "0xabc"
29
- @switch = HardwareSwitch.new( stanza )
28
+ stanza.dpid '0xabc'
29
+ @switch = HardwareSwitch.new(stanza)
30
30
  end
31
31
 
32
32
 
33
- it "should return its name" do
34
- expect( @switch.name ).to eq( "0xabc" )
33
+ it 'should return its name' do
34
+ expect(@switch.name).to eq('0xabc')
35
35
  end
36
36
 
37
37
 
38
- it "should return dpid in long format" do
39
- expect( @switch.dpid_long ).to eq( "0000000000000abc" )
38
+ it 'should return dpid in long format' do
39
+ expect(@switch.dpid_long).to eq('0000000000000abc')
40
40
  end
41
41
 
42
42
 
43
- it "should return dpid in short format" do
44
- expect( @switch.dpid_short ).to eq( "0xabc" )
43
+ it 'should return dpid in short format' do
44
+ expect(@switch.dpid_short).to eq('0xabc')
45
45
  end
46
46
  end
47
47
  end
@@ -16,42 +16,42 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema'
21
21
 
22
22
 
23
23
  module Trema
24
- describe Hello, ".new" do
25
- it_should_behave_like "any Openflow message with default transaction ID"
24
+ describe Hello, '.new' do
25
+ it_should_behave_like 'any Openflow message with default transaction ID'
26
26
  end
27
27
 
28
28
 
29
- describe Hello, ".new(nil)" do
30
- subject { Hello.new( nil ) }
31
- it_should_behave_like "any Openflow message with default transaction ID"
29
+ describe Hello, '.new(nil)' do
30
+ subject { Hello.new(nil) }
31
+ it_should_behave_like 'any Openflow message with default transaction ID'
32
32
  end
33
33
 
34
34
 
35
- describe Hello, ".new(transaction_id)" do
36
- subject { Hello.new( transaction_id ) }
37
- it_should_behave_like "any Openflow message with transaction ID"
35
+ describe Hello, '.new(transaction_id)' do
36
+ subject { Hello.new(transaction_id) }
37
+ it_should_behave_like 'any Openflow message with transaction ID'
38
38
  end
39
39
 
40
40
 
41
- describe Hello, ".new(:transaction_id => value)" do
42
- subject { Hello.new( :transaction_id => transaction_id ) }
43
- it_should_behave_like "any Openflow message with transaction ID"
41
+ describe Hello, '.new(:transaction_id => value)' do
42
+ subject { Hello.new(:transaction_id => transaction_id) }
43
+ it_should_behave_like 'any Openflow message with transaction ID'
44
44
  end
45
45
 
46
46
 
47
- describe Hello, ".new(:xid => value)" do
48
- subject { Hello.new( :xid => xid ) }
49
- it_should_behave_like "any Openflow message with xid"
47
+ describe Hello, '.new(:xid => value)' do
48
+ subject { Hello.new(:xid => xid) }
49
+ it_should_behave_like 'any Openflow message with xid'
50
50
  end
51
51
 
52
52
 
53
53
  describe Hello, '.new("INVALID OPTION")' do
54
- it { expect { Hello.new "INVALID OPTION" }.to raise_error( TypeError ) }
54
+ it { expect { Hello.new 'INVALID OPTION' }.to raise_error(TypeError) }
55
55
  end
56
56
  end
57
57
 
@@ -16,166 +16,166 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/host"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema/host'
21
21
 
22
22
 
23
23
  module Trema
24
24
  describe Host do
25
- before {
25
+ before do
26
26
  Host.instances.clear
27
27
 
28
- @cli = mock( "cli" )
29
- Cli.stub!( :new ).and_return( @cli )
30
- }
28
+ @cli = mock('cli')
29
+ Cli.stub!(:new).and_return(@cli)
30
+ end
31
31
 
32
32
 
33
33
  describe :ip do
34
- context "when ip is omitted" do
34
+ context 'when ip is omitted' do
35
35
  before { @stanza = {} }
36
36
 
37
- subject { Host.new( @stanza ).ip }
37
+ subject { Host.new(@stanza).ip }
38
38
 
39
- it { should == "192.168.0.1" }
39
+ it { should == '192.168.0.1' }
40
40
  end
41
41
 
42
42
 
43
43
  context "when ip \"192.168.100.100\"" do
44
- before { @stanza = { :ip => "192.168.100.100" } }
44
+ before { @stanza = { :ip => '192.168.100.100' } }
45
45
 
46
- subject { Host.new( @stanza ).ip }
46
+ subject { Host.new(@stanza).ip }
47
47
 
48
- it { should == "192.168.100.100" }
48
+ it { should == '192.168.100.100' }
49
49
  end
50
50
  end
51
51
 
52
52
 
53
53
  describe :mac do
54
- context "when mac is omitted" do
54
+ context 'when mac is omitted' do
55
55
  before { @stanza = {} }
56
56
 
57
- subject { Host.new( @stanza ).mac }
57
+ subject { Host.new(@stanza).mac }
58
58
 
59
- it { should == "00:00:00:00:00:01" }
59
+ it { should == '00:00:00:00:00:01' }
60
60
  end
61
61
 
62
62
 
63
63
  context "when mac \"00:00:00:aa:bb:cc\"" do
64
- before { @stanza = { :mac => "00:00:00:aa:bb:cc" } }
64
+ before { @stanza = { :mac => '00:00:00:aa:bb:cc' } }
65
65
 
66
- subject { Host.new( @stanza ).mac }
66
+ subject { Host.new(@stanza).mac }
67
67
 
68
- it { should == "00:00:00:aa:bb:cc" }
68
+ it { should == '00:00:00:aa:bb:cc' }
69
69
  end
70
70
  end
71
71
 
72
72
 
73
73
  describe :netmask do
74
- context "when netmask is omitted" do
74
+ context 'when netmask is omitted' do
75
75
  before { @stanza = {} }
76
76
 
77
- subject { Host.new( @stanza ).netmask }
77
+ subject { Host.new(@stanza).netmask }
78
78
 
79
- it { should == "255.255.255.255" }
79
+ it { should == '255.255.255.255' }
80
80
  end
81
81
 
82
82
 
83
83
  context "when netmask \"255.255.0.0\"" do
84
- before { @stanza = { :netmask => "255.255.0.0" } }
84
+ before { @stanza = { :netmask => '255.255.0.0' } }
85
85
 
86
- subject { Host.new( @stanza ).netmask }
86
+ subject { Host.new(@stanza).netmask }
87
87
 
88
- it { should == "255.255.0.0" }
88
+ it { should == '255.255.0.0' }
89
89
  end
90
90
  end
91
91
 
92
92
 
93
- context "when #add_arp_entries" do
93
+ context 'when #add_arp_entries' do
94
94
  describe :cli do
95
- before {
96
- @host0 = Host.new( :name => "HOST 0" )
97
- @host1 = mock( "HOST 1" )
98
- @host2 = mock( "HOST 2" )
99
- @host3 = mock( "HOST 3" )
100
- }
101
-
102
- it "should add arp entries" do
103
- @cli.should_receive( :add_arp_entry ).with( @host1 )
104
- @cli.should_receive( :add_arp_entry ).with( @host2 )
105
- @cli.should_receive( :add_arp_entry ).with( @host3 )
106
-
107
- @host0.add_arp_entry [ @host1, @host2, @host3 ]
95
+ before do
96
+ @host0 = Host.new(:name => 'HOST 0')
97
+ @host1 = mock('HOST 1')
98
+ @host2 = mock('HOST 2')
99
+ @host3 = mock('HOST 3')
100
+ end
101
+
102
+ it 'should add arp entries' do
103
+ @cli.should_receive(:add_arp_entry).with(@host1)
104
+ @cli.should_receive(:add_arp_entry).with(@host2)
105
+ @cli.should_receive(:add_arp_entry).with(@host3)
106
+
107
+ @host0.add_arp_entry [@host1, @host2, @host3]
108
108
  end
109
109
  end
110
110
  end
111
111
 
112
112
 
113
- context "when #run!" do
113
+ context 'when #run!' do
114
114
  describe :cli do
115
- before {
116
- Phost.stub!( :new ).and_return( mock( "phost", :run! => nil ) )
117
- }
115
+ before do
116
+ Phost.stub!(:new).and_return(mock('phost', :run! => nil))
117
+ end
118
118
 
119
- it "should set IP and MAC address" do
120
- @cli.should_receive( :set_ip_and_mac_address )
119
+ it 'should set IP and MAC address' do
120
+ @cli.should_receive(:set_ip_and_mac_address)
121
121
 
122
- Host.new( :name => "Yutaro's host" ).run!
122
+ Host.new(:name => "Yutaro's host").run!
123
123
  end
124
124
 
125
125
 
126
- context "when promisc on" do
127
- before { @cli.stub!( :set_ip_and_mac_address ) }
126
+ context 'when promisc on' do
127
+ before { @cli.stub!(:set_ip_and_mac_address) }
128
128
 
129
- it "should enable promisc" do
130
- @cli.should_receive( :enable_promisc )
129
+ it 'should enable promisc' do
130
+ @cli.should_receive(:enable_promisc)
131
131
 
132
- Host.new( :name => "Yutaro's host", :promisc => true ).run!
132
+ Host.new(:name => "Yutaro's host", :promisc => true).run!
133
133
  end
134
134
  end
135
135
  end
136
136
  end
137
137
 
138
138
 
139
- context "when #send_packets" do
139
+ context 'when #send_packets' do
140
140
  describe :cli do
141
- before {
142
- @dest = mock( "dest" )
143
- @options = mock( "options" )
144
- }
141
+ before do
142
+ @dest = mock('dest')
143
+ @options = mock('options')
144
+ end
145
145
 
146
- it "should send_packets" do
147
- @cli.should_receive( :send_packets ).with( @dest, @options )
146
+ it 'should send_packets' do
147
+ @cli.should_receive(:send_packets).with(@dest, @options)
148
148
 
149
- Host.new( :name => "Yutaro's host" ).send_packet @dest, @options
149
+ Host.new(:name => "Yutaro's host").send_packet @dest, @options
150
150
  end
151
151
  end
152
152
  end
153
153
 
154
154
 
155
- context "when getting stats" do
156
- before {
157
- @stats = mock( "stats" )
158
- @host = Host.new( :name => "Yutaro's host" )
159
- }
155
+ context 'when getting stats' do
156
+ before do
157
+ @stats = mock('stats')
158
+ @host = Host.new(:name => "Yutaro's host")
159
+ end
160
160
 
161
161
 
162
- context "when #tx_stats" do
162
+ context 'when #tx_stats' do
163
163
  describe :cli do
164
- it "should get tx stats" do
165
- @cli.should_receive( :tx_stats ).and_return( @stats )
164
+ it 'should get tx stats' do
165
+ @cli.should_receive(:tx_stats).and_return(@stats)
166
166
 
167
- expect( @host.tx_stats ).to eq( @stats )
167
+ expect(@host.tx_stats).to eq(@stats)
168
168
  end
169
169
  end
170
170
  end
171
171
 
172
172
 
173
- context "when #rx_stats" do
173
+ context 'when #rx_stats' do
174
174
  describe :cli do
175
- it "should get rx stats" do
176
- @cli.should_receive( :rx_stats ).and_return( @stats )
175
+ it 'should get rx stats' do
176
+ @cli.should_receive(:rx_stats).and_return(@stats)
177
177
 
178
- expect( @host.rx_stats ).to eq( @stats )
178
+ expect(@host.rx_stats).to eq(@stats)
179
179
  end
180
180
  end
181
181
  end