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
@@ -18,9 +18,9 @@
18
18
 
19
19
 
20
20
  if ARGV.empty?
21
- system "rake quality"
21
+ system 'rake quality'
22
22
  else
23
- system %Q{rake quality QUALITY_TARGETS="#{ ARGV.join ' ' }"}
23
+ system %Q(rake quality QUALITY_TARGETS="#{ ARGV.join ' ' }")
24
24
  end
25
25
 
26
26
 
data/bin/trema CHANGED
@@ -19,16 +19,16 @@
19
19
  #
20
20
 
21
21
 
22
- $LOAD_PATH.unshift File.expand_path( File.join File.dirname( __FILE__ ), "..", "ruby" )
22
+ $LOAD_PATH.unshift File.expand_path(File.join File.dirname(__FILE__), '..', 'ruby')
23
23
 
24
- require "rubygems"
25
- require "bundler/setup"
24
+ require 'rubygems'
25
+ require 'bundler/setup'
26
26
 
27
- require "gli"
28
- require "trema/command"
29
- require "trema/util"
30
- require "trema/version"
31
- require "trema/default_openflow_channel_port"
27
+ require 'gli'
28
+ require 'trema/command'
29
+ require 'trema/util'
30
+ require 'trema/version'
31
+ require 'trema/default_openflow_channel_port'
32
32
 
33
33
 
34
34
  class BinTrema
@@ -38,34 +38,34 @@ class BinTrema
38
38
 
39
39
 
40
40
  def initialize
41
- program_desc "Trema command-line tool"
41
+ program_desc 'Trema command-line tool'
42
42
 
43
43
 
44
- desc "Displays the current runtime version"
44
+ desc 'Displays the current runtime version'
45
45
  version Trema::VERSION
46
46
 
47
47
 
48
- desc "Be verbose"
49
- switch [ :v, :verbose ], :negatable => false
48
+ desc 'Be verbose'
49
+ switch [:v, :verbose], :negatable => false
50
50
 
51
51
 
52
- desc "Runs a trema application"
53
- arg_name "controller"
52
+ desc 'Runs a trema application'
53
+ arg_name 'controller'
54
54
  command :run do | c |
55
- c.desc "Runs as a daemon"
56
- c.switch [ :d, :daemonize ], :negatable => false
55
+ c.desc 'Runs as a daemon'
56
+ c.switch [:d, :daemonize], :negatable => false
57
57
 
58
- c.desc "Enables Trema wireshark plugin"
59
- c.switch [ :s, :tremashark ], :negatable => false
58
+ c.desc 'Enables Trema wireshark plugin'
59
+ c.switch [:s, :tremashark], :negatable => false
60
60
 
61
61
  c.desc "Overrides the default openflow channel port #{Trema::DEFAULT_OPENFLOW_CHANNEL_PORT}"
62
- c.flag [ :p, :port ]
62
+ c.flag [:p, :port]
63
63
 
64
- c.desc "Specifies emulated network configuration"
65
- c.flag [ :c, :conf ]
64
+ c.desc 'Specifies emulated network configuration'
65
+ c.flag [:c, :conf]
66
66
 
67
- c.desc "Disables initial flow cleanup for a connected switch"
68
- c.switch [ :r, :no_flow_cleanup ], :negatable => false
67
+ c.desc 'Disables initial flow cleanup for a connected switch'
68
+ c.switch [:r, :no_flow_cleanup], :negatable => false
69
69
 
70
70
  c.action do | global_options, options, args |
71
71
  trema_run options
@@ -73,11 +73,11 @@ class BinTrema
73
73
  end
74
74
 
75
75
 
76
- desc "Terminates a trema process"
77
- arg_name "name"
76
+ desc 'Terminates a trema process'
77
+ arg_name 'name'
78
78
  command :kill do | c |
79
79
  c.action do | global_options, options, args |
80
- help_now!( "name is required" ) if args.empty?
80
+ help_now!('name is required') if args.empty?
81
81
  args.each do | each |
82
82
  trema_kill each
83
83
  end
@@ -85,16 +85,16 @@ class BinTrema
85
85
  end
86
86
 
87
87
 
88
- desc "Starts a killed trema process again"
89
- arg_name "name"
88
+ desc 'Starts a killed trema process again'
89
+ arg_name 'name'
90
90
  command :up do | c |
91
91
  c.action do | global_options, options, args |
