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
@@ -19,21 +19,21 @@
19
19
  module Trema
20
20
  class Switch
21
21
  attr_reader :dpid
22
- alias :datapath_id :dpid
22
+ alias_method :datapath_id, :dpid
23
23
 
24
24
 
25
- def self.inherited subclass
26
- at_exit { subclass.new( eval ARGV[ 0 ] ).run! }
25
+ def self.inherited(subclass)
26
+ at_exit { subclass.new(eval ARGV[ 0]).run! }
27
27
  end
28
28
 
29
29
 
30
- def initialize dpid
30
+ def initialize(dpid)
31
31
  @dpid = dpid
32
32
  end
33
33
 
34
34
 
35
35
  def name
36
- self.class.to_s.split( "::" ).last
36
+ self.class.to_s.split('::').last
37
37
  end
38
38
 
39
39
 
@@ -42,8 +42,8 @@ module Trema
42
42
  end
43
43
 
44
44
 
45
- def features_request xid
46
- send_message FeaturesReply.new( :datapath_id => @dpid, :transaction_id => xid )
45
+ def features_request(xid)
46
+ send_message FeaturesReply.new(:datapath_id => @dpid, :transaction_id => xid)
47
47
  end
48
48
  end
49
49
  end
@@ -15,7 +15,7 @@
15
15
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
16
  #
17
17
 
18
- require "trema/stats-helper"
18
+ require 'trema/stats-helper'
19
19
 
20
20
 
21
21
  module Trema
@@ -71,7 +71,7 @@ module Trema
71
71
  # @return [TableStatsReply]
72
72
  # an object that encapsulates the OFPST_STATS_REPLY(OFPST_TABLE) OpenFlow message.
73
73
  #
74
- def initialize options
74
+ def initialize(options)
75
75
  super FIELDS, options
76
76
  end
77
77
  end
@@ -17,19 +17,19 @@
17
17
 
18
18
 
19
19
  module Timers
20
- def self.included base
20
+ def self.included(base)
21
21
  base.send :include, TimerMethods
22
22
  base.send :extend, TimerMethods
23
23
  end
24
24
 
25
25
 
26
26
  module TimerMethods
