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,54 +16,54 @@
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 Enqueue, ".new( :port_number => 1 )" do
24
- it { expect { Enqueue.new( :port_number => 1 ) }.to raise_error( ArgumentError ) }
23
+ describe Enqueue, '.new( :port_number => 1 )' do
24
+ it { expect { Enqueue.new(:port_number => 1) }.to raise_error(ArgumentError) }
25
25
  end
26
26
 
27
27
 
28
- describe Enqueue, ".new( :queue_id => 1 )" do
29
- it { expect { Enqueue.new( :queue_id => 1 ) }.to raise_error( ArgumentError ) }
28
+ describe Enqueue, '.new( :queue_id => 1 )' do
29
+ it { expect { Enqueue.new(:queue_id => 1) }.to raise_error(ArgumentError) }
30
30
  end
31
31
 
32
32
 
33
- describe Enqueue, ".new( :port_number => number, :queue_id => 1 )" do
33
+ describe Enqueue, '.new( :port_number => number, :queue_id => 1 )' do
34
34
  subject { Enqueue.new :port_number => port_number, :queue_id => 1 }
35
- it_validates "option is within range", :port_number, 0..( 2 ** 16 - 1 )
35
+ it_validates 'option is within range', :port_number, 0..( 2**16 - 1)
36
36
 
37
- context "when :port_number == 1" do
38
- let( :port_number ) { 1 }
39
- its( :port_number ) { should == 1 }
37
+ context 'when :port_number == 1' do
38
+ let(:port_number) { 1 }
39
+ its(:port_number) { should == 1 }
40
40
  end
41
41
  end
42
42
 
43
43
 
44
- describe Enqueue, ".new( :port_number => 1, :queue_id => number )" do
44
+ describe Enqueue, '.new( :port_number => 1, :queue_id => number )' do
45
45
  subject { Enqueue.new :port_number => 1, :queue_id => queue_id }
46
- it_validates "option is within range", :queue_id, 0..( 2 ** 32 - 1 )
46
+ it_validates 'option is within range', :queue_id, 0..( 2**32 - 1)
47
47
 
48
- context "when :queue_id == 256" do
49
- let( :queue_id ) { 256 }
50
- its( :queue_id ) { should == 256 }
48
+ context 'when :queue_id == 256' do
49
+ let(:queue_id) { 256 }
50
+ its(:queue_id) { should == 256 }
51
51
  end
52
52
  end
53
53
 
54
54
 
55
- describe Enqueue, ".new( VALID OPTIONS )" do
56
- context "when sending #flow_mod(add) with action set to enqueue" do
57
- it "should have a flow with action set to enqueue" do
55
+ describe Enqueue, '.new( VALID OPTIONS )' do
56
+ context 'when sending #flow_mod(add) with action set to enqueue' do
57
+ it 'should have a flow with action set to enqueue' do
58
58
  class FlowModAddController < Controller; end
59
- network {
59
+ network do
60
60
  vswitch { datapath_id 0xabc }
61
- }.run( FlowModAddController ) {
62
- controller( "FlowModAddController" ).send_flow_mod_add( 0xabc, :actions => Enqueue.new( :port_number => 1, :queue_id => 123 ) )
61
+ end.run(FlowModAddController) do
62
+ controller('FlowModAddController').send_flow_mod_add(0xabc, :actions => Enqueue.new(:port_number => 1, :queue_id => 123))
63
63
  sleep 2 # FIXME: wait to send_flow_mod
64
- expect( vswitch( "0xabc" ) ).to have( 1 ).flows
65
- expect( vswitch( "0xabc" ).flows[0].actions ).to match( /enqueue:1q123/ )
66
- }
64
+ expect(vswitch('0xabc')).to have(1).flows
65
+ expect(vswitch('0xabc').flows[0].actions).to match(/enqueue:1q123/)
66
+ end
67
67
  end
68
68
  end
69
69
  end
