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,145 +16,145 @@
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 "any stats-request" do
24
- it_should_behave_like "any Openflow message with default transaction ID"
25
- its( :flags ) { should == 0 }
23
+ shared_examples_for 'any stats-request' do
24
+ it_should_behave_like 'any Openflow message with default transaction ID'
25
+ its(:flags) { should == 0 }
26
26
  end
27
27
 
28
28
 
29
29
  describe StatsRequest do
30
- context "when .DescStatsRequest.new( VALID OPTIONS )" do
30
+ context 'when .DescStatsRequest.new( VALID OPTIONS )' do
31
31
  subject { DescStatsRequest.new }
32
- it_should_behave_like "any stats-request"
32
+ it_should_behave_like 'any stats-request'
33
33
  end
34
34
 
35
35
 
36
- context "when .FlowStatsRequest.new( MANDATORY OPTION MISSING )" do
36
+ context 'when .FlowStatsRequest.new( MANDATORY OPTION MISSING )' do
37
37
  subject { FlowStatsRequest.new }
38
- it "should raise ArgumentError" do
39
- expect { subject }.to raise_error( ArgumentError )
38
+ it 'should raise ArgumentError' do
39
+ expect { subject }.to raise_error(ArgumentError)
40
40
  end
41
41
  end
42
42
 
43
43
 
44
- context "when .FlowStatsRequest.new( OPTIONAL OPTIONS MISSING )" do
45
- subject { FlowStatsRequest.new( :match => Match.new( :dl_type => 0x800, :nw_proto => 17 ) ) }
46
- it_should_behave_like "any stats-request"
47
- its( :match ) { should be_an_instance_of( Match ) }
48
- its( :table_id ) { should == 0xff }
49
- its( :out_port ) { should == 0xffff }
44
+ context 'when .FlowStatsRequest.new( OPTIONAL OPTIONS MISSING )' do
45
+ subject { FlowStatsRequest.new(:match => Match.new(:dl_type => 0x800, :nw_proto => 17)) }
46
+ it_should_behave_like 'any stats-request'
47
+ its(:match) { should be_an_instance_of(Match) }
48
+ its(:table_id) { should == 0xff }
49
+ its(:out_port) { should == 0xffff }
50
50
  end
51
51
 
52
52
 
53
- context "when .FlowStatsRequest.new( VALID OPTIONS )" do
53
+ context 'when .FlowStatsRequest.new( VALID OPTIONS )' do
54
54
  subject do
55
55
  FlowStatsRequest.new(
56
- :match => Match.new( :dl_type => 0x800, :nw_proto => 17 ),
56
+ :match => Match.new(:dl_type => 0x800, :nw_proto => 17),
57
57
  :table_id => 1,
58
58
  :out_port => 2
59
59
  )
60
60
  end
61
- it_should_behave_like "any stats-request"
62
- its( :match ) { should be_an_instance_of( Match ) }
63
- its( :table_id ) { should == 1 }
64
- its( :out_port ) { should == 2 }
61
+ it_should_behave_like 'any stats-request'
62
+ its(:match) { should be_an_instance_of(Match) }
63
+ its(:table_id) { should == 1 }
64
+ its(:out_port) { should == 2 }
65
65
  end
66
66
 
67
67
 
68
- context "when .AggregateStatsRequest.new( MANDATORY OPTION MISSING )" do
68
+ context 'when .AggregateStatsRequest.new( MANDATORY OPTION MISSING )' do
69
69
  subject { AggregateStatsRequest.new }
70
- it "should raise ArgumentError" do
71
- expect { subject }.to raise_error( ArgumentError )
70
+ it 'should raise ArgumentError' do
71
+ expect { subject }.to raise_error(ArgumentError)
72
72
  end
73
73
  end
74
74
 
75
75
 
