fluentd-ui 0.1.0

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.

Potentially problematic release.


This version of fluentd-ui might be problematic. Click here for more details.

Files changed (320) hide show
  1. checksums.yaml +7 -0
  2. data/.bowerrc +3 -0
  3. data/.gitignore +31 -0
  4. data/.rspec +1 -0
  5. data/ChangeLog +3 -0
  6. data/Gemfile +21 -0
  7. data/Gemfile.lock +247 -0
  8. data/Gemfile.production +3 -0
  9. data/README.md +53 -0
  10. data/Rakefile +8 -0
  11. data/app/assets/images/.keep +0 -0
  12. data/app/assets/javascripts/alert.js +51 -0
  13. data/app/assets/javascripts/application.js +22 -0
  14. data/app/assets/javascripts/nested_setting.js +41 -0
  15. data/app/assets/javascripts/setting_format.js +15 -0
  16. data/app/assets/javascripts/tutorial.js +58 -0
  17. data/app/assets/javascripts/vue/fluent_log.js +64 -0
  18. data/app/assets/javascripts/vue/in_tail_format.js +153 -0
  19. data/app/assets/javascripts/vue/treeview.js +97 -0
  20. data/app/assets/javascripts/vue_common.js +4 -0
  21. data/app/assets/stylesheets/application.css +18 -0
  22. data/app/assets/stylesheets/common.css.scss +152 -0
  23. data/app/controllers/api_controller.rb +37 -0
  24. data/app/controllers/application_controller.rb +110 -0
  25. data/app/controllers/concerns/.keep +0 -0
  26. data/app/controllers/fluentd/agents_controller.rb +35 -0
  27. data/app/controllers/fluentd/settings/in_syslog_controller.rb +34 -0
  28. data/app/controllers/fluentd/settings/in_tail_controller.rb +57 -0
  29. data/app/controllers/fluentd/settings/out_forward_controller.rb +42 -0
  30. data/app/controllers/fluentd/settings/out_mongo_controller.rb +36 -0
  31. data/app/controllers/fluentd/settings/out_s3_controller.rb +36 -0
  32. data/app/controllers/fluentd/settings/out_td_controller.rb +36 -0
  33. data/app/controllers/fluentd/settings_controller.rb +18 -0
  34. data/app/controllers/fluentd_controller.rb +62 -0
  35. data/app/controllers/misc_controller.rb +69 -0
  36. data/app/controllers/plugins_controller.rb +44 -0
  37. data/app/controllers/polling_controller.rb +20 -0
  38. data/app/controllers/sessions_controller.rb +45 -0
  39. data/app/controllers/tutorials_controller.rb +40 -0
  40. data/app/controllers/users_controller.rb +28 -0
  41. data/app/controllers/welcome_controller.rb +5 -0
  42. data/app/helpers/application_helper.rb +55 -0
  43. data/app/helpers/fluentd/settings_helper.rb +2 -0
  44. data/app/helpers/miscs_helper.rb +2 -0
  45. data/app/helpers/settings_helper.rb +43 -0
  46. data/app/mailers/.keep +0 -0
  47. data/app/models/.keep +0 -0
  48. data/app/models/concerns/.keep +0 -0
  49. data/app/models/fluentd.rb +178 -0
  50. data/app/models/fluentd/agent.rb +28 -0
  51. data/app/models/fluentd/agent/common.rb +76 -0
  52. data/app/models/fluentd/agent/configuration.rb +35 -0
  53. data/app/models/fluentd/agent/fluentd_gem.rb +104 -0
  54. data/app/models/fluentd/agent/local_common.rb +101 -0
  55. data/app/models/fluentd/agent/remote.rb +7 -0
  56. data/app/models/fluentd/agent/td_agent.rb +44 -0
  57. data/app/models/fluentd/api.rb +6 -0
  58. data/app/models/fluentd/api/http.rb +26 -0
  59. data/app/models/fluentd/setting.rb +4 -0
  60. data/app/models/fluentd/setting/common.rb +185 -0
  61. data/app/models/fluentd/setting/in_syslog.rb +16 -0
  62. data/app/models/fluentd/setting/in_tail.rb +107 -0
  63. data/app/models/fluentd/setting/out_forward.rb +70 -0
  64. data/app/models/fluentd/setting/out_mongo.rb +35 -0
  65. data/app/models/fluentd/setting/out_s3.rb +29 -0
  66. data/app/models/fluentd/setting/out_td.rb +26 -0
  67. data/app/models/plugin.rb +193 -0
  68. data/app/models/settings.rb +4 -0
  69. data/app/models/user.rb +52 -0
  70. data/app/views/fluentd/_form.html.haml +31 -0
  71. data/app/views/fluentd/edit.html.haml +3 -0
  72. data/app/views/fluentd/errors.html.haml +19 -0
  73. data/app/views/fluentd/log.html.haml +9 -0
  74. data/app/views/fluentd/new.html.haml +3 -0
  75. data/app/views/fluentd/settings/_form.html.haml +43 -0
  76. data/app/views/fluentd/settings/edit.html.haml +7 -0
  77. data/app/views/fluentd/settings/in_syslog/_form.html.haml +9 -0
  78. data/app/views/fluentd/settings/in_syslog/show.html.haml +6 -0
  79. data/app/views/fluentd/settings/in_tail/_form.html.haml +42 -0
  80. data/app/views/fluentd/settings/in_tail/after_file_choose.html.haml +19 -0
  81. data/app/views/fluentd/settings/in_tail/after_format.html.haml +10 -0
  82. data/app/views/fluentd/settings/in_tail/confirm.html.haml +13 -0
  83. data/app/views/fluentd/settings/in_tail/show.html.haml +5 -0
  84. data/app/views/fluentd/settings/out_forward/_form.html.haml +22 -0
  85. data/app/views/fluentd/settings/out_forward/show.html.haml +6 -0
  86. data/app/views/fluentd/settings/out_mongo/_form.html.haml +30 -0
  87. data/app/views/fluentd/settings/out_mongo/finish.html.haml +4 -0
  88. data/app/views/fluentd/settings/out_mongo/show.html.haml +6 -0
  89. data/app/views/fluentd/settings/out_s3/_form.html.haml +39 -0
  90. data/app/views/fluentd/settings/out_s3/show.html.haml +6 -0
  91. data/app/views/fluentd/settings/out_td/_form.html.haml +18 -0
  92. data/app/views/fluentd/settings/out_td/show.html.haml +6 -0
  93. data/app/views/fluentd/settings/show.html.haml +10 -0
  94. data/app/views/fluentd/settings/source_and_output.html.haml +45 -0
  95. data/app/views/fluentd/show.html.haml +60 -0
  96. data/app/views/layouts/application.html.erb +102 -0
  97. data/app/views/layouts/sign_in.html.erb +28 -0
  98. data/app/views/misc/information.html.haml +75 -0
  99. data/app/views/misc/update_fluentd_ui.html.haml +45 -0
  100. data/app/views/plugins/installed.html.haml +67 -0
  101. data/app/views/plugins/recommended.html.haml +59 -0
  102. data/app/views/plugins/updated.html.haml +29 -0
  103. data/app/views/sessions/new.html.haml +13 -0
  104. data/app/views/shared/_error.html.haml +3 -0
  105. data/app/views/shared/_flash.html.haml +10 -0
  106. data/app/views/shared/_fluentd_nav.html.haml +12 -0
  107. data/app/views/shared/_global_nav.html.erb +80 -0
  108. data/app/views/shared/_initial_setup.html.haml +13 -0
  109. data/app/views/shared/_modal.html.erb +25 -0
  110. data/app/views/shared/_setting_errors.html.haml +5 -0
  111. data/app/views/shared/vue/_fluent_log.html.erb +25 -0
  112. data/app/views/shared/vue/_in_tail_format.html.erb +53 -0
  113. data/app/views/shared/vue/_treeview.html.erb +30 -0
  114. data/app/views/tutorials/chapter1.html.erb +31 -0
  115. data/app/views/tutorials/chapter2.html.haml +12 -0
  116. data/app/views/tutorials/chapter3.html.haml +12 -0
  117. data/app/views/tutorials/chapter4.html.haml +12 -0
  118. data/app/views/tutorials/chapter5.html.haml +10 -0
  119. data/app/views/tutorials/index.html.haml +26 -0
  120. data/app/views/users/show.html.haml +22 -0
  121. data/app/workers/all_plugin_check_update.rb +14 -0
  122. data/app/workers/fluentd_ui_restart.rb +41 -0
  123. data/app/workers/fluentd_ui_update_check.rb +15 -0
  124. data/app/workers/gem_installer.rb +17 -0
  125. data/app/workers/gem_uninstaller.rb +15 -0
  126. data/app/workers/gem_update_check.rb +10 -0
  127. data/bin/bundle +3 -0
  128. data/bin/fluentd-ui +13 -0
  129. data/bin/fluentd-ui-restart +12 -0
  130. data/bin/rails +8 -0
  131. data/bin/rake +8 -0
  132. data/bin/spring +18 -0
  133. data/bower.json +10 -0
  134. data/circle.yml +8 -0
  135. data/config.ru +4 -0
  136. data/config/application.rb +48 -0
  137. data/config/application.yml +211 -0
  138. data/config/boot.rb +4 -0
  139. data/config/environment.rb +5 -0
  140. data/config/environments/development.rb +36 -0
  141. data/config/environments/production.rb +69 -0
  142. data/config/environments/test.rb +40 -0
  143. data/config/initializers/backtrace_silencers.rb +7 -0
  144. data/config/initializers/cookies_serializer.rb +3 -0
  145. data/config/initializers/filter_parameter_logging.rb +4 -0
  146. data/config/initializers/inflections.rb +16 -0
  147. data/config/initializers/mime_types.rb +4 -0
  148. data/config/initializers/prefetch_gem_updates.rb +1 -0
  149. data/config/initializers/session_store.rb +3 -0
  150. data/config/initializers/wrap_parameters.rb +14 -0
  151. data/config/locales/en.yml +204 -0
  152. data/config/locales/ja.yml +194 -0
  153. data/config/locales/translation_en.yml +255 -0
  154. data/config/locales/translation_ja.yml +255 -0
  155. data/config/locales/tutorial_en.yml +117 -0
  156. data/config/locales/tutorial_ja.yml +120 -0
  157. data/config/routes.rb +93 -0
  158. data/config/secrets.yml +22 -0
  159. data/db/schema.rb +0 -0
  160. data/db/seeds.rb +11 -0
  161. data/fluentd-ui-ss01.png +0 -0
  162. data/fluentd-ui-ss02.png +0 -0
  163. data/fluentd-ui-ss03.png +0 -0
  164. data/fluentd-ui-ss04.png +0 -0
  165. data/fluentd-ui-ss05.png +0 -0
  166. data/fluentd-ui.gemspec +46 -0
  167. data/lib/assets/.keep +0 -0
  168. data/lib/file_reverse_reader.rb +56 -0
  169. data/lib/fluentd-ui.rb +22 -0
  170. data/lib/fluentd-ui/command.rb +52 -0
  171. data/lib/fluentd-ui/version.rb +3 -0
  172. data/lib/grok_converter.rb +39 -0
  173. data/lib/regexp_preview.rb +48 -0
  174. data/lib/tasks/.keep +0 -0
  175. data/lib/treeview.rb +45 -0
  176. data/log/.keep +0 -0
  177. data/public/404.html +67 -0
  178. data/public/422.html +67 -0
  179. data/public/500.html +66 -0
  180. data/public/favicon.ico +0 -0
  181. data/public/fluentd-logo-right-text.png +0 -0
  182. data/public/fluentd-logo.png +0 -0
  183. data/public/fluentd.png +0 -0
  184. data/public/robots.txt +5 -0
  185. data/spec/controllers/plugins_controller_spec.rb +5 -0
  186. data/spec/controllers/polling_controller_spec.rb +5 -0
  187. data/spec/controllers/sessions_controller_spec.rb +5 -0
  188. data/spec/controllers/tutorials_controller_spec.rb +5 -0
  189. data/spec/factories/fluentd.rb +11 -0
  190. data/spec/factories/plugins.rb +8 -0
  191. data/spec/factories/user.rb +6 -0
  192. data/spec/features/fluentd/setting/out_forward_spec.rb +45 -0
  193. data/spec/features/fluentd/setting/out_td_spec.rb +35 -0
  194. data/spec/features/sessions_spec.rb +55 -0
  195. data/spec/features/shared_examples/login_required.rb +4 -0
  196. data/spec/features/users_spec.rb +9 -0
  197. data/spec/grok_converter_spec.rb +50 -0
  198. data/spec/lib/file_reverse_reader_spec.rb +73 -0
  199. data/spec/lib/fluentd-ui_spec.rb +35 -0
  200. data/spec/models/fluentd/agent_spec.rb +91 -0
  201. data/spec/models/fluentd/setting/common_spec.rb +178 -0
  202. data/spec/models/fluentd/setting/in_syslog_spec.rb +35 -0
  203. data/spec/models/fluentd/setting/out_mongo_spec.rb +40 -0
  204. data/spec/models/fluentd/setting/out_td_spec.rb +38 -0
  205. data/spec/models/fluentd_spec.rb +166 -0
  206. data/spec/models/plugin_spec.rb +191 -0
  207. data/spec/models/user_spec.rb +15 -0
  208. data/spec/spec_helper.rb +58 -0
  209. data/spec/support/fixtures/error0.log +12 -0
  210. data/spec/support/fixtures/error2.log +130 -0
  211. data/spec/support/fluentd_agent_common_behavior.rb +114 -0
  212. data/spec/support/fluentd_agent_restart_strategy.rb +94 -0
  213. data/tmp/.gitkeep +0 -0
  214. data/vendor/assets/javascripts/.keep +0 -0
  215. data/vendor/assets/javascripts/bower/es6-promise/.bower.json +15 -0
  216. data/vendor/assets/javascripts/bower/es6-promise/bower.json +5 -0
  217. data/vendor/assets/javascripts/bower/es6-promise/promise.js +684 -0
  218. data/vendor/assets/javascripts/bower/es6-promise/promise.min.js +1 -0
  219. data/vendor/assets/javascripts/bower/lodash/.bower.json +33 -0
  220. data/vendor/assets/javascripts/bower/lodash/LICENSE.txt +22 -0
  221. data/vendor/assets/javascripts/bower/lodash/bower.json +23 -0
  222. data/vendor/assets/javascripts/bower/lodash/dist/lodash.compat.js +7157 -0
  223. data/vendor/assets/javascripts/bower/lodash/dist/lodash.compat.min.js +61 -0
  224. data/vendor/assets/javascripts/bower/lodash/dist/lodash.js +6785 -0
  225. data/vendor/assets/javascripts/bower/lodash/dist/lodash.min.js +56 -0
  226. data/vendor/assets/javascripts/bower/lodash/dist/lodash.underscore.js +4979 -0
  227. data/vendor/assets/javascripts/bower/lodash/dist/lodash.underscore.min.js +39 -0
  228. data/vendor/assets/javascripts/bower/vue/.bower.json +29 -0
  229. data/vendor/assets/javascripts/bower/vue/LICENSE +21 -0
  230. data/vendor/assets/javascripts/bower/vue/dist/vue.js +4713 -0
  231. data/vendor/assets/javascripts/bower/vue/dist/vue.min.js +7 -0
  232. data/vendor/assets/javascripts/bower/vue/src/batcher.js +45 -0
  233. data/vendor/assets/javascripts/bower/vue/src/binding.js +103 -0
  234. data/vendor/assets/javascripts/bower/vue/src/compiler.js +1037 -0
  235. data/vendor/assets/javascripts/bower/vue/src/config.js +19 -0
  236. data/vendor/assets/javascripts/bower/vue/src/deps-parser.js +65 -0
  237. data/vendor/assets/javascripts/bower/vue/src/directive.js +258 -0
  238. data/vendor/assets/javascripts/bower/vue/src/directives/html.js +41 -0
  239. data/vendor/assets/javascripts/bower/vue/src/directives/if.js +56 -0
  240. data/vendor/assets/javascripts/bower/vue/src/directives/index.js +129 -0
  241. data/vendor/assets/javascripts/bower/vue/src/directives/model.js +174 -0
  242. data/vendor/assets/javascripts/bower/vue/src/directives/on.js +56 -0
  243. data/vendor/assets/javascripts/bower/vue/src/directives/partial.js +50 -0
  244. data/vendor/assets/javascripts/bower/vue/src/directives/repeat.js +246 -0
  245. data/vendor/assets/javascripts/bower/vue/src/directives/style.js +40 -0
  246. data/vendor/assets/javascripts/bower/vue/src/directives/view.js +56 -0
  247. data/vendor/assets/javascripts/bower/vue/src/directives/with.js +50 -0
  248. data/vendor/assets/javascripts/bower/vue/src/emitter.js +97 -0
  249. data/vendor/assets/javascripts/bower/vue/src/exp-parser.js +190 -0
  250. data/vendor/assets/javascripts/bower/vue/src/filters.js +190 -0
  251. data/vendor/assets/javascripts/bower/vue/src/fragment.js +84 -0
  252. data/vendor/assets/javascripts/bower/vue/src/main.js +186 -0
  253. data/vendor/assets/javascripts/bower/vue/src/observer.js +446 -0
  254. data/vendor/assets/javascripts/bower/vue/src/text-parser.js +96 -0
  255. data/vendor/assets/javascripts/bower/vue/src/transition.js +228 -0
  256. data/vendor/assets/javascripts/bower/vue/src/utils.js +321 -0
  257. data/vendor/assets/javascripts/bower/vue/src/viewmodel.js +180 -0
  258. data/vendor/assets/javascripts/sb-admin-v2/bootstrap.js +1951 -0
  259. data/vendor/assets/javascripts/sb-admin-v2/bootstrap.min.js +6 -0
  260. data/vendor/assets/javascripts/sb-admin-v2/demo/dashboard-demo.js +117 -0
  261. data/vendor/assets/javascripts/sb-admin-v2/demo/flot-demo.js +1242 -0
  262. data/vendor/assets/javascripts/sb-admin-v2/demo/morris-demo.js +155 -0
  263. data/vendor/assets/javascripts/sb-admin-v2/jquery-1.10.2.js +6 -0
  264. data/vendor/assets/javascripts/sb-admin-v2/plugins/dataTables/dataTables.bootstrap.js +245 -0
  265. data/vendor/assets/javascripts/sb-admin-v2/plugins/dataTables/jquery.dataTables.js +14013 -0
  266. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/excanvas.min.js +1 -0
  267. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.js +2599 -0
  268. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.pie.js +750 -0
  269. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.resize.js +60 -0
  270. data/vendor/assets/javascripts/sb-admin-v2/plugins/flot/jquery.flot.tooltip.min.js +12 -0
  271. data/vendor/assets/javascripts/sb-admin-v2/plugins/metisMenu/jquery.metisMenu.js +45 -0
  272. data/vendor/assets/javascripts/sb-admin-v2/plugins/morris/morris.js +1888 -0
  273. data/vendor/assets/javascripts/sb-admin-v2/plugins/morris/raphael-2.1.0.min.js +10 -0
  274. data/vendor/assets/javascripts/sb-admin-v2/sb-admin.js +18 -0
  275. data/vendor/assets/stylesheets/.keep +0 -0
  276. data/vendor/assets/stylesheets/sb-admin-v2/bootstrap.css +5830 -0
  277. data/vendor/assets/stylesheets/sb-admin-v2/bootstrap.min.css +7 -0
  278. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/css/font-awesome.css +1338 -0
  279. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/css/font-awesome.min.css +4 -0
  280. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/FontAwesome.otf +0 -0
  281. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  282. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.svg +414 -0
  283. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  284. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  285. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_bordered-pulled.scss +16 -0
  286. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_core.scss +12 -0
  287. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_fixed-width.scss +6 -0
  288. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_icons.scss +412 -0
  289. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_larger.scss +13 -0
  290. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_list.scss +19 -0
  291. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_mixins.scss +20 -0
  292. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_path.scss +14 -0
  293. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_rotated-flipped.scss +9 -0
  294. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_spinning.scss +30 -0
  295. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_stacked.scss +20 -0
  296. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/_variables.scss +381 -0
  297. data/vendor/assets/stylesheets/sb-admin-v2/font-awesome/scss/font-awesome.scss +17 -0
  298. data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.eot +0 -0
  299. data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.svg +229 -0
  300. data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.ttf +0 -0
  301. data/vendor/assets/stylesheets/sb-admin-v2/fonts/glyphicons-halflings-regular.woff +0 -0
  302. data/vendor/assets/stylesheets/sb-admin-v2/plugins/dataTables/dataTables.bootstrap.css +233 -0
  303. data/vendor/assets/stylesheets/sb-admin-v2/plugins/morris/morris-0.4.3.min.css +2 -0
  304. data/vendor/assets/stylesheets/sb-admin-v2/plugins/social-buttons/social-buttons.css +68 -0
  305. data/vendor/assets/stylesheets/sb-admin-v2/plugins/timeline/timeline.css +144 -0
  306. data/vendor/assets/stylesheets/sb-admin-v2/sb-admin.css +329 -0
  307. data/vendor/patterns/firewalls +60 -0
  308. data/vendor/patterns/grok-patterns +94 -0
  309. data/vendor/patterns/haproxy +37 -0
  310. data/vendor/patterns/java +3 -0
  311. data/vendor/patterns/junos +9 -0
  312. data/vendor/patterns/linux-syslog +16 -0
  313. data/vendor/patterns/mcollective +1 -0
  314. data/vendor/patterns/mcollective-patterns +4 -0
  315. data/vendor/patterns/mongodb +4 -0
  316. data/vendor/patterns/nagios +108 -0
  317. data/vendor/patterns/postgresql +3 -0
  318. data/vendor/patterns/redis +3 -0
  319. data/vendor/patterns/ruby +2 -0
  320. metadata +659 -0