@@ -16,60 +16,60 @@
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 Error, ".new", :nosudo => true do
25
- it { expect { subject }.to raise_error( ArgumentError, "Type and code are mandatory options" ) }
24
+ describe Error, '.new', :nosudo => true do
25
+ it { expect { subject }.to raise_error(ArgumentError, 'Type and code are mandatory options') }
26
26
  end
27
27
 
28
28
 
29
- describe Error, ".new(nil)", :nosudo => true do
30
- it { expect { subject }.to raise_error( ArgumentError, "Type and code are mandatory options" ) }
29
+ describe Error, '.new(nil)', :nosudo => true do
30
+ it { expect { subject }.to raise_error(ArgumentError, 'Type and code are mandatory options') }
31
31
  end
32
32
 
33
33
 
34
- describe Error, ".new(:type => value)", :nosudo => true do
35
- subject { Error.new( :type => OFPET_BAD_REQUEST ) }
36
- it { expect { subject }.to raise_error( ArgumentError, "Code is a mandatory option" ) }
34
+ describe Error, '.new(:type => value)', :nosudo => true do
35
+ subject { Error.new(:type => OFPET_BAD_REQUEST) }
36
+ it { expect { subject }.to raise_error(ArgumentError, 'Code is a mandatory option') }
37
37
  end
38
38
 
39
39
 
40
- describe Error, ".new(:code => value)", :nosudo => true do
41
- subject { Error.new( :code => OFPBRC_BAD_TYPE ) }
42
- it { expect { subject }.to raise_error( ArgumentError, "Type is a mandatory option" ) }
40
+ describe Error, '.new(:code => value)', :nosudo => true do
41
+ subject { Error.new(:code => OFPBRC_BAD_TYPE) }
42
+ it { expect { subject }.to raise_error(ArgumentError, 'Type is a mandatory option') }
43
43
  end
44
44
 
45
45
 
46
- describe Error, ".new(:type => value, :code => value)" do
47
- subject { Error.new( :type => OFPET_BAD_REQUEST, :code => OFPBRC_BAD_TYPE ) }
48
- it_should_behave_like "any Openflow message with default transaction ID"
49
- its( :error_type ) { should == OFPET_BAD_REQUEST }
50
- its( :code ) { should == OFPBRC_BAD_TYPE }
51
- its( :data ) { should be_nil }
46
+ describe Error, '.new(:type => value, :code => value)' do
47
+ subject { Error.new(:type => OFPET_BAD_REQUEST, :code => OFPBRC_BAD_TYPE) }
48
+ it_should_behave_like 'any Openflow message with default transaction ID'
49
+ its(:error_type) { should == OFPET_BAD_REQUEST }
50
+ its(:code) { should == OFPBRC_BAD_TYPE }
51
+ its(:data) { should be_nil }
52
52
  end
53
53
 
54
54
 
55
- describe Error, ".new(:type => value, :code => value, :transaction_id => value)" do
56
- subject { Error.new( :type => OFPET_BAD_REQUEST, :code => OFPBRC_BAD_TYPE, :transaction_id => transaction_id ) }
57
- it_should_behave_like "any Openflow message with transaction ID"
55
+ describe Error, '.new(:type => value, :code => value, :transaction_id => value)' do
56
+ subject { Error.new(:type => OFPET_BAD_REQUEST, :code => OFPBRC_BAD_TYPE, :transaction_id => transaction_id) }
57
+ it_should_behave_like 'any Openflow message with transaction ID'
58
58
  end
59
59
 
60
60
 
61
- describe Error, ".new(:type => value, :code => value, :xid => value)" do
62
- subject { Error.new( :type => OFPET_BAD_REQUEST, :code => OFPBRC_BAD_TYPE, :xid => xid ) }
63
- it_should_behave_like "any Openflow message with xid"
61
+ describe Error, '.new(:type => value, :code => value, :xid => value)' do
62
+ subject { Error.new(:type => OFPET_BAD_REQUEST, :code => OFPBRC_BAD_TYPE, :xid => xid) }
63
+ it_should_behave_like 'any Openflow message with xid'
64
64
  end
65
65
 
66
66
 