92
- trema_up args[ 0 ]
92
+ trema_up args[ 0]
93
93
  end
94
94
  end
95
95
 
96
96
 
97
- desc "Terminates all trema processes"
97
+ desc 'Terminates all trema processes'
98
98
  command :killall do | c |
99
99
  c.action do
100
100
  trema_killall
@@ -102,112 +102,112 @@ class BinTrema
102
102
  end
103
103
 
104
104
 
105
- desc "Sends UDP packets to destination host"
105
+ desc 'Sends UDP packets to destination host'
106
106
  command :send_packets do | c |
107
- c.desc "host that sends packets"
108
- c.flag [ :s, :source ]
107
+ c.desc 'host that sends packets'
108
+ c.flag [:s, :source]
109
109
 
110
- c.desc "host that receives packets"
111
- c.flag [ :d, :dest ]
110
+ c.desc 'host that receives packets'
111
+ c.flag [:d, :dest]
112
112
 
113
- c.desc "number of times to increment the IP source address"
113
+ c.desc 'number of times to increment the IP source address'
114
114
  c.default_value nil
115
- c.flag [ :inc_ip_src ]
115
+ c.flag [:inc_ip_src]
116
116
 
117
- c.desc "number of times to increment the IP destination address"
117
+ c.desc 'number of times to increment the IP destination address'
118
118
  c.default_value nil
119
- c.flag [ :inc_ip_dst ]
119
+ c.flag [:inc_ip_dst]
120
120
 
121
- c.desc "set the initial UDP source port"
122
- c.flag [ :tp_src ]
121
+ c.desc 'set the initial UDP source port'
122
+ c.flag [:tp_src]
123
123
 
124
- c.desc "number of times to increment the UDP source port"
124
+ c.desc 'number of times to increment the UDP source port'
125
125
  c.default_value nil
126
- c.flag [ :inc_tp_src ]
126
+ c.flag [:inc_tp_src]
127
127
 
128
- c.desc "set the initial UDP destination port"
129
- c.flag [ :tp_dst ]
128
+ c.desc 'set the initial UDP destination port'
129
+ c.flag [:tp_dst]
130
130
 
131
- c.desc "number of times to increment the UDP destination port"
131
+ c.desc 'number of times to increment the UDP destination port'
132
132
  c.default_value nil
133
- c.flag [ :inc_tp_dst ]
133
+ c.flag [:inc_tp_dst]
134
134
 
135
- c.desc "send packet rate - packets per second"
136
- c.flag [ :pps ]
135
+ c.desc 'send packet rate - packets per second'
136
+ c.flag [:pps]
137
137
 
138
- c.desc "number of packets to send"
139
- c.flag [ :n_pkts ]
138
+ c.desc 'number of packets to send'
139
+ c.flag [:n_pkts]
140
140
 
141
- c.desc "time duration to send packets"
142
- c.flag [ :duration ]
141
+ c.desc 'time duration to send packets'
142
+ c.flag [:duration]
143
143
 
144
- c.desc "length of UDP payload"
145
- c.flag [ :length ]
144
+ c.desc 'length of UDP payload'
145
+ c.flag [:length]
146
146
 
147
- c.desc "increment UDP payload"
147
+ c.desc 'increment UDP payload'
148
148
  c.default_value nil
149
- c.flag [ :inc_payload ]
149
+ c.flag [:inc_payload]
150
150
 
151
151
  c.action do | global_options, options, args |
152
- raise "--source option is mandatory" if options[ :source ].nil?
153
- raise "--dest option is mandatory" if options[ :dest ].nil?
152
+ fail '--source option is mandatory' if options[ :source].nil?
153
+ fail '--dest option is mandatory' if options[ :dest].nil?
154
154
 
155
- trema_send_packets options[ :source ], options[ :dest ], options
155
+ trema_send_packets options[ :source], options[ :dest], options
156
156
  end
157
157
  end
158
158
 
159
159
 
160
160
  desc "Brings a switch's specified port up"
161
161
  command :port_up do | c |
162
- c.desc "switch name"
163
- c.flag [ :s, :switch ]
162
+ c.desc 'switch name'
163
+ c.flag [:s, :switch]
164
164
 
165
- c.desc "port"
166
- c.flag [ :p, :port ]
165
+ c.desc 'port'
166
+ c.flag [:p, :port]
167
167
 