76
- context "when .AggregateStatsRequest.new( OPTIONAL OPTIONS MISSING )" do
77
- subject { AggregateStatsRequest.new( :match => Match.new( :dl_type => 0x800, :nw_proto => 17 ) ) }
78
- it_should_behave_like "any stats-request"
79
- its( :match ) { should be_an_instance_of( Match ) }
80
- its( :table_id ) { should == 0xff }
81
- its( :out_port ) { should == 0xffff }
76
+ context 'when .AggregateStatsRequest.new( OPTIONAL OPTIONS MISSING )' do
77
+ subject { AggregateStatsRequest.new(:match => Match.new(:dl_type => 0x800, :nw_proto => 17)) }
78
+ it_should_behave_like 'any stats-request'
79
+ its(:match) { should be_an_instance_of(Match) }
80
+ its(:table_id) { should == 0xff }
81
+ its(:out_port) { should == 0xffff }
82
82
  end
83
83
 
84
84
 
85
- context "when .AggregateStatsRequest.new( VALID OPTIONS )" do
85
+ context 'when .AggregateStatsRequest.new( VALID OPTIONS )' do
86
86
  subject do
87
87
  AggregateStatsRequest.new(
88
- :match => Match.new( :dl_type => 0x800, :nw_proto => 17 ),
88
+ :match => Match.new(:dl_type => 0x800, :nw_proto => 17),
89
89
  :table_id => 1,
90
90
  :out_port => 2
91
91
  )
92
92
  end
93
- it_should_behave_like "any stats-request"
94
- its( :match ) { should be_an_instance_of( Match ) }
95
- its( :table_id ) { should == 1 }
96
- its( :out_port ) { should == 2 }
93
+ it_should_behave_like 'any stats-request'
94
+ its(:match) { should be_an_instance_of(Match) }
95
+ its(:table_id) { should == 1 }
96
+ its(:out_port) { should == 2 }
97
97
  end
98
98
 
99
99
 
100
- context "when .TableStatsRequest.new( VALID OPTIONS )" do
100
+ context 'when .TableStatsRequest.new( VALID OPTIONS )' do
101
101
  subject { TableStatsRequest.new }
102
- it_should_behave_like "any stats-request"
102
+ it_should_behave_like 'any stats-request'
103
103
  end
104
104
 
105
105
 
106
- context "when .PortStasRequest.new( OPTIONAL OPTION MISSING )" do
106
+ context 'when .PortStasRequest.new( OPTIONAL OPTION MISSING )' do
107
107
  subject { PortStatsRequest.new }
108
- it_should_behave_like "any stats-request"
109
- its( :port_no ) { should == 0xffff }
108
+ it_should_behave_like 'any stats-request'
109
+ its(:port_no) { should == 0xffff }
110
110
  end
111
111
 
112
112
 
113
- context "when .PortStasRequest.new( VALID OPTIONS )" do
113
+ context 'when .PortStasRequest.new( VALID OPTIONS )' do
114
114
  subject { PortStatsRequest.new :port_no => 1 }
115
- it_should_behave_like "any stats-request"
116
- its( :port_no ) { should == 1 }
115
+ it_should_behave_like 'any stats-request'
116
+ its(:port_no) { should == 1 }
117
117
  end
118
118
 
119
119
 
120
- context "when .QueueStatsRequest.new( OPTIONAL OPTIONS MISSING )" do
120
+ context 'when .QueueStatsRequest.new( OPTIONAL OPTIONS MISSING )' do
121
121
  subject { QueueStatsRequest.new }
122
- it_should_behave_like "any stats-request"
123
- its( :port_no ) { should == 0xfffc }
124
- its( :queue_id ) { should == 0xffffffff }
122
+ it_should_behave_like 'any stats-request'
123
+ its(:port_no) { should == 0xfffc }
124
+ its(:queue_id) { should == 0xffffffff }
125
125
  end
126
126
 
127
127
 
128
- context "when .QueueStatsRequest.new( VALID OPTIONS )" do
128
+ context 'when .QueueStatsRequest.new( VALID OPTIONS )' do
129
129
  subject { QueueStatsRequest.new :port_no => 1, :queue_id => 2 }
130
- it_should_behave_like "any stats-request"
131
- its( :port_no ) { should == 1 }
132
- its( :queue_id ) { should == 2 }
130
+ it_should_behave_like 'any stats-request'
131
+ its(:port_no) { should == 1 }
132
+ its(:queue_id) { should == 2 }
133
133
  end
134
134
 
135
135
 