67
- describe Error, ".new(:type => value, :code => value, :data => value)" do
68
- subject { Error.new( :type => OFPET_BAD_REQUEST, :code => OFPBRC_BAD_TYPE, :data => "deadbeef" ) }
69
- it_should_behave_like "any Openflow message with default transaction ID"
70
- its( :error_type ) { should == OFPET_BAD_REQUEST }
71
- its( :code ) { should == OFPBRC_BAD_TYPE }
72
- its( :data ) { should == "deadbeef" }
67
+ describe Error, '.new(:type => value, :code => value, :data => value)' do
68
+ subject { Error.new(:type => OFPET_BAD_REQUEST, :code => OFPBRC_BAD_TYPE, :data => 'deadbeef') }
69
+ it_should_behave_like 'any Openflow message with default transaction ID'
70
+ its(:error_type) { should == OFPET_BAD_REQUEST }
71
+ its(:code) { should == OFPBRC_BAD_TYPE }
72
+ its(:data) { should == 'deadbeef' }
73
73
  end
74
74
  end
75
75
 
@@ -16,33 +16,33 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/executables"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema/executables'
21
21
 
22
22
 
23
23
  describe Trema::Executables do
24
24
  subject { Trema::Executables }
25
25
 
26
- its ( :cli ) { should be_a( String ) }
27
- its ( :ovs_ofctl ) { should be_a( String ) }
28
- its ( :ovs_openflowd ) { should be_a( String ) }
29
- its ( :packet_capture ) { should be_a( String ) }
30
- its ( :packetin_filter ) { should be_a( String ) }
31
- its ( :phost ) { should be_a( String ) }
32
- its ( :stdin_relay ) { should be_a( String ) }
33
- its ( :switch ) { should be_a( String ) }
34
- its ( :switch_manager ) { should be_a( String ) }
35
- its ( :syslog_relay ) { should be_a( String ) }
36
- its ( :tremashark ) { should be_a( String ) }
37
-
38
- context "when Trema is compiled" do
39
- before { FileTest.stub!( :executable? ).and_return( true ) }
40
- its ( :compiled? ) { should be_true }
26
+ its ( :cli) { should be_a(String) }
27
+ its ( :ovs_ofctl) { should be_a(String) }
28
+ its ( :ovs_openflowd) { should be_a(String) }
29
+ its ( :packet_capture) { should be_a(String) }
30
+ its ( :packetin_filter) { should be_a(String) }
31
+ its ( :phost) { should be_a(String) }
32
+ its ( :stdin_relay) { should be_a(String) }
33
+ its ( :switch) { should be_a(String) }
34
+ its ( :switch_manager) { should be_a(String) }
35
+ its ( :syslog_relay) { should be_a(String) }
36
+ its ( :tremashark) { should be_a(String) }
37
+
38
+ context 'when Trema is compiled' do
39
+ before { FileTest.stub!(:executable?).and_return(true) }
40
+ its ( :compiled?) { should be_true }
41
41
  end
42
42
 
43
- context "when Trema is not compiled" do
44
- before { FileTest.stub!( :executable? ).and_return( false ) }
45
- its ( :compiled? ) { should be_false }
43
+ context 'when Trema is not compiled' do
44
+ before { FileTest.stub!(:executable?).and_return(false) }
45
+ its ( :compiled?) { should be_false }
46
46
  end
47
47
  end
48
48
 
@@ -16,18 +16,18 @@
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 FeaturesReply, ".new" do
25
- it { expect { subject }.to raise_error( ArgumentError ) }
24
+ describe FeaturesReply, '.new' do
25
+ it { expect { subject }.to raise_error(ArgumentError) }
26
26
  end
27
27
 
28
28
 