168
168
  c.action do | global_options, options, args |
169
- raise "--switch option is mandatory" if options[ :switch ].nil?
170
- raise "--port option is mandatory" if options[ :port ].nil?
169
+ fail '--switch option is mandatory' if options[ :switch].nil?
170
+ fail '--port option is mandatory' if options[ :port].nil?
171
171
 
172
- trema_port_up options[ :switch ], options[ :port ]
172
+ trema_port_up options[ :switch], options[ :port]
173
173
  end
174
174
  end
175
175
 
176
176
 
177
177
  desc "Brings a switch's specified port down"
178
178
  command :port_down do | c |
179
- c.desc "switch name"
180
- c.flag [ :s, :switch ]
179
+ c.desc 'switch name'
180
+ c.flag [:s, :switch]
181
181
 
182
- c.desc "port"
183
- c.flag [ :p, :port ]
182
+ c.desc 'port'
183
+ c.flag [:p, :port]
184
184
 
185
185
  c.action do | global_options, options, args |
186
- raise "--switch option is mandatory" if options[ :switch ].nil?
187
- raise "--port option is mandatory" if options[ :port ].nil?
186
+ fail '--switch option is mandatory' if options[ :switch].nil?
187
+ fail '--port option is mandatory' if options[ :port].nil?
188
188
 
189
- trema_port_down options[ :switch ], options[ :port ]
189
+ trema_port_down options[ :switch], options[ :port]
190
190
  end
191
191
  end
192
192
 
193
193
 
194
- desc "Shows stats of packets"
195
- arg_name "host"
194
+ desc 'Shows stats of packets'
195
+ arg_name 'host'
196
196
  command :show_stats do | c |
197
- c.desc "Show stats of packets sent"
198
- c.switch [ :t, :tx ], :negatable => false
199
- c.desc "Show stats of packets received"
200
- c.switch [ :r, :rx ], :negatable => false
197
+ c.desc 'Show stats of packets sent'
198
+ c.switch [:t, :tx], :negatable => false
199
+ c.desc 'Show stats of packets received'
200
+ c.switch [:r, :rx], :negatable => false
201
201
 
202
202
  c.action do | global_options, options, args |
203
- help_now!( "host is required" ) if args.empty?
204
- trema_show_stats args[ 0 ], options[ :tx ], options[ :rx ]
203
+ help_now!('host is required') if args.empty?
204
+ trema_show_stats args[ 0], options[ :tx], options[ :rx]
205
205
  end
206
206
  end
207
207
 
208
208
 
209
- desc "Resets stats of packets"
210
- arg_name "hosts..."
209
+ desc 'Resets stats of packets'
210
+ arg_name 'hosts...'
211
211
  command :reset_stats do | c |
212
212
  c.action do | global_options, options, args |
213
213
  hosts = args
@@ -221,21 +221,21 @@ class BinTrema
221
221
  end
222
222
 
223
223
 
224
- desc "Print all flow entries"
225
- arg_name "switches..."
224
+ desc 'Print all flow entries'
225
+ arg_name 'switches...'
226
226
  command :dump_flows do | c |
227
227
  c.action do | global_options, options, args |
228
- help_now!( "switches is required" ) if args.empty?
228
+ help_now!('switches is required') if args.empty?
229
229
  trema_dump_flows args
230
230
  end
231
231
  end
232
232
 
233
233
 
234
- desc "Opens a new shell in the specified network namespace"
235
- arg_name "name"
234
+ desc 'Opens a new shell in the specified network namespace'
235
+ arg_name 'name'
236
236
  command :netns do | c |
237
237
  c.action do | global_options, options, args |
238
- trema_netns args[ 0 ]
238
+ trema_netns args[ 0]
239
239
  end
240
240
  end
241
241
 
@@ -248,7 +248,7 @@ class BinTrema
248
248
  end
249
249
 
250
250
 
251
- desc "Displays the current runtime version"
251
+ desc 'Displays the current runtime version'
252
252
  command :version do | c |
253
253
  c.action do
254
254
  trema_version
@@ -260,18 +260,18 @@ class BinTrema
260
260
 
261
261
 
262
262
  pre do | global, command, options, args |
263
- $verbose = global[ :verbose ]
263
+ $verbose = global[ :verbose]
264
264
 
265
- if global[ :version ]
265
+ if global[ :version]
266
266
  trema_version