136
- context "when .VendorStatsRequest.new( OPTIONAL OPTION MISSING )" do
136
+ context 'when .VendorStatsRequest.new( OPTIONAL OPTION MISSING )' do
137
137
  subject { VendorStatsRequest.new }
138
- it_should_behave_like "any stats-request"
139
- its( :vendor_id ) { should == 0x00004cff }
140
- its( :data ) { should be_nil }
138
+ it_should_behave_like 'any stats-request'
139
+ its(:vendor_id) { should == 0x00004cff }
140
+ its(:data) { should be_nil }
141
141
  end
142
142
 
143
143
 
144
- context "when .VendorStatsRequest.new( VALID OPTION )" do
144
+ context 'when .VendorStatsRequest.new( VALID OPTION )' do
145
145
  subject { VendorStatsRequest.new :vendor_id => 123 }
146
- it_should_behave_like "any stats-request"
147
- its( :vendor_id ) { should == 123 }
148
- its( :data ) { should be_nil }
146
+ it_should_behave_like 'any stats-request'
147
+ its(:vendor_id) { should == 123 }
148
+ its(:data) { should be_nil }
149
149
  end
150
150
 
151
151
 
152
- context "when .VendorStatsRequest.new(:data => value)" do
152
+ context 'when .VendorStatsRequest.new(:data => value)' do
153
153
  subject { VendorStatsRequest.new :data => data }
154
- it_should_behave_like "any stats-request"
155
- let( :data ) { "VENDOR DATA".unpack( "C*" ) }
156
- its( :data ) { should == [86, 69, 78, 68, 79, 82, 32, 68, 65, 84, 65] }
157
- its( :vendor_id ) { should == 0x00004cff }
154
+ it_should_behave_like 'any stats-request'
155
+ let(:data) { 'VENDOR DATA'.unpack('C*') }
156
+ its(:data) { should == [86, 69, 78, 68, 79, 82, 32, 68, 65, 84, 65] }
157
+ its(:vendor_id) { should == 0x00004cff }
158
158
  end
159
159
  end
160
160
 
@@ -16,22 +16,22 @@
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 StripVlanHeader, :type => "actions" do
24
- context "when sending a Flow Mod with StripVlanHeader" do
25
- it "should insert a new flow entry with action (strip_vlan)" do
23
+ describe StripVlanHeader, :type => 'actions' do
24
+ context 'when sending a Flow Mod with StripVlanHeader' do
25
+ it 'should insert a new flow entry with action (strip_vlan)' do
26
26
  class TestController < Controller; end
27
- network {
27
+ network do
28
28
  vswitch { datapath_id 0xabc }
29
- }.run( TestController ) {
30
- controller( "TestController" ).send_flow_mod_add( 0xabc, :actions => subject )
29
+ end.run(TestController) do
30
+ controller('TestController').send_flow_mod_add(0xabc, :actions => subject)
31
31
  sleep 2
32
- expect( vswitch( "0xabc" ) ).to have( 1 ).flows
33
- expect( vswitch( "0xabc" ).flows[ 0 ].actions ).to eq( "strip_vlan" )
34
- }
32
+ expect(vswitch('0xabc')).to have(1).flows
33
+ expect(vswitch('0xabc').flows[ 0].actions).to eq('strip_vlan')
34
+ end
35
35
  end
36
36
  end
37
37
  end
@@ -16,59 +16,59 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/switch-daemon"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema/switch-daemon'
21
21
 
22
22
 
23
23
  module Trema
24
24
  describe SwitchDaemon do
25
- it "should be initialized with proper options" do
25
+ it 'should be initialized with proper options' do
26
26
  rule = {
27
- :port_status => "topology",
28
- :packet_in => "controller",
29
- :state_notify => "topology",
30
- :vendor => "controller"
27
+ :port_status => 'topology',
28
+ :packet_in => 'controller',
29
+ :state_notify => 'topology',
30
+ :vendor => 'controller'
31
31
  }
32
- switch_daemon = SwitchDaemon.new( rule )
32
+ switch_daemon = SwitchDaemon.new(rule)
33
33
 