27
- lambda {
27
+ lambda do
28
28
  timer_event_handlers = {}
29
29
 
30
30
 
31
31
  Kernel.send :define_method, :add_timer do | handler, interval, event_type |
32
- timer_event_handlers[ handler ] = {
32
+ timer_event_handlers[ handler] = {
33
33
  :interval => interval,
34
34
  :rest => interval,
35
35
  :event_type => event_type
@@ -39,14 +39,14 @@ module Timers
39
39
 
40
40
  Kernel.send :define_method, :fire_event do
41
41
  timer_event_handlers.each do | handler, data |
42
- data[ :rest ] -= 1
43
- if data[ :rest ] <= 0
42
+ data[ :rest] -= 1
43
+ if data[ :rest] <= 0
44
44
  __send__ handler
45
- data[ :rest ] = data[ :interval ] if data[ :event_type ] == :periodic
45
+ data[ :rest] = data[ :interval] if data[ :event_type] == :periodic
46
46
  end
47
47
  end
48
48
  timer_event_handlers.delete_if do | handler, data |
49
- data[ :rest ] <= 0 && data[ :event_type ] == :oneshot
49
+ data[ :rest] <= 0 && data[ :event_type] == :oneshot
50
50
  end
51
51
  end
52
52
 
@@ -54,28 +54,28 @@ module Timers
54
54
  Kernel.send :define_method, :delete_timer do | handler |
55
55
  timer_event_handlers.delete
56
56
  end
57
- }.call
57
+ end.call
58
58
 
59
59
 
60
- def add_timer_event handler, interval, event_type
60
+ def add_timer_event(handler, interval, event_type)
61
61
  add_timer handler, interval, event_type
62
62
  end
63
63
  alias_method :timer_event, :add_timer_event
64
64
 
65
65
 
66
- def delete_timer_event handler
66
+ def delete_timer_event(handler)
67
67
  delete_timer handler
68
68
  end
69
69
 
70
70
 
71
71
  # shortcut methods
72
- def add_periodic_timer_event handler, interval
72
+ def add_periodic_timer_event(handler, interval)
73
73
  add_timer_event handler, interval, :periodic
74
74
  end
75
75
  alias_method :periodic_timer_event, :add_periodic_timer_event
76
76
 
77
77
 
78
- def add_oneshot_timer_event handler, interval
78
+ def add_oneshot_timer_event(handler, interval)
79
79
  add_timer_event handler, interval, :oneshot
80
80
  end
81
81
  alias_method :oneshot_timer_event, :add_oneshot_timer_event
@@ -79,7 +79,6 @@ Init_trema() {
79
79
  rb_define_const( mTrema, "OFPAT_ENQUEUE", INT2NUM( OFPAT_ENQUEUE ) );
80
80
  rb_define_const( mTrema, "OFPAT_VENDOR", INT2NUM( OFPAT_VENDOR ) );
81
81
 
82
- rb_require( "rubygems" );
83
82
  rb_require( "pio" );
84
83
  rb_require( "trema/mac" );
85
84
  rb_require( "trema/host" );
@@ -18,7 +18,7 @@
18
18
  #
19
19
 
20
20
 
21
- require "trema/executables"
21
+ require 'trema/executables'
22
22
 
23
23
 
24
24
  module Trema
@@ -18,18 +18,18 @@
18
18
  #
19
19
 
20
20
 
21
- require "trema/dsl"
22
- require "trema/executables"
23
- require "trema/path"
24
- require "trema/process"
21
+ require 'trema/dsl'
22
+ require 'trema/executables'
23
+ require 'trema/path'
24
+ require 'trema/process'
25
25
 
26
26
 
27
27
  module Trema::Util
28
- def sh cmd
29
- ENV[ "TREMA_HOME" ] = Trema.home
28
+ def sh(cmd)
29
+ ENV[ 'TREMA_HOME'] = Trema.home
30
30
  puts cmd if $verbose
31
- unless system( cmd )
32
- raise "Command '#{ cmd }' failed!"
31
+ unless system(cmd)
32
+ fail "Command '#{ cmd }' failed!"
33
33
  end
34
34
  end
35
35
 
@@ -47,11 +47,11 @@ EOF
47
47
  end
48
48
 
49
49
 
50
- def cleanup session
50
+ def cleanup(session)
51
51
  # [FIXME] Use session.switch_manager
52
- sm_pid = File.join( Trema.pid, "switch_manager.pid" )
53
- if FileTest.exist?( sm_pid )
54
- Trema::Process.read( sm_pid ).kill!
52
+ sm_pid = File.join(Trema.pid, 'switch_manager.pid')
53
+ if FileTest.exist?(sm_pid)
54
+ Trema::Process.read(sm_pid).kill!
55
55
  end
56
56
  session.apps.each do | name, app |
57
57
  app.shutdown!
@@ -69,8 +69,8 @@ EOF
69
69
  netns.shutdown!
70
70
  end
71
71
 
72
- Dir.glob( File.join Trema.pid, "*.pid" ).each do | each |
73
- Trema::Process.read( each ).kill!
72
+ Dir.glob(File.join Trema.pid, '*.pid').each do | each |
73
+ Trema::Process.read(each).kill!
74
74
  end
75
75
  end
76
76
 
@@ -81,32 +81,30 @@ EOF
81
81
 
82
82
 
83
83
  def cleanup_current_session
84
- begin
85
- cleanup Trema::DSL::Context.load_current
86
- ensure
87
- FileUtils.rm_f Trema::DSL::Context::PATH
88
- end
84
+ cleanup Trema::DSL::Context.load_current
85
+ ensure
86
+ FileUtils.rm_f Trema::DSL::Context::PATH
89
87
  end
90
88
 
91
89
 
92
- def find_app_by_name name
90
+ def find_app_by_name(name)
93
91
  # [FIXME] Trema apps does not appear in context.apps. why?
94
- pid_file = File.join( Trema.pid, "#{ name }.pid" )
95
- if FileTest.exist?( pid_file )
96
- Trema::Process.read( pid_file )
92
+ pid_file = File.join(Trema.pid, "#{ name }.pid")
93
+ if FileTest.exist?(pid_file)
94
+ Trema::Process.read(pid_file)
97
95
  else
98
96
  nil
99
97
  end
100
98
  end
101
99
 
102
100
 
103
- def find_switch_by_name name
104
- Trema::DSL::Context.load_current.switches[ name ]
101
+ def find_switch_by_name(name)
102
+ Trema::DSL::Context.load_current.switches[ name]
105
103
  end
106
104
 
107
105
 
108
- def find_host_by_name name
109
- Trema::DSL::Context.load_current.hosts[ name ]
106
+ def find_host_by_name(name)
107
+ Trema::DSL::Context.load_current.hosts[ name]
110
108
  end
111
109
  end
112
110
 
@@ -16,8 +16,8 @@
16
16
  #
17
17
 
18
18
 
19
- require "trema/action"
20
- require "trema/monkey-patch/integer"
19
+ require 'trema/action'
20
+ require 'trema/monkey-patch/integer'
21
21
 
22
22
 
23
23
  module Trema
@@ -51,18 +51,18 @@ module Trema
51
51
  # @raise [TypeError] if body is not an Array.
52
52
  # @raise [ArgumentError] if body length is not a multiple of 8.
53
53
  #
54
- def initialize vendor_id, body = nil
55
- unless vendor_id.is_a?( Integer )
56
- raise TypeError, "Vendor ID must be an unsigned 32-bit integer"
54
+ def initialize(vendor_id, body = nil)
55
+ unless vendor_id.is_a?(Integer)
56
+ fail TypeError, 'Vendor ID must be an unsigned 32-bit integer'
57
57
  end
58
58
  unless vendor_id.unsigned_32bit?
59
- raise ArgumentError, "Vendor ID must be an unsigned 32-bit integer"
59
+ fail ArgumentError, 'Vendor ID must be an unsigned 32-bit integer'
60
60
  end
61
- if ( not body.nil? ) and ( not body.is_a?( Array ) )
62
- raise TypeError, "Body must be an Array"
61
+ if ( body) && ( not body.is_a?(Array))
62
+ fail TypeError, 'Body must be an Array'
63
63
  end
64
- if ( not body.nil? ) and ( body.size % 8 != 0 )
65
- raise ArgumentError, "Body length must be a multiple of 8"
64
+ if ( body) && ( body.size % 8 != 0)
65
+ fail ArgumentError, 'Body length must be a multiple of 8'
66
66
  end
67
67
 
68
68
  @vendor_id = vendor_id
@@ -16,7 +16,7 @@
16
16
  #
17
17
 
18
18
 
19
- require "trema/stats-helper"
19
+ require 'trema/stats-helper'
20
20
 
21
21
 
22
22
  module Trema
@@ -50,7 +50,7 @@ module Trema
50
50
  # @return [VendorStatsReply]
51
51
  # an object that encapsulates the OFPST_STATS_REPLY(OFPST_VENDOR) OpenFlow message.
52
52
  #
53
- def initialize options
53
+ def initialize(options)
54
54
  super FIELDS, options
55
55
  end
56
56
  end
@@ -17,7 +17,7 @@
17
17
 
18
18
 
19
19
  module Trema
20
- VERSION = "0.4.6"
20
+ VERSION = '0.4.7'.freeze
21
21
  end
22
22
 
23
23
 
@@ -15,28 +15,28 @@
15
15
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
16
  #
17
17
 
18
+ require 'codeclimate-test-reporter'
19
+ CodeClimate::TestReporter.start
18
20
 
19
- $LOAD_PATH << File.join( File.dirname( __FILE__ ), "..", "ruby" )
20
- $LOAD_PATH.unshift File.expand_path( File.join File.dirname( __FILE__ ), "..", "vendor", "ruby-ifconfig-1.2", "lib" )
21
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'ruby')
22
+ $LOAD_PATH.unshift File.expand_path(File.join File.dirname(__FILE__), '..', 'vendor', 'ruby-ifconfig-1.2', 'lib')
21
23
 
22
24
 
23
- require "rubygems"
24
-
25
- require "rspec"
26
- require "rspec/autorun"
27
- require "pio"
28
- require "trema"
29
- require "trema/dsl/configuration"
30
- require "trema/dsl/context"
31
- require "trema/ofctl"
32
- require "trema/shell"
33
- require "trema/util"
25
+ require 'rspec'
26
+ require 'rspec/autorun'
27
+ require 'pio'
28
+ require 'trema'
29
+ require 'trema/dsl/configuration'
30
+ require 'trema/dsl/context'
31
+ require 'trema/ofctl'
32
+ require 'trema/shell'
33
+ require 'trema/util'
34
34
 
35
35
 
36
36
  # Requires supporting files with custom matchers and macros, etc,
37
37
  # in ./support/ and its subdirectories.
38
- Dir[ "#{ File.dirname( __FILE__ ) }/support/**/*.rb" ].each do | each |
39
- require File.expand_path( each )
38
+ Dir[ "#{ File.dirname(__FILE__) }/support/**/*.rb"].each do | each |
39
+ require File.expand_path(each)
40
40
  end
41
41
 
42
42
 
@@ -51,22 +51,22 @@ end
51
51
  include Trema
52
52
 
53
53
 
54
- def controller name
55
- Trema::App[ name ]
54
+ def controller(name)
55
+ Trema::App[ name]
56
56
  end
57
57
 
58
58
 
59
- def vswitch name
60
- Trema::OpenflowSwitch[ name ]
59
+ def vswitch(name)
60
+ Trema::OpenflowSwitch[ name]
61
61
  end
62
62
 
63
63
 
64
- def vhost name
65
- Trema::Host[ name ]
64
+ def vhost(name)
65
+ Trema::Host[ name]
66
66
  end
67
67
 
68
68
 
69
- def send_packets source, dest, options = {}
69
+ def send_packets(source, dest, options = {})
70
70
  Trema::Shell.send_packets source, dest, options
71
71
  end
72
72
 
@@ -75,18 +75,16 @@ include Trema::Util
75
75
 
76
76
 
77
77
  class Network
78
- def initialize &block
79
- @context = Trema::DSL::Parser.new.eval( &block )
78
+ def initialize(&block)
79
+ @context = Trema::DSL::Parser.new.eval(&block)
80
80
  end
81
81
 
82
82
 
83
- def run controller_class, &test
84
- begin
85
- trema_run controller_class
86
- test.call
87
- ensure
88
- trema_kill
89
- end
83
+ def run(controller_class, &test)
84
+ trema_run controller_class
85
+ test.call
86
+ ensure
87
+ trema_kill
90
88
  end
91
89
 
92
90
 
@@ -95,16 +93,16 @@ class Network
95
93
  ################################################################################
96
94
 
97
95
 
98
- def trema_run controller_class
96
+ def trema_run(controller_class)
99
97
  controller = controller_class.new
100
- if not controller.is_a?( Trema::Controller )
101
- raise "#{ controller_class } is not a subclass of Trema::Controller"
98
+ unless controller.is_a?(Trema::Controller)
99
+ fail "#{ controller_class } is not a subclass of Trema::Controller"
102
100
  end
103
- Trema::DSL::Context.new( @context ).dump
101
+ Trema::DSL::Context.new(@context).dump
104
102
 
105
103
  app_name = controller.name
106
104
  rule = { :port_status => app_name, :packet_in => app_name, :state_notify => app_name }
107
- sm = SwitchManager.new( rule, @context.port )
105
+ sm = SwitchManager.new(rule, @context.port)
108
106
  sm.no_flow_cleanup = true
109
107
  sm.run!
110
108
 
@@ -122,7 +120,7 @@ class Network
122
120
  each.up!
123
121
  end
124
122
  @context.hosts.each do | name, each |
125
- each.add_arp_entry @context.hosts.values - [ each ]
123
+ each.add_arp_entry @context.hosts.values - [each]
126
124
  end
127
125
 
128
126
  @th_controller = Thread.start do
@@ -139,42 +137,42 @@ class Network
139
137
  end
140
138
 
141
139
 
142
- def drop_packets_from_unknown_hosts switch
140
+ def drop_packets_from_unknown_hosts(switch)
143
141
  ofctl = Trema::Ofctl.new
144
- ofctl.add_flow switch, :priority => 0, :actions => "drop"
142
+ ofctl.add_flow switch, :priority => 0, :actions => 'drop'
145
143
  @context.hosts.each do | name, each |
146
- ofctl.add_flow switch, :dl_type => "0x0800", :nw_src => each.ip, :priority => 1, :actions => "controller"
144
+ ofctl.add_flow switch, :dl_type => '0x0800', :nw_src => each.ip, :priority => 1, :actions => 'controller'
147
145
  end
148
146
  end
149
147
 
150
148
 
151
- def wait_until_controller_is_up trema_name, timeout = 10
149
+ def wait_until_controller_is_up(trema_name, timeout = 10)
152
150
  elapsed = 0
153
151
  loop do
154
- raise "Timed out waiting for #{ trema_name }." if elapsed > timeout
155
- break if FileTest.exists?( File.join( Trema.pid, "#{ trema_name }.pid" ) )
156
- sleep 1
157
- elapsed += 1
152
+ fail "Timed out waiting for #{ trema_name }." if elapsed > timeout
153
+ break if FileTest.exists?(File.join(Trema.pid, "#{ trema_name }.pid"))
154
+ sleep 0.1
155
+ elapsed += 0.1
158
156
  end
159
157
  sleep 1
160
158
  end
161
159
 
162
160
 
163
- def wait_until_all_pid_files_are_deleted timeout = 12
161
+ def wait_until_all_pid_files_are_deleted(timeout = 12)
164
162
  elapsed = 0
165
163
  loop do
166
- raise "Failed to clean up remaining processes." if elapsed > timeout
167
- break if Dir.glob( File.join( Trema.pid, "*.pid" ) ).empty?
168
- sleep 1
169
- elapsed += 1
164
+ fail 'Failed to clean up remaining processes.' if elapsed > timeout
165
+ break if Dir.glob(File.join(Trema.pid, '*.pid')).empty?
166
+ sleep 0.1
167
+ elapsed += 0.1
170
168
  end
171
169
  sleep 1
172
170
  end
173
171
  end
174
172
 
175
173
 
176
- def network &block
177
- Network.new &block
174
+ def network(&block)
175
+ Network.new(&block)
178
176
  end
179
177
 
180
178