267
267
  exit_now! nil, 0
268
268
  end
269
269
 
270
270
  assert_trema_is_built
271
271
 
272
- if FileTest.exist?( Trema.tmp ) and not FileTest.writable?( Trema.tmp )
272
+ if FileTest.exist?(Trema.tmp) && !FileTest.writable?(Trema.tmp)
273
273
  # Trema is system widely installed with gem command
274
- sh "sudo chmod o+w -R #{ Trema.tmp }"
274
+ sh "sudo chmod a+w -R #{ Trema.tmp }"
275
275
  end
276
276
 
277
277
  FileUtils.mkdir_p Trema.log
@@ -290,21 +290,19 @@ class BinTrema
290
290
  end
291
291
 
292
292
 
293
- def start argv
294
- begin
295
- run argv
296
- rescue
297
- puts $!
298
- $!.backtrace.each do | each |
299
- puts each
300
- end
301
- exit
293
+ def start(argv)
294
+ run argv
295
+ rescue
296
+ puts $!
297
+ $!.backtrace.each do | each |
298
+ puts each
302
299
  end
300
+ exit
303
301
  end
304
302
  end
305
303
 
306
304
 
307
- exit BinTrema.new.start( ARGV )
305
+ exit BinTrema.new.start(ARGV)
308
306
 
309
307
 
310
308
  ### Local variables:
@@ -19,12 +19,12 @@
19
19
  #
20
20
 
21
21
 
22
- $LOAD_PATH.unshift( File.expand_path( File.dirname( __FILE__ ) + "/../ruby" ) )
22
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../ruby'))
23
23
 
24
24
 
25
- require "fileutils"
26
- require "optparse"
27
- require "trema/path"
25
+ require 'fileutils'
26
+ require 'optparse'
27
+ require 'trema/path'
28
28
 
29
29
 
30
30
  $opts = OptionParser.new
@@ -32,10 +32,10 @@ $opts = OptionParser.new
32
32
  FileUtils.cd Trema.home do
33
33
  $opts.banner = "Usage: #{ File.basename $0 } [OPTIONS ...]"
34
34
 
35
- $opts.on( "-c", "--cflags" ) do
35
+ $opts.on('-c', '--cflags') do
36
36
  $cflags = true
37
37
  end
38
- $opts.on( "-l", "--libs" ) do
38
+ $opts.on('-l', '--libs') do
39
39
  $libs = true
40
40
  end
41
41
 
@@ -48,7 +48,7 @@ FileUtils.cd Trema.home do
48
48
  if $libs
49
49
  output << "-L#{ Trema.objects }/lib -ltrema -lrt -lpthread -lsqlite3 -ldl"
50
50
  end
51
- print output.join( " " )
51
+ print output.join(' ')
52
52
  end
53
53
 
54
54
 
data/build.rb CHANGED
@@ -19,8 +19,8 @@
19
19
  #
20
20
 
21
21
 
22
- Dir.chdir File.dirname( __FILE__ ) do
23
- result = system( "bundle exec rake #{ ARGV.join ' ' }" )
22
+ Dir.chdir File.dirname(__FILE__) do
23
+ result = system("bundle exec rake #{ ARGV.join ' ' }")
24
24
  abort "#{ $0 } aborted!" unless result
25
25
  end
26
26
 
data/cruise.rb CHANGED
@@ -31,18 +31,16 @@ $coverage_threshold = 70.1
31
31
  # Load libraries
32
32
  ################################################################################
33
33
 
34
- $LOAD_PATH.unshift( File.expand_path( File.dirname( __FILE__ ) + "/ruby" ) )
34
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/ruby'))
35
35
 
36
- require "rubygems"
37
-
38
- require "English"
39
- require "blocker"
40
- require "fileutils"
41
- require "find"
42
- require "optparse"
43
- require "stringio"
44
- require "sub-process"
45
- require "trema/path"
36
+ require 'English'
37
+ require 'blocker'
38
+ require 'fileutils'
39
+ require 'find'
40
+ require 'optparse'
41
+ require 'stringio'
42
+ require 'sub-process'
43
+ require 'trema/path'
46
44
 
47
45
 
48
46
  include FileUtils
@@ -53,18 +51,18 @@ include FileUtils
53
51
  ################################################################################
54
52
 
55
53
  def path_string