34
- expect( switch_daemon.options ).to include( "port_status::topology" )
35
- expect( switch_daemon.options ).to include( "packet_in::controller" )
36
- expect( switch_daemon.options ).to include( "state_notify::topology" )
37
- expect( switch_daemon.options ).to include( "vendor::controller" )
34
+ expect(switch_daemon.options).to include('port_status::topology')
35
+ expect(switch_daemon.options).to include('packet_in::controller')
36
+ expect(switch_daemon.options).to include('state_notify::topology')
37
+ expect(switch_daemon.options).to include('vendor::controller')
38
38
  end
39
39
 
40
40
 
41
- it "should be initialized with options which have multiple controllers" do
41
+ it 'should be initialized with options which have multiple controllers' do
42
42
  rule = {
43
- :port_status => "topology0,topology1",
44
- :packet_in => "controller0,controller1",
45
- :state_notify => "topology0,topology1",
46
- :vendor => "controller0,controller1"
43
+ :port_status => 'topology0,topology1',
44
+ :packet_in => 'controller0,controller1',
45
+ :state_notify => 'topology0,topology1',
46
+ :vendor => 'controller0,controller1'
47
47
  }
48
- switch_daemon = SwitchDaemon.new( rule )
48
+ switch_daemon = SwitchDaemon.new(rule)
49
49
 
50
- expect( switch_daemon.options ).to include( "port_status::topology0" )
51
- expect( switch_daemon.options ).to include( "port_status::topology1" )
52
- expect( switch_daemon.options ).to include( "packet_in::controller0" )
53
- expect( switch_daemon.options ).to include( "packet_in::controller1" )
54
- expect( switch_daemon.options ).to include( "state_notify::topology0" )
55
- expect( switch_daemon.options ).to include( "state_notify::topology1" )
56
- expect( switch_daemon.options ).to include( "vendor::controller0" )
57
- expect( switch_daemon.options ).to include( "vendor::controller1" )
50
+ expect(switch_daemon.options).to include('port_status::topology0')
51
+ expect(switch_daemon.options).to include('port_status::topology1')
52
+ expect(switch_daemon.options).to include('packet_in::controller0')
53
+ expect(switch_daemon.options).to include('packet_in::controller1')
54
+ expect(switch_daemon.options).to include('state_notify::topology0')
55
+ expect(switch_daemon.options).to include('state_notify::topology1')
56
+ expect(switch_daemon.options).to include('vendor::controller0')
57
+ expect(switch_daemon.options).to include('vendor::controller1')
58
58
  end
59
59
 
60
60
 
61
- it "should be initialized without vendor options" do
61
+ it 'should be initialized without vendor options' do
62
62
  rule = {
63
- :port_status => "topology",
64
- :packet_in => "controller",
65
- :state_notify => "topology"
63
+ :port_status => 'topology',
64
+ :packet_in => 'controller',
65
+ :state_notify => 'topology'
66
66
  }
67
- switch_daemon = SwitchDaemon.new( rule )
67
+ switch_daemon = SwitchDaemon.new(rule)
68
68
 
69
- expect( switch_daemon.options ).to include( "port_status::topology" )
70
- expect( switch_daemon.options ).to include( "packet_in::controller" )
71
- expect( switch_daemon.options ).to include( "state_notify::topology" )
69
+ expect(switch_daemon.options).to include('port_status::topology')
70
+ expect(switch_daemon.options).to include('packet_in::controller')
71
+ expect(switch_daemon.options).to include('state_notify::topology')
72
72
  end
73
73
  end
74
74
  end
@@ -16,34 +16,34 @@
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
  class SwitchDisconnected < Controller; end
24
24
 
25
25
 
26
26
  describe SwitchDisconnected do
27
- context "when switch is killed" do
28
- it "should receive a switch_disconnected" do
29
- network {
30
- vswitch( "switch-disconnect" ) { datapath_id 0xabc }
31
- }.run( SwitchDisconnected ) {
32
- controller( "SwitchDisconnected" ).should_receive( :switch_disconnected )
33
- vswitch( "switch-disconnect" ).shutdown!
27
+ context 'when switch is killed' do
28
+ it 'should receive a switch_disconnected' do
29
+ network do
30
+ vswitch('switch-disconnect') { datapath_id 0xabc }
31
+ end.run(SwitchDisconnected) do
32
+ controller('SwitchDisconnected').should_receive(:switch_disconnected)
33
+ vswitch('switch-disconnect').shutdown!
34
34
  sleep 3 # FIXME: wait to shutdown
35
- }
35
+ end
36
36
  end
