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,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
- describe StatsReply, ".new( VALID OPTIONS )" do
24
- context "when #desc-stats-reply is created" do
23
+ describe StatsReply, '.new( VALID OPTIONS )' do
24
+ context 'when #desc-stats-reply is created' do
25
25
  subject do
26
26
  DescStatsReply.new(
27
- :mfr_desc => "NEC Corporation",
28
- :hw_desc => "no hardware description",
29
- :sw_desc => "version xx.xx",
30
- :serial_num => "1234",
31
- :dp_desc => "nec01"
27
+ :mfr_desc => 'NEC Corporation',
28
+ :hw_desc => 'no hardware description',
29
+ :sw_desc => 'version xx.xx',
30
+ :serial_num => '1234',
31
+ :dp_desc => 'nec01'
32
32
  )
33
33
  end
34
34
 
35
- it { should respond_to( :to_s ) }
36
- its ( :mfr_desc ) { should eq( "NEC Corporation" ) }
37
- its ( :hw_desc ) { should eq( "no hardware description" ) }
38
- its ( :sw_desc ) { should eq( "version xx.xx" ) }
39
- its ( :serial_num ) { should eq( "1234" ) }
40
- its ( :dp_desc ) { should eq( "nec01" ) }
35
+ it { should respond_to(:to_s) }
36
+ its ( :mfr_desc) { should eq('NEC Corporation') }
37
+ its ( :hw_desc) { should eq('no hardware description') }
38
+ its ( :sw_desc) { should eq('version xx.xx') }
39
+ its ( :serial_num) { should eq('1234') }
40
+ its ( :dp_desc) { should eq('nec01') }
41
41
  end
42
42
 
43
43
 
44
- context "when #flow-stats-reply is created" do
44
+ context 'when #flow-stats-reply is created' do
45
45
  subject do
46
- actions = [ ActionOutput.new( :port => 1 ) ]
46
+ actions = [ActionOutput.new(:port => 1)]
47
47
  match = Match.new
48
48
  FlowStatsReply.new(
49
49
  :length => 96,
@@ -61,23 +61,23 @@ describe StatsReply, ".new( VALID OPTIONS )" do
61
61
  )
62
62
  end
63
63
 
64
- it { should respond_to( :to_s ) }
65
- its ( :length ) { should == 96 }
66
- its ( :table_id ) { should == 0 }
67
- its ( :match ) { should be_an_instance_of Match }
68
- its ( :duration_sec ) { should == 3 }
69
- its ( :duration_nsec ) { should == 106000000 }
70
- its ( :priority ) { should == 65535 }
71
- its ( :idle_timeout ) { should == 0 }
72
- its ( :hard_timeout ) { should == 0 }
73
- its ( :cookie ) { should == 866942928268820481 }
74
- its ( :packet_count ) { should == 2 }
75
- its ( :byte_count ) { should == 128 }
76
- its ( :actions ) { should_not be_empty }
64
+ it { should respond_to(:to_s) }
65
+ its ( :length) { should == 96 }
66
+ its ( :table_id) { should == 0 }
67
+ its ( :match) { should be_an_instance_of Match }
68
+ its ( :duration_sec) { should == 3 }
69
+ its ( :duration_nsec) { should == 106000000 }
70
+ its ( :priority) { should == 65535 }
71
+ its ( :idle_timeout) { should == 0 }
72
+ its ( :hard_timeout) { should == 0 }
73
+ its ( :cookie) { should == 866942928268820481 }
74
+ its ( :packet_count) { should == 2 }
75
+ its ( :byte_count) { should == 128 }
76
+ its ( :actions) { should_not be_empty }
77
77
  end
78
78
 
79
79
 
80
- context "when aggregate-stats-reply is created" do
80
+ context 'when aggregate-stats-reply is created' do
81
81
  subject do
82
82
  AggregateStatsReply.new(
83
83
  :packet_count => 2,
@@ -86,18 +86,18 @@ describe StatsReply, ".new( VALID OPTIONS )" do
86
86
  )