56
- paths = ENV[ "PATH" ].split( ":" )
57
- paths << Gem::bindir unless paths.include?( Gem::bindir )
58
- paths.join ":"
54
+ paths = ENV[ 'PATH'].split(':')
55
+ paths << Gem::bindir unless paths.include?(Gem::bindir)
56
+ paths.join ':'
59
57
  end
60
58
 
61
59
 
62
- def sh cmd
63
- ENV[ "LC_ALL" ] = "C"
64
- ENV[ "PATH" ] = path_string
60
+ def sh(cmd)
61
+ ENV[ 'LC_ALL'] = 'C'
62
+ ENV[ 'PATH'] = path_string
65
63
  puts cmd if $verbose
66
- unless system( cmd )
67
- raise "Command '#{ cmd }' failed!"
64
+ unless system(cmd)
65
+ fail "Command '#{ cmd }' failed!"
68
66
  end
69
67
  end
70
68
 
@@ -81,7 +79,7 @@ class Testee
81
79
  attr_writer :lines
82
80
 
83
81
 
84
- def initialize path
82
+ def initialize(path)
85
83
  @path = path
86
84
  @lines = 0
87
85
  @coverage = 0.0
@@ -89,7 +87,7 @@ class Testee
89
87
 
90
88
 
91
89
  def name
92
- File.basename( @path )
90
+ File.basename(@path)
93
91
  end
94
92
 
95
93
 
@@ -98,15 +96,15 @@ class Testee
98
96
 
99
97
  n = 0
100
98
  in_comment = false
101
- File.open( @path, "r" ).each_line do | l |
102
- next if /^\s+\/\//=~ l # comments starting with //
103
- next if /^\s*$/=~ l # empty lines
104
- next if /^\s*\/\*.*\*\//=~l # /* ... */
105
- if /^\s*\/\*/=~ l # /*
99
+ File.open(@path, 'r').each_line do | l |
100
+ next if /^\s+\/\// =~ l # comments starting with //
101
+ next if /^\s*$/ =~ l # empty lines
102
+ next if /^\s*\/\*.*\*\// =~ l # /* ... */
103
+ if /^\s*\/\*/ =~ l # /*
106
104
  in_comment = true
107
105
  next
108
106
  end
109
- if /^\s*\*\//=~ l # */
107
+ if /^\s*\*\// =~ l # */
110
108
  in_comment = false
111
109
  next
112
110
  end
@@ -122,14 +120,14 @@ class Testee
122
120
  end
123
121
 
124
122
 
125
- def coverage= value
123
+ def coverage=(value)
126
124
  if value > @coverage
127
125
  @coverage = value
128
126
  end
129
127
  end
130
128
 
131
129
 
132
- def <=> other
130
+ def <=>(other)
133
131
  @name <=> other.name
134
132
  end
135
133
  end
@@ -137,7 +135,7 @@ end
137
135
 
138
136
  def testees
139
137
  $c_files.delete_if do | key, value |
140
- File.basename( key ) == "trema_wrapper.c"
138
+ File.basename(key) == 'trema_wrapper.c'
141
139
  end
142
140
  end
143
141
 
@@ -155,38 +153,38 @@ end
155
153
 
156
154
 
157
155
  def lines_total
158
- testees.values.inject( 0 ) do | r, each |
156
+ testees.values.inject(0) do | r, each |
159
157
  r += each.lines
160
158
  end
161
159
  end
162
160
 
163
161
 
164
162
  def lines_tested
165
- testees.values.inject( 0 ) do | r, each |
163
+ testees.values.inject(0) do | r, each |
166
164
  r += each.lines_tested
167
165
  end
168
166
  end
169
167
 
170
168
 
171
169
  def coverage
172
- sprintf( "%3.1f", lines_tested / lines_total * 100.0 ).to_f
170
+ sprintf('%3.1f', lines_tested / lines_total * 100.0).to_f
173
171
  end
174
172
 
175
173
 
176
174
  def diff_coverage_threshold
177
- sprintf( "%3.1f", ( $coverage_threshold - coverage ).abs ).to_f
175
+ sprintf('%3.1f', ( $coverage_threshold - coverage).abs).to_f
178
176
  end
179
177
 
180
178
 
181
- def gcov gcda, dir
179
+ def gcov(gcda, dir)
182
180
  file = nil
183
181
 
184
182
  cmd = "gcov #{ gcda } -o #{ dir } -n"
