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,37 +16,37 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/link"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema/link'
21
21
 
22
22
 
23
23
  module Trema
24
24
  describe Link do
25
25
  before :each do
26
26
  Trema::Link.instances.clear
27
- @stanza = mock( "link stanza", :peers => [ "Virtual Host", "Virtual Switch" ] )
27
+ @stanza = mock('link stanza', :peers => ['Virtual Host', 'Virtual Switch'])
28
28
  end
29
29
 
30
30
 
31
- context "when creating/deleting a link" do
31
+ context 'when creating/deleting a link' do
32
32
  before :each do
33
- @link = Link.new( @stanza )
33
+ @link = Link.new(@stanza)
34
34
  end
35
35
 
36
36
 
37
- it "executes ip and ifconfig command" do
38
- @link.should_receive( :sh ).once.ordered.with( "sudo ip link add name trema0-0 type veth peer name trema0-1" )
39
- @link.should_receive( :sh ).once.ordered.with( "sudo /sbin/sysctl -w net.ipv6.conf.trema0-0.disable_ipv6=1 >/dev/null 2>&1" )
40
- @link.should_receive( :sh ).once.ordered.with( "sudo /sbin/sysctl -w net.ipv6.conf.trema0-1.disable_ipv6=1 >/dev/null 2>&1" )
41
- @link.should_receive( :sh ).once.ordered.with( "sudo /sbin/ifconfig trema0-0 up" )
42
- @link.should_receive( :sh ).once.ordered.with( "sudo /sbin/ifconfig trema0-1 up" )
37
+ it 'executes ip and ifconfig command' do
38
+ @link.should_receive(:sh).once.ordered.with('sudo ip link add name trema0-0 type veth peer name trema0-1')
39
+ @link.should_receive(:sh).once.ordered.with('sudo /sbin/sysctl -w net.ipv6.conf.trema0-0.disable_ipv6=1 >/dev/null 2>&1')
40
+ @link.should_receive(:sh).once.ordered.with('sudo /sbin/sysctl -w net.ipv6.conf.trema0-1.disable_ipv6=1 >/dev/null 2>&1')
41
+ @link.should_receive(:sh).once.ordered.with('sudo /sbin/ifconfig trema0-0 up')
42
+ @link.should_receive(:sh).once.ordered.with('sudo /sbin/ifconfig trema0-1 up')
43
43
 
44
44
  @link.enable!
45
45
  end
46
46
 
47
47
 
48
- it "executes ip and ifconfig command" do
49
- @link.should_receive( :sh ).once.with( "sudo ip link delete trema0-0 2>/dev/null" )
48
+ it 'executes ip and ifconfig command' do
49
+ @link.should_receive(:sh).once.with('sudo ip link delete trema0-0 2>/dev/null')
50
50
 
51
51
  @link.delete!
52
52
  end
@@ -16,24 +16,24 @@
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
  describe Controller do
24
- context "when #list_switches_request is sent" do
25
- it "should receive #list_switches_reply" do
24
+ context 'when #list_switches_request is sent' do
25
+ it 'should receive #list_switches_reply' do
26
26
  class ListSwitchesController < Controller; end
27
- network {
27
+ network do
28
28
  vswitch { datapath_id 0x1 }
29
29
  vswitch { datapath_id 0x2 }
30
30
  vswitch { datapath_id 0x3 }
31
- }.run( ListSwitchesController ) {
32
- controller( "ListSwitchesController" ).should_receive( :list_switches_reply ) do | dpids |
33
- expect( dpids ).to eq( [ 0x1, 0x2, 0x3 ] )
31
+ end.run(ListSwitchesController) do
32
+ controller('ListSwitchesController').should_receive(:list_switches_reply) do | dpids |
33
+ expect(dpids).to eq([0x1, 0x2, 0x3])
34
34
  end
35
- controller( "ListSwitchesController" ).send_list_switches_request
36
- }
35
+ controller('ListSwitchesController').send_list_switches_request
36
+ end
37
37
  end
38
38
  end
39
39
  end