29
- describe FeaturesReply, ".new(options...)" do
30
- subject {
29
+ describe FeaturesReply, '.new(options...)' do
30
+ subject do
31
31
  valid_options = {
32
32
  :datapath_id => 123,
33
33
  :transaction_id => 1234,
@@ -35,51 +35,51 @@ module Trema
35
35
  :n_tables => 2,
36
36
  :capabilities => 135,
37
37
  :actions => 2047,
38
- :ports => [ "port #0", "port #1", "port #2" ]
38
+ :ports => ['port #0', 'port #1', 'port #2']
39
39
  }
40
- FeaturesReply.new( valid_options )
41
- }
40
+ FeaturesReply.new(valid_options)
41
+ end
42
42
 
43
- its( :datapath_id ) { should == 123 }
44
- its( :transaction_id ) { should == 1234 }
45
- its( :xid ) { should == 1234 }
46
- its( :n_buffers ) { should == 256 }
47
- its( :n_tables ) { should == 2 }
48
- its( :capabilities ) { should == 135 }
49
- its( :actions ) { should == 2047 }
50
- its( "ports.size" ) { should == 3 }
43
+ its(:datapath_id) { should == 123 }
44
+ its(:transaction_id) { should == 1234 }
45
+ its(:xid) { should == 1234 }
46
+ its(:n_buffers) { should == 256 }
47
+ its(:n_tables) { should == 2 }
48
+ its(:capabilities) { should == 135 }
49
+ its(:actions) { should == 2047 }
50
+ its('ports.size') { should == 3 }
51
51
  end
52
52
 
53
53
 
54
- describe FeaturesReply, ".new(options...) (No :datapath_id)" do
55
- subject {
56
- FeaturesReply.new( {
54
+ describe FeaturesReply, '.new(options...) (No :datapath_id)' do
55
+ subject do
56
+ FeaturesReply.new({
57
57
  # :datapath_id => 123,
58
- :transaction_id => 1234,
59
- :n_buffers => 256,
60
- :n_tables => 2,
61
- :capabilities => 135,
62
- :actions => 2047,
63
- :ports => [ "port #0", "port #1", "port #2" ]
64
- } )
65
- }
66
- it { expect { subject }.to raise_error( ArgumentError, ":datapath_id is a mandatory option" ) }
58
+ :transaction_id => 1234,
59
+ :n_buffers => 256,
60
+ :n_tables => 2,
61
+ :capabilities => 135,
62
+ :actions => 2047,
63
+ :ports => ['port #0', 'port #1', 'port #2']
64
+ })
65
+ end
66
+ it { expect { subject }.to raise_error(ArgumentError, ':datapath_id is a mandatory option') }
67
67
  end
68
68
 
69
69
 
70
- describe FeaturesReply, ".new(options...) (No :transaction_id)" do
71
- subject {
72
- FeaturesReply.new( {
73
- :datapath_id => 123,
70
+ describe FeaturesReply, '.new(options...) (No :transaction_id)' do
71
+ subject do
72
+ FeaturesReply.new({
73
+ :datapath_id => 123,
74
74
  # :transaction_id => 1234,
75
- :n_buffers => 256,
76
- :n_tables => 2,
77
- :capabilities => 135,
78
- :actions => 2047,
79
- :ports => [ "port #0", "port #1", "port #2" ]
80
- } )
81
- }
82
- it { expect { subject }.to raise_error( ArgumentError, ":transaction_id is a mandatory option" ) }
75
+ :n_buffers => 256,
76
+ :n_tables => 2,
77
+ :capabilities => 135,
78
+ :actions => 2047,
79
+ :ports => ['port #0', 'port #1', 'port #2']
80
+ })
81
+ end
82
+ it { expect { subject }.to raise_error(ArgumentError, ':transaction_id is a mandatory option') }
83
83
  end
84
84
  end
85
85
 
@@ -16,72 +16,72 @@
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 "features request message" do
23
+ shared_examples_for 'features request message' do
24
24
  class FeaturesRequestController < Controller; end
25
25
 
26
26
  it "should be logged to the switch's log", :sudo => true do