87
87
  end
88
88
 
89
- it { should respond_to( :to_s ) }
90
- its( :packet_count ) { should == 2 }
91
- its( :byte_count ) { should == 128 }
92
- its ( :flow_count ) { should == 10 }
89
+ it { should respond_to(:to_s) }
90
+ its(:packet_count) { should == 2 }
91
+ its(:byte_count) { should == 128 }
92
+ its ( :flow_count) { should == 10 }
93
93
  end
94
94
 
95
95
 
96
- context "when table-stats-reply is created" do
96
+ context 'when table-stats-reply is created' do
97
97
  subject do
98
98
  TableStatsReply.new(
99
99
  :table_id => 1,
100
- :name => "classifier",
100
+ :name => 'classifier',
101
101
  :wildcards => 4194303,
102
102
  :max_entries => 1048576,
103
103
  :active_count => 4,
@@ -106,18 +106,18 @@ describe StatsReply, ".new( VALID OPTIONS )" do
106
106
  )
107
107
  end
108
108
 
109
- it { should respond_to( :to_s ) }
110
- its( :table_id ) { should == 1 }
111
- its( :name ) { should eq( "classifier" ) }
112
- its( :wildcards ) { should == 4194303 }
113
- its( :max_entries ) { should == 1048576 }
114
- its( :active_count ) { should == 4 }
115
- its( :lookup_count ) { should == 4 }
116
- its( :matched_count ) { should == 1 }
109
+ it { should respond_to(:to_s) }
110
+ its(:table_id) { should == 1 }
111
+ its(:name) { should eq('classifier') }
112
+ its(:wildcards) { should == 4194303 }
113
+ its(:max_entries) { should == 1048576 }
114
+ its(:active_count) { should == 4 }
115
+ its(:lookup_count) { should == 4 }
116
+ its(:matched_count) { should == 1 }
117
117
  end
118
118
 
119
119
 
120
- context "when port-stats-reply is created" do
120
+ context 'when port-stats-reply is created' do
121
121
  subject do
122
122
  PortStatsReply.new(
123
123
  :port_no => 1,
@@ -136,24 +136,24 @@ describe StatsReply, ".new( VALID OPTIONS )" do
136
136
  )
137
137
  end
138
138
 
139
- it { should respond_to( :to_s ) }
140
- its( :port_no ) { should == 1 }
141
- its( :rx_packets ) { should == 7 }
142
- its( :tx_packets ) { should == 10 }
143
- its( :rx_bytes ) { should == 1454 }
144
- its( :tx_bytes ) { should == 2314 }
145
- its( :rx_dropped ) { should == 1 }
146
- its( :tx_dropped ) { should == 1 }
147
- its( :rx_errors ) { should == 1 }
148
- its( :tx_errors ) { should == 1 }
149
- its( :rx_frame_err ) { should == 1 }
150
- its( :rx_over_err ) { should == 1 }
151
- its( :rx_crc_err ) { should == 1 }
152
- its( :collisions ) { should == 1 }
139
+ it { should respond_to(:to_s) }
140
+ its(:port_no) { should == 1 }
141
+ its(:rx_packets) { should == 7 }
142
+ its(:tx_packets) { should == 10 }
143
+ its(:rx_bytes) { should == 1454 }
144
+ its(:tx_bytes) { should == 2314 }
145
+ its(:rx_dropped) { should == 1 }
146
+ its(:tx_dropped) { should == 1 }
147
+ its(:rx_errors) { should == 1 }
148
+ its(:tx_errors) { should == 1 }
149
+ its(:rx_frame_err) { should == 1 }
150
+ its(:rx_over_err) { should == 1 }
151
+ its(:rx_crc_err) { should == 1 }
152
+ its(:collisions) { should == 1 }
153
153
  end
154
154
 
155
155
 