@@ -16,90 +16,90 @@
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 Match, ".new" do
24
- subject {
23
+ describe Match, '.new' do
24
+ subject do
25
25
  Match.new(
26
26
  :in_port => 1,
27
- :dl_src => "00:00:00:00:00:01",
28
- :dl_dst => "00:00:00:00:00:02",
27
+ :dl_src => '00:00:00:00:00:01',
28
+ :dl_dst => '00:00:00:00:00:02',
29
29
  :dl_vlan => 65535,
30
30
  :dl_vlan_pcp => 0,
31
31
  :dl_type => 0x800,
32
32
  :nw_tos => 0,
33
33
  :nw_proto => 17,
34
- :nw_src => "192.168.0.1",
35
- :nw_dst => "192.168.0.0/24",
34
+ :nw_src => '192.168.0.1',
35
+ :nw_dst => '192.168.0.0/24',
36
36
  :tp_src => 10,
37
37
  :tp_dst => 20
38
38
  )
39
- }
40
- its( :in_port ) { should == 1 }
41
- its( "dl_src.to_s" ) { should == "00:00:00:00:00:01" }
42
- its( "dl_dst.to_s" ) { should == "00:00:00:00:00:02" }
43
- its( :dl_vlan ) { should == 65535 }
44
- its( :dl_vlan_pcp ) { should == 0 }
45
- its( :dl_type ) { should == 0x800 }
46
- its( :nw_tos ) { should == 0 }
47
- its( :nw_proto ) { should == 17 }
48
- its( "nw_src.to_s" ) { should == "192.168.0.1" }
49
- its( "nw_src.prefixlen" ) { should == 32 }
50
- its( "nw_dst.to_s" ) { should == "192.168.0.0" }
51
- its( "nw_dst.prefixlen" ) { should == 24 }
52
- its( :tp_src ) { should == 10 }
53
- its( :tp_dst ) { should == 20 }
54
- its( :to_s ) { should == "wildcards = 0x20000(nw_dst(8)), in_port = 1, dl_src = 00:00:00:00:00:01, dl_dst = 00:00:00:00:00:02, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 17, nw_src = 192.168.0.1/32, nw_dst = 192.168.0.0/24, tp_src = 10, tp_dst = 20" }
39
+ end
40
+ its(:in_port) { should == 1 }
41
+ its('dl_src.to_s') { should == '00:00:00:00:00:01' }
42
+ its('dl_dst.to_s') { should == '00:00:00:00:00:02' }
43
+ its(:dl_vlan) { should == 65535 }
44
+ its(:dl_vlan_pcp) { should == 0 }
45
+ its(:dl_type) { should == 0x800 }
46
+ its(:nw_tos) { should == 0 }
47
+ its(:nw_proto) { should == 17 }
48
+ its('nw_src.to_s') { should == '192.168.0.1' }
49
+ its('nw_src.prefixlen') { should == 32 }
50
+ its('nw_dst.to_s') { should == '192.168.0.0' }
51
+ its('nw_dst.prefixlen') { should == 24 }
52
+ its(:tp_src) { should == 10 }
53
+ its(:tp_dst) { should == 20 }
54
+ its(:to_s) { should == 'wildcards = 0x20000(nw_dst(8)), in_port = 1, dl_src = 00:00:00:00:00:01, dl_dst = 00:00:00:00:00:02, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 17, nw_src = 192.168.0.1/32, nw_dst = 192.168.0.0/24, tp_src = 10, tp_dst = 20' }
55
55
  end
56
56
 
57
57
 
58
- describe Match, ".compare" do
59
- it "Should match" do
58
+ describe Match, '.compare' do
59
+ it 'Should match' do
60
60
  tester = Match.new(
61
61
  :in_port => 1,
62
- :dl_src => "00:00:00:00:00:01",
63
- :dl_dst => "00:00:00:00:00:02",
62
+ :dl_src => '00:00:00:00:00:01',
63
+ :dl_dst => '00:00:00:00:00:02',
64
64
  :dl_vlan => 65535,
65
65
  :dl_vlan_pcp => 0,
66
66
  :dl_type => 0x800,
67
67
  :nw_tos => 0,
68
68
  :nw_proto => 17,
69
- :nw_src => "192.168.0.1",
70
- :nw_dst => "192.168.0.2",
69
+ :nw_src => '192.168.0.1',
70
+ :nw_dst => '192.168.0.2',
71
71
  :tp_src => 10,
72
72
  :tp_dst => 20
73
73
  )
