trema 0.4.7 → 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (718) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +33 -54
  3. data/.hound.yml +3 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +17 -1
  6. data/.travis.yml +14 -18
  7. data/CHANGELOG.md +10 -0
  8. data/Gemfile +1 -26
  9. data/README.md +25 -241
  10. data/Rakefile +4 -1056
  11. data/bin/.gitignore +3 -0
  12. data/bin/trema +163 -237
  13. data/features/cleanup_on_failure.feature +118 -0
  14. data/features/logging.feature +73 -0
  15. data/features/open_flow13.feature +21 -0
  16. data/features/step_definitions/.gitignore +35 -0
  17. data/features/step_definitions/.rubocop.yml +5 -0
  18. data/features/step_definitions/.travis.yml +19 -0
  19. data/features/step_definitions/Gemfile +9 -0
  20. data/features/step_definitions/Guardfile +4 -0
  21. data/features/step_definitions/LICENSE +675 -0
  22. data/features/step_definitions/README.md +7 -0
  23. data/features/step_definitions/Rakefile +10 -0
  24. data/features/step_definitions/show_stats_steps.rb +56 -0
  25. data/features/step_definitions/virtual_link_steps.rb +8 -0
  26. data/features/support/env.rb +0 -73
  27. data/features/support/hooks.rb +6 -50
  28. data/features/trema_delete_link.feature +30 -0
  29. data/features/trema_killall.feature +56 -0
  30. data/features/trema_run.feature +47 -0
  31. data/features/trema_start.feature +73 -0
  32. data/features/trema_stop.feature +50 -0
  33. data/lib/trema.rb +4 -0
  34. data/lib/trema/command.rb +184 -0
  35. data/lib/trema/controller.rb +289 -0
  36. data/lib/trema/dirs.rb +14 -0
  37. data/lib/trema/drb.rb +32 -0
  38. data/lib/trema/logger.rb +63 -0
  39. data/lib/trema/monkey_patch/integer.rb +8 -0
  40. data/lib/trema/monkey_patch/integer/base_conversions.rb +12 -0
  41. data/lib/trema/monkey_patch/integer/durations.rb +12 -0
  42. data/lib/trema/switch.rb +83 -0
  43. data/lib/trema/version.rb +5 -0
  44. data/spec/spec_helper.rb +9 -178
  45. data/spec/trema/controller_spec.rb +4 -53
  46. data/tasks/.gitignore +34 -0
  47. data/tasks/LICENSE +675 -0
  48. data/tasks/README.md +6 -0
  49. data/tasks/cucumber.rake +14 -0
  50. data/tasks/flay.rake +15 -0
  51. data/tasks/flog.rake +25 -0
  52. data/tasks/gem.rake +15 -0
  53. data/tasks/reek.rake +11 -0
  54. data/tasks/relish.rake +8 -0
  55. data/tasks/rspec.rake +8 -0
  56. data/tasks/rubocop.rake +2 -16
  57. data/tasks/yard.rake +11 -0
  58. data/trema.gemspec +24 -23
  59. metadata +180 -720
  60. data/.yardopts +0 -4
  61. data/Doxyfile +0 -1679
  62. data/Guardfile +0 -14
  63. data/bin/quality +0 -31
  64. data/bin/trema-config +0 -59
  65. data/build.rb +0 -32
  66. data/cruise.rb +0 -409
  67. data/features/.nav +0 -50
  68. data/features/README.md +0 -7
  69. data/features/core/get_pid_by_trema_name.feature +0 -137
  70. data/features/core/packetin_filter.feature +0 -55
  71. data/features/core/switch_manager.feature +0 -41
  72. data/features/core/trema-config.feature +0 -55
  73. data/features/dsl/switch_port_specifier.feature +0 -15
  74. data/features/examples/dumper.feature +0 -35
  75. data/features/examples/hello_trema.feature +0 -23
  76. data/features/examples/learning_switch.feature +0 -37
  77. data/features/examples/list_switches.feature +0 -24
  78. data/features/examples/message.set_config.feature +0 -27
  79. data/features/examples/message.vendor-action.feature +0 -25
  80. data/features/examples/message.vendor-stats-request.feature +0 -20
  81. data/features/examples/multi_learning_switch.feature +0 -107
  82. data/features/examples/openflow_message.echo.feature +0 -59
  83. data/features/examples/openflow_message.features_request.feature +0 -35
  84. data/features/examples/openflow_message.hello.feature +0 -59
  85. data/features/examples/packet_in.feature +0 -33
  86. data/features/examples/packetin_filter_config.feature +0 -95
  87. data/features/examples/patch_panel.feature +0 -29
  88. data/features/examples/repeater_hub.feature +0 -52
  89. data/features/examples/switch_info.feature +0 -51
  90. data/features/examples/switch_monitor.feature +0 -35
  91. data/features/examples/transparent_firewall.feature +0 -73
  92. data/features/handlers/switch_ready.feature +0 -40
  93. data/features/step_definitions/misc_steps.rb +0 -85
  94. data/features/step_definitions/send_packets_steps.rb +0 -33
  95. data/features/step_definitions/stats_steps.rb +0 -39
  96. data/features/switch_event/C-add_forward_entry.feature +0 -114
  97. data/features/switch_event/C-delete_forward_entry.feature +0 -85
  98. data/features/switch_event/C-dump_forward_entries.feature +0 -72
  99. data/features/switch_event/C-set_forward_entries.feature +0 -77
  100. data/features/switch_event/README.md +0 -40
  101. data/features/switch_event/add_forward_entry.feature +0 -160
  102. data/features/switch_event/delete_forward_entry.feature +0 -160
  103. data/features/switch_event/dump_forward_entries.feature +0 -103
  104. data/features/switch_event/set_forward_entries.feature +0 -102
  105. data/features/trema_commands/README.md +0 -8
  106. data/features/trema_commands/dump_flows.feature +0 -41
  107. data/features/trema_commands/help.feature +0 -27
  108. data/features/trema_commands/help_option.feature +0 -20
  109. data/features/trema_commands/kill.feature +0 -56
  110. data/features/trema_commands/killall.feature +0 -32
  111. data/features/trema_commands/port_down.feature +0 -71
  112. data/features/trema_commands/port_up.feature +0 -75
  113. data/features/trema_commands/reset_stats.feature +0 -56
  114. data/features/trema_commands/run.feature +0 -56
  115. data/features/trema_commands/send_packets.feature +0 -46
  116. data/features/trema_commands/show_stats.feature +0 -66
  117. data/features/trema_commands/up.feature +0 -34
  118. data/features/trema_commands/version.feature +0 -10
  119. data/features/trema_commands/version_option.feature +0 -8
  120. data/rubocop-todo.yml +0 -159
  121. data/ruby/.gitignore +0 -4
  122. data/ruby/blocker.rb +0 -74
  123. data/ruby/extconf.rb +0 -80
  124. data/ruby/sub-process.rb +0 -289
  125. data/ruby/trema/action-common.c +0 -46
  126. data/ruby/trema/action-common.h +0 -38
  127. data/ruby/trema/action.rb +0 -33
  128. data/ruby/trema/aggregate-stats-reply.rb +0 -68
  129. data/ruby/trema/app.rb +0 -114
  130. data/ruby/trema/barrier-reply.c +0 -98
  131. data/ruby/trema/barrier-reply.h +0 -44
  132. data/ruby/trema/barrier-request.c +0 -135
  133. data/ruby/trema/barrier-request.h +0 -42
  134. data/ruby/trema/cli.rb +0 -267
  135. data/ruby/trema/command.rb +0 -41
  136. data/ruby/trema/command/dump_flows.rb +0 -43
  137. data/ruby/trema/command/kill.rb +0 -75
  138. data/ruby/trema/command/killall.rb +0 -38
  139. data/ruby/trema/command/netns.rb +0 -38
  140. data/ruby/trema/command/port_down.rb +0 -43
  141. data/ruby/trema/command/port_up.rb +0 -43
  142. data/ruby/trema/command/reset_stats.rb +0 -41
  143. data/ruby/trema/command/ruby.rb +0 -38
  144. data/ruby/trema/command/run.rb +0 -110
  145. data/ruby/trema/command/send_packets.rb +0 -46
  146. data/ruby/trema/command/shell.rb +0 -57
  147. data/ruby/trema/command/show_stats.rb +0 -65
  148. data/ruby/trema/command/up.rb +0 -44
  149. data/ruby/trema/command/version.rb +0 -35
  150. data/ruby/trema/compat.h +0 -36
  151. data/ruby/trema/controller.c +0 -691
  152. data/ruby/trema/controller.h +0 -42
  153. data/ruby/trema/controller.rb +0 -255
  154. data/ruby/trema/custom-switch.rb +0 -56
  155. data/ruby/trema/daemon.rb +0 -184
  156. data/ruby/trema/default-logger.c +0 -161
  157. data/ruby/trema/default-logger.h +0 -42
  158. data/ruby/trema/default-logger.rb +0 -29
  159. data/ruby/trema/default_openflow_channel_port.rb +0 -26
  160. data/ruby/trema/desc-stats-reply.rb +0 -75
  161. data/ruby/trema/dsl.rb +0 -32
  162. data/ruby/trema/dsl/configuration.rb +0 -145
  163. data/ruby/trema/dsl/context.rb +0 -69
  164. data/ruby/trema/dsl/custom-switch.rb +0 -44
  165. data/ruby/trema/dsl/link.rb +0 -39
  166. data/ruby/trema/dsl/netns.rb +0 -78
  167. data/ruby/trema/dsl/parser.rb +0 -70
  168. data/ruby/trema/dsl/rswitch.rb +0 -47
  169. data/ruby/trema/dsl/run.rb +0 -47
  170. data/ruby/trema/dsl/runner.rb +0 -178
  171. data/ruby/trema/dsl/stanza.rb +0 -51
  172. data/ruby/trema/dsl/switch.rb +0 -76
  173. data/ruby/trema/dsl/syntax-error.rb +0 -31
  174. data/ruby/trema/dsl/syntax.rb +0 -128
  175. data/ruby/trema/dsl/vhost.rb +0 -106
  176. data/ruby/trema/dsl/vswitch.rb +0 -45
  177. data/ruby/trema/echo-reply.c +0 -122
  178. data/ruby/trema/echo-reply.h +0 -40
  179. data/ruby/trema/echo-request.c +0 -117
  180. data/ruby/trema/echo-request.h +0 -40
  181. data/ruby/trema/echo.c +0 -99
  182. data/ruby/trema/echo.h +0 -39
  183. data/ruby/trema/enqueue.rb +0 -87
  184. data/ruby/trema/error.c +0 -262
  185. data/ruby/trema/error.h +0 -42
  186. data/ruby/trema/exact-match.rb +0 -34
  187. data/ruby/trema/executables.rb +0 -99
  188. data/ruby/trema/features-reply.c +0 -330
  189. data/ruby/trema/features-reply.h +0 -54
  190. data/ruby/trema/features-request.c +0 -134
  191. data/ruby/trema/features-request.h +0 -42
  192. data/ruby/trema/flow-mod.c +0 -150
  193. data/ruby/trema/flow-mod.h +0 -42
  194. data/ruby/trema/flow-removed.c +0 -280
  195. data/ruby/trema/flow-removed.h +0 -44
  196. data/ruby/trema/flow-stats-reply.rb +0 -107
  197. data/ruby/trema/flow.rb +0 -65
  198. data/ruby/trema/get-config-reply.c +0 -158
  199. data/ruby/trema/get-config-reply.h +0 -50
  200. data/ruby/trema/get-config-request.c +0 -136
  201. data/ruby/trema/get-config-request.h +0 -42
  202. data/ruby/trema/hardware-switch.rb +0 -86
  203. data/ruby/trema/hello.c +0 -133
  204. data/ruby/trema/hello.h +0 -42
  205. data/ruby/trema/host.rb +0 -263
  206. data/ruby/trema/link.rb +0 -177
  207. data/ruby/trema/list-switches-reply.c +0 -44
  208. data/ruby/trema/list-switches-reply.h +0 -38
  209. data/ruby/trema/mac.rb +0 -29
  210. data/ruby/trema/match.c +0 -621
  211. data/ruby/trema/match.h +0 -34
  212. data/ruby/trema/monkey-patch/integer.rb +0 -35
  213. data/ruby/trema/monkey-patch/integer/base-conversions.rb +0 -34
  214. data/ruby/trema/monkey-patch/integer/ranges.rb +0 -49
  215. data/ruby/trema/monkey-patch/integer/validators.rb +0 -36
  216. data/ruby/trema/monkey-patch/module.rb +0 -33
  217. data/ruby/trema/monkey-patch/module/class-method.rb +0 -38
  218. data/ruby/trema/monkey-patch/module/deprecation.rb +0 -39
  219. data/ruby/trema/monkey-patch/string.rb +0 -31
  220. data/ruby/trema/monkey-patch/string/inflectors.rb +0 -52
  221. data/ruby/trema/netns.rb +0 -127
  222. data/ruby/trema/network-component.rb +0 -151
  223. data/ruby/trema/ofctl.rb +0 -70
  224. data/ruby/trema/open-vswitch.rb +0 -160
  225. data/ruby/trema/openflow-error.c +0 -193
  226. data/ruby/trema/openflow-error.h +0 -51
  227. data/ruby/trema/openflow-switch.rb +0 -35
  228. data/ruby/trema/ordered-hash.rb +0 -75
  229. data/ruby/trema/packet-in.c +0 -1365
  230. data/ruby/trema/packet-in.h +0 -44
  231. data/ruby/trema/packet-queue.rb +0 -181
  232. data/ruby/trema/packetin-filter.rb +0 -124
  233. data/ruby/trema/path.rb +0 -85
  234. data/ruby/trema/phost.rb +0 -76
  235. data/ruby/trema/port-mod.c +0 -232
  236. data/ruby/trema/port-mod.h +0 -34
  237. data/ruby/trema/port-stats-reply.rb +0 -109
  238. data/ruby/trema/port-status-add.rb +0 -60
  239. data/ruby/trema/port-status-delete.rb +0 -60
  240. data/ruby/trema/port-status-modify.rb +0 -60
  241. data/ruby/trema/port-status.c +0 -192
  242. data/ruby/trema/port-status.h +0 -41
  243. data/ruby/trema/port.c +0 -398
  244. data/ruby/trema/port.h +0 -45
  245. data/ruby/trema/process.rb +0 -103
  246. data/ruby/trema/queue-get-config-reply.c +0 -205
  247. data/ruby/trema/queue-get-config-reply.h +0 -45
  248. data/ruby/trema/queue-get-config-request.c +0 -141
  249. data/ruby/trema/queue-get-config-request.h +0 -42
  250. data/ruby/trema/queue-stats-reply.rb +0 -76
  251. data/ruby/trema/ruby-switch.rb +0 -62
  252. data/ruby/trema/send-out-port.rb +0 -113
  253. data/ruby/trema/set-config.c +0 -174
  254. data/ruby/trema/set-config.h +0 -42
  255. data/ruby/trema/set-eth-addr.rb +0 -54
  256. data/ruby/trema/set-eth-dst-addr.rb +0 -52
  257. data/ruby/trema/set-eth-src-addr.rb +0 -53
  258. data/ruby/trema/set-ip-addr.rb +0 -54
  259. data/ruby/trema/set-ip-dst-addr.rb +0 -53
  260. data/ruby/trema/set-ip-src-addr.rb +0 -52
  261. data/ruby/trema/set-ip-tos.rb +0 -64
  262. data/ruby/trema/set-transport-dst-port.rb +0 -53
  263. data/ruby/trema/set-transport-port.rb +0 -53
  264. data/ruby/trema/set-transport-src-port.rb +0 -54
  265. data/ruby/trema/set-vlan-priority.rb +0 -66
  266. data/ruby/trema/set-vlan-vid.rb +0 -65
  267. data/ruby/trema/shell.rb +0 -37
  268. data/ruby/trema/shell/down.rb +0 -37
  269. data/ruby/trema/shell/killall.rb +0 -38
  270. data/ruby/trema/shell/link.rb +0 -59
  271. data/ruby/trema/shell/reset_stats.rb +0 -49
  272. data/ruby/trema/shell/run.rb +0 -67
  273. data/ruby/trema/shell/send_packets.rb +0 -40
  274. data/ruby/trema/shell/show_stats.rb +0 -47
  275. data/ruby/trema/shell/up.rb +0 -41
  276. data/ruby/trema/shell/vhost.rb +0 -42
  277. data/ruby/trema/shell/vswitch.rb +0 -47
  278. data/ruby/trema/stats-helper.rb +0 -63
  279. data/ruby/trema/stats-reply.c +0 -540
  280. data/ruby/trema/stats-reply.h +0 -51
  281. data/ruby/trema/stats-request.c +0 -715
  282. data/ruby/trema/stats-request.h +0 -40
  283. data/ruby/trema/strip-vlan-header.rb +0 -41
  284. data/ruby/trema/switch-daemon.rb +0 -90
  285. data/ruby/trema/switch-disconnected.c +0 -38
  286. data/ruby/trema/switch-disconnected.h +0 -36
  287. data/ruby/trema/switch-event.c +0 -648
  288. data/ruby/trema/switch-event.h +0 -27
  289. data/ruby/trema/switch-manager.rb +0 -119
  290. data/ruby/trema/switch.c +0 -197
  291. data/ruby/trema/switch.h +0 -40
  292. data/ruby/trema/switch.rb +0 -56
  293. data/ruby/trema/table-stats-reply.rb +0 -85
  294. data/ruby/trema/timers.rb +0 -95
  295. data/ruby/trema/trema-ruby-utils.c +0 -66
  296. data/ruby/trema/trema-ruby-utils.h +0 -42
  297. data/ruby/trema/trema.c +0 -126
  298. data/ruby/trema/tremashark.rb +0 -46
  299. data/ruby/trema/util.rb +0 -116
  300. data/ruby/trema/vendor-action.rb +0 -82
  301. data/ruby/trema/vendor-stats-reply.rb +0 -64
  302. data/ruby/trema/vendor.c +0 -230
  303. data/ruby/trema/vendor.h +0 -48
  304. data/ruby/trema/version.rb +0 -28
  305. data/spec/support/action.rb +0 -49
  306. data/spec/support/mandatory-option.rb +0 -53
  307. data/spec/support/matchers/constant.rb +0 -25
  308. data/spec/support/openflow-message.rb +0 -173
  309. data/spec/support/port-status.rb +0 -35
  310. data/spec/trema/app_spec.rb +0 -88
  311. data/spec/trema/barrier-reply_spec.rb +0 -43
  312. data/spec/trema/barrier-request_spec.rb +0 -92
  313. data/spec/trema/cli_spec.rb +0 -156
  314. data/spec/trema/default-logger_spec.rb +0 -46
  315. data/spec/trema/dsl/configuration_spec.rb +0 -120
  316. data/spec/trema/dsl/link_spec.rb +0 -50
  317. data/spec/trema/dsl/run_spec.rb +0 -72
  318. data/spec/trema/dsl/runner_spec.rb +0 -247
  319. data/spec/trema/dsl/switch_spec.rb +0 -69
  320. data/spec/trema/dsl/syntax_spec.rb +0 -110
  321. data/spec/trema/dsl/vhost_spec.rb +0 -144
  322. data/spec/trema/dsl/vswitch_spec.rb +0 -80
  323. data/spec/trema/echo-reply_spec.rb +0 -84
  324. data/spec/trema/echo-request_spec.rb +0 -128
  325. data/spec/trema/enqueue_spec.rb +0 -76
  326. data/spec/trema/error_spec.rb +0 -81
  327. data/spec/trema/executables_spec.rb +0 -54
  328. data/spec/trema/features-reply_spec.rb +0 -91
  329. data/spec/trema/features-request_spec.rb +0 -93
  330. data/spec/trema/flow-mod_spec.rb +0 -99
  331. data/spec/trema/flow-removed_spec.rb +0 -144
  332. data/spec/trema/get-config-reply_spec.rb +0 -43
  333. data/spec/trema/get-config-request_spec.rb +0 -92
  334. data/spec/trema/hardware-switch_spec.rb +0 -54
  335. data/spec/trema/hello_spec.rb +0 -63
  336. data/spec/trema/host_spec.rb +0 -191
  337. data/spec/trema/link_spec.rb +0 -62
  338. data/spec/trema/list-switches-reply_spec.rb +0 -46
  339. data/spec/trema/match_spec.rb +0 -111
  340. data/spec/trema/open-vswitch_spec.rb +0 -121
  341. data/spec/trema/openflow-error_spec.rb +0 -141
  342. data/spec/trema/packet-in_spec.rb +0 -717
  343. data/spec/trema/packet-out_spec.rb +0 -125
  344. data/spec/trema/packetin-filter_spec.rb +0 -39
  345. data/spec/trema/port-mod_spec.rb +0 -98
  346. data/spec/trema/port-status-add_spec.rb +0 -32
  347. data/spec/trema/port-status-delete_spec.rb +0 -32
  348. data/spec/trema/port-status-modify_spec.rb +0 -71
  349. data/spec/trema/port-status_spec.rb +0 -38
  350. data/spec/trema/port_spec.rb +0 -59
  351. data/spec/trema/process_spec.rb +0 -69
  352. data/spec/trema/queue-get-config-reply_spec.rb +0 -65
  353. data/spec/trema/queue-get-config-request_spec.rb +0 -67
  354. data/spec/trema/send-out-port_spec.rb +0 -106
  355. data/spec/trema/set-config_spec.rb +0 -78
  356. data/spec/trema/set-eth-addr_spec.rb +0 -62
  357. data/spec/trema/set-ip-addr_spec.rb +0 -81
  358. data/spec/trema/set-ip-tos_spec.rb +0 -70
  359. data/spec/trema/set-transport-dst-port_spec.rb +0 -65
  360. data/spec/trema/set-transport-src-port_spec.rb +0 -65
  361. data/spec/trema/set-vlan-priority_spec.rb +0 -65
  362. data/spec/trema/set-vlan-vid_spec.rb +0 -65
  363. data/spec/trema/shell/vhost_spec.rb +0 -58
  364. data/spec/trema/shell/vswitch_spec.rb +0 -87
  365. data/spec/trema/stats-reply_spec.rb +0 -363
  366. data/spec/trema/stats-request_spec.rb +0 -166
  367. data/spec/trema/strip-vlan-header_spec.rb +0 -44
  368. data/spec/trema/switch-daemon_spec.rb +0 -81
  369. data/spec/trema/switch-disconnected_spec.rb +0 -56
  370. data/spec/trema/switch-manager_spec.rb +0 -41
  371. data/spec/trema/tremashark_spec.rb +0 -39
  372. data/spec/trema/util_spec.rb +0 -88
  373. data/spec/trema/vendor-action_spec.rb +0 -75
  374. data/spec/trema/vendor_spec.rb +0 -76
  375. data/spec/trema_spec.rb +0 -94
  376. data/src/examples/cbench_switch/README +0 -21
  377. data/src/examples/cbench_switch/cbench-switch.rb +0 -38
  378. data/src/examples/cbench_switch/cbench_switch.c +0 -66
  379. data/src/examples/dumper/dumper.c +0 -362
  380. data/src/examples/dumper/dumper.conf +0 -7
  381. data/src/examples/dumper/dumper.rb +0 -195
  382. data/src/examples/hello_trema/.gitignore +0 -2
  383. data/src/examples/hello_trema/README.md +0 -2
  384. data/src/examples/hello_trema/hello-trema.rb +0 -30
  385. data/src/examples/hello_trema/hello_trema.c +0 -48
  386. data/src/examples/hello_trema/sample.conf +0 -1
  387. data/src/examples/learning_switch/README +0 -15
  388. data/src/examples/learning_switch/fdb.rb +0 -110
  389. data/src/examples/learning_switch/learning-switch.rb +0 -90
  390. data/src/examples/learning_switch/learning_switch.c +0 -217
  391. data/src/examples/learning_switch/learning_switch.conf +0 -18
  392. data/src/examples/list_switches/README +0 -19
  393. data/src/examples/list_switches/list-switches.rb +0 -43
  394. data/src/examples/list_switches/list_switches.c +0 -79
  395. data/src/examples/list_switches/list_switches.conf +0 -15
  396. data/src/examples/match_compare/match-compare.conf +0 -30
  397. data/src/examples/match_compare/match-compare.rb +0 -97
  398. data/src/examples/multi_learning_switch/README +0 -14
  399. data/src/examples/multi_learning_switch/multi-learning-switch.rb +0 -94
  400. data/src/examples/multi_learning_switch/multi_learning_switch.c +0 -294
  401. data/src/examples/multi_learning_switch/multi_learning_switch.conf +0 -17
  402. data/src/examples/openflow_message/README +0 -11
  403. data/src/examples/openflow_message/echo.c +0 -80
  404. data/src/examples/openflow_message/echo.rb +0 -56
  405. data/src/examples/openflow_message/example.rb +0 -60
  406. data/src/examples/openflow_message/features-request.rb +0 -96
  407. data/src/examples/openflow_message/features_request.c +0 -167
  408. data/src/examples/openflow_message/hello.c +0 -68
  409. data/src/examples/openflow_message/hello.rb +0 -43
  410. data/src/examples/openflow_message/set-config.rb +0 -57
  411. data/src/examples/openflow_message/set_config.c +0 -68
  412. data/src/examples/openflow_message/vendor-action.rb +0 -43
  413. data/src/examples/openflow_message/vendor-stats-request.rb +0 -66
  414. data/src/examples/openflow_message/vendor_action.c +0 -103
  415. data/src/examples/openflow_switch/echo_switch.c +0 -89
  416. data/src/examples/openflow_switch/hello_switch.c +0 -85
  417. data/src/examples/packet_in/README +0 -15
  418. data/src/examples/packet_in/packet-in.rb +0 -37
  419. data/src/examples/packet_in/packet_in.c +0 -53
  420. data/src/examples/packet_in/packet_in.conf +0 -15
  421. data/src/examples/packetin_filter_config/README +0 -12
  422. data/src/examples/packetin_filter_config/add_filter.c +0 -71
  423. data/src/examples/packetin_filter_config/delete_filter.c +0 -63
  424. data/src/examples/packetin_filter_config/delete_filter_strict.c +0 -73
  425. data/src/examples/packetin_filter_config/dump_filter.c +0 -63
  426. data/src/examples/packetin_filter_config/dump_filter_strict.c +0 -73
  427. data/src/examples/packetin_filter_config/packetin_filter_config.c +0 -132
  428. data/src/examples/packetin_filter_config/packetin_filter_config.conf +0 -7
  429. data/src/examples/packetin_filter_config/utils.c +0 -100
  430. data/src/examples/packetin_filter_config/utils.h +0 -40
  431. data/src/examples/patch_panel/network.conf +0 -14
  432. data/src/examples/patch_panel/patch-panel.conf +0 -1
  433. data/src/examples/patch_panel/patch-panel.rb +0 -59
  434. data/src/examples/repeater_hub/README +0 -8
  435. data/src/examples/repeater_hub/repeater-hub.rb +0 -41
  436. data/src/examples/repeater_hub/repeater-hub_spec.rb +0 -154
  437. data/src/examples/repeater_hub/repeater_hub.c +0 -81
  438. data/src/examples/repeater_hub/repeater_hub.conf +0 -28
  439. data/src/examples/simple_router/README +0 -18
  440. data/src/examples/simple_router/arp-table.rb +0 -81
  441. data/src/examples/simple_router/interface.rb +0 -90
  442. data/src/examples/simple_router/routing-table.rb +0 -60
  443. data/src/examples/simple_router/simple-router.rb +0 -191
  444. data/src/examples/simple_router/simple_router.conf +0 -24
  445. data/src/examples/simple_router/simple_router_netns.conf +0 -15
  446. data/src/examples/simple_router/simple_router_network.conf +0 -6
  447. data/src/examples/switch_event_config/.gitignore +0 -6
  448. data/src/examples/switch_event_config/add_forward_entry.c +0 -227
  449. data/src/examples/switch_event_config/delete_forward_entry.c +0 -226
  450. data/src/examples/switch_event_config/dump_forward_entries.c +0 -190
  451. data/src/examples/switch_event_config/network.conf +0 -2
  452. data/src/examples/switch_event_config/set_forward_entries.c +0 -210
  453. data/src/examples/switch_info/README +0 -13
  454. data/src/examples/switch_info/switch-info.rb +0 -44
  455. data/src/examples/switch_info/switch_info.c +0 -78
  456. data/src/examples/switch_info/switch_info.conf +0 -3
  457. data/src/examples/switch_monitor/switch-monitor.conf +0 -3
  458. data/src/examples/switch_monitor/switch-monitor.rb +0 -56
  459. data/src/examples/switch_monitor/switch_monitor.c +0 -152
  460. data/src/examples/traffic_monitor/counter.c +0 -72
  461. data/src/examples/traffic_monitor/counter.h +0 -46
  462. data/src/examples/traffic_monitor/counter.rb +0 -44
  463. data/src/examples/traffic_monitor/fdb.c +0 -74
  464. data/src/examples/traffic_monitor/fdb.h +0 -48
  465. data/src/examples/traffic_monitor/fdb.rb +0 -42
  466. data/src/examples/traffic_monitor/traffic-monitor.rb +0 -98
  467. data/src/examples/traffic_monitor/traffic_monitor.c +0 -161
  468. data/src/examples/traffic_monitor/traffic_monitor.conf +0 -16
  469. data/src/examples/transparent_firewall/README.md +0 -61
  470. data/src/examples/transparent_firewall/aggregated-delegated-afrinic.txt +0 -713
  471. data/src/examples/transparent_firewall/aggregated-delegated-apnic.txt +0 -3440
  472. data/src/examples/transparent_firewall/aggregated-delegated-arin.txt +0 -11342
  473. data/src/examples/transparent_firewall/aggregated-delegated-lacnic.txt +0 -1937
  474. data/src/examples/transparent_firewall/aggregated-delegated-ripencc.txt +0 -7329
  475. data/src/examples/transparent_firewall/block-rfc1918.rb +0 -86
  476. data/src/examples/transparent_firewall/pass-delegated.rb +0 -178
  477. data/src/examples/transparent_firewall/regen_aggregated.sh +0 -53
  478. data/src/examples/transparent_firewall/stats-to-cidrs.rb +0 -59
  479. data/src/lib/arp.h +0 -64
  480. data/src/lib/bool.h +0 -47
  481. data/src/lib/buffer.c +0 -304
  482. data/src/lib/buffer.h +0 -54
  483. data/src/lib/byteorder.c +0 -571
  484. data/src/lib/byteorder.h +0 -108
  485. data/src/lib/checks.h +0 -40
  486. data/src/lib/chibach.c +0 -392
  487. data/src/lib/chibach.h +0 -69
  488. data/src/lib/chibach_private.c +0 -168
  489. data/src/lib/chibach_private.h +0 -50
  490. data/src/lib/daemon.c +0 -429
  491. data/src/lib/daemon.h +0 -40
  492. data/src/lib/doubly_linked_list.c +0 -284
  493. data/src/lib/doubly_linked_list.h +0 -86
  494. data/src/lib/ether.c +0 -47
  495. data/src/lib/ether.h +0 -92
  496. data/src/lib/etherip.h +0 -44
  497. data/src/lib/event_forward_interface.c +0 -788
  498. data/src/lib/event_forward_interface.h +0 -138
  499. data/src/lib/event_handler.c +0 -419
  500. data/src/lib/event_handler.h +0 -57
  501. data/src/lib/external_callback.c +0 -126
  502. data/src/lib/external_callback.h +0 -46
  503. data/src/lib/hash_table.c +0 -415
  504. data/src/lib/hash_table.h +0 -136
  505. data/src/lib/icmp.h +0 -72
  506. data/src/lib/igmp.h +0 -48
  507. data/src/lib/ipv4.h +0 -64
  508. data/src/lib/ipv6.h +0 -46
  509. data/src/lib/linked_list.c +0 -244
  510. data/src/lib/linked_list.h +0 -84
  511. data/src/lib/log.c +0 -636
  512. data/src/lib/log.h +0 -77
  513. data/src/lib/management_interface.c +0 -359
  514. data/src/lib/management_interface.h +0 -40
  515. data/src/lib/management_service_interface.c +0 -102
  516. data/src/lib/management_service_interface.h +0 -134
  517. data/src/lib/match.h +0 -82
  518. data/src/lib/match_table.c +0 -606
  519. data/src/lib/match_table.h +0 -49
  520. data/src/lib/message_queue.c +0 -143
  521. data/src/lib/message_queue.h +0 -59
  522. data/src/lib/messenger.c +0 -1821
  523. data/src/lib/messenger.h +0 -145
  524. data/src/lib/openflow_application_interface.c +0 -1800
  525. data/src/lib/openflow_application_interface.h +0 -359
  526. data/src/lib/openflow_message.c +0 -4240
  527. data/src/lib/openflow_message.h +0 -291
  528. data/src/lib/openflow_service_interface.h +0 -58
  529. data/src/lib/openflow_switch_interface.c +0 -1378
  530. data/src/lib/openflow_switch_interface.h +0 -262
  531. data/src/lib/packet_info.c +0 -336
  532. data/src/lib/packet_info.h +0 -233
  533. data/src/lib/packet_parser.c +0 -522
  534. data/src/lib/packetin_filter_interface.c +0 -292
  535. data/src/lib/packetin_filter_interface.h +0 -125
  536. data/src/lib/persistent_storage.c +0 -478
  537. data/src/lib/persistent_storage.h +0 -44
  538. data/src/lib/secure_channel.c +0 -496
  539. data/src/lib/secure_channel.h +0 -43
  540. data/src/lib/stat.c +0 -248
  541. data/src/lib/stat.h +0 -51
  542. data/src/lib/tcp.h +0 -62
  543. data/src/lib/timer.c +0 -349
  544. data/src/lib/timer.h +0 -51
  545. data/src/lib/trema.c +0 -776
  546. data/src/lib/trema.h +0 -80
  547. data/src/lib/trema.hpp +0 -49
  548. data/src/lib/trema_private.c +0 -175
  549. data/src/lib/trema_private.h +0 -64
  550. data/src/lib/trema_wrapper.c +0 -59
  551. data/src/lib/trema_wrapper.h +0 -66
  552. data/src/lib/udp.h +0 -41
  553. data/src/lib/utility.c +0 -625
  554. data/src/lib/utility.h +0 -84
  555. data/src/lib/wrapper.c +0 -121
  556. data/src/lib/wrapper.h +0 -76
  557. data/src/management/application.c +0 -222
  558. data/src/management/echo.c +0 -183
  559. data/src/management/set_logging_level.c +0 -151
  560. data/src/management/show_stats.c +0 -148
  561. data/src/management/trema_manager +0 -184
  562. data/src/packetin_filter/README +0 -17
  563. data/src/packetin_filter/packetin_filter.c +0 -575
  564. data/src/switch_manager/README +0 -20
  565. data/src/switch_manager/cookie_table.c +0 -290
  566. data/src/switch_manager/cookie_table.h +0 -70
  567. data/src/switch_manager/dpid_table.c +0 -108
  568. data/src/switch_manager/dpid_table.h +0 -43
  569. data/src/switch_manager/event_forward_entry_manipulation.c +0 -120
  570. data/src/switch_manager/event_forward_entry_manipulation.h +0 -31
  571. data/src/switch_manager/ofpmsg_recv.c +0 -497
  572. data/src/switch_manager/ofpmsg_recv.h +0 -39
  573. data/src/switch_manager/ofpmsg_send.c +0 -274
  574. data/src/switch_manager/ofpmsg_send.h +0 -51
  575. data/src/switch_manager/secure_channel_listener.c +0 -296
  576. data/src/switch_manager/secure_channel_listener.h +0 -40
  577. data/src/switch_manager/secure_channel_receiver.c +0 -129
  578. data/src/switch_manager/secure_channel_receiver.h +0 -40
  579. data/src/switch_manager/secure_channel_sender.c +0 -131
  580. data/src/switch_manager/secure_channel_sender.h +0 -41
  581. data/src/switch_manager/service_interface.c +0 -180
  582. data/src/switch_manager/service_interface.h +0 -44
  583. data/src/switch_manager/switch.c +0 -988
  584. data/src/switch_manager/switch.h +0 -50
  585. data/src/switch_manager/switch_manager.c +0 -643
  586. data/src/switch_manager/switch_manager.h +0 -65
  587. data/src/switch_manager/switch_option.c +0 -30
  588. data/src/switch_manager/switch_option.h +0 -41
  589. data/src/switch_manager/switchinfo.h +0 -81
  590. data/src/switch_manager/xid_table.c +0 -182
  591. data/src/switch_manager/xid_table.h +0 -53
  592. data/src/tremashark/README +0 -79
  593. data/src/tremashark/packet_capture.c +0 -358
  594. data/src/tremashark/pcap_private.h +0 -45
  595. data/src/tremashark/pcap_queue.c +0 -195
  596. data/src/tremashark/pcap_queue.h +0 -56
  597. data/src/tremashark/plugin/.gitignore +0 -6
  598. data/src/tremashark/plugin/packet-trema/.gitignore +0 -5
  599. data/src/tremashark/plugin/packet-trema/Makefile +0 -77
  600. data/src/tremashark/plugin/packet-trema/Makefile.am +0 -110
  601. data/src/tremashark/plugin/packet-trema/Makefile.common +0 -29
  602. data/src/tremashark/plugin/packet-trema/moduleinfo.h +0 -39
  603. data/src/tremashark/plugin/packet-trema/packet-trema.c +0 -1671
  604. data/src/tremashark/plugin/packet-trema/plugin.c +0 -31
  605. data/src/tremashark/plugin/user_dlts +0 -2
  606. data/src/tremashark/queue.c +0 -167
  607. data/src/tremashark/queue.h +0 -58
  608. data/src/tremashark/stdin_relay.c +0 -257
  609. data/src/tremashark/syslog_relay.c +0 -247
  610. data/src/tremashark/tremashark.c +0 -554
  611. data/trema +0 -11
  612. data/trema-config +0 -11
  613. data/unittests/buffer_stubs.c +0 -72
  614. data/unittests/cmockery_trema.c +0 -121
  615. data/unittests/cmockery_trema.h +0 -95
  616. data/unittests/lib/buffer_test.c +0 -368
  617. data/unittests/lib/byteorder_test.c +0 -1798
  618. data/unittests/lib/daemon_test.c +0 -804
  619. data/unittests/lib/doubly_linked_list_test.c +0 -348
  620. data/unittests/lib/ether_test.c +0 -125
  621. data/unittests/lib/event_forward_interface_test.c +0 -1676
  622. data/unittests/lib/external_callback_test.c +0 -282
  623. data/unittests/lib/hash_table_test.c +0 -278
  624. data/unittests/lib/linked_list_test.c +0 -434
  625. data/unittests/lib/log_test.c +0 -672
  626. data/unittests/lib/management_interface_test.c +0 -238
  627. data/unittests/lib/management_service_interface_test.c +0 -317
  628. data/unittests/lib/match_table_test.c +0 -1507
  629. data/unittests/lib/message_queue_test.c +0 -381
  630. data/unittests/lib/messenger_test.c +0 -623
  631. data/unittests/lib/openflow_application_interface_test.c +0 -3713
  632. data/unittests/lib/openflow_message_test.c +0 -8047
  633. data/unittests/lib/packet_info_test.c +0 -558
  634. data/unittests/lib/packet_parser_test.c +0 -784
  635. data/unittests/lib/packetin_filter_interface_test.c +0 -721
  636. data/unittests/lib/persistent_storage_test.c +0 -800
  637. data/unittests/lib/stat_test.c +0 -433
  638. data/unittests/lib/test_packets/arp_rep.cap +0 -0
  639. data/unittests/lib/test_packets/arp_req.cap +0 -0
  640. data/unittests/lib/test_packets/icmp6_echo_rep.cap +0 -0
  641. data/unittests/lib/test_packets/icmp6_echo_req.cap +0 -0
  642. data/unittests/lib/test_packets/icmp_echo_rep.cap +0 -0
  643. data/unittests/lib/test_packets/icmp_echo_req.cap +0 -0
  644. data/unittests/lib/test_packets/igmp_query_v2.cap +0 -0
  645. data/unittests/lib/test_packets/ipx.cap +0 -0
  646. data/unittests/lib/test_packets/lldp.cap +0 -0
  647. data/unittests/lib/test_packets/lldp_over_ip.cap +0 -0
  648. data/unittests/lib/test_packets/rarp_req.cap +0 -0
  649. data/unittests/lib/test_packets/tcp.cap +0 -0
  650. data/unittests/lib/test_packets/tcp_syn.cap +0 -0
  651. data/unittests/lib/test_packets/udp.cap +0 -0
  652. data/unittests/lib/test_packets/udp_frag_head.cap +0 -0
  653. data/unittests/lib/test_packets/udp_frag_next.cap +0 -0
  654. data/unittests/lib/test_packets/vtag_icmp_echo_rep.cap +0 -0
  655. data/unittests/lib/test_packets/vtag_icmp_echo_req.cap +0 -0
  656. data/unittests/lib/timer_test.c +0 -246
  657. data/unittests/lib/trema_private_test.c +0 -321
  658. data/unittests/lib/trema_test.c +0 -1030
  659. data/unittests/lib/utility_test.c +0 -711
  660. data/unittests/lib/wrapper_test.c +0 -228
  661. data/unittests/packetin_filter/packetin_filter_test.c +0 -476
  662. data/unittests/switch_manager/switch_manager_test.c +0 -1183
  663. data/unittests/wrapper_stubs.c +0 -37
  664. data/vendor/.gitignore +0 -6
  665. data/vendor/README.md +0 -29
  666. data/vendor/cmockery-20110428.tar.gz +0 -0
  667. data/vendor/oflops-0.03.trema1.tar.gz +0 -0
  668. data/vendor/oflops_no_snmp+1.0.0.diff +0 -340
  669. data/vendor/openflow-1.0.0.tar.gz +0 -0
  670. data/vendor/openflow.git.tar.gz +0 -0
  671. data/vendor/openvswitch-1.2.2.trema1.tar.gz +0 -0
  672. data/vendor/openvswitch-1.2.2_librt-check.diff +0 -21
  673. data/vendor/packet-openflow.diff +0 -13
  674. data/vendor/ruby-ifconfig-1.2/COPYING +0 -340
  675. data/vendor/ruby-ifconfig-1.2/Changelog +0 -16
  676. data/vendor/ruby-ifconfig-1.2/INSTALL +0 -239
  677. data/vendor/ruby-ifconfig-1.2/README +0 -38
  678. data/vendor/ruby-ifconfig-1.2/Rakefile +0 -14
  679. data/vendor/ruby-ifconfig-1.2/TODO +0 -8
  680. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/darwin.txt +0 -17
  681. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd.txt +0 -10
  682. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd_netstat.txt +0 -14
  683. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd.txt +0 -17
  684. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd_netstat.txt +0 -24
  685. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux.txt +0 -60
  686. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux_ethernet.txt +0 -20
  687. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/netbsd.txt +0 -10
  688. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/openbsd.txt +0 -36
  689. data/vendor/ruby-ifconfig-1.2/ifconfig_examples/sunos.txt +0 -10
  690. data/vendor/ruby-ifconfig-1.2/lib/ifconfig.rb +0 -71
  691. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/ifconfig.rb +0 -72
  692. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/interface_types.rb +0 -69
  693. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/network_types.rb +0 -3
  694. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/ifconfig.rb +0 -84
  695. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/interface_types.rb +0 -130
  696. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/network_types.rb +0 -49
  697. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/ifconfig.rb +0 -43
  698. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/interface_types.rb +0 -112
  699. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/network_types.rb +0 -55
  700. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/ifconfig.rb +0 -38
  701. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/interface_types.rb +0 -77
  702. data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/network_types.rb +0 -4
  703. data/vendor/ruby-ifconfig-1.2/setup.rb +0 -1306
  704. data/vendor/ruby-ifconfig-1.2/test/test_bsd.rb +0 -35
  705. data/vendor/ruby-ifconfig-1.2/test/test_darwin.rb +0 -33
  706. data/vendor/ruby-ifconfig-1.2/test/test_dragonflybsd.rb +0 -35
  707. data/vendor/ruby-ifconfig-1.2/test/test_helper.rb +0 -4
  708. data/vendor/ruby-ifconfig-1.2/test/test_linux.rb +0 -31
  709. data/vendor/ruby-ifconfig-1.2/test/test_netbsd.rb +0 -33
  710. data/vendor/ruby-ifconfig-1.2/test/test_openbsd.rb +0 -33
  711. data/vendor/ruby-ifconfig-1.2/test/test_sunos.rb +0 -35
  712. data/vendor/ruby-ifconfig-1.2/test/unit/tc_darwin.rb +0 -40
  713. data/vendor/ruby-ifconfig-1.2/test/unit/tc_dragonflybsd.rb +0 -39
  714. data/vendor/ruby-ifconfig-1.2/test/unit/tc_freebsd.rb +0 -40
  715. data/vendor/ruby-ifconfig-1.2/test/unit/tc_linux.rb +0 -49
  716. data/vendor/ruby-ifconfig-1.2/test/unit/tc_netbsd.rb +0 -39
  717. data/vendor/ruby-ifconfig-1.2/test/unit/tc_openbsd.rb +0 -39
  718. data/vendor/ruby-ifconfig-1.2/test/unit/tc_sunos.rb +0 -44