27
- network {
28
- vswitch( "features-request" ) { datapath_id 0xabc }
29
- }.run( FeaturesRequestController ) {
30
- controller( "FeaturesRequestController" ).send_message( 0xabc, subject )
27
+ network do
28
+ vswitch('features-request') { datapath_id 0xabc }
29
+ end.run(FeaturesRequestController) do
30
+ controller('FeaturesRequestController').send_message(0xabc, subject)
31
31
  sleep 2 # FIXME: wait to send_message
32
- expect( IO.read( File.join( Trema.log, "openflowd.features-request.log" ) ) ).to include( "OFPT_FEATURES_REQUEST" )
33
- }
32
+ expect(IO.read(File.join(Trema.log, 'openflowd.features-request.log'))).to include('OFPT_FEATURES_REQUEST')
33
+ end
34
34
  end
35
35
  end
36
36
 
37
37
 
38
38
  module Trema
39
- describe FeaturesRequest, ".new" do
40
- it_should_behave_like "any Openflow message with default transaction ID"
41
- it_should_behave_like "features request message"
39
+ describe FeaturesRequest, '.new' do
40
+ it_should_behave_like 'any Openflow message with default transaction ID'
41
+ it_should_behave_like 'features request message'
42
42
  end
43
43
 
44
44
 
45
- describe FeaturesRequest, ".new(nil)" do
46
- subject { FeaturesRequest.new( nil ) }
47
- it_should_behave_like "any Openflow message with default transaction ID"
48
- it_should_behave_like "features request message"
45
+ describe FeaturesRequest, '.new(nil)' do
46
+ subject { FeaturesRequest.new(nil) }
47
+ it_should_behave_like 'any Openflow message with default transaction ID'
48
+ it_should_behave_like 'features request message'
49
49
  end
50
50
 
51
51
 