37
37
 
38
38
 
39
- it "should receive a switch_disconnected with valid datapath_id" do
40
- network {
41
- vswitch( "switch-disconnect" ) { datapath_id 0xabc }
42
- }.run( SwitchDisconnected ) {
43
- controller( "SwitchDisconnected" ).should_receive( :switch_disconnected ).with( 0xabc )
44
- vswitch( "switch-disconnect" ).shutdown!
39
+ it 'should receive a switch_disconnected with valid datapath_id' do
40
+ network do
41
+ vswitch('switch-disconnect') { datapath_id 0xabc }
42
+ end.run(SwitchDisconnected) do
43
+ controller('SwitchDisconnected').should_receive(:switch_disconnected).with(0xabc)
44
+ vswitch('switch-disconnect').shutdown!
45
45
  sleep 3 # FIXME: wait to shutdown
46
- }
46
+ end
47
47
  end
48
48
  end
49
49
  end
@@ -16,17 +16,17 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/switch-manager"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema/switch-manager'
21
21
 
22
22
 
23
23
  module Trema
24
24
  describe SwitchManager do
25
- it "should run switch_manager command with proper options" do
26
- rule = { :port_status => "topology", :packet_in => "controller", :state_notify => "topology", :vendor => "controller" }
27
- switch_manager = SwitchManager.new( rule )
25
+ it 'should run switch_manager command with proper options' do
26
+ rule = { :port_status => 'topology', :packet_in => 'controller', :state_notify => 'topology', :vendor => 'controller' }
27
+ switch_manager = SwitchManager.new(rule)
28
28
 
29
- switch_manager.should_receive( :sh ).once.with( /port_status::topology packet_in::controller state_notify::topology vendor::controller$/ )
29
+ switch_manager.should_receive(:sh).once.with(/port_status::topology packet_in::controller state_notify::topology vendor::controller$/)
30
30
 
31
31
  switch_manager.run!
32
32
  end
@@ -16,15 +16,15 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/tremashark"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema/tremashark'
21
21
 
22
22
 
23
23
  module Trema
24
24
  describe Tremashark do
25
- it "should run tremashark command with proper options" do
25
+ it 'should run tremashark command with proper options' do
26
26
  tremashark = Tremashark.new
27
- tremashark.should_receive( :sh ).once.with( /tremashark \-\-daemonize$/ )
27
+ tremashark.should_receive(:sh).once.with(/tremashark \-\-daemonize$/)
28
28
 
29
29
  tremashark.run
30
30
  end
@@ -16,65 +16,65 @@
16
16
  #
17
17
 
18
18
 
19
- require File.join( File.dirname( __FILE__ ), "..", "spec_helper" )
20
- require "trema/dsl/configuration"
21
- require "trema/dsl/runner"
22
- require "trema/util"
19
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
20
+ require 'trema/dsl/configuration'
21
+ require 'trema/dsl/runner'
22
+ require 'trema/util'
23
23
 
24
24
 
25
25
  include Trema::Util
26
26
 
27
27
 
28
28
  describe Trema::Util do
29
- it "should assert that trema is built" do
30
- Trema::Executables.stub!( :compiled? ).and_return( false )
31
- $stderr.should_receive( :puts ).with( /^ERROR/ )
32
- expect { assert_trema_is_built }.to raise_error( SystemExit )
29
+ it 'should assert that trema is built' do
30
+ Trema::Executables.stub!(:compiled?).and_return(false)
31
+ $stderr.should_receive(:puts).with(/^ERROR/)
32
+ expect { assert_trema_is_built }.to raise_error(SystemExit)
33
33
  end
34
34
 
35
35
 
36
- it "should execute and check the results of a command" do
37
- expect { sh "NO SUCH COMMAND" }.to raise_error( "Command 'NO SUCH COMMAND' failed!" )
36
+ it 'should execute and check the results of a command' do
37
+ expect { sh 'NO SUCH COMMAND' }.to raise_error("Command 'NO SUCH COMMAND' failed!")
38
38
  end
