trema 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
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