74
74
  pattern = Match.new(
75
75
  :in_port => 1,
76
- :nw_src => "192.168.0.0/24",
77
- :nw_dst => "192.168.0.0/24"
76
+ :nw_src => '192.168.0.0/24',
77
+ :nw_dst => '192.168.0.0/24'
78
78
  )
79
- expect( pattern.compare( tester ) ).to be_true
79
+ expect(pattern.compare(tester)).to be_true
80
80
  end
81
81
 
82
- it "Should not match" do
82
+ it 'Should not match' do
83
83
  tester = Match.new(
84
84
  :in_port => 1,
85
- :dl_src => "00:00:00:00:00:01",
86
- :dl_dst => "00:00:00:00:00:02",
85
+ :dl_src => '00:00:00:00:00:01',
86
+ :dl_dst => '00:00:00:00:00:02',
87
87
  :dl_vlan => 65535,
88
88
  :dl_vlan_pcp => 0,
89
89
  :dl_type => 0x800,
90
90
  :nw_tos => 0,
91
91
  :nw_proto => 17,
92
- :nw_src => "192.168.0.1",
93
- :nw_dst => "192.168.0.2",
92
+ :nw_src => '192.168.0.1',
93
+ :nw_dst => '192.168.0.2',
94
94
  :tp_src => 10,
95
95
  :tp_dst => 20
96
96
  )
97
97
  pattern = Match.new(
98
98
  :in_port => 1,
99
- :nw_src => "10.0.0.0/8",
100
- :nw_dst => "10.0.0.0/8"
99
+ :nw_src => '10.0.0.0/8',
100
+ :nw_dst => '10.0.0.0/8'
101
101
  )
102
- expect( pattern.compare( tester ) ).to be_false
102
+ expect(pattern.compare(tester)).to be_false
103
103
  end
104
104
  end
105
105
 
@@ -16,8 +16,8 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/open-vswitch"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema/open-vswitch'
21
21
 
22
22
 
23
23
  module Trema
@@ -31,80 +31,80 @@ module Trema
31
31
  end
32
32
  end
33
33
 
34
- it "should keep a list of vswitches" do
35
- OpenVswitch.new mock( "stanza 0", :name => "vswitch 0", :validate => true )
36
- OpenVswitch.new mock( "stanza 1", :name => "vswitch 1", :validate => true )
37
- OpenVswitch.new mock( "stanza 2", :name => "vswitch 2", :validate => true )
34
+ it 'should keep a list of vswitches' do
35
+ OpenVswitch.new mock('stanza 0', :name => 'vswitch 0', :validate => true)
36
+ OpenVswitch.new mock('stanza 1', :name => 'vswitch 1', :validate => true)
37
+ OpenVswitch.new mock('stanza 2', :name => 'vswitch 2', :validate => true)
38
38
 
39
- expect( OpenflowSwitch ).to have( 3 ).vswitches
40
- expect( OpenflowSwitch[ "vswitch 0" ] ).not_to be_nil
41
- expect( OpenflowSwitch[ "vswitch 1" ] ).not_to be_nil
42
- expect( OpenflowSwitch[ "vswitch 2" ] ).not_to be_nil
39
+ expect(OpenflowSwitch).to have(3).vswitches
40
+ expect(OpenflowSwitch[ 'vswitch 0']).not_to be_nil
41
+ expect(OpenflowSwitch[ 'vswitch 1']).not_to be_nil
42
+ expect(OpenflowSwitch[ 'vswitch 2']).not_to be_nil
43
43
  end
44
44
  end
45
45
 
46
46
 
47
- describe OpenVswitch, %[dpid = "0xabc"] do
48
- subject {
49
- stanza = { :dpid_short => "0xabc", :dpid_long => "0000000000000abc", :ip => "127.0.0.1" }
50
- stanza.stub!( :validate )
51
- stanza.stub!( :name ).and_return( name )
47
+ describe OpenVswitch, 'dpid = 0xabc' do
48
+ subject do
49
+ stanza = { :dpid_short => '0xabc', :dpid_long => '0000000000000abc', :ip => '127.0.0.1' }
50
+ stanza.stub!(:validate)
51
+ stanza.stub!(:name).and_return(name)
52
52
  OpenVswitch.new stanza
53
- }
53
+ end
54
54
 
55
55
 
56
- context "when its name is not set" do
57
- let( :name ) { "0xabc" }
56
+ context 'when its name is not set' do
57
+ let(:name) { '0xabc' }
58
58
 