156
- context "when queue-stats-reply is created" do
156
+ context 'when queue-stats-reply is created' do
157
157
  subject do
158
158
  QueueStatsReply.new(
159
159
  :port_no => 1,
@@ -164,183 +164,193 @@ describe StatsReply, ".new( VALID OPTIONS )" do
164
164
  )
165
165
  end
166
166
 
167
- it { should respond_to( :to_s ) }
168
- its( :port_no ) { should == 1 }
169
- its( :queue_id ) { should == 2 }
170
- its( :tx_bytes ) { should == 1024 }
171
- its( :tx_packets ) { should == 16 }
172
- its( :tx_errors ) { should == 5 }
167
+ it { should respond_to(:to_s) }
168
+ its(:port_no) { should == 1 }
169
+ its(:queue_id) { should == 2 }
170
+ its(:tx_bytes) { should == 1024 }
171
+ its(:tx_packets) { should == 16 }
172
+ its(:tx_errors) { should == 5 }
173
173
  end
174
174
 
175
175
 
176
- context "when vendor-stats-reply is created" do
177
- subject { VendorStatsReply.new( :vendor_id => 123 ) }
176
+ context 'when vendor-stats-reply is created' do
177
+ subject { VendorStatsReply.new(:vendor_id => 123) }
178
178
 
179
- it { should respond_to( :to_s ) }
180
- its( :vendor_id ) { should == 123 }
181
- its( :data ) { should be_nil }
179
+ it { should respond_to(:to_s) }
180
+ its(:vendor_id) { should == 123 }
181
+ its(:data) { should be_nil }
182
182
  end
183
183
 
184
184
 
185
- context "when #stats_request(desc-stats) is sent" do
186
- it "should #stats_reply(desc-stats)" do
185
+ context 'when #stats_request(desc-stats) is sent' do
186
+ it 'should #stats_reply(desc-stats)' do
187
187
  class DescStatsController < Controller; end
188
- network {
189
- vswitch( "desc-stats" ) { datapath_id 0xabc }
190
- }.run( DescStatsController ) {
191
- controller( "DescStatsController" ).should_receive( :stats_reply ) do | datapath_id, message |
192
- expect( datapath_id ).to eq( 0xabc )
193
- expect( message.type ).to eq( 0 )
194
- expect( message.stats[ 0 ].mfr_desc ).to eq( "Nicira Networks, Inc." )
195
- expect( message.stats[ 0 ].hw_desc ).to eq( "Open vSwitch" )
196
- expect( message.stats[ 0 ] ).to respond_to :to_s
188
+ network do
189
+ vswitch('desc-stats') { datapath_id 0xabc }
190
+ end.run(DescStatsController) do
191
+ controller('DescStatsController').should_receive(:stats_reply) do | datapath_id, message |
192
+ expect(datapath_id).to eq(0xabc)
193
+ expect(message.type).to eq(0)
194
+ expect(message.stats[ 0].mfr_desc).to eq('Nicira Networks, Inc.')
195
+ expect(message.stats[ 0].hw_desc).to eq('Open vSwitch')
196
+ expect(message.stats[ 0]).to respond_to :to_s
197
197
  end
198
198
 
199
- controller( "DescStatsController" ).send_message( 0xabc,
200
- DescStatsRequest.new( :transaction_id => 1234 ) )
199
+ controller('DescStatsController').send_message(
200
+ 0xabc,
201
+ DescStatsRequest.new(:transaction_id => 1234)
202
+ )
201
203
  sleep 2 # FIXME: wait to send_message
202
- }
204
+ end
203
205
  end
204
206
  end
205
207
 
206
208
 
207
- context "when #stats_request(flow-stats) is sent" do
208
- it "should #stats_reply(flow-stats)" do
209
+ context 'when #stats_request(flow-stats) is sent' do
210
+ it 'should #stats_reply(flow-stats)' do
209
211
  class FlowStatsController < Controller; end