data/Rakefile CHANGED
@@ -1,1058 +1,6 @@
1
- #
2
- # Copyright (C) 2008-2013 NEC Corporation
3
- #
4
- # This program is free software; you can redistribute it and/or modify
5
- # it under the terms of the GNU General Public License, version 2, as
6
- # published by the Free Software Foundation.
7
- #
8
- # This program is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License along
14
- # with this program; if not, write to the Free Software Foundation, Inc.,
15
- # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
- #
17
-
18
-
19
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/ruby'))
20
-
21
-
22
- require 'rake'
23
- require 'trema/executables'
24
- require 'trema/path'
25
-
26
-
27
- task :default => :build_trema
28
-
29
- directory Trema.log
30
- directory Trema.pid
31
- directory Trema.sock
32
-
33
- desc 'Build Trema'
34
- task :build_trema => [
35
- Trema.log,
36
- Trema.pid,
37
- Trema.sock,
38
- :management_commands,
39
- :rubylib,
40
- :switch_manager,
41
- :switch_daemon,
42
- :packetin_filter,
43
- :tremashark,
44
- :vendor,
45
- :examples
46
- ]
47
-
48
-
49
- require 'paper_house'
50
- require 'trema/version'
51
-
52
-
53
- CFLAGS = [
54
- '-g',
55
- '-std=gnu99',
56
- '-D_GNU_SOURCE',
57
- '-fno-strict-aliasing',
58
- '-Wall',
59
- '-Wextra',
60
- '-Wformat=2',
61
- '-Wcast-qual',
62
- '-Wcast-align',
63
- '-Wwrite-strings',
64
- '-Wconversion',
65
- '-Wfloat-equal',
66
- '-Wpointer-arith'
67
- ]
68
- CFLAGS << '-Werror' if RUBY_VERSION < '1.9.0'
69
-
70
-
71
- desc 'Build Trema C library (static library).'
72
- task 'libtrema:static' => 'vendor:openflow'
73
- PaperHouse::StaticLibraryTask.new 'libtrema:static' do | task |
74
- task.library_name = 'libtrema'
75
- task.target_directory = Trema.lib
76
- task.sources = "#{ Trema.include }/*.c"
77
- task.cflags = CFLAGS
78
- task.includes = [Trema.openflow]
79
- end
80
-
81
-
82
- desc 'Build Trema C library (coverage).'
83
- task 'libtrema:gcov' => ['vendor:openflow']
84
- PaperHouse::StaticLibraryTask.new 'libtrema:gcov' do | task |
85
- task.library_name = 'libtrema'
86
- task.target_directory = "#{ Trema.home }/objects/unittests"
87
- task.sources = "#{ Trema.include }/*.c"
88
- task.includes = [Trema.openflow]
89
- task.cflags = ['--coverage'] + CFLAGS
90
- end
91
-
92
-
93
- desc 'Build Trema C library (shared library).'
94
- task 'libtrema:shared' => 'vendor:openflow'
95
- PaperHouse::SharedLibraryTask.new 'libtrema:shared' do | task |
96
- task.library_name = 'libtrema'
97
- task.target_directory = Trema.lib
98
- task.version = Trema::VERSION
99
- task.sources = "#{ Trema.include }/*.c"
100
- task.includes = [Trema.openflow]
101
- task.cflags = CFLAGS
102
- end
103
-
104
-
105
- desc 'Build Trema Ruby library.'
106
- task 'rubylib' => 'libtrema:static'
107
- PaperHouse::RubyExtensionTask.new 'rubylib' do | task |
108
- task.library_name = 'trema'
109
- task.target_directory = Trema.ruby
110
- task.sources = "#{ Trema.ruby }/trema/*.c"
111
- task.includes = [Trema.include, Trema.openflow]
112
- task.cflags = CFLAGS
113
- task.ldflags = ['-Wl,-Bsymbolic', "-L#{ Trema.lib }"]
114
- task.library_dependencies = [
115
- 'trema',
116
- 'sqlite3',
117
- 'pthread',
118
- 'rt',
119
- 'dl',
120
- 'crypt',
121
- 'm'
122
- ]
123
- end
124
-
125
-
126
- desc 'Build switch manager.'
127
- task :switch_manager => 'libtrema:static'
128
-
129
- PaperHouse::ExecutableTask.new :switch_manager do | task |
130
- task.target_directory = File.dirname(Trema::Executables.switch_manager)
131
- task.sources = [
132
- 'src/switch_manager/dpid_table.c',
133
- 'src/switch_manager/event_forward_entry_manipulation.c',
134
- 'src/switch_manager/secure_channel_listener.c',
135
- 'src/switch_manager/switch_manager.c',
136
- 'src/switch_manager/switch_option.c'
137
- ]
138
- task.includes = [Trema.include, Trema.openflow]
139
- task.cflags = CFLAGS
140
- task.ldflags = "-L#{ Trema.lib }"
141
- task.library_dependencies = [
142
- 'trema',
143
- 'sqlite3',
144
- 'pthread',
145
- 'rt',
146
- 'dl'
147
- ]
148
- end
149
-
150
-
151
- desc 'Build switch daemon.'
152
- task :switch_daemon => 'libtrema:static'
153
-
154
- PaperHouse::ExecutableTask.new :switch_daemon do | task |
155
- task.executable_name = File.basename(Trema::Executables.switch)
156
- task.target_directory = File.dirname(Trema::Executables.switch)
157
- task.sources = [
158
- 'src/switch_manager/cookie_table.c',
159
- 'src/switch_manager/event_forward_entry_manipulation.c',
160
- 'src/switch_manager/ofpmsg_recv.c',
161
- 'src/switch_manager/ofpmsg_send.c',
162
- 'src/switch_manager/secure_channel_receiver.c',
163
- 'src/switch_manager/secure_channel_sender.c',
164
- 'src/switch_manager/service_interface.c',
165
- 'src/switch_manager/switch.c',
166
- 'src/switch_manager/switch_option.c',
167
- 'src/switch_manager/xid_table.c'
168
- ]
169
- task.includes = [Trema.include, Trema.openflow]
170
- task.cflags = CFLAGS
171
- task.ldflags = "-L#{ Trema.lib }"
172
- task.library_dependencies = [
173
- 'trema',
174
- 'sqlite3',
175
- 'pthread',
176
- 'rt',
177
- 'dl'
178
- ]
179
- end
180
-
181
-
182
- ################################################################################
183
- # Extract OpenFlow reference implementation
184
- ################################################################################
185
-
186
- task 'vendor:openflow' => Trema.openflow_h
187
- file Trema.openflow_h => Trema.objects do
188
- sh "tar xzf #{ Trema.vendor_openflow }.tar.gz -C #{ Trema.vendor }"
189
- cp_r "#{ Trema.vendor_openflow }/include/openflow", Trema.objects
190
- end
191
- directory Trema.objects
192
-
193
- CLOBBER.include(Trema.vendor_openflow) if FileTest.exists?(Trema.vendor_openflow)
194
- CLOBBER.include(File.join(Trema.objects, 'openflow')) if FileTest.exists?(File.join(Trema.objects, 'openflow'))
195
-
196
-
197
- ################################################################################
198
- # Build phost
199
- ################################################################################
200
-
201
- task 'vendor:phost' => [Trema::Executables.phost, Trema::Executables.cli]
202
-
203
- def phost_src
204
- File.join Trema.vendor_phost, 'src'
205
- end
206
-
207
- def phost_objects
208
- FileList[ File.join(phost_src, '*.o')]
209
- end
210
-
211
- def phost_vendor_binary
212
- File.join phost_src, 'phost'
213
- end
214
-
215
- def phost_cli_vendor_binary
216
- File.join phost_src, 'cli'
217
- end
218
-
219
- def phost_clean_targets
220
- ( phost_objects + [phost_vendor_binary, phost_cli_vendor_binary]).select do | each |
221
- FileTest.exists? each
222
- end
223
- end
224
-
225
- file Trema::Executables.phost do
226
- cd phost_src do
227
- sh 'make'
228
- end
229
- mkdir_p File.dirname(Trema::Executables.phost)
230
- install File.join(phost_src, 'phost'), Trema::Executables.phost, :mode => 0755
231
- end
232
-
233
- file Trema::Executables.cli do
234
- cd phost_src do
235
- sh 'make'
236
- end
237
- mkdir_p File.dirname(Trema::Executables.cli)
238
- install File.join(phost_src, 'cli'), Trema::Executables.cli, :mode => 0755
239
- end
240
-
241
- CLEAN.include phost_clean_targets
242
- CLOBBER.include(Trema.phost) if FileTest.exists?(Trema.phost)
243
-
244
-
245
- ################################################################################
246
- # Build vendor/*
247
- ################################################################################
248
-
249
- task :vendor => [
250
- 'vendor:oflops',
251
- 'vendor:openflow',
252
- 'vendor:openvswitch',
253
- 'vendor:phost'
254
- ]
255
-
256
-
257
- ################################################################################
258
- # Build Open vSwitch
259
- ################################################################################
260
-
261
- task 'vendor:openvswitch' => Trema::Executables.ovs_openflowd
262
- file Trema::Executables.ovs_openflowd do
263
- sh "tar xzf #{ Trema.vendor_openvswitch }.tar.gz -C #{ Trema.vendor }"
264
- cd Trema.vendor_openvswitch do
265
- sh "./configure --prefix=#{ Trema.openvswitch } --with-rundir=#{ Trema.sock }"
266
- sh 'make install'
267
- cp './tests/test-openflowd', Trema::Executables.ovs_openflowd
268
- end
269
- end
270
-
271
- CLEAN.include(Trema.vendor_openvswitch) if FileTest.exists?(Trema.vendor_openvswitch)
272
- CLOBBER.include(Trema.openvswitch) if FileTest.exists?(Trema.openvswitch)
273
-
274
-
275
- ################################################################################
276
- # Build packetin filter
277
- ################################################################################
278
-
279
- desc 'Build packetin filter.'
280
- task :packetin_filter => 'libtrema:static'
281
-
282
- PaperHouse::ExecutableTask.new :packetin_filter do | task |
283
- task.executable_name = File.basename(Trema::Executables.packetin_filter)
284
- task.target_directory = File.dirname(Trema::Executables.packetin_filter)
285
- task.sources = ['src/packetin_filter/*.c']
286
- task.includes = [Trema.include, Trema.openflow]
287
- task.cflags = CFLAGS
288
- task.ldflags = "-L#{ Trema.lib }"
289
- task.library_dependencies = [
290
- 'trema',
291
- 'sqlite3',
292
- 'pthread',
293
- 'rt',
294
- 'dl'
295
- ]
296
- end
297
-
298
-
299
- ################################################################################
300
- # Build oflops
301
- ################################################################################
302
-
303
- def cbench_command
304
- File.join Trema.objects, 'oflops/bin/cbench'
305
- end
306
-
307
- task 'vendor:oflops' => cbench_command
308
- file cbench_command => Trema.openflow_h do
309
- sh "tar xzf #{ Trema.vendor_oflops }.tar.gz -C #{ Trema.vendor }"
310
- cd Trema.vendor_oflops do
311
- sh "./configure --prefix=#{ Trema.oflops } --with-openflow-src-dir=#{ Trema.vendor_openflow }"
312
- sh 'make install'
313
- end
314
- end
315
-
316
- CLEAN.include(Trema.oflops) if FileTest.exists?(Trema.oflops)
317
- CLOBBER.include(Trema.vendor_oflops) if FileTest.exists?(Trema.vendor_oflops)
318
-
319
-
320
- ################################################################################
321
- # cmockery
322
- ################################################################################
323
-
324
- task 'vendor:cmockery' => Trema.libcmockery_a
325
- file Trema.libcmockery_a do
326
- sh "tar xzf #{ Trema.vendor_cmockery }.tar.gz -C #{ Trema.vendor }"
327
- cd Trema.vendor_cmockery do
328
- sh "./configure --disable-shared --prefix=#{ Trema.cmockery }"
329
- sh 'make install'
330
- end
331
- end
332
-
333
- CLEAN.include(Trema.vendor_cmockery) if FileTest.exists?(Trema.vendor_cmockery)
334
- CLOBBER.include(Trema.cmockery) if FileTest.exists?(Trema.cmockery)
335
-
336
-
337
- ################################################################################
338
- # Build examples
339
- ################################################################################
340
-
341
- $standalone_examples = [
342
- 'cbench_switch',
343
- 'dumper',
344
- 'learning_switch',
345
- 'list_switches',
346
- 'multi_learning_switch',
347
- 'packet_in',
348
- 'repeater_hub',
349
- 'switch_info',
350
- 'switch_monitor',
351
- 'traffic_monitor'
352
- ]
353
-
354
- desc 'Build examples.'
355
- task :examples =>
356
- $standalone_examples.map { | each | "examples:#{ each }" } +
357
- [
358
- 'examples:openflow_switch',
359
- 'examples:openflow_message',
360
- 'examples:switch_event_config',
361
- 'examples:packetin_filter_config'
362
- ]
363
-
364
- $standalone_examples.each do | each |
365
- name = "examples:#{ each }"
366
-
367
- task name => 'libtrema:static'
368
- PaperHouse::ExecutableTask.new name do | task |
369
- task.executable_name = each
370
- task.target_directory = File.join(Trema.objects, 'examples', each)
371
- task.sources = ["src/examples/#{ each }/*.c"]
372
- task.includes = [Trema.include, Trema.openflow]
373
- task.cflags = CFLAGS
374
- task.ldflags = "-L#{ Trema.lib }"
375
- task.library_dependencies = [
376
- 'trema',
377
- 'sqlite3',
378
- 'pthread',
379
- 'rt',
380
- 'dl'
381
- ]
382
- end
383
- end
384
-
385
-
386
- ################################################################################
387
- # Build openflow switches
388
- ################################################################################
389
-
390
- $openflow_switches = [
391
- 'hello_switch',
392
- 'echo_switch'
393
- ]
394
-
395
- task 'examples:openflow_switch' => $openflow_switches.map { | each | "examples:openflow_switch:#{ each }" }
396
-
397
- $openflow_switches.each do | each |
398
- name = "examples:openflow_switch:#{ each }"
399
-
400
- task name => 'libtrema:static'
401
- PaperHouse::ExecutableTask.new name do | task |
402
- task.executable_name = each
403
- task.target_directory = File.join(Trema.objects, 'examples', 'openflow_switch')
404
- task.sources = ["src/examples/openflow_switch/#{ each }.c"]
405
- task.includes = [Trema.include, Trema.openflow]
406
- task.cflags = CFLAGS
407
- task.ldflags = "-L#{ Trema.lib }"
408
- task.library_dependencies = [
409
- 'trema',
410
- 'sqlite3',
411
- 'pthread',
412
- 'rt',
413
- 'dl'
414
- ]
415
- end
416
- end
417
-
418
-
419
- ################################################################################
420
- # Build openflow messages
421
- ################################################################################
422
-
423
- $openflow_messages = [
424
- 'echo',
425
- 'features_request',
426
- 'hello',
427
- 'set_config',
428
- 'vendor_action'
429
- ]
430
-
431
- task 'examples:openflow_message' => $openflow_messages.map { | each | "examples:openflow_message:#{ each }" }
432
-
433
- $openflow_messages.each do | each |
434
- name = "examples:openflow_message:#{ each }"
435
-
436
- task name => 'libtrema:static'
437
- PaperHouse::ExecutableTask.new name do | task |
438
- task.executable_name = each
439
- task.target_directory = File.join(Trema.objects, 'examples', 'openflow_message')
440
- task.sources = ["src/examples/openflow_message/#{ each }.c"]
441
- task.includes = [Trema.include, Trema.openflow]
442
- task.cflags = CFLAGS
443
- task.ldflags = "-L#{ Trema.lib }"
444
- task.library_dependencies = [
445
- 'trema',
446
- 'sqlite3',
447
- 'pthread',
448
- 'rt',
449
- 'dl'
450
- ]
451
- end
452
- end
453
-
454
-
455
- ###############################################################################
456
- # Build switch_event_config
457
- ###############################################################################
458
-
459
- $switch_event_config = [
460
- 'add_forward_entry',
461
- 'delete_forward_entry',
462
- 'set_forward_entries',
463
- 'dump_forward_entries'
464
- ]
465
-
466
- task 'examples:switch_event_config' => $switch_event_config.map { | each | "examples:switch_event_config:#{ each }" }
467
-
468
- $switch_event_config.each do | each |
469
- name = "examples:switch_event_config:#{ each }"
470
-
471
- task name => 'libtrema:static'
472
- PaperHouse::ExecutableTask.new name do | task |
473
- task.executable_name = each
474
- task.target_directory = File.join(Trema.objects, 'examples', 'switch_event_config')
475
- task.sources = ["src/examples/switch_event_config/#{ each }.c"]
476
- task.includes = [Trema.include, Trema.openflow]
477
- task.cflags = CFLAGS
478
- task.ldflags = "-L#{ Trema.lib }"
479
- task.library_dependencies = [
480
- 'trema',
481
- 'sqlite3',
482
- 'pthread',
483
- 'rt',
484
- 'dl'
485
- ]
486
- end
487
- end
488
-
489
-
490
- ################################################################################
491
- # Build packetin_filter_config
492
- ################################################################################
493
-
494
- $packetin_filter_config = [
495
- 'add_filter',
496
- 'delete_filter',
497
- 'delete_filter_strict',
498
- 'dump_filter',
499
- 'dump_filter_strict'
500
- ]
501
-
502
- task 'examples:packetin_filter_config' => $packetin_filter_config.map { | each | "examples:packetin_filter_config:#{ each }" }
503
-
504
- $packetin_filter_config.each do | each |
505
- name = "examples:packetin_filter_config:#{ each }"
506
-
507
- task name => 'libtrema:static'
508
- PaperHouse::ExecutableTask.new name do | task |
509
- task.executable_name = each
510
- task.target_directory = File.join(Trema.objects, 'examples', 'packetin_filter_config')
511
- task.sources = ["src/examples/packetin_filter_config/#{ each }.c", 'src/examples/packetin_filter_config/utils.c']
512
- task.includes = [Trema.include, Trema.openflow]
513
- task.cflags = CFLAGS
514
- task.ldflags = "-L#{ Trema.lib }"
515
- task.library_dependencies = [
516
- 'trema',
517
- 'sqlite3',
518
- 'pthread',
519
- 'rt',
520
- 'dl'
521
- ]
522
- end
523
- end
524
-
525
-
526
- ################################################################################
527
- # Run cbench benchmarks
528
- ################################################################################
529
-
530
- def cbench_command
531
- File.join Trema.objects, 'oflops/bin/cbench'
532
- end
533
-
534
-
535
- def cbench_latency_mode_options
536
- '--port 6653 --switches 1 --loops 10 --delay 1000'
537
- end
538
-
539
-
540
- def cbench_throughput_mode_options
541
- cbench_latency_mode_options + ' --throughput'
542
- end
543
-
544
-
545
- def cbench(controller, options)
546
- sh "#{ controller }"
547
- sh "#{ cbench_command } #{ options }"
548
- ensure
549
- sh './trema killall'
550
- end
551
-
552
-
553
- def cbench_c_controller
554
- './trema run ./objects/examples/cbench_switch/cbench_switch -d'
555
- end
556
-
557
-
558
- def cbench_ruby_controller
559
- './trema run src/examples/cbench_switch/cbench-switch.rb -d'
560
- end
561
-
562
-
563
- def run_cbench(controller)
564
- cbench controller, cbench_latency_mode_options
565
- cbench controller, cbench_throughput_mode_options
566
- end
567
-
568
-
569
- def cbench_profile(options)
570
- valgrind = 'valgrind --tool=callgrind --trace-children=yes'
571
- begin
572
- sh "#{ valgrind } #{ cbench_c_controller }"
573
- sh "#{ cbench_command } #{ options }"
574
- ensure
575
- sh './trema killall'
576
- end
577
- end
578
-
579
- CLEAN.include FileList[ 'callgrind.out.*']
580
-
581
-
582
- desc 'Run the c cbench switch controller to benchmark'
583
- task 'cbench' => 'cbench:ruby'
584
-
585
-
586
- desc 'Run the c cbench switch controller to benchmark'
587
- task 'cbench:c' => :default do
588
- run_cbench cbench_c_controller
589
- end
590
-
591
-
592
- desc 'Run the ruby cbench switch controller to benchmark'
593
- task 'cbench:ruby' => :default do
594
- run_cbench cbench_ruby_controller
595
- end
596
-
597
-
598
- desc 'Run cbench with profiling enabled.'
599
- task 'cbench:profile' => :default do
600
- cbench_profile cbench_latency_mode_options
601
- cbench_profile cbench_throughput_mode_options
602
- end
603
-
604
-
605
- ################################################################################
606
- # Build management commands
607
- ################################################################################
608
-
609
- $management_commands = [
610
- 'application',
611
- 'echo',
612
- 'set_logging_level',
613
- 'show_stats'
614
- ]
615
-
616
- desc 'Build management commands.'
617
- task :management_commands => $management_commands.map { | each | "management:#{ each }" }
618
-
619
- $management_commands.each do | each |
620
- name = "management:#{ each }"
621
-
622
- task name => 'libtrema:static'
623
- PaperHouse::ExecutableTask.new name do | task |
624
- task.executable_name = each
625
- task.target_directory = File.join(Trema.objects, 'management')
626
- task.sources = ["src/management/#{ each }.c"]
627
- task.includes = [Trema.include, Trema.openflow]
628
- task.cflags = CFLAGS
629
- task.ldflags = "-L#{ Trema.lib }"
630
- task.library_dependencies = [
631
- 'trema',
632
- 'sqlite3',
633
- 'pthread',
634
- 'rt',
635
- 'dl'
636
- ]
637
- end
638
- end
639
-
640
-
641
- ################################################################################
642
- # Tremashark
643
- ################################################################################
644
-
645
- desc 'Build tremashark.'
646
- task :tremashark => [:packet_capture, :syslog_relay, :stdin_relay, :openflow_wireshark_plugin, 'libtrema:static']
647
-
648
- PaperHouse::ExecutableTask.new :tremashark do | task |
649
- task.executable_name = File.basename(Trema::Executables.tremashark)
650
- task.target_directory = File.dirname(Trema::Executables.tremashark)
651
- task.sources = [
652
- 'src/tremashark/pcap_queue.c',
653
- 'src/tremashark/queue.c',
654
- 'src/tremashark/tremashark.c'
655
- ]
656
- task.includes = [Trema.include, Trema.openflow]
657
- task.cflags = CFLAGS
658
- task.ldflags = "-L#{ Trema.lib }"
659
- task.library_dependencies = [
660
- 'trema',
661
- 'sqlite3',
662
- 'pthread',
663
- 'rt',
664
- 'dl',
665
- 'pcap'
666
- ]
667
- end
668
-
669
-
670
- task :packet_capture => 'libtrema:static'
671
-
672
- PaperHouse::ExecutableTask.new :packet_capture do | task |
673
- task.executable_name = File.basename(Trema::Executables.packet_capture)
674
- task.target_directory = File.dirname(Trema::Executables.packet_capture)
675
- task.sources = [
676
- 'src/tremashark/packet_capture.c',
677
- 'src/tremashark/queue.c'
678
- ]
679
- task.includes = [Trema.include, Trema.openflow]
680
- task.cflags = CFLAGS
681
- task.ldflags = "-L#{ Trema.lib }"
682
- task.library_dependencies = [
683
- 'trema',
684
- 'sqlite3',
685
- 'pthread',
686
- 'rt',
687
- 'dl',
688
- 'pcap'
689
- ]
690
- end
691
-
692
-
693
- task :syslog_relay => 'libtrema:static'
694
-
695
- PaperHouse::ExecutableTask.new :syslog_relay do | task |
696
- task.executable_name = File.basename(Trema::Executables.syslog_relay)
697
- task.target_directory = File.dirname(Trema::Executables.syslog_relay)
698
- task.sources = ['src/tremashark/syslog_relay.c']
699
- task.includes = [Trema.include, Trema.openflow]
700
- task.cflags = CFLAGS
701
- task.ldflags = "-L#{ Trema.lib }"
702
- task.library_dependencies = [
703
- 'trema',
704
- 'sqlite3',
705
- 'pthread',
706
- 'rt',
707
- 'dl',
708
- 'pcap'
709
- ]
710
- end
711
-
712
-
713
- task :stdin_relay => 'libtrema:static'
714
-
715
- PaperHouse::ExecutableTask.new :stdin_relay do | task |
716
- task.executable_name = File.basename(Trema::Executables.stdin_relay)
717
- task.target_directory = File.dirname(Trema::Executables.stdin_relay)
718
- task.sources = ['src/tremashark/stdin_relay.c']
719
- task.includes = [Trema.include, Trema.openflow]
720
- task.cflags = CFLAGS
721
- task.ldflags = "-L#{ Trema.lib }"
722
- task.library_dependencies = [
723
- 'trema',
724
- 'sqlite3',
725
- 'pthread',
726
- 'rt',
727
- 'dl',
728
- 'pcap'
729
- ]
730
- end
731
-
732
-
733
- $packet_openflow_so = File.join(Trema.vendor_openflow_git, 'utilities', 'wireshark_dissectors', 'openflow', 'packet-openflow.so')
734
- $wireshark_plugins_dir = File.join(File.expand_path('~'), '.wireshark', 'plugins')
735
- $wireshark_plugin = File.join($wireshark_plugins_dir, File.basename($packet_openflow_so))
736
-
737
- file $packet_openflow_so do
738
- sh "tar xzf #{ Trema.vendor_openflow_git }.tar.gz -C #{ Trema.vendor }"
739
- cd File.dirname($packet_openflow_so) do
740
- sh 'make'
741
- end
742
- end
743
-
744
- file $wireshark_plugin => [$packet_openflow_so, $wireshark_plugins_dir] do
745
- cp $packet_openflow_so, $wireshark_plugins_dir
746
- end
747
-
748
- directory $wireshark_plugins_dir
749
-
750
- task :openflow_wireshark_plugin => $wireshark_plugin
751
-
752
- CLEAN.include(Trema.vendor_openflow_git) if FileTest.exists?(Trema.vendor_openflow_git)
753
-
754
-
755
- ################################################################################
756
- # Maintenance Tasks
757
- ################################################################################
758
-
759
- begin
760
- require 'bundler/gem_tasks'
761
- rescue LoadError
762
- $stderr.puts $!.to_s
763
- end
764
-
765
-
766
- ################################################################################
767
- # Relish
768
- ################################################################################
769
-
770
- task :relish do
771
- sh 'relish push trema/trema'
772
- end
773
-
774
-
775
- ################################################################################
776
- # C Unit tests.
777
- ################################################################################
778
-
779
- def libtrema_unit_tests
780
- {
781
- :byteorder_test => [:log, :utility, :wrapper, :trema_wrapper],
782
- :daemon_test => [:log, :utility, :wrapper, :trema_wrapper],
783
- :ether_test => [:buffer, :log, :utility, :wrapper, :trema_wrapper],
784
- :external_callback_test => [],
785
- :messenger_test => [:doubly_linked_list, :hash_table, :event_handler, :linked_list, :utility, :wrapper, :timer, :log, :trema_wrapper],
786
- :openflow_application_interface_test => [:buffer, :byteorder, :hash_table, :doubly_linked_list, :linked_list, :log, :openflow_message, :packet_info, :stat, :trema_wrapper, :utility, :wrapper],
787
- :openflow_message_test => [:buffer, :byteorder, :linked_list, :log, :packet_info, :utility, :wrapper, :trema_wrapper],
788
- :packet_info_test => [:buffer, :log, :utility, :wrapper, :trema_wrapper],
789
- :stat_test => [:hash_table, :doubly_linked_list, :log, :utility, :wrapper, :trema_wrapper],
790
- :timer_test => [:log, :utility, :wrapper, :doubly_linked_list, :trema_wrapper],
791
- :trema_test => [:utility, :log, :wrapper, :doubly_linked_list, :trema_private, :trema_wrapper]
792
- }
793
- end
794
-
795
-
796
- def test_c_files(test)
797
- names = [test.to_s.gsub(/_test$/, '')] + libtrema_unit_tests[ test]
798
- names.collect do | each |
799
- if each == :buffer
800
- ['src/lib/buffer.c', 'unittests/buffer_stubs.c']
801
- elsif each == :wrapper
802
- ['src/lib/wrapper.c', 'unittests/wrapper_stubs.c']
803
- else
804
- "src/lib/#{ each }.c"
805
- end
806
- end.flatten
807
- end
808
-
809
-
810
- directory 'objects/unittests'
811
-
812
- task :build_old_unittests => libtrema_unit_tests.keys.map { | each | "unittests:#{ each }" }
813
-
814
- libtrema_unit_tests.keys.each do | each |
815
- PaperHouse::ExecutableTask.new "unittests:#{ each }" do | task |
816
- name = "unittests:#{ each }"
817
- task name => ['vendor:cmockery', 'vendor:openflow', 'objects/unittests']
818
-
819
- task.executable_name = each.to_s
820
- task.target_directory = File.join(Trema.home, 'unittests/objects')
821
- task.sources = test_c_files(each) + ["unittests/lib/#{ each }.c"]
822
- task.includes = [Trema.include, Trema.openflow, File.dirname(Trema.cmockery_h), 'unittests']
823
- task.cflags = ['-DUNIT_TESTING', '--coverage', CFLAGS]
824
- task.ldflags = "-DUNIT_TESTING -L#{ File.dirname Trema.libcmockery_a } --coverage"
825
- task.library_dependencies = [
826
- 'cmockery',
827
- 'sqlite3',
828
- 'pthread',
829
- 'rt',
830
- 'dl',
831
- 'pcap'
832
- ]
833
- end
834
- end
835
-
836
-
837
- # new unittest
838
- $tests = [
839
- 'objects/unittests/buffer_test',
840
- 'objects/unittests/doubly_linked_list_test',
841
- 'objects/unittests/ether_test',
842
- 'objects/unittests/event_forward_interface_test',
843
- 'objects/unittests/hash_table_test',
844
- 'objects/unittests/linked_list_test',
845
- 'objects/unittests/log_test',
846
- 'objects/unittests/packetin_filter_interface_test',
847
- 'objects/unittests/packet_info_test',
848
- 'objects/unittests/packet_parser_test',
849
- 'objects/unittests/persistent_storage_test',
850
- 'objects/unittests/trema_private_test',
851
- 'objects/unittests/utility_test',
852
- 'objects/unittests/wrapper_test',
853
- 'objects/unittests/match_table_test',
854
- 'objects/unittests/message_queue_test',
855
- 'objects/unittests/management_interface_test',
856
- 'objects/unittests/management_service_interface_test'
857
- ]
858
-
859
- task :build_unittests => $tests.map { | each | 'unittests:' + File.basename(each) }
860
-
861
- $tests.each do | _each |
862
- each = File.basename(_each)
863
-
864
- task "unittests:#{ each }" => ['libtrema:gcov', 'vendor:cmockery']
865
- PaperHouse::ExecutableTask.new "unittests:#{ each }" do | task |
866
- task.executable_name = each.to_s
867
- task.target_directory = File.join(Trema.home, 'unittests/objects')
868
- task.sources = ["unittests/lib/#{ each }.c", 'unittests/cmockery_trema.c']
869
- task.includes = [Trema.include, Trema.openflow, File.dirname(Trema.cmockery_h), 'unittests']
870
- task.cflags = ['--coverage', CFLAGS]
871
- task.ldflags = "-L#{ File.dirname Trema.libcmockery_a } -Lobjects/unittests --coverage"
872
- task.library_dependencies = [
873
- 'trema',
874
- 'cmockery',
875
- 'sqlite3',
876
- 'pthread',
877
- 'rt',
878
- 'dl'
879
- ]
880
- end
881
- end
882
-
883
-
884
- desc 'Run unittests'
885
- task :unittests => [:build_old_unittests, :build_unittests] do
886
- Dir.glob('unittests/objects/*_test').each do | each |
887
- puts "Running #{ each }..."
888
- sh each
889
- end
890
- end
891
-
892
-
893
- ################################################################################
894
- # Tests
895
- ################################################################################
896
-
897
- task :travis => [:clobber, :build_trema, 'spec:travis']
898
-
899
-
900
- begin
901
- require 'rspec/core'
902
- require 'rspec/core/rake_task'
903
-
904
- task :spec => :build_trema
905
- RSpec::Core::RakeTask.new do | task |
906
- task.verbose = $trace
907
- task.pattern = FileList[ 'spec/**/*_spec.rb']
908
- task.rspec_opts = '--format documentation --color'
909
- end
910
-
911
- task 'spec:actions' => :build_trema
912
- RSpec::Core::RakeTask.new('spec:actions') do | task |
913
- task.verbose = $trace
914
- task.pattern = FileList[ 'spec/**/*_spec.rb']
915
- task.rspec_opts = '--tag type:actions --format documentation --color'
916
- end
917
-
918
-
919
- task 'spec:travis' => :build_trema
920
- RSpec::Core::RakeTask.new('spec:travis') do | task |
921
- task.verbose = $trace
922
- task.pattern = FileList[ 'spec/trema/hello_spec.rb', 'spec/trema/echo-*_spec.rb']
923
- task.rspec_opts = '--tag ~sudo --format documentation --color'
924
- end
925
-
926
-
927
- task :rcov => :build_trema
928
- RSpec::Core::RakeTask.new(:rcov) do | spec |
929
- spec.pattern = 'spec/**/*_spec.rb'
930
- spec.rcov = true
931
- spec.rcov_opts = ['-x', 'gems']
932
- end
933
- rescue LoadError
934
- $stderr.puts $!.to_s
935
- end
936
-
937
-
938
- begin
939
- require 'cucumber/rake/task'
940
-
941
- task :features => :build_trema
942
- Cucumber::Rake::Task.new(:features) do | t |
943
- t.cucumber_opts = '--tags @critical --tags ~@wip'
944
- end
945
-
946
- task 'features:all' => :build_trema
947
- Cucumber::Rake::Task.new('features:all') do | t |
948
- t.cucumber_opts = '--tags ~@wip'
949
- end
950
- rescue LoadError
951
- $stderr.puts $!.to_s
952
- end
953
-
954
-
955
- ################################################################################
956
- # Code Quality Tasks
957
- ################################################################################
958
-
959
- $ruby_sources = FileList[ 'ruby/**/*.rb', 'src/**/*.rb']
960
-
961
-
962
- desc 'Enforce Ruby code quality with static analysis of code'
963
- task :quality => [:reek, :flog, :flay]
964
-
965
-
966
- begin
967
- require 'reek/rake/task'
968
-
969
- Reek::Rake::Task.new do | t |
970
- t.fail_on_error = false
971
- t.verbose = false
972
- t.ruby_opts = ['-rubygems']
973
- t.reek_opts = '--quiet'
974
- t.source_files = $ruby_sources
975
- end
976
- rescue LoadError
977
- $stderr.puts $!.to_s
978
- end
979
-
980
-
981
- begin
982
- require 'flog'
983
-
984
- desc 'Analyze for code complexity'
985
- task :flog do
986
- flog = Flog.new(:continue => true)
987
- flog.flog(*$ruby_sources)
988
- threshold = 10
989
-
990
- bad_methods = flog.totals.select do | name, score |
991
- ( not ( /##{flog.no_method}$/ =~ name)) && score > threshold
992
- end
993
- bad_methods.sort do | a, b |
994
- a[ 1] <=> b[ 1]
995
- end.reverse.each do | name, score |
996
- puts '%8.1f: %s' % [score, name]
997
- end
998
- unless bad_methods.empty?
999
- $stderr.puts "#{ bad_methods.size } methods have a flog complexity > #{ threshold }"
1000
- end
1001
- end
1002
- rescue LoadError
1003
- $stderr.puts $!.to_s
1004
- end
1005
-
1006
-
1007
- begin
1008
- require 'flay'
1009
- require 'flay_task'
1010
-
1011
- FlayTask.new do | t |
1012
- t.dirs = $ruby_sources.collect do | each |
1013
- each[ /[^\/]+/]
1014
- end.uniq
1015
- t.threshold = 0
1016
- t.verbose = true
1017
- end
1018
- rescue LoadError
1019
- $stderr.puts $!.to_s
1020
- end
1021
-
1022
-
1023
- task :travis => :rubocop
1024
- task :quality => :rubocop
1025
-
1026
-
1027
- ################################################################################
1028
- # YARD
1029
- ################################################################################
1030
-
1031
- begin
1032
- require 'yard'
1033
-
1034
- YARD::Rake::YardocTask.new do | t |
1035
- t.files = ['ruby/trema/**/*.c', 'ruby/trema/**/*.rb']
1036
- t.options = ['--no-private']
1037
- t.options << '--debug' << '--verbose' if $trace
1038
- end
1039
- rescue LoadError
1040
- $stderr.puts $!.to_s
1041
- end
1042
-
1043
-
1044
- ################################################################################
1045
- # TODO, FIXME etc.
1046
- ################################################################################
1047
-
1048
- desc 'Print list of notes.'
1049
- task :notes do
1050
- keywords = ['TODO', 'FIXME', 'XXX']
1051
- keywords.each do | each |
1052
- system "find src unittests -name '*.c' | xargs grep -n #{ each }"
1053
- system "find ruby spec features -name '*.rb' | xargs grep -n #{ each }"
1054
- end
1055
- end
1056
-
1
+ task default: [:test, :quality]
2
+ task test: [:spec, :cucumber]
3
+ task quality: [:rubocop, :reek]
4
+ task travis: [:quality]
1057
5
 
1058
6
  Dir.glob('tasks/*.rake').each { |each| import each }