trema 0.4.7 → 0.4.8

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 (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 }