52
- describe FeaturesRequest, ".new(transaction_id)" do
53
- subject { FeaturesRequest.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 "features request message"
52
+ describe FeaturesRequest, '.new(transaction_id)' do
53
+ subject { FeaturesRequest.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 'features request message'
58
58
  end
59
59
  end
60
60
 
61
61
 
62
- describe FeaturesRequest, ".new(:transaction_id => value)" do
63
- subject { FeaturesRequest.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 "features request message"
62
+ describe FeaturesRequest, '.new(:transaction_id => value)' do
63
+ subject { FeaturesRequest.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 'features request message'
68
68
  end
69
69
  end
70
70
 
71
71
 
72
- describe FeaturesRequest, ".new(:xid => value)" do
73
- subject { FeaturesRequest.new( :xid => xid ) }
74
- it_should_behave_like "any Openflow message with xid"
72
+ describe FeaturesRequest, '.new(:xid => value)' do
73
+ subject { FeaturesRequest.new(:xid => xid) }
74
+ it_should_behave_like 'any Openflow message with xid'
75
75
 
76
- context "when sent to a switch" do
77
- let( :xid ) { 123 }
78
- it_should_behave_like "features request message"
76
+ context 'when sent to a switch' do
77
+ let(:xid) { 123 }
78
+ it_should_behave_like 'features request message'
79
79
  end
80
80
  end
81
81
 
82
82
 
83
83
  describe FeaturesRequest, '.new("INVALID OPTION")', :nosudo => true do
84
- it { expect { FeaturesRequest.new "INVALID OPTION" }.to raise_error( TypeError ) }
84
+ it { expect { FeaturesRequest.new 'INVALID OPTION' }.to raise_error(TypeError) }
85
85
  end
86
86
  end
87
87
 
@@ -16,70 +16,70 @@
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 FlowMod, ".new", :nosudo => true do
25
- it_should_behave_like "any Openflow message with default transaction ID"
24
+ describe FlowMod, '.new', :nosudo => true do
25
+ it_should_behave_like 'any Openflow message with default transaction ID'
26
26
  end
27
27
 
28
28
 
29
- describe FlowMod, ".new(nil)", :nosudo => true do
30
- subject { FlowMod.new( nil ) }
31
- it_should_behave_like "any Openflow message with default transaction ID"
29
+ describe FlowMod, '.new(nil)', :nosudo => true do
30
+ subject { FlowMod.new(nil) }
31
+ it_should_behave_like 'any Openflow message with default transaction ID'
32
32
  end
33
33
 
34
34
 
35
- describe FlowMod, ".new(transaction_id)", :nosudo => true do
36
- subject { FlowMod.new( transaction_id ) }
37
- it_should_behave_like "any Openflow message with transaction ID"
35
+ describe FlowMod, '.new(transaction_id)', :nosudo => true do
36
+ subject { FlowMod.new(transaction_id) }
37
+ it_should_behave_like 'any Openflow message with transaction ID'
38
38
  end
39
39
 
40
40
 
41
- describe FlowMod, ".new(:transaction_id => value)", :nosudo => true do
42
- subject { FlowMod.new( :transaction_id => transaction_id ) }
43
- it_should_behave_like "any Openflow message with transaction ID"
41
+ describe FlowMod, '.new(:transaction_id => value)', :nosudo => true do
42
+ subject { FlowMod.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 FlowMod, ".new(:xid => value)", :nosudo => true do
48
- subject { FlowMod.new( :xid => xid ) }
49
- it_should_behave_like "any Openflow message with xid"
47
+ describe FlowMod, '.new(:xid => value)', :nosudo => true do
48
+ subject { FlowMod.new(:xid => xid) }
49
+ it_should_behave_like 'any Openflow message with xid'
50
50
  end
51
51
 
52
52
 
53
- describe FlowMod, ".new(:command => value)", :nosudo => true do
54
- subject { FlowMod.new( :command => command ) }
53
+ describe FlowMod, '.new(:command => value)', :nosudo => true do
54
+ subject { FlowMod.new(:command => command) }
55
55
 
56
- context "command: 0", :nosudo => true do
57
- let( :command ) { 0 }
58
- its( :command ) { should == 0 }
56
+ context 'command: 0', :nosudo => true do
57
+ let(:command) { 0 }
58
+ its(:command) { should == 0 }
59
59
  end
60
60
 
61
61
  # TODO: boundary test.
62
62
  end
63
63
 
64
64
 
65
- describe FlowMod, ".new(:idle_timeout => value)", :nosudo => true do
66
- subject { FlowMod.new( :idle_timeout => idle_timeout ) }
65
+ describe FlowMod, '.new(:idle_timeout => value)', :nosudo => true do
66
+ subject { FlowMod.new(:idle_timeout => idle_timeout) }
67
67
 
68
- context "idle_timeout: 0", :nosudo => true do
69
- let( :idle_timeout ) { 0 }
70
- its( :idle_timeout ) { should == 0 }
68
+ context 'idle_timeout: 0', :nosudo => true do
69
+ let(:idle_timeout) { 0 }
70
+ its(:idle_timeout) { should == 0 }
71
71
  end
72
72
 
73
73
  # TODO: boundary test.
74
74
  end
75
75
 
76
76
 
77
- describe FlowMod, ".new(:hard_timeout => value)", :nosudo => true do
78
- subject { FlowMod.new( :hard_timeout => hard_timeout ) }
77
+ describe FlowMod, '.new(:hard_timeout => value)', :nosudo => true do
78
+ subject { FlowMod.new(:hard_timeout => hard_timeout) }
79
79
 
80
- context "hard_timeout: 0", :nosudo => true do
81
- let( :hard_timeout ) { 0 }
82
- its( :hard_timeout ) { should == 0 }
80
+ context 'hard_timeout: 0', :nosudo => true do
81
+ let(:hard_timeout) { 0 }
82
+ its(:hard_timeout) { should == 0 }
83
83
  end
84
84
 
85
85
  # TODO: boundary test.
@@ -87,7 +87,7 @@ module Trema
87
87
 
88
88
 
89
89
  describe FlowMod, '.new("INVALID OPTION")', :nosudo => true do
90
- it { expect { FlowMod.new "INVALID OPTION" }.to raise_error( TypeError ) }
90
+ it { expect { FlowMod.new 'INVALID OPTION' }.to raise_error(TypeError) }
91
91
  end
92
92
  end
93
93