210
- network {
211
- vswitch( "flow-stats" ) { datapath_id 0xabc }
212
- vhost "host1"
213
- vhost "host2"
214
- link "host1", "flow-stats"
215
- link "host2", "flow-stats"
216
- }.run( FlowStatsController ) {
217
- controller( "FlowStatsController" ).send_flow_mod_add(
212
+ network do
213
+ vswitch('flow-stats') { datapath_id 0xabc }
214
+ vhost 'host1'
215
+ vhost 'host2'
216
+ link 'host1', 'flow-stats'
217
+ link 'host2', 'flow-stats'
218
+ end.run(FlowStatsController) do
219
+ controller('FlowStatsController').send_flow_mod_add(
218
220
  0xabc,
219
221
  # match the UDP packet
220
- :match => Match.new( :dl_type => 0x800, :nw_proto => 17 ),
222
+ :match => Match.new(:dl_type => 0x800, :nw_proto => 17),
221
223
  # flood the packet
222
- :actions => ActionOutput.new( :port => FlowStatsController::OFPP_FLOOD )
224
+ :actions => ActionOutput.new(:port => FlowStatsController::OFPP_FLOOD)
223
225
  )
224
226
  sleep 1 # FIXME: wait to send_flow_mod_add
225
227
  # send two packets
226
- send_packets "host1", "host2", :n_pkts => 2
228
+ send_packets 'host1', 'host2', :n_pkts => 2
227
229
  sleep 2 # FIXME: wait to send_packets
228
230
 
229
- controller( "FlowStatsController" ).should_receive( :stats_reply ) do | datapath_id, message |
230
- expect( datapath_id ).to eq( 0xabc )
231
- expect( message.type ).to eq( 1 )
232
- expect( message.stats[ 0 ].packet_count ).to eq( 2 )
233
- expect( message.stats[ 0 ] ).to respond_to :to_s
231
+ controller('FlowStatsController').should_receive(:stats_reply) do | datapath_id, message |
232
+ expect(datapath_id).to eq(0xabc)
233
+ expect(message.type).to eq(1)
234
+ expect(message.stats[ 0].packet_count).to eq(2)
235
+ expect(message.stats[ 0]).to respond_to :to_s
234
236
  end
235
- match = Match.new( :dl_type =>0x800, :nw_proto => 17 )
236
- controller( "FlowStatsController" ).send_message( 0xabc,
237
- FlowStatsRequest.new( :match => match ) )
237
+ match = Match.new(:dl_type => 0x800, :nw_proto => 17)
238
+ controller('FlowStatsController').send_message(
239
+ 0xabc,
240
+ FlowStatsRequest.new(:match => match)
241
+ )
238
242
  sleep 2 # FIXME: wait to send_message
239
- }
243
+ end
240
244
  end
241
245
  end
242
246
 
243
247
 
244
- context "when #stats_request(aggregate_stats) is sent" do
245
- it "should #stats_reply(aggregate-stats) attributes" do
248
+ context 'when #stats_request(aggregate_stats) is sent' do
249
+ it 'should #stats_reply(aggregate-stats) attributes' do
246
250
  class AggregateStatsController < Controller; end
247
- network {
248
- vswitch( "aggregate-stats" ) { datapath_id 0xabc }
249
- vhost "host1"
250
- vhost "host2"
251
- link "host1", "aggregate-stats"
252
- link "host2", "aggregate-stats"
253
- }.run( AggregateStatsController ) {
254
- controller( "AggregateStatsController" ).send_flow_mod_add(
251
+ network do
252
+ vswitch('aggregate-stats') { datapath_id 0xabc }
253
+ vhost 'host1'
254
+ vhost 'host2'
255
+ link 'host1', 'aggregate-stats'
256
+ link 'host2', 'aggregate-stats'
257
+ end.run(AggregateStatsController) do
258
+ controller('AggregateStatsController').send_flow_mod_add(
255
259
  0xabc,
256
260
  # match the UDP packet
257
- :match => Match.new( :dl_type => 0x800, :nw_proto => 17 ),
261
+ :match => Match.new(:dl_type => 0x800, :nw_proto => 17),
258
262
  # flood the packet
259
- :actions => ActionOutput.new( :port => AggregateStatsController::OFPP_FLOOD )
263
+ :actions => ActionOutput.new(:port => AggregateStatsController::OFPP_FLOOD)
260
264
  )
261
265
  sleep 1 # FIXME: wait to send_flow_mod_add
262
266
  # send ten packets
263
- send_packets "host1", "host2", :n_pkts => 10
267
+ send_packets 'host1', 'host2', :n_pkts => 10
264
268
  sleep 2 # FIXME: wait to send_packets
265
269
 
266
- controller( "AggregateStatsController" ).should_receive( :stats_reply ) do | datapath_id, message |
267
- expect( datapath_id ).to eq( 0xabc )
268
- expect( message.type ).to eq( 2 )
269
- expect( message.stats[ 0 ].packet_count ).to eq( 10 )
270
- expect( message.stats[ 0 ].flow_count ).to eq( 1 )
271
- expect( message.stats[ 0 ] ).to respond_to :to_s
270
+ controller('AggregateStatsController').should_receive(:stats_reply) do | datapath_id, message |
271
+ expect(datapath_id).to eq(0xabc)
272
+ expect(message.type).to eq(2)
273
+ expect(message.stats[ 0].packet_count).to eq(10)
274
+ expect(message.stats[ 0].flow_count).to eq(1)
275
+ expect(message.stats[ 0]).to respond_to :to_s
272
276
  end
273
- match = Match.new( :dl_type =>0x800, :nw_proto => 17 )
274
- controller( "AggregateStatsController" ).send_message( 0xabc,
275
- AggregateStatsRequest.new( :match => match, :table_id => 0xff ) )
277
+ match = Match.new(:dl_type => 0x800, :nw_proto => 17)
278
+ controller('AggregateStatsController').send_message(
279
+ 0xabc,
280
+ AggregateStatsRequest.new(:match => match, :table_id => 0xff)
281
+ )
276
282
  sleep 2 # FIXME: wait to send_message
277
- }
283
+ end
278
284
  end
279
285
  end
280
286
 
281
287
 
282
- context "when #stats_request(port-stats) is sent" do
283
- it "should #stats_reply(port-stats)" do
288
+ context 'when #stats_request(port-stats) is sent' do
289
+ it 'should #stats_reply(port-stats)' do
284
290
  class PortStatsController < Controller; end
285
- network {
286
- vswitch( "port-stats" ) { datapath_id 0xabc }
287
- vhost "host1"
288
- vhost "host2"
289
- link "host1", "port-stats"
290
- link "host2", "port-stats"
291
- }.run( PortStatsController) {
292
- controller( "PortStatsController" ).send_flow_mod_add(
291
+ network do
292
+ vswitch('port-stats') { datapath_id 0xabc }
293
+ vhost 'host1'
294
+ vhost 'host2'
295
+ link 'host1', 'port-stats'
296
+ link 'host2', 'port-stats'
297
+ end.run(PortStatsController) do
298
+ controller('PortStatsController').send_flow_mod_add(
293
299
  0xabc,
294
- :match => Match.new( :dl_type => 0x800, :nw_proto => 17 ),
295
- :actions => ActionOutput.new( :port => PortStatsController::OFPP_FLOOD )
300
+ :match => Match.new(:dl_type => 0x800, :nw_proto => 17),
301
+ :actions => ActionOutput.new(:port => PortStatsController::OFPP_FLOOD)
296
302
  )
297
303
  sleep 1 # FIXME: wait to send_flow_mod_add
298
- send_packets "host1", "host2"
304
+ send_packets 'host1', 'host2'
299
305
  sleep 2 # FIXME: wait to send_packets
300
306
 
301
- controller( "PortStatsController" ).should_receive( :stats_reply ) do | datapath_id, message |
302
- expect( datapath_id ).to eq( 0xabc )
303
- expect( message.type ).to eq( 4 )
304
- expect( message.stats[ 0 ] ).to be_an_instance_of( Trema::PortStatsReply )
305
- expect( message.stats[ 0 ] ).to respond_to :to_s
307
+ controller('PortStatsController').should_receive(:stats_reply) do | datapath_id, message |
308
+ expect(datapath_id).to eq(0xabc)
309
+ expect(message.type).to eq(4)
310
+ expect(message.stats[ 0]).to be_an_instance_of(Trema::PortStatsReply)
311
+ expect(message.stats[ 0]).to respond_to :to_s
306
312
  end
307
- controller( "PortStatsController" ).send_message( 0xabc,
308
- PortStatsRequest.new( :port_no => 1 ) )
313
+ controller('PortStatsController').send_message(
314
+ 0xabc,
315
+ PortStatsRequest.new(:port_no => 1)
316
+ )
309
317
  sleep 2 # FIXME: wait to send_message
310
- }
318
+ end
311
319
  end
312
320
  end
313
321
 
314
322
 
315
- context "when #stats_request(table-stats) is sent" do
316
- it "should #stats_reply(table-stats)" do
323
+ context 'when #stats_request(table-stats) is sent' do
324
+ it 'should #stats_reply(table-stats)' do
317
325
  class TableStatsController < Controller; end
318
- network {
319
- vswitch( "table-stats" ) { datapath_id 0xabc }
320
- vhost "host1"
321
- vhost "host2"
322
- link "host1", "table-stats"
323
- link "host2", "table-stats"
324
- }.run( TableStatsController) {
325
- controller( "TableStatsController" ).send_flow_mod_add(
326
+ network do
327
+ vswitch('table-stats') { datapath_id 0xabc }
328
+ vhost 'host1'
329
+ vhost 'host2'
330
+ link 'host1', 'table-stats'
331
+ link 'host2', 'table-stats'
332
+ end.run(TableStatsController) do
333
+ controller('TableStatsController').send_flow_mod_add(
326
334
  0xabc,
327
- :actions => ActionOutput.new( :port => TableStatsController::OFPP_FLOOD )
335
+ :actions => ActionOutput.new(:port => TableStatsController::OFPP_FLOOD)
328
336
  )
329
337
  sleep 1 # FIXME: wait to send_flow_mod_add
330
- send_packets "host1", "host2"
338
+ send_packets 'host1', 'host2'
331
339
  sleep 2 # FIXME: wait to send_packets
332
340
 
333
- controller( "TableStatsController" ).should_receive( :stats_reply ) do | datapath_id, message |
334
- expect( datapath_id ).to eq( 0xabc )
335
- expect( message.type ).to eq( 3 )
336
- expect( message.transaction_id ).to eq( 123 )
337
- expect( message.stats[ 0 ] ).to be_an_instance_of(Trema::TableStatsReply)
338
- expect( message.stats[ 0 ] ).to respond_to :to_s
341
+ controller('TableStatsController').should_receive(:stats_reply) do | datapath_id, message |
342
+ expect(datapath_id).to eq(0xabc)
343
+ expect(message.type).to eq(3)
344
+ expect(message.transaction_id).to eq(123)
345
+ expect(message.stats[ 0]).to be_an_instance_of(Trema::TableStatsReply)
346
+ expect(message.stats[ 0]).to respond_to :to_s
339
347
  end
340
- controller( "TableStatsController" ).send_message( 0xabc,
341
- TableStatsRequest.new( :transaction_id => 123 ) )
348
+ controller('TableStatsController').send_message(
349
+ 0xabc,
350
+ TableStatsRequest.new(:transaction_id => 123)
351
+ )
342
352
  sleep 2 # FIXME: wait to send_message
343
- }
353
+ end
344
354
  end
345
355
  end
346
356
  end