185
183
  SubProcess.create do | shell |
186
184
  shell.on_stdout do | l |
187
- file = File.expand_path( $1 ) if /^File '(.*)'/=~ l
188
- testee = $c_files[ file ]
189
- if /^Lines executed:(.*)% of (.*)$/=~ l and not testee.nil?
185
+ file = File.expand_path($1) if /^File '(.*)'/ =~ l
186
+ testee = $c_files[ file]
187
+ if /^Lines executed:(.*)% of (.*)$/ =~ l && testee
190
188
  testee.coverage = $1.to_f
191
189
  testee.lines = $2.to_i
192
190
  end
@@ -195,7 +193,7 @@ def gcov gcda, dir
195
193
  $stderr.puts l
196
194
  end
197
195
  shell.on_failure do
198
- raise "'#{ cmd }' failed."
196
+ fail "'#{ cmd }' failed."
199
197
  end
200
198
  shell.exec cmd
201
199
  end
@@ -203,17 +201,17 @@ end
203
201
 
204
202
 
205
203
  def measure_coverage
206
- Find.find( "src/lib", "src/packetin_filter", "src/switch_manager", "src/tremashark", "unittests" ) do | f |
207
- if /\.c$/=~ f
208
- path = File.expand_path( f )
209
- $c_files[ path ] = Testee.new( path )
204
+ Find.find('src/lib', 'src/packetin_filter', 'src/switch_manager', 'src/tremashark', 'unittests') do | f |
205
+ if /\.c$/ =~ f
206
+ path = File.expand_path(f)
207
+ $c_files[ path] = Testee.new(path)
210
208
  end
211
209
  end
212
- Dir.glob( "unittests/objects/*.gcda" ).each do | each |
213
- gcov each, "unittests/objects"
210
+ Dir.glob('unittests/objects/*.gcda').each do | each |
211
+ gcov each, 'unittests/objects'
214
212
  end
215
- Dir.glob( "objects/unittests/*.gcda" ).each do | each |
216
- gcov each, "objects/unittests"
213
+ Dir.glob('objects/unittests/*.gcda').each do | each |
214
+ gcov each, 'objects/unittests'
217
215
  end
218
216
  end
219
217
 
@@ -222,8 +220,8 @@ end
222
220
  # Summaries
223
221
  ################################################################################
224
222
 
225
- def banner message
226
- return <<-EOF
223
+ def banner(message)
224
+ <<-EOF
227
225
  #{ message }
228
226
  ================================================================================
229
227
  EOF
@@ -242,8 +240,8 @@ end
242
240
 
243
241
 
244
242
  def coverage_threshold_error
245
- return <<-EOF
246
- #{ banner( "ERROR" ) }
243
+ <<-EOF
244
+ #{ banner('ERROR') }
247
245
  Oops...
248
246
  Overall coverage DECREASED to #{ coverage }% !!!
249
247
 
@@ -253,8 +251,8 @@ end
253
251
 
254
252
 
255
253
  def update_coverage_threshold_message
256
- return <<-EOF
257
- #{ banner( "WARNING" ) }
254
+ <<-EOF
255
+ #{ banner('WARNING') }
258
256
  Congratulations !
259
257
  Overall coverage INCREASED to #{ coverage }% !
260
258
 
@@ -274,24 +272,26 @@ def show_summary
274
272
  puts <<-EOF
275
273
 
276
274
 
277
- #{ banner( "Coverage details" ) }
275
+ #{ banner('Coverage details') }
278
276
  #{ coverage_ranking }
279
277
 
280
- #{ banner( "Summary" ) }
281
- - Total execution time = #{ ( Time.now - $start_time ).to_i } seconds
278
+ #{ banner('Summary') }
279
+ - Total execution time = #{ ( Time.now - $start_time).to_i } seconds
282
280
  - Overall coverage = #{ coverage }% (#{ files_not_tested.size }/#{ testees.size } files not yet tested)
283
281
 
284
282
 
285
283
  EOF
286
284
 
287
- if ( coverage < $coverage_threshold ) and ( diff_coverage_threshold > delta_coverage_threshold )
285
+ if (coverage < $coverage_threshold) && ( diff_coverage_threshold > delta_coverage_threshold)
288
286
  puts coverage_threshold_error