59
- its( :name ) { should == "0xabc" }
60
- its( :dpid_short ) { should == "0xabc" }
61
- its( :dpid_long ) { should == "0000000000000abc" }
62
- its( :network_device ) { should == "vsw_0xabc" }
59
+ its(:name) { should == '0xabc' }
60
+ its(:dpid_short) { should == '0xabc' }
61
+ its(:dpid_long) { should == '0000000000000abc' }
62
+ its(:network_device) { should == 'vsw_0xabc' }
63
63
  end
64
64
 
65
65
 
66
- context "when its name is set" do
67
- let( :name ) { "Otosan Switch" }
66
+ context 'when its name is set' do
67
+ let(:name) { 'Otosan Switch' }
68
68
 
69
- its( :name ) { should == "Otosan Switch" }
70
- its( :dpid_short ) { should == "0xabc" }
71
- its( :dpid_long ) { should == "0000000000000abc" }
72
- its( :network_device ) { should == "vsw_0xabc" }
69
+ its(:name) { should == 'Otosan Switch' }
70
+ its(:dpid_short) { should == '0xabc' }
71
+ its(:dpid_long) { should == '0000000000000abc' }
72
+ its(:network_device) { should == 'vsw_0xabc' }
73
73
  end
74
74
 
75
75
 
76
- context "when getting its flows" do
77
- let( :name ) { "0xabc" }
76
+ context 'when getting its flows' do
77
+ let(:name) { '0xabc' }
78
78
 
79
- it "should execute ofctl to get the flows" do
80
- ofctl = mock( "ofctl" )
81
- Ofctl.stub!( :new ).and_return( ofctl )
79
+ it 'should execute ofctl to get the flows' do
80
+ ofctl = mock('ofctl')
81
+ Ofctl.stub!(:new).and_return(ofctl)
82
82
 
83
- ofctl.should_receive( :users_flows ).with( subject ).once
83
+ ofctl.should_receive(:users_flows).with(subject).once
84
84
 
85
85
  subject.flows
86
86
  end
87
87
  end
88
88
 
89
89
 
90
- context "when running it" do
91
- let( :name ) { "0xabc" }
90
+ context 'when running it' do
91
+ let(:name) { '0xabc' }
92
92
 
93
- it "should execute ovs openflowd" do
94
- subject.should_receive( :sh ).with do | command |
95
- expect( command ).to include( Executables.ovs_openflowd )
93
+ it 'should execute ovs openflowd' do
94
+ subject.should_receive(:sh).with do | command |
95
+ expect(command).to include(Executables.ovs_openflowd)
96
96
  end
97
97
 
98
98
  subject.run!
99
99
  end
100
100
 
101
- it "should be connected to virtual ports" do
102
- subject << "VirtualInterface0"
103
- subject << "VirtualInterface1"
104
- subject << "VirtualInterface2"
101
+ it 'should be connected to virtual ports' do
102
+ subject << 'VirtualInterface0'
103
+ subject << 'VirtualInterface1'
104
+ subject << 'VirtualInterface2'
105
105
 
106
- subject.should_receive( :sh ).with do | command |
107
- expect( command ).to include( "--ports=VirtualInterface0,VirtualInterface1,VirtualInterface2" )
106
+ subject.should_receive(:sh).with do | command |
107
+ expect(command).to include('--ports=VirtualInterface0,VirtualInterface1,VirtualInterface2')
108
108
  end
109
109
 
110
110
  subject.run!
@@ -16,117 +16,119 @@
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::OpenflowError, "new" do
24
- context "when #port_mod with an invalid(port_no) is sent" do
25
- it "should receive #error(type=Error::OFPET_PORT_MOD_FAILED,code=Error::OFPPMFC_BAD_PORT)" do
23
+ describe Trema::OpenflowError, 'new' do
24
+ context 'when #port_mod with an invalid(port_no) is sent' do
25
+ it 'should receive #error(type=Error::OFPET_PORT_MOD_FAILED,code=Error::OFPPMFC_BAD_PORT)' do
26
26
  class OpenflowErrorController < Controller; end
