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
@@ -1,381 +0,0 @@
1
- /*
2
- * Unit tests for message queue.
3
- *
4
- * Copyright (C) 2013 NEC Corporation
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License, version 2, as
8
- * published by the Free Software Foundation.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License along
16
- * with this program; if not, write to the Free Software Foundation, Inc.,
17
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
- */
19
-
20
-
21
- #include <stdio.h>
22
- #include <stdlib.h>
23
- #include <string.h>
24
- #include "checks.h"
25
- #include "cmockery_trema.h"
26
- #include "log.h"
27
- #include "message_queue.h"
28
- #include "wrapper.h"
29
-
30
-
31
- /*************************************************************************
32
- * Helper.
33
- *************************************************************************/
34
-
35
- // Setup and teardown function.
36
-
37
- static void ( *original_die )( const char *format, ... );
38
-
39
- static void
40
- mock_die( const char *format, ... ) {
41
- UNUSED( format );
42
- mock_assert( false, "mock_die", __FILE__, __LINE__ ); } // Hoaxes gcov.
43
-
44
-
45
- static void
46
- setup() {
47
- original_die = die;
48
- die = mock_die;
49
- }
50
-
51
-
52
- static void
53
- teardown() {
54
- die = original_die;
55
- }
56
-
57
-
58
- /*************************************************************************
59
- * create and delete tests.
60
- *************************************************************************/
61
-
62
- static void
63
- test_create_and_delete_message_queue() {
64
- message_queue *queue = create_message_queue();
65
- assert_true( queue != NULL );
66
- assert_int_equal( queue->length, 0 );
67
-
68
- assert_true( delete_message_queue( queue ) );
69
- }
70
-
71
-
72
- static void
73
- test_delete_message_queue_if_queue_is_not_created() {
74
- message_queue *queue = NULL;
75
- expect_assert_failure( delete_message_queue( queue ) );
76
- }
77
-
78
-
79
- static void
80
- test_enqueue_and_delete_message_queue() {
81
- message_queue *queue = create_message_queue();
82
- assert_true( queue != NULL );
83
- assert_int_equal( queue->length, 0 );
84
-
85
- buffer *buf = alloc_buffer();
86
- assert_true( enqueue_message( queue, buf ) );
87
- assert_int_equal( queue->length, 1 );
88
-
89
- assert_true( delete_message_queue( queue ) );
90
- }
91
-
92
-
93
- /*************************************************************************
94
- * enqeue and dequeue tests.
95
- *************************************************************************/
96
-
97
- static void
98
- test_enqueue_and_dequeue_message_queue() {
99
- message_queue *queue = create_message_queue();
100
- assert_true( queue != NULL );
101
-
102
- buffer *enq_buf = alloc_buffer();
103
- assert_true( enqueue_message( queue, enq_buf ) );
104
- assert_int_equal( queue->length, 1 );
105
-
106
- buffer *deq_buf = dequeue_message( queue );
107
- assert_true( deq_buf == enq_buf );
108
- free_buffer( deq_buf );
109
- assert_int_equal( queue->length, 0 );
110
-
111
- deq_buf = dequeue_message( queue );
112
- assert_true( deq_buf == NULL );
113
- assert_int_equal( queue->length, 0 );
114
-
115
- assert_true( delete_message_queue( queue ) );
116
- }
117
-
118
-
119
- static void
120
- test_multiple_queueing() {
121
- message_queue *queue = create_message_queue();
122
- assert_true( queue != NULL );
123
-
124
- buffer *first_buf = alloc_buffer();
125
- assert_true( enqueue_message( queue, first_buf ) );
126
- assert_int_equal( queue->length, 1 );
127
-
128
- buffer *deq_buf = dequeue_message( queue );
129
- assert_true( deq_buf == first_buf );
130
- free_buffer( deq_buf );
131
- assert_int_equal( queue->length, 0 );
132
-
133
-
134
- first_buf = alloc_buffer();
135
- assert_true( enqueue_message( queue, first_buf ) );
136
- assert_int_equal( queue->length, 1 );
137
- buffer *second_buf = alloc_buffer();
138
- assert_true( enqueue_message( queue, second_buf ) );
139
- assert_int_equal( queue->length, 2 );
140
-
141
- deq_buf = dequeue_message( queue );
142
- assert_true( deq_buf == first_buf );
143
- free_buffer( deq_buf );
144
- assert_int_equal( queue->length, 1 );
145
-
146
- buffer *third_buf = alloc_buffer();
147
- assert_true( enqueue_message( queue, third_buf ) );
148
- assert_int_equal( queue->length, 2 );
149
- buffer *fourth_buf = alloc_buffer();
150
- assert_true( enqueue_message( queue, fourth_buf ) );
151
- assert_int_equal( queue->length, 3 );
152
-
153
- deq_buf = dequeue_message( queue );
154
- assert_true( deq_buf == second_buf );
155
- free_buffer( deq_buf );
156
- assert_int_equal( queue->length, 2 );
157
- deq_buf = dequeue_message( queue );
158
- assert_true( deq_buf == third_buf );
159
- free_buffer( deq_buf );
160
- assert_int_equal( queue->length, 1 );
161
- deq_buf = dequeue_message( queue );
162
- assert_true( deq_buf == fourth_buf );
163
- free_buffer( deq_buf );
164
- assert_int_equal( queue->length, 0 );
165
-
166
-
167
- assert_true( delete_message_queue( queue ) );
168
- }
169
-
170
-
171
- static void
172
- test_enqueue_message_if_queue_is_not_created() {
173
- message_queue *queue = NULL;
174
- buffer *enq_buf = alloc_buffer();
175
- expect_assert_failure( enqueue_message( queue, enq_buf ) );
176
- free_buffer( enq_buf );
177
- }
178
-
179
-
180
- static void
181
- test_enqueue_message_if_message_is_NULL() {
182
- message_queue *queue = create_message_queue();
183
- assert_true( queue != NULL );
184
- assert_int_equal( queue->length, 0 );
185
-
186
- expect_assert_failure( enqueue_message( queue, NULL ) );
187
-
188
- assert_true( delete_message_queue( queue ) );
189
- }
190
-
191
-
192
- static void
193
- test_dequeue_message_if_queue_is_not_created() {
194
- message_queue *queue = NULL;
195
- expect_assert_failure( dequeue_message( queue ) );
196
- }
197
-
198
-
199
- /*************************************************************************
200
- * peek tests.
201
- *************************************************************************/
202
-
203
- static void
204
- test_peek_message() {
205
- message_queue *queue = create_message_queue();
206
- assert_true( queue != NULL );
207
-
208
- buffer *peek_buf = peek_message( queue );
209
- assert_true( peek_buf == NULL );
210
-
211
- buffer *first_buf = alloc_buffer();
212
- assert_true( enqueue_message( queue, first_buf ) );
213
- assert_int_equal( queue->length, 1 );
214
- buffer *second_buf = alloc_buffer();
215
- assert_true( enqueue_message( queue, second_buf ) );
216
- assert_int_equal( queue->length, 2 );
217
- buffer *third_buf = alloc_buffer();
218
- assert_true( enqueue_message( queue, third_buf ) );
219
- assert_int_equal( queue->length, 3 );
220
-
221
- peek_buf = peek_message( queue );
222
- assert_true( peek_buf == first_buf );
223
- buffer *deq_buf = dequeue_message( queue );
224
- assert_true( deq_buf == first_buf );
225
- free_buffer( deq_buf );
226
- assert_int_equal( queue->length, 2 );
227
-
228
- peek_buf = peek_message( queue );
229
- assert_true( peek_buf == second_buf );
230
- deq_buf = dequeue_message( queue );
231
- assert_true( deq_buf == second_buf );
232
- free_buffer( deq_buf );
233
- assert_int_equal( queue->length, 1 );
234
-
235
- peek_buf = peek_message( queue );
236
- assert_true( peek_buf == third_buf );
237
- deq_buf = dequeue_message( queue );
238
- assert_true( deq_buf == third_buf );
239
- free_buffer( deq_buf );
240
- assert_int_equal( queue->length, 0 );
241
-
242
- peek_buf = peek_message( queue );
243
- assert_true( peek_buf == NULL );
244
- deq_buf = dequeue_message( queue );
245
- assert_true( deq_buf == NULL );
246
- assert_int_equal( queue->length, 0 );
247
-
248
- assert_true( delete_message_queue( queue ) );
249
- }
250
-
251
-
252
- static void
253
- test_peek_message_if_queue_is_not_created() {
254
- message_queue *queue = NULL;
255
- expect_assert_failure( peek_message( queue ) );
256
- }
257
-
258
-
259
- /*************************************************************************
260
- * foreach_message_queue tests.
261
- *************************************************************************/
262
-
263
-
264
- static int count = 0;
265
-
266
- static bool
267
- test_foreach_message_queue_helper( buffer *message, void *user_data ) {
268
- const char *str = message->data;
269
- assert_string_equal( ( char * ) user_data, "user_data" );
270
- switch ( ++count ) {
271
- case 1:
272
- assert_string_equal( str, "second_buffer" );
273
- break;
274
- case 2:
275
- assert_string_equal( str, "third_buffer" );
276
- break;
277
- default:
278
- assert_true( false );
279
- break;
280
- }
281
-
282
- return true;
283
- }
284
-
285
-
286
- static void
287
- append_string( buffer *buf, const char *str ) {
288
- char *text = append_back_buffer( buf, strlen( str ) + 1 );
289
- strcpy( text, str );
290
- }
291
-
292
-
293
- static void
294
- test_foreach_message_queue() {
295
- message_queue *queue = create_message_queue();
296
- assert_true( queue != NULL );
297
-
298
- buffer *first_buf = alloc_buffer();
299
- append_string( first_buf, "first_buffer" );
300
- assert_true( enqueue_message( queue, first_buf ) );
301
- assert_int_equal( queue->length, 1 );
302
- buffer *second_buf = alloc_buffer();
303
- append_string( second_buf, "second_buffer" );
304
- assert_true( enqueue_message( queue, second_buf ) );
305
- assert_int_equal( queue->length, 2 );
306
- buffer *third_buf = alloc_buffer();
307
- append_string( third_buf, "third_buffer" );
308
- assert_true( enqueue_message( queue, third_buf ) );
309
- assert_int_equal( queue->length, 3 );
310
-
311
- buffer *deq_buf = dequeue_message( queue );
312
- assert_true( deq_buf == first_buf );
313
-
314
- char *user_data = xstrdup( "user_data" );
315
- count = 0;
316
-
317
- foreach_message_queue( queue, test_foreach_message_queue_helper, user_data );
318
-
319
- assert_int_equal( count, 2 );
320
-
321
- xfree( user_data );
322
- assert_true( delete_message_queue( queue ) );
323
- }
324
-
325
-
326
- static bool
327
- test_foreach_message_queue_if_queue_is_empty_helper( buffer *message, void *user_data ) {
328
- UNUSED( message );
329
- UNUSED( user_data );
330
- assert_true( false );
331
-
332
- return true;
333
- }
334
-
335
-
336
- static void
337
- test_foreach_message_queue_if_queue_is_empty() {
338
- message_queue *queue = create_message_queue();
339
- assert_true( queue != NULL );
340
-
341
- char *user_data = xstrdup( "user_data" );
342
- foreach_message_queue( queue, test_foreach_message_queue_if_queue_is_empty_helper, user_data );
343
-
344
- assert_int_equal( count, 2 );
345
-
346
- xfree( user_data );
347
- assert_true( delete_message_queue( queue ) );
348
- }
349
-
350
-
351
- /*************************************************************************
352
- * Run tests.
353
- *************************************************************************/
354
-
355
- int
356
- main() {
357
- const UnitTest tests[] = {
358
- unit_test_setup_teardown( test_create_and_delete_message_queue, setup, teardown ),
359
- unit_test_setup_teardown( test_delete_message_queue_if_queue_is_not_created, setup, teardown ),
360
- unit_test_setup_teardown( test_enqueue_and_delete_message_queue, setup, teardown ),
361
- unit_test_setup_teardown( test_enqueue_and_dequeue_message_queue, setup, teardown ),
362
- unit_test_setup_teardown( test_multiple_queueing, setup, teardown ),
363
- unit_test_setup_teardown( test_enqueue_message_if_queue_is_not_created, setup, teardown ),
364
- unit_test_setup_teardown( test_enqueue_message_if_message_is_NULL, setup, teardown ),
365
- unit_test_setup_teardown( test_dequeue_message_if_queue_is_not_created, setup, teardown ),
366
- unit_test_setup_teardown( test_peek_message, setup, teardown ),
367
- unit_test_setup_teardown( test_peek_message_if_queue_is_not_created, setup, teardown ),
368
- unit_test_setup_teardown( test_foreach_message_queue, setup, teardown ),
369
- unit_test_setup_teardown( test_foreach_message_queue_if_queue_is_empty, setup, teardown ),
370
- };
371
-
372
- return run_tests( tests );
373
- }
374
-
375
-
376
- /*
377
- * Local variables:
378
- * c-basic-offset: 2
379
- * indent-tabs-mode: nil
380
- * End:
381
- */
@@ -1,623 +0,0 @@
1
- /*
2
- * Unit tests for Trema messenger.
3
- *
4
- * Copyright (C) 2008-2013 NEC Corporation
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License, version 2, as
8
- * published by the Free Software Foundation.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License along
16
- * with this program; if not, write to the Free Software Foundation, Inc.,
17
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
- */
19
-
20
-
21
- #include <arpa/inet.h>
22
- #include <errno.h>
23
- #include <linux/limits.h>
24
- #include <stdio.h>
25
- #include <stdlib.h>
26
- #include <sys/socket.h>
27
- #include <sys/types.h>
28
- #include <sys/un.h>
29
- #include <time.h>
30
- #include <unistd.h>
31
- #include "checks.h"
32
- #include "cmockery_trema.h"
33
- #include "doubly_linked_list.h"
34
- #include "external_callback.h"
35
- #include "hash_table.h"
36
- #include "event_handler.h"
37
- #include "messenger.h"
38
- #include "timer.h"
39
- #include "wrapper.h"
40
-
41
-
42
- #define static extern
43
-
44
-
45
- enum {
46
- MESSAGE_TYPE_NOTIFY,
47
- MESSAGE_TYPE_REQUEST,
48
- MESSAGE_TYPE_REPLY,
49
- };
50
-
51
- typedef struct message_buffer {
52
- void *buffer;
53
- size_t data_length;
54
- size_t size;
55
- } message_buffer;
56
-
57
- typedef struct messenger_socket {
58
- int fd;
59
- } messenger_socket;
60
-
61
- typedef struct messenger_context {
62
- uint32_t transaction_id;
63
- int life_count;
64
- void *user_data;
65
- } messenger_context;
66
-
67
- typedef struct receive_queue_callback {
68
- void *function;
69
- uint8_t message_type;
70
- } receive_queue_callback;
71
-
72
- typedef struct receive_queue {
73
- char service_name[ MESSENGER_SERVICE_NAME_LENGTH ];
74
- dlist_element *message_callbacks;
75
- int listen_socket;
76
- struct sockaddr_un listen_addr;
77
- dlist_element *client_sockets;
78
- message_buffer *buffer;
79
- } receive_queue;
80
-
81
- typedef struct send_queue {
82
- char service_name[ MESSENGER_SERVICE_NAME_LENGTH ];
83
- int server_socket;
84
- int refused_count;
85
- struct timespec reconnect_at;
86
- struct sockaddr_un server_addr;
87
- message_buffer *buffer;
88
- } send_queue;
89
-
90
-
91
- static void send_dump_message( uint16_t dump_type, const char *service_name, const void *data, uint32_t data_len );
92
-
93
- static bool run_once( void );
94
-
95
- static void on_accept( int fd, receive_queue *queue );
96
- static void on_recv( int fd, receive_queue *queue );
97
- static void on_send( int fd, send_queue *queue );
98
-
99
- static receive_queue *create_receive_queue( const char *service_name );
100
- static void delete_all_receive_queues( void );
101
- static void delete_receive_queue( void *service_name, void *queue, void *user_data );
102
- static int pull_from_recv_queue( receive_queue *queue, uint8_t *message_type, uint16_t *tag, void *data, size_t *len, size_t maxlen );
103
- static void set_recv_queue_fd_set( fd_set *read_set );
104
- static void check_recv_queue_fd_isset( fd_set *read_set );
105
- static void add_recv_queue_client_fd( receive_queue *queue, int fd );
106
- static int del_recv_queue_client_fd( receive_queue *queue, int fd );
107
- static void call_message_callbacks( receive_queue *rq, const uint8_t message_type, const uint16_t tag, void *data, size_t len );
108
-
109
- static send_queue *create_send_queue( const char *service_name );
110
- static int send_queue_connect( send_queue *queue );
111
- static void delete_all_send_queues( void );
112
- static void delete_send_queue( send_queue *sq );
113
- static void number_of_send_queue( int *connected_count, int *sending_count, int *reconnecting_count, int *closed_count );
114
- static bool push_message_to_send_queue( const char *service_name, const uint8_t message_type, const uint16_t tag, const void *data, size_t len );
115
- static void set_send_queue_fd_set( fd_set *read_set, fd_set *write_set );
116
- static void check_send_queue_fd_isset( fd_set *read_set, fd_set *write_set );
117
-
118
- static message_buffer *create_message_buffer( size_t size );
119
- static bool write_message_buffer( message_buffer *buf, const void *data, size_t len );
120
- static void truncate_message_buffer( message_buffer *buf, size_t len );
121
- static void free_message_buffer( message_buffer *buf );
122
- static size_t message_buffer_remain_bytes( message_buffer *buf );
123
-
124
- static void delete_timer_callbacks( void );
125
-
126
- static messenger_context *insert_context( void *user_data );
127
- static messenger_context *get_context( uint32_t transaction_id );
128
- static void delete_context( messenger_context *context );
129
- static void delete_context_db( void );
130
- static void age_context_db( void * );
131
-
132
- static const uint32_t messenger_buffer_length;
133
-
134
- static char socket_directory[ PATH_MAX ];
135
- static bool running;
136
- static bool initialized;
137
- static bool finalized;
138
- static hash_table *receive_queues;
139
- static hash_table *send_queues;
140
- static hash_table *context_db;
141
- static dlist_element *timer_callbacks;
142
- static char *_dump_service_name;
143
- static char *_dump_app_name;
144
- static uint32_t last_transaction_id;
145
-
146
-
147
-
148
- #undef static
149
-
150
-
151
- #define SERVICE_NAME1 "test1"
152
- #define SERVICE_NAME2 "test2"
153
- #define MESSAGE1 "message1"
154
- #define MESSAGE2 "message2"
155
- #define MESSAGE_TYPE1 1234
156
- #define DUMP_SERVICE_NAME "dump"
157
- #define DUMP_APP_NAME "appname"
158
- #define TAG1 1
159
- #define TAG2 2
160
- #define CONTEXT_DATA "context data"
161
-
162
-
163
- /********************************************************************************
164
- * Mocks.
165
- ********************************************************************************/
166
-
167
- void
168
- mock_init_external_callback() {
169
- }
170
-
171
-
172
- void
173
- mock_finalize_external_callback() {
174
- }
175
-
176
-
177
- void
178
- mock_push_external_callback( external_callback_t callback ) {
179
- check_expected( callback );
180
- }
181
-
182
-
183
- void
184
- mock_run_external_callback() {
185
- }
186
-
187
-
188
- void
189
- mock_execute_timer_events( int *next_timeout_usec ) {
190
- UNUSED( next_timeout_usec );
191
- // Do nothing.
192
- }
193
-
194
-
195
- bool
196
- mock_add_periodic_event_callback( const time_t seconds, void ( *callback )( void *user_data ), void *user_data ) {
197
- UNUSED( seconds );
198
- UNUSED( callback );
199
- UNUSED( user_data );
200
- return true;
201
- }
202
-
203
-
204
- static bool fail_mock_socket = false;
205
- int
206
- mock_socket( int domain, int type, int protocol ) {
207
- return fail_mock_socket ? -1 : socket( domain, type, protocol );
208
- }
209
-
210
-
211
- static bool fail_mock_bind = false;
212
- int
213
- mock_bind( int sockfd, const struct sockaddr *addr, socklen_t addrlen ) {
214
- return fail_mock_bind ? -1 : bind( sockfd, addr, addrlen );
215
- }
216
-
217
-
218
- static bool fail_mock_listen = false;
219
- int
220
- mock_listen( int sockfd, int backlog ) {
221
- return fail_mock_listen ? -1 :listen( sockfd, backlog );
222
- }
223
-
224
-
225
- static bool fail_mock_close = false;
226
- int
227
- mock_close( int fd ) {
228
- return fail_mock_close ? -1 : close( fd );
229
- }
230
-
231
-
232
- static bool fail_mock_connect = false;
233
- int
234
- mock_connect( int sockfd, const struct sockaddr *addr, socklen_t addrlen ) {
235
- return fail_mock_connect ? -1 : connect( sockfd, addr, addrlen );
236
- }
237
-
238
-
239
- static bool fail_mock_select = false;
240
- int
241
- mock_select( int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout ) {
242
- return fail_mock_select ? -1 : select( nfds, readfds, writefds, exceptfds, timeout );
243
- }
244
-
245
-
246
- static bool fail_mock_accept = false;
247
- int
248
- mock_accept( int sockfd, struct sockaddr *addr, socklen_t *addrlen ) {
249
- return fail_mock_accept ? -1 : accept( sockfd, addr, addrlen );
250
- }
251
-
252
-
253
- static bool fail_mock_recv = false;
254
- ssize_t
255
- mock_recv( int sockfd, void *buf, size_t len, int flags ) {
256
- return fail_mock_recv ? -1 : recv( sockfd, buf, len, flags );
257
- }
258
-
259
-
260
- static bool fail_mock_send = false;
261
- ssize_t
262
- mock_send( int sockfd, const void *buf, size_t len, int flags ) {
263
- return fail_mock_send ? -1 : send( sockfd, buf, len, flags );
264
- }
265
-
266
-
267
- int
268
- mock_setsockopt( int s, int level, int optname, const void *optval, socklen_t optlen ) {
269
- UNUSED( s );
270
- UNUSED( level );
271
- UNUSED( optname );
272
- UNUSED( optval );
273
- UNUSED( optlen );
274
- return 0;
275
- }
276
-
277
-
278
- int
279
- mock_clock_gettime( clockid_t clk_id, struct timespec *tp ) {
280
- UNUSED( clk_id );
281
- UNUSED( tp );
282
-
283
- return ( int ) mock();
284
- }
285
-
286
-
287
- void
288
- mock_die( char *format, ... ) {
289
- UNUSED( format );
290
- }
291
-
292
-
293
- void
294
- mock_error( char *format, ... ) {
295
- UNUSED( format );
296
- }
297
-
298
-
299
- void
300
- mock_debug( char *format, ... ) {
301
- UNUSED( format );
302
- }
303
-
304
-
305
- static bool check_warn = false;
306
- static void
307
- mock_warn_check( char *format, va_list args ) {
308
- char message[ 1000 ];
309
- vsnprintf( message, 1000, format, args );
310
-
311
- check_expected( message );
312
- }
313
-
314
-
315
- void
316
- mock_warn( char *format, ... ) {
317
- UNUSED( format );
318
- if ( check_warn ) {
319
- va_list arg;
320
- va_start( arg, format );
321
- mock_warn_check( format, arg );
322
- va_end( arg );
323
- }
324
- }
325
-
326
-
327
- /********************************************************************************
328
- * Callbacks.
329
- ********************************************************************************/
330
-
331
- void
332
- message_requested_callback( const messenger_context_handle *handle, uint16_t tag, void *data, size_t len ) {
333
- assert_true( handle != NULL );
334
- assert_int_equal( tag, TAG1 );
335
- assert_string_equal( data, MESSAGE1 );
336
- assert_int_equal( ( int ) len, strlen( MESSAGE1 ) + 1 );
337
- assert_true( send_reply_message( handle, TAG2, MESSAGE2, strlen( MESSAGE2 ) + 1 ) );
338
- }
339
-
340
-
341
- void
342
- message_replied_callback( uint16_t tag, void *data, size_t len, void *user_data ) {
343
- assert_int_equal( tag, TAG2 );
344
- assert_string_equal( data, MESSAGE2 );
345
- assert_int_equal( ( int ) len, strlen( MESSAGE2 ) + 1 );
346
- assert_string_equal( user_data, CONTEXT_DATA );
347
- xfree( user_data );
348
-
349
- stop_event_handler();
350
- assert_true( stop_messenger() );
351
- }
352
-
353
-
354
- /********************************************************************************
355
- * Helpers.
356
- ********************************************************************************/
357
-
358
- static void
359
- reset_messenger() {
360
- initialized = false;
361
- finalized = false;
362
-
363
- execute_timer_events = mock_execute_timer_events;
364
-
365
- check_warn = false;
366
- }
367
-
368
-
369
- /********************************************************************************
370
- * Init and finalize messenger tests.
371
- ********************************************************************************/
372
-
373
- static void
374
- test_init_and_finalize() {
375
- assert_true( init_messenger( "/tmp" ) );
376
- assert_true( finalize_messenger() );
377
- }
378
-
379
-
380
- static void
381
- test_init_twice() {
382
- assert_true( init_messenger( "/tmp" ) );
383
- assert_true( init_messenger( "/tmp" ) );
384
-
385
- finalize_messenger();
386
- }
387
-
388
-
389
- static void
390
- test_finalize_twice() {
391
- init_messenger( "/tmp" );
392
-
393
- assert_true( finalize_messenger() );
394
- assert_false( finalize_messenger() );
395
- }
396
-
397
-
398
- static void
399
- test_finalize_without_init() {
400
- assert_false( finalize_messenger() );
401
- }
402
-
403
-
404
- /********************************************************************************
405
- * Message callback tests.
406
- ********************************************************************************/
407
-
408
- static void
409
- callback_hello( uint16_t tag, void *data, size_t len ) {
410
- check_expected( tag );
411
- check_expected( data );
412
- check_expected( len );
413
-
414
- stop_event_handler();
415
- stop_messenger();
416
- }
417
-
418
-
419
- static void
420
- test_send_then_message_received_callback_is_called() {
421
- init_messenger( "/tmp" );
422
-
423
- const char service_name[] = "Say HELLO";
424
-
425
- expect_value( callback_hello, tag, 43556 );
426
- expect_string( callback_hello, data, "HELLO" );
427
- expect_value( callback_hello, len, 6 );
428
-
429
- add_message_received_callback( service_name, callback_hello );
430
- send_message( service_name, 43556, "HELLO", strlen( "HELLO" ) + 1 );
431
- start_messenger();
432
- start_event_handler();
433
-
434
- delete_message_received_callback( service_name, callback_hello );
435
- delete_send_queue( lookup_hash_entry( send_queues, service_name ) );
436
-
437
- finalize_messenger();
438
- }
439
-
440
-
441
- static void callback_req_hello( const messenger_context_handle *handle, uint16_t tag, void *data, size_t len ) {
442
- UNUSED( handle );
443
- check_expected( tag );
444
- check_expected( data );
445
- check_expected( len );
446
-
447
- send_reply_message( handle, 65534, "OLLEH", strlen("OLLEH")+1 );
448
- }
449
-
450
-
451
- static void callback_req_hello2( const messenger_context_handle *handle, uint16_t tag, void *data, size_t len ) {
452
- UNUSED( handle );
453
- UNUSED( tag );
454
- UNUSED( data );
455
- UNUSED( len );
456
- }
457
-
458
-
459
- static void callback_rep_hello_end( uint16_t tag, void *data, size_t len, void *user_data ) {
460
- check_expected( tag );
461
- check_expected( data );
462
- check_expected( len );
463
- check_expected( user_data );
464
-
465
- stop_event_handler();
466
- stop_messenger();
467
- }
468
-
469
-
470
- static void callback_rep_hello2( uint16_t tag, void *data, size_t len, void *user_data ) {
471
- UNUSED( tag );
472
- UNUSED( data );
473
- UNUSED( len );
474
- UNUSED( user_data );
475
- }
476
-
477
-
478
- static void
479
- test_send_then_message_requested_and_replied_callback_is_called() {
480
- init_messenger( "/tmp" );
481
-
482
- const char service_name[] = "Say HELLO";
483
-
484
- expect_value( callback_req_hello, tag, 43556 );
485
- expect_string( callback_req_hello, data, "HELLO" );
486
- expect_value( callback_req_hello, len, 6 );
487
- add_message_requested_callback( service_name, callback_req_hello );
488
-
489
- expect_value( callback_rep_hello_end, tag, 65534 );
490
- expect_string( callback_rep_hello_end, data, "OLLEH" );
491
- expect_value( callback_rep_hello_end, len, 6 );
492
- expect_value( callback_rep_hello_end, user_data, NULL );
493
- add_message_replied_callback( service_name, callback_rep_hello_end );
494
-
495
- send_request_message( service_name, service_name, 43556, "HELLO", strlen( "HELLO" ) + 1, NULL );
496
-
497
- start_messenger();
498
- start_event_handler();
499
-
500
- delete_message_replied_callback( service_name, callback_rep_hello_end );
501
- delete_message_requested_callback( service_name, callback_req_hello );
502
- delete_send_queue( lookup_hash_entry( send_queues, service_name ) );
503
-
504
- finalize_messenger();
505
- }
506
-
507
-
508
- static void
509
- test_double_add_message_requested_callback_prints_error_message() {
510
- init_messenger( "/tmp" );
511
-
512
-
513
- const char service_name[] = "Some Service";
514
- char expected_mes[ 1024+1 ] = {};
515
- snprintf( expected_mes, 1024, "Multiple message_requested/replied handler is not supported. ( service_name = %s, message_type = %#x, callback = %p )",
516
- service_name, MESSAGE_TYPE_REQUEST, callback_req_hello2 );
517
-
518
-
519
- check_warn = true;
520
-
521
- assert_true( add_message_requested_callback( service_name, callback_req_hello ) );
522
-
523
- expect_string( mock_warn_check, message, expected_mes );
524
- assert_true( add_message_requested_callback( service_name, callback_req_hello2 ) );
525
-
526
- check_warn = false;
527
-
528
- finalize_messenger();
529
- }
530
-
531
- static void
532
- test_double_add_message_replied_callback_prints_error_message() {
533
- init_messenger( "/tmp" );
534
-
535
-
536
- const char service_name[] = "Some Service";
537
- char expected_mes[ 1024+1 ] = {};
538
- snprintf( expected_mes, 1024, "Multiple message_requested/replied handler is not supported. ( service_name = %s, message_type = %#x, callback = %p )",
539
- service_name, MESSAGE_TYPE_REPLY, callback_rep_hello2 );
540
-
541
-
542
- check_warn = true;
543
-
544
- assert_true( add_message_replied_callback( service_name, callback_rep_hello_end ) );
545
-
546
- expect_string( mock_warn_check, message, expected_mes );
547
- assert_true( add_message_replied_callback( service_name, callback_rep_hello2 ) );
548
-
549
- check_warn = false;
550
-
551
- finalize_messenger();
552
- }
553
-
554
-
555
- static void
556
- test_add_1_message_requested_and_replied_callback_each_prints_no_error_message() {
557
- init_messenger( "/tmp" );
558
-
559
- const char service_name[] = "Some Service";
560
-
561
- check_warn = true;
562
-
563
- assert_true( add_message_requested_callback( service_name, callback_req_hello ) );
564
-
565
- assert_true( add_message_replied_callback( service_name, callback_rep_hello_end ) );
566
-
567
- check_warn = false;
568
-
569
- finalize_messenger();
570
- }
571
-
572
-
573
- /********************************************************************************
574
- * Run tests.
575
- ********************************************************************************/
576
-
577
- int
578
- main() {
579
- const UnitTest tests[] = {
580
- // init and finalize messenger tests.
581
- unit_test_setup_teardown( test_init_and_finalize,
582
- reset_messenger,
583
- reset_messenger ),
584
- unit_test_setup_teardown( test_init_twice,
585
- reset_messenger,
586
- reset_messenger ),
587
- unit_test_setup_teardown( test_finalize_twice,
588
- reset_messenger,
589
- reset_messenger ),
590
- unit_test_setup_teardown( test_finalize_without_init,
591
- reset_messenger,
592
- reset_messenger ),
593
-
594
- // Message callback tests.
595
- unit_test_setup_teardown( test_send_then_message_received_callback_is_called,
596
- reset_messenger,
597
- reset_messenger ),
598
- // Message request callback tests.
599
- unit_test_setup_teardown( test_send_then_message_requested_and_replied_callback_is_called,
600
- reset_messenger,
601
- reset_messenger ),
602
- // Message request duplicate registrationcallback tests.
603
- unit_test_setup_teardown( test_double_add_message_requested_callback_prints_error_message,
604
- reset_messenger,
605
- reset_messenger ),
606
- unit_test_setup_teardown( test_double_add_message_replied_callback_prints_error_message,
607
- reset_messenger,
608
- reset_messenger ),
609
- unit_test_setup_teardown( test_add_1_message_requested_and_replied_callback_each_prints_no_error_message,
610
- reset_messenger,
611
- reset_messenger ),
612
-
613
- };
614
- return run_tests( tests );
615
- }
616
-
617
-
618
- /*
619
- * Local variables:
620
- * c-basic-offset: 2
621
- * indent-tabs-mode: nil
622
- * End:
623
- */