@@ -0,0 +1,178 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fluentd::Setting::Common do
4
+ let(:klass) { Fluentd::Setting::Common }
5
+
6
+ describe "class methods" do
7
+ describe "#booleans" do
8
+ subject do
9
+ Class.new do
10
+ include Fluentd::Setting::Common
11
+ attr_accessor :bool1, :bool2, :foo
12
+ booleans :bool1, :bool2
13
+ end.new
14
+ end
15
+
16
+ it { subject.column_type(:bool1).should == :boolean }
17
+ it { subject.column_type(:bool2).should == :boolean }
18
+ it { subject.column_type(:foo).should_not == :boolean }
19
+ end
20
+
21
+ describe "#flags" do
22
+ subject do
23
+ Class.new do
24
+ include Fluentd::Setting::Common
25
+ attr_accessor :flag1, :flag2, :foo
26
+ flags :flag1, :flag2
27
+ end.new
28
+ end
29
+
30
+ it { subject.column_type(:flag1).should == :flag }
31
+ it { subject.column_type(:flag2).should == :flag }
32
+ it { subject.column_type(:foo).should_not == :flag }
33
+ end
34
+
35
+ describe "#hidden" do
36
+ subject do
37
+ Class.new do
38
+ include Fluentd::Setting::Common
39
+ attr_accessor :hide
40
+ hidden :hide
41
+ end.new
42
+ end
43
+
44
+ it { subject.column_type(:hide).should == :hidden }
45
+ end
46
+
47
+ describe "#choice" do
48
+ subject do
49
+ Class.new do
50
+ include Fluentd::Setting::Common
51
+ attr_accessor :choice, :foo
52
+ choice :choice, %w(a b c)
53
+ end.new
54
+ end
55
+
56
+ it { subject.column_type(:choice).should == :choice }
57
+ it { subject.values_of(:choice).should == %w(a b c) }
58
+ it { subject.column_type(:foo).should_not == :choice }
59
+ end
60
+
61
+ describe "#nested" do
62
+ before do
63
+ @child_class = Class.new do
64
+ include Fluentd::Setting::Common
65
+ end
66
+ end
67
+
68
+ subject do
69
+ child = @child_class
70
+ Class.new do
71
+ include Fluentd::Setting::Common
72
+ attr_accessor :child, :foo
73
+ nested :child, child
74
+ end.new
75
+ end
76
+
77
+ it { subject.column_type(:child).should == :nested }
78
+ it { subject.child_class(:child).should == @child_class }
79
+ it { subject.column_type(:foo).should_not == :nested }
80
+ end
81
+ end
82
+
83
+ describe "instance methods" do
84
+ describe "plugin name" do
85
+ before do
86
+ klass = Class.new do
87
+ include Fluentd::Setting::Common
88
+ end
89
+ Object.const_set(class_name, klass)
90
+ end
91
+ after { Object.send(:remove_const, class_name) }
92
+ subject { Object.const_get(class_name).new }
93
+
94
+ context "InFoo" do
95
+ let(:class_name) { "InFoo" }
96
+ it "plugin_type_name == foo" do
97
+ subject.plugin_type_name.should == "foo"
98
+ end
99
+ it "should be input_plugin" do
100
+ subject.should be_input_plugin
101
+ end
102
+ end
103
+
104
+ context "OutBar" do
105
+ let(:class_name) { "OutBar" }
106
+ it "plugin_type_name == bar" do
107
+ subject.plugin_type_name.should == "bar"
108
+ end
109
+ it "should be output_plugin" do
110
+ subject.should be_output_plugin
111
+ end
112
+ end
113
+ end
114
+
115
+ describe "generate config file" do
116
+ before do
117
+ class Child
118
+ include Fluentd::Setting::Common
119
+ KEYS = [:child_foo]
120
+ attr_accessor(*KEYS)
121
+ end
122
+ @klass = Class.new do
123
+ include Fluentd::Setting::Common
124
+ KEYS = [:key1, :key2, :flag1, :hide, :ch, :child, :string] # FIXME: display "warning: already initialized constant KEYS", but works :(
125
+ attr_accessor(*KEYS)
126
+ booleans :key1, :key2
127
+ flags :flag1
128
+ hidden :hide
129
+ choice :ch, %w(foo bar)
130
+ nested :child, Child
131
+ end
132
+ end
133
+ after { Object.send(:remove_const, :Child) }
134
+
135
+ subject { @klass.new(params).to_config("dummy") }
136
+
137
+ describe "boolean" do
138
+ # NOTE: "true" and "false" are the string because the are given by HTTP request
139
+ let(:params) { {key1: "true", key2: "false"} }
140
+
141
+ it { should include("key1 true\n") }
142
+ it { should include("key2 false\n") }
143
+ end
144
+
145
+ describe "flag" do
146
+ context "true" do
147
+ let(:params) { {flag1: "true"} }
148
+ it { should include("flag1\n") }
149
+ end
150
+ context "false" do
151
+ let(:params) { {flag1: "false"} }
152
+ it { should_not include("flag1\n") }
153
+ end
154
+ end
155
+
156
+ describe "hidden" do
157
+ let(:params) { {hide: "foo"} }
158
+ it { should include("hide foo\n") }
159
+ end
160
+
161
+ describe "choice" do
162
+ let(:params) { {ch: "foo"} }
163
+ it { should include("ch foo\n") }
164
+ end
165
+
166
+ describe "string" do
167
+ let(:params) { {string: "foobar"} }
168
+ it { should include("string foobar\n") }
169
+ end
170
+
171
+ describe "nested" do
172
+ let(:params) { {child: {"0" => { child_foo: "hi" }}} }
173
+ it { should match(%r!<child>\n\s+child_foo hi\n\s+</child>!) }
174
+ end
175
+ end
176
+ end
177
+ end
178
+
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fluentd::Setting::InSyslog do
4
+ let(:klass) { described_class }
5
+ let(:instance) { klass.new(valid_attributes) }
6
+ let(:valid_attributes) {
7
+ {
8
+ tag: "foo.bar",
9
+ }
10
+ }
11
+
12
+ describe "#valid?" do
13
+ it "should be invalid if tag parameter lacked" do
14
+ params = valid_attributes.dup
15
+ params.delete(:tag)
16
+ klass.new(params).should_not be_valid
17
+ end
18
+ end
19
+
20
+ describe "#plugin_type_name" do
21
+ subject { instance.plugin_type_name }
22
+ it { should == "syslog" }
23
+ end
24
+
25
+ describe "#input_plugin" do
26
+ it { instance.should be_input_plugin }
27
+ it { instance.should_not be_output_plugin }
28
+ end
29
+
30
+ describe "#to_config" do
31
+ subject { instance.to_config }
32
+ it { should include("type syslog") }
33
+ end
34
+ end
35
+
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fluentd::Setting::OutMongo do
4
+ let(:klass) { described_class }
5
+ let(:instance) { klass.new(valid_attributes) }
6
+ let(:valid_attributes) {
7
+ {
8
+ match: "mongo.*.*",
9
+ host: "example.com",
10
+ port: 12345,
11
+ database: "mongodb",
12
+ tag_mapped: "true",
13
+ }
14
+ }
15
+
16
+ describe "#valid?" do
17
+ it "should be invalid if tag parameter lacked" do
18
+ params = valid_attributes.dup
19
+ params.delete(:match)
20
+ klass.new(params).should_not be_valid
21
+ end
22
+ end
23
+
24
+ describe "#plugin_type_name" do
25
+ subject { instance.plugin_type_name }
26
+ it { should == "mongo" }
27
+ end
28
+
29
+ describe "#input_plugin" do
30
+ it { instance.should_not be_input_plugin }
31
+ it { instance.should be_output_plugin }
32
+ end
33
+
34
+ describe "#to_config" do
35
+ subject { instance.to_config }
36
+ it { should include("type mongo") }
37
+ it { should include("tag_mapped") }
38
+ end
39
+ end
40
+
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fluentd::Setting::OutTd do
4
+ let(:klass) { described_class }
5
+ let(:instance) { klass.new(valid_attributes) }
6
+ let(:valid_attributes) {
7
+ {
8
+ match: "td.*.*",
9
+ apikey: "APIKEY",
10
+ auto_create_table: "true",
11
+ }
12
+ }
13
+
14
+ describe "#valid?" do
15
+ it "should be invalid if tag parameter lacked" do
16
+ params = valid_attributes.dup
17
+ params.delete(:match)
18
+ klass.new(params).should_not be_valid
19
+ end
20
+ end
21
+
22
+ describe "#plugin_type_name" do
23
+ subject { instance.plugin_type_name }
24
+ it { should == "tdlog" }
25
+ end
26
+
27
+ describe "#input_plugin" do
28
+ it { instance.should_not be_input_plugin }
29
+ it { instance.should be_output_plugin }
30
+ end
31
+
32
+ describe "#to_config" do
33
+ subject { instance.to_config }
34
+ it { should include("type tdlog") }
35
+ it { should include("APIKEY") }
36
+ end
37
+ end
38
+
@@ -0,0 +1,166 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fluentd do
4
+ shared_examples_for "path permission" do |column|
5
+ let(:path) { fluentd.send(column) }
6
+
7
+ subject do
8
+ fluentd.check_permission(column)
9
+ fluentd.errors
10
+ end
11
+
12
+ context "file exists" do
13
+ before { FileUtils.touch(path) }
14
+ after { FileUtils.chmod(0755, path) }
15
+
16
+ context "writable" do
17
+ before { FileUtils.chmod(0600, path) }
18
+ it { should be_blank }
19
+ end
20
+
21
+ context "not writable" do
22
+ before { FileUtils.chmod(0400, path) }
23
+ it { should_not be_blank }
24
+ it { subject.get(column).should include(I18n.t('activerecord.errors.messages.lack_write_permission')) }
25
+ end
26
+
27
+ context "not readable" do
28
+ before { FileUtils.chmod(0200, path) }
29
+ it { should_not be_blank }
30
+ it { subject.get(column).should include(I18n.t('activerecord.errors.messages.lack_read_permission')) }
31
+ end
32
+
33
+ context "is directory" do
34
+ before { fluentd.send("#{column}=", Rails.root + "tmp") }
35
+ it { should_not be_blank }
36
+ it { subject.get(column).should include(I18n.t('activerecord.errors.messages.is_a_directory')) }
37
+ end
38
+ end
39
+
40
+ context "file not exists" do
41
+ let(:dir) { File.dirname(path) }
42
+ before { FileUtils.rm path }
43
+ after { FileUtils.chmod_R(0755, dir) }
44
+
45
+ context "writable" do
46
+ before { FileUtils.chmod(0700, dir) }
47
+ it { should be_blank }
48
+ end
49
+
50
+ context "not writable" do
51
+ before { FileUtils.chmod(0500, dir) }
52
+ it { should_not be_blank }
53
+ it { subject.get(column).should include(I18n.t('activerecord.errors.messages.lack_write_permission')) }
54
+ end
55
+ end
56
+ end
57
+
58
+ let(:fluentd) { build(:fluentd) }
59
+ after { File.unlink(Fluentd.json_path) if File.exist?(Fluentd.json_path) }
60
+
61
+ describe "#valid?" do
62
+ before do
63
+ %w(pid_file log_file config_file).each do |column|
64
+ FileUtils.mkdir_p File.dirname(fluentd.send(column))
65
+ FileUtils.touch fluentd.send(column)
66
+ end
67
+ end
68
+
69
+ subject { fluentd }
70
+
71
+ describe "variant" do
72
+ before { fluentd.variant = variant }
73
+
74
+ context "fluentd" do
75
+ let(:variant) { "fluentd_gem" }
76
+ it { should be_valid }
77
+ end
78
+
79
+ context "foobar (not declared in Fluentd.variants)" do
80
+ let(:variant) { "foobar" }
81
+ it { should_not be_valid }
82
+ end
83
+ end
84
+
85
+ describe "pid_file" do
86
+ it_should_behave_like "path permission", :pid_file
87
+ end
88
+
89
+ describe "log_file" do
90
+ it_should_behave_like "path permission", :log_file
91
+ end
92
+
93
+ describe "config_file" do
94
+ it_should_behave_like "path permission", :config_file
95
+ end
96
+ end
97
+
98
+ describe "variant" do
99
+ before { fluentd.variant = variant }
100
+
101
+ context "= fluentd_gem" do
102
+ let(:variant) { "fluentd_gem" }
103
+ it { fluentd.should be_fluentd_gem }
104
+ it { fluentd.should_not be_td_agent }
105
+
106
+ describe "#load_settings_from_agent_default" do
107
+ before { fluentd.load_settings_from_agent_default }
108
+
109
+ it { fluentd.pid_file == fluentd.agent.class.default_options[:pid_file] }
110
+ it { fluentd.log_file == fluentd.agent.class.default_options[:log_file] }
111
+ it { fluentd.config_file == fluentd.agent.class.default_options[:config_file] }
112
+ end
113
+ end
114
+
115
+ context "= td-agent" do
116
+ let(:variant) { "td-agent" }
117
+ it { fluentd.should_not be_fluentd_gem }
118
+ it { fluentd.should be_td_agent }
119
+
120
+ describe "#load_settings_from_agent_default" do
121
+ before { fluentd.load_settings_from_agent_default }
122
+
123
+ it { fluentd.pid_file == fluentd.agent.class.default_options[:pid_file] }
124
+ it { fluentd.log_file == fluentd.agent.class.default_options[:log_file] }
125
+ it { fluentd.config_file == fluentd.agent.class.default_options[:config_file] }
126
+ end
127
+ end
128
+ end
129
+
130
+ describe "#agent" do
131
+ before { fluentd.variant = variant }
132
+ subject { fluentd.agent }
133
+
134
+ context "fluentd_gem" do
135
+ let(:variant) { "fluentd_gem" }
136
+ it { should be_instance_of(Fluentd::Agent::FluentdGem) }
137
+ end
138
+
139
+ context "td-agent" do
140
+ let(:variant) { "td-agent" }
141
+ it { should be_instance_of(Fluentd::Agent::TdAgent) }
142
+ end
143
+ end
144
+
145
+ describe "#ensure_default_config_file" do
146
+ subject do
147
+ skip "Circle CI file operations are unstable :(" if ENV["CIRCLECI"]
148
+
149
+ fluentd.config_file = config_file
150
+ fluentd.save
151
+ fluentd.config_file
152
+ end
153
+
154
+ let(:config_file) { Rails.root + "tmp/test.conf" }
155
+
156
+ context "doesn't exists" do
157
+ before { File.unlink(config_file) if File.exist?(config_file) }
158
+ it { File.exist?(subject).should be_truthy }
159
+ end
160
+
161
+ context "already exists" do
162
+ before { FileUtils.touch(config_file) }
163
+ it { File.exist?(subject).should be_truthy }
164
+ end
165
+ end
166
+ end