27
- network {
28
- vswitch( "error-port") { datapath_id 0xabc }
29
- }.run( OpenflowErrorController ) {
30
- port_mod = Trema::PortMod.new( :port_no => 2,
31
- :hw_addr => Trema::Mac.new( "11:22:33:44:55:66" ),
27
+ network do
28
+ vswitch('error-port') { datapath_id 0xabc }
29
+ end.run(OpenflowErrorController) do
30
+ port_mod = Trema::PortMod.new(
31
+ :port_no => 2,
32
+ :hw_addr => Trema::Mac.new('11:22:33:44:55:66'),
32
33
  :config => 1,
33
34
  :mask => 1,
34
35
  :advertise => 0
35
36
  )
36
- controller( "OpenflowErrorController" ).should_receive( :openflow_error ) do | datapath_id, message |
37
- expect( datapath_id ).to eq( 0xabc )
38
- expect( message.type ).to eq( Error::OFPET_PORT_MOD_FAILED )
39
- expect( message.code ).to eq( Error::OFPPMFC_BAD_PORT )
37
+ controller('OpenflowErrorController').should_receive(:openflow_error) do | datapath_id, message |
38
+ expect(datapath_id).to eq(0xabc)
39
+ expect(message.type).to eq(Error::OFPET_PORT_MOD_FAILED)
40
+ expect(message.code).to eq(Error::OFPPMFC_BAD_PORT)
40
41
  end
41
- controller( "OpenflowErrorController" ).send_message( 0xabc, port_mod )
42
+ controller('OpenflowErrorController').send_message(0xabc, port_mod)
42
43
  sleep 2 # FIXME: wait to send_message
43
- }
44
+ end
44
45
  end
45
46
  end
46
47
 
47
48
 
48
- context "when #port_mod with an invalid(hw_addr) is sent" do
49
- it "should receive #error(type=Error::OFPET_PORT_MOD_FAILED,code=Error::OFPPMFC_BAD_HW_ADDR)" do
49
+ context 'when #port_mod with an invalid(hw_addr) is sent' do
50
+ it 'should receive #error(type=Error::OFPET_PORT_MOD_FAILED,code=Error::OFPPMFC_BAD_HW_ADDR)' do
50
51
  class OpenflowErrorController < Controller; end
51
- network {
52
- vswitch( "error-hw-addr") { datapath_id 0xabc }
53
- vhost "host1"
54
- vhost "host2"
55
- link "host1", "error-hw-addr"
56
- link "host2", "error-hw-addr"
57
- }.run( OpenflowErrorController ) {
58
- port_mod = Trema::PortMod.new( :port_no => 1,
59
- :hw_addr => Trema::Mac.new( "11:22:33:44:55:66" ),
52
+ network do
53
+ vswitch('error-hw-addr') { datapath_id 0xabc }
54
+ vhost 'host1'
55
+ vhost 'host2'
56
+ link 'host1', 'error-hw-addr'
57
+ link 'host2', 'error-hw-addr'
58
+ end.run(OpenflowErrorController) do
59
+ port_mod = Trema::PortMod.new(
60
+ :port_no => 1,
61
+ :hw_addr => Trema::Mac.new('11:22:33:44:55:66'),
60
62
  :config => 1,
61
63
  :mask => 1,
62
64
  :advertise => 0
63
65
  )
64
- controller( "OpenflowErrorController" ).should_receive( :openflow_error ) do | datapath_id, message |
65
- expect( datapath_id ).to eq( 0xabc )
66
- expect( message.type ).to eq( Error::OFPET_PORT_MOD_FAILED )
67
- expect( message.code ).to eq( Error::OFPPMFC_BAD_HW_ADDR )
66
+ controller('OpenflowErrorController').should_receive(:openflow_error) do | datapath_id, message |
67
+ expect(datapath_id).to eq(0xabc)
68
+ expect(message.type).to eq(Error::OFPET_PORT_MOD_FAILED)
69
+ expect(message.code).to eq(Error::OFPPMFC_BAD_HW_ADDR)
68
70
  end
69
- controller( "OpenflowErrorController" ).send_message( 0xabc, port_mod )
71
+ controller('OpenflowErrorController').send_message(0xabc, port_mod)
70
72
  sleep 2 # FIXME: wait to send_message
71
- }
73
+ end
72
74
  end
73
75
  end
74
76
 
75
77
 
76
- context "when #flow_mod(add) message with an invalid(action_port) is sent" do
77
- it "should receive #error(type=Error::OFPET_BAD_ACTION,code=Error::OFPBAC_BAD_OUT_PORT)" do
78
+ context 'when #flow_mod(add) message with an invalid(action_port) is sent' do
79
+ it 'should receive #error(type=Error::OFPET_BAD_ACTION,code=Error::OFPBAC_BAD_OUT_PORT)' do
78
80
  class OpenflowErrorController < Controller; end
79
- network {
80
- vswitch( "error-out-port") { datapath_id 0xabc }
81
- vhost "host1"
82
- vhost "host2"
83
- link "host1", "error-port"
84
- link "host2", "error-port"
85
- }.run( OpenflowErrorController ) {
86
- controller( "OpenflowErrorController" ).should_receive( :openflow_error ) do | datapath_id, message |
87
- expect( datapath_id ).to eq( 0xabc )
88
- expect( message.type ).to eq( Error::OFPET_BAD_ACTION )
89
- expect( message.code ).to eq( Error::OFPBAC_BAD_OUT_PORT )
81
+ network do
82
+ vswitch('error-out-port') { datapath_id 0xabc }
83
+ vhost 'host1'
84
+ vhost 'host2'
85
+ link 'host1', 'error-port'
86
+ link 'host2', 'error-port'
87
+ end.run(OpenflowErrorController) do
88
+ controller('OpenflowErrorController').should_receive(:openflow_error) do | datapath_id, message |
89
+ expect(datapath_id).to eq(0xabc)
90
+ expect(message.type).to eq(Error::OFPET_BAD_ACTION)
91
+ expect(message.code).to eq(Error::OFPBAC_BAD_OUT_PORT)
90
92
  end
91
- controller( "OpenflowErrorController" ).send_flow_mod_add( 0xabc, :actions => ActionOutput.new( :port => 0x5555 ) )
93
+ controller('OpenflowErrorController').send_flow_mod_add(0xabc, :actions => ActionOutput.new(:port => 0x5555))
92
94
  sleep 2 # FIXME: wait to send_flow_mod_add
93
- }
95
+ end
94
96
  end
95
97
  end
96
98
 
97
99
 
98
- context "when an unsupported message is sent" do
99
- it "should receive an openflow error with valid attributes" do
100
+ context 'when an unsupported message is sent' do
101
+ it 'should receive an openflow error with valid attributes' do
100
102
  class OpenflowController < Controller; end
101
- network {
102
- vswitch( "error-request") { datapath_id 0xabc }
103
- }.run( OpenflowController ) {
104
- queue_get_config_request = Trema::QueueGetConfigRequest.new( :port => 1 )
105
- controller( "OpenflowController" ).should_receive( :openflow_error ) do | datapath_id, message |
106
- expect( message.datapath_id ).to eq( 0xabc )
107
- expect( message.type ).to satisfy { | n |
103
+ network do
104
+ vswitch('error-request') { datapath_id 0xabc }
105
+ end.run(OpenflowController) do
106
+ queue_get_config_request = Trema::QueueGetConfigRequest.new(:port => 1)
107
+ controller('OpenflowController').should_receive(:openflow_error) do | datapath_id, message |
108
+ expect(message.datapath_id).to eq(0xabc)
109
+ expect(message.type).to satisfy { | n |
108
110
  n >= 0 && n <= 5
109
111
  }
110
112
  case message.type
111
- when 0,4
112
- expect( message.code ).to include( 0,1 )
113
- when 1,2
114
- expect( message.code ).to satisfy { | n |
113
+ when 0, 4
114
+ expect(message.code).to include(0, 1)
115
+ when 1, 2
116
+ expect(message.code).to satisfy { | n |
115
117
  n >= 0 && n <= 8
116
118
  }
117
119
  when 3
118
- expect( message.code ).to satisfy { | n |
120
+ expect(message.code).to satisfy { | n |
119
121
  n >= 0 && n <= 5
120
122
  }
121
123
  when 5
122
- expect( message.code ).to satisfy { |n|
124
+ expect(message.code).to satisfy { |n|
123
125
  n >= 0 && n <= 3
124
126
  }
125
127
  end
126
128
  end
127
- controller( "OpenflowController" ).send_message( 0xabc, queue_get_config_request )
129
+ controller('OpenflowController').send_message(0xabc, queue_get_config_request)
128
130
  sleep 2 # FIXME: wait to send_message
129
- }
131
+ end
130
132
  end
131
133
  end
132
134
  end