39
39
 
40
40
 
41
- it "should cleanup current session" do
42
- apps = { "app 1" => mock( "app 1" ), "app 2" => mock( "app 2" ), "app 3" => mock( "app 3" ) }
41
+ it 'should cleanup current session' do
42
+ apps = { 'app 1' => mock('app 1'), 'app 2' => mock('app 2'), 'app 3' => mock('app 3') }
43
43
  apps.each do | name, app |
44
- app.should_receive( :shutdown! )
44
+ app.should_receive(:shutdown!)
45
45
  end
46
46
 
47
- switches = { "switch 1" => mock( "switch 1" ), "switch 2" => mock( "switch 2" ), "switch 3" => mock( "switch 3" ) }
47
+ switches = { 'switch 1' => mock('switch 1'), 'switch 2' => mock('switch 2'), 'switch 3' => mock('switch 3') }
48
48
  switches.each do | name, switch |
49
- switch.should_receive( :shutdown! )
49
+ switch.should_receive(:shutdown!)
50
50
  end
51
51
 
52
- hosts = { "host 1" => mock( "host 1" ), "host 2" => mock( "host 2" ), "host 3" => mock( "host 3" ) }
52
+ hosts = { 'host 1' => mock('host 1'), 'host 2' => mock('host 2'), 'host 3' => mock('host 3') }
53
53
  hosts.each do | name, host |
54
- host.should_receive( :shutdown! )
54
+ host.should_receive(:shutdown!)
55
55
  end
56
56
 
57
- links = { "link 1" => mock( "link 1" ), "link 2" => mock( "link 2" ), "link 3" => mock( "link 3" ) }
57
+ links = { 'link 1' => mock('link 1'), 'link 2' => mock('link 2'), 'link 3' => mock('link 3') }
58
58
  links.each do | name, link |
59
- link.should_receive( :delete! )
59
+ link.should_receive(:delete!)
60
60
  end
61
61
 
62
- last_session = mock( "last session" )
63
- last_session.stub!( :apps ).and_return( apps )
64
- last_session.stub!( :switches ).and_return( switches )
65
- last_session.stub!( :hosts ).and_return( hosts )
66
- last_session.stub!( :links ).and_return( links )
67
- last_session.stub!( :netnss ).and_return( {} )
68
- Trema::DSL::Context.stub!( :load_current ).and_return( last_session )
69
-
70
- pid_files = [ mock( "PID file #0" ), mock( "PID file #1" ), mock( "PID file #2" ) ]
71
- Dir.stub!( :glob ).and_return( pid_files )
72
-
73
- process = mock( "process" )
74
- process.should_receive( :kill! ).exactly( 3 ).times
75
- Trema::Process.should_receive( :read ).with( pid_files[ 0 ] ).once.ordered.and_return( process )
76
- Trema::Process.should_receive( :read ).with( pid_files[ 1 ] ).once.ordered.and_return( process )
77
- Trema::Process.should_receive( :read ).with( pid_files[ 2 ] ).once.ordered.and_return( process )
62
+ last_session = mock('last session')
63
+ last_session.stub!(:apps).and_return(apps)
64
+ last_session.stub!(:switches).and_return(switches)
65
+ last_session.stub!(:hosts).and_return(hosts)
66
+ last_session.stub!(:links).and_return(links)
67
+ last_session.stub!(:netnss).and_return({})
68
+ Trema::DSL::Context.stub!(:load_current).and_return(last_session)
69
+
70
+ pid_files = [mock('PID file #0'), mock('PID file #1'), mock('PID file #2')]
71
+ Dir.stub!(:glob).and_return(pid_files)
72
+
73
+ process = mock('process')
74
+ process.should_receive(:kill!).exactly(3).times
75
+ Trema::Process.should_receive(:read).with(pid_files[ 0]).once.ordered.and_return(process)
76
+ Trema::Process.should_receive(:read).with(pid_files[ 1]).once.ordered.and_return(process)
77
+ Trema::Process.should_receive(:read).with(pid_files[ 2]).once.ordered.and_return(process)
78
78
 
79
79
  cleanup_current_session
80
80
  end