289
- puts; puts
290
- exit -1
291
- elsif ( coverage > $coverage_threshold ) and ( diff_coverage_threshold > delta_coverage_threshold )
287
+ puts
288
+ puts
289
+ exit(-1)
290
+ elsif (coverage > $coverage_threshold) && ( diff_coverage_threshold > delta_coverage_threshold)
292
291
  puts update_coverage_threshold_message
293
- puts; puts
294
- exit -1
292
+ puts
293
+ puts
294
+ exit(-1)
295
295
  end
296
296
  end
297
297
 
@@ -300,31 +300,44 @@ end
300
300
  # Tests
301
301
  ################################################################################
302
302
 
303
- def test message
303
+ def test(message)
304
304
  puts message
305
305
  cd Trema.home do
306
- sh "bundle exec rake clean"
306
+ sh 'bundle exec rake clean'
307
307
  begin
308
308
  yield
309
309
  ensure
310
- sh "./trema killall"
310
+ sh './trema killall' rescue nil
311
311
  end
312
312
  end
313
313
  end
314
314
 
315
315
 
316
- def run_unit_test
317
- test "Running unit tests ..." do
318
- sh "bundle exec rake unittests"
319
- sh "bundle exec rake spec"
316
+ def run_unit_tests
317
+ test 'Running unit tests ...' do
318
+ sh 'bundle exec rake unittests'
320
319
  end
321
320
  measure_coverage
322
321
  end
323
322
 
324
323
 
325
- def run_acceptance_test
326
- test "Running acceptance tests ..." do
327
- sh "bundle exec rake features"
324
+ def run_rspec
325
+ test 'Running rspec ...' do
326
+ sh 'bundle exec rake spec'
327
+ end
328
+ measure_coverage
329
+ end
330
+
331
+
332
+ def run_ruby_acceptance_tests
333
+ test 'Running acceptance tests ...' do
334
+ sh 'bundle exec rake features'
335
+ end
336
+ end
337
+
338
+ def run_all_acceptance_tests
339
+ test 'Running acceptance tests ...' do
340
+ sh 'bundle exec rake features:all'
328
341
  end
329
342
  end
330
343
 
@@ -335,22 +348,26 @@ end
335
348
 
336
349
  $options = OptionParser.new
337
350
 
338
- $options.on( "-u", "--unit-test-only" ) do
351
+ $options.on('-u', '--unit-test-only') do
339
352
  $unit_test_only = true
340
353
  end
341
354
 
342
- $options.on( "-a", "--acceptance-test-only" ) do
355
+ $options.on('-a', '--acceptance-test-only') do
343
356
  $acceptance_test_only = true
344
357
  end
345
358
 
346
- $options.separator ""
359
+ $options.on('-A', '--all') do
360
+ $all = true
361
+ end
362
+
363
+ $options.separator ''
347
364
 
348
- $options.on( "-h", "--help" ) do
365
+ $options.on('-h', '--help') do
349
366
  puts $options.to_s
350
367
  exit
351
368
  end
352
369
 
353
- $options.on( "-v", "--verbose" ) do
370
+ $options.on('-v', '--verbose') do
354
371
  $verbose = true
355
372
  end
356
373
 
@@ -359,9 +376,9 @@ $options.parse! ARGV
359
376
 
360
377
  def init_cruise
361
378
  FileUtils.rm_f File.expand_path(File.join(File.dirname(__FILE__), 'Gemfile.lock'))
362
- sh "bundle install"
363
- sh "bundle update"
364
- sh "bundle exec rake clobber"
379
+ sh 'bundle install'
380
+ sh 'bundle update'
381
+ sh 'bundle exec rake clobber'
365
382
  end
366
383
 
367
384
 
@@ -369,9 +386,18 @@ Blocker.start do
369
386
  $start_time = Time.now
370
387
  cd Trema.home do
371
388
  init_cruise
372
- run_unit_test if not $acceptance_test_only
373
- run_acceptance_test if not $unit_test_only
374
- show_summary if not $acceptance_test_only
389
+ unless $acceptance_test_only
390
+ run_unit_tests if $all
391
+ run_rspec
392
+ end
393
+ unless $unit_test_only
394
+ if $all
395
+ run_all_acceptance_tests
396
+ else
397
+ run_ruby_acceptance_tests
398
+ end
399
+ end
400
+ show_summary if ((not $acceptance_test_only) && $all)
375
401
  end
376
402
  end
377
403