naf 1.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.
Files changed (295) hide show
  1. data/.gitignore +16 -0
  2. data/.rspec +1 -0
  3. data/.travis.yml +17 -0
  4. data/Gemfile +17 -0
  5. data/LICENSE +2 -0
  6. data/README.rdoc +22 -0
  7. data/RELEASE_NOTES.rdoc +18 -0
  8. data/Rakefile +43 -0
  9. data/app/assets/images/bg-grad.png +0 -0
  10. data/app/assets/images/clock.png +0 -0
  11. data/app/assets/images/control_play_blue.png +0 -0
  12. data/app/assets/images/down_arrow.gif +0 -0
  13. data/app/assets/images/papertrail_job.png +0 -0
  14. data/app/assets/images/papertrail_machine.png +0 -0
  15. data/app/assets/images/papertrail_machine_runner.png +0 -0
  16. data/app/assets/images/terminate.png +0 -0
  17. data/app/assets/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  18. data/app/assets/images/ui-bg_flat_0_ffffff_40x100.png +0 -0
  19. data/app/assets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  20. data/app/assets/images/ui-bg_glass_0_f4f4f4_1x400.png +0 -0
  21. data/app/assets/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  22. data/app/assets/images/ui-bg_glass_65_f4f4f4_1x400.png +0 -0
  23. data/app/assets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  24. data/app/assets/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  25. data/app/assets/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  26. data/app/assets/images/ui-bg_glass_75_f4f4f4_1x400.png +0 -0
  27. data/app/assets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  28. data/app/assets/images/ui-bg_highlight-soft_0_f4f4f4_1x100.png +0 -0
  29. data/app/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  30. data/app/assets/images/ui-icons_222222_256x240.png +0 -0
  31. data/app/assets/images/ui-icons_2e83ff_256x240.png +0 -0
  32. data/app/assets/images/ui-icons_454545_256x240.png +0 -0
  33. data/app/assets/images/ui-icons_888888_256x240.png +0 -0
  34. data/app/assets/images/ui-icons_cd0a0a_256x240.png +0 -0
  35. data/app/assets/images/up_arrow.gif +0 -0
  36. data/app/assets/javascripts/dataTablesTemplates/applications.js +94 -0
  37. data/app/assets/javascripts/dataTablesTemplates/jobs.js +163 -0
  38. data/app/assets/javascripts/dataTablesTemplates/machine_runner_invocations.js +60 -0
  39. data/app/assets/javascripts/dataTablesTemplates/machine_runners.js +82 -0
  40. data/app/assets/javascripts/dataTablesTemplates/machines.js +93 -0
  41. data/app/assets/javascripts/date.js +104 -0
  42. data/app/assets/javascripts/iso8601.js +41 -0
  43. data/app/assets/javascripts/jquery.dataTables.custom.js +62 -0
  44. data/app/assets/javascripts/jquery.dataTables.js +6862 -0
  45. data/app/assets/javascripts/naf.js +30 -0
  46. data/app/assets/javascripts/underscore.js +713 -0
  47. data/app/assets/stylesheets/jquery_ui/jquery-ui-1.8.5.custom.css.erb +572 -0
  48. data/app/assets/stylesheets/min_naf.css +14 -0
  49. data/app/assets/stylesheets/min_naf/layout.css.scss +355 -0
  50. data/app/assets/stylesheets/naf.css +14 -0
  51. data/app/assets/stylesheets/naf/layout.css.scss +497 -0
  52. data/app/controllers/naf/affinities_controller.rb +61 -0
  53. data/app/controllers/naf/application_controller.rb +43 -0
  54. data/app/controllers/naf/application_schedule_affinity_tabs_controller.rb +75 -0
  55. data/app/controllers/naf/applications_controller.rb +153 -0
  56. data/app/controllers/naf/historical_job_affinity_tabs_controller.rb +65 -0
  57. data/app/controllers/naf/historical_jobs_controller.rb +159 -0
  58. data/app/controllers/naf/janitorial_assignments_controller.rb +77 -0
  59. data/app/controllers/naf/logger_names_controller.rb +58 -0
  60. data/app/controllers/naf/logger_styles_controller.rb +59 -0
  61. data/app/controllers/naf/machine_affinity_slots_controller.rb +69 -0
  62. data/app/controllers/naf/machine_runner_invocations_controller.rb +59 -0
  63. data/app/controllers/naf/machine_runners_controller.rb +26 -0
  64. data/app/controllers/naf/machines_controller.rb +95 -0
  65. data/app/helpers/naf/application_helper.rb +275 -0
  66. data/app/models/log4r/papertrail_outputter.rb +19 -0
  67. data/app/models/logical/naf/application.rb +183 -0
  68. data/app/models/logical/naf/construction_zone/ad_hoc_work_order.rb +22 -0
  69. data/app/models/logical/naf/construction_zone/application_schedule_work_order.rb +15 -0
  70. data/app/models/logical/naf/construction_zone/application_work_order.rb +25 -0
  71. data/app/models/logical/naf/construction_zone/boss.rb +123 -0
  72. data/app/models/logical/naf/construction_zone/foreman.rb +53 -0
  73. data/app/models/logical/naf/construction_zone/proletariat.rb +40 -0
  74. data/app/models/logical/naf/construction_zone/work_order.rb +100 -0
  75. data/app/models/logical/naf/create_infrastructure.rb +48 -0
  76. data/app/models/logical/naf/job.rb +357 -0
  77. data/app/models/logical/naf/job_creator.rb +155 -0
  78. data/app/models/logical/naf/job_fetcher.rb +167 -0
  79. data/app/models/logical/naf/job_statuses/errored.rb +27 -0
  80. data/app/models/logical/naf/job_statuses/finished.rb +26 -0
  81. data/app/models/logical/naf/job_statuses/finished_less_minute.rb +25 -0
  82. data/app/models/logical/naf/job_statuses/queued.rb +32 -0
  83. data/app/models/logical/naf/job_statuses/running.rb +34 -0
  84. data/app/models/logical/naf/job_statuses/terminated.rb +25 -0
  85. data/app/models/logical/naf/job_statuses/waiting.rb +43 -0
  86. data/app/models/logical/naf/machine.rb +85 -0
  87. data/app/models/logical/naf/machine_runner.rb +46 -0
  88. data/app/models/logical/naf/machine_runner_invocation.rb +50 -0
  89. data/app/models/logical/naf/pickler.rb +74 -0
  90. data/app/models/logical/naf/unpickler.rb +98 -0
  91. data/app/models/naf/affinity.rb +145 -0
  92. data/app/models/naf/affinity_classification.rb +44 -0
  93. data/app/models/naf/application.rb +100 -0
  94. data/app/models/naf/application_run_group_restriction.rb +39 -0
  95. data/app/models/naf/application_schedule.rb +181 -0
  96. data/app/models/naf/application_schedule_affinity_tab.rb +86 -0
  97. data/app/models/naf/application_schedule_prerequisite.rb +50 -0
  98. data/app/models/naf/application_type.rb +72 -0
  99. data/app/models/naf/by_historical_job_id.rb +86 -0
  100. data/app/models/naf/historical_job.rb +334 -0
  101. data/app/models/naf/historical_job_affinity_tab.rb +61 -0
  102. data/app/models/naf/historical_job_prerequisite.rb +19 -0
  103. data/app/models/naf/janitorial_archive_assignment.rb +36 -0
  104. data/app/models/naf/janitorial_assignment.rb +37 -0
  105. data/app/models/naf/janitorial_create_assignment.rb +36 -0
  106. data/app/models/naf/janitorial_drop_assignment.rb +36 -0
  107. data/app/models/naf/logger_level.rb +21 -0
  108. data/app/models/naf/logger_name.rb +23 -0
  109. data/app/models/naf/logger_style.rb +58 -0
  110. data/app/models/naf/logger_style_name.rb +28 -0
  111. data/app/models/naf/machine.rb +257 -0
  112. data/app/models/naf/machine_affinity_slot.rb +78 -0
  113. data/app/models/naf/machine_runner.rb +51 -0
  114. data/app/models/naf/machine_runner_invocation.rb +71 -0
  115. data/app/models/naf/naf_base.rb +9 -0
  116. data/app/models/naf/queued_job.rb +164 -0
  117. data/app/models/naf/running_job.rb +80 -0
  118. data/app/models/process/naf/application.rb +164 -0
  119. data/app/models/process/naf/janitor.rb +117 -0
  120. data/app/models/process/naf/machine_manager.rb +150 -0
  121. data/app/models/process/naf/machine_upgrader.rb +112 -0
  122. data/app/models/process/naf/runner.rb +539 -0
  123. data/app/views/naf/affinities/_form.html.erb +50 -0
  124. data/app/views/naf/affinities/edit.html.erb +11 -0
  125. data/app/views/naf/affinities/index.html.erb +57 -0
  126. data/app/views/naf/affinities/new.html.erb +15 -0
  127. data/app/views/naf/affinities/show.html.erb +48 -0
  128. data/app/views/naf/application_schedule_affinity_tabs/_form.html.erb +31 -0
  129. data/app/views/naf/application_schedule_affinity_tabs/edit.html.erb +12 -0
  130. data/app/views/naf/application_schedule_affinity_tabs/new.html.erb +11 -0
  131. data/app/views/naf/applications/_application_schedule.html.erb +80 -0
  132. data/app/views/naf/applications/_application_schedule_prerequisites.html.erb +14 -0
  133. data/app/views/naf/applications/_form.html.erb +109 -0
  134. data/app/views/naf/applications/_search_container.html.erb +94 -0
  135. data/app/views/naf/applications/_show.html.erb +34 -0
  136. data/app/views/naf/applications/edit.html.erb +11 -0
  137. data/app/views/naf/applications/index.html.erb +51 -0
  138. data/app/views/naf/applications/index.json.erb +11 -0
  139. data/app/views/naf/applications/new.html.erb +11 -0
  140. data/app/views/naf/applications/show.html.erb +203 -0
  141. data/app/views/naf/datatable.html.erb +49 -0
  142. data/app/views/naf/historical_job_affinity_tabs/_form.html.erb +36 -0
  143. data/app/views/naf/historical_job_affinity_tabs/edit.html.erb +11 -0
  144. data/app/views/naf/historical_job_affinity_tabs/new.html.erb +11 -0
  145. data/app/views/naf/historical_jobs/_form.html.erb +94 -0
  146. data/app/views/naf/historical_jobs/_runners.html.erb +22 -0
  147. data/app/views/naf/historical_jobs/_search_container.html.erb +140 -0
  148. data/app/views/naf/historical_jobs/edit.html.erb +11 -0
  149. data/app/views/naf/historical_jobs/index.html.erb +48 -0
  150. data/app/views/naf/historical_jobs/index.json.erb +26 -0
  151. data/app/views/naf/historical_jobs/new.html.erb +61 -0
  152. data/app/views/naf/historical_jobs/show.html.erb +201 -0
  153. data/app/views/naf/janitorial_assignments/_form.html.erb +38 -0
  154. data/app/views/naf/janitorial_assignments/_rows.html.erb +17 -0
  155. data/app/views/naf/janitorial_assignments/edit.html.erb +11 -0
  156. data/app/views/naf/janitorial_assignments/index.html.erb +56 -0
  157. data/app/views/naf/janitorial_assignments/index.js.erb +1 -0
  158. data/app/views/naf/janitorial_assignments/new.html.erb +11 -0
  159. data/app/views/naf/layouts/jquery_datatables.json.erb +6 -0
  160. data/app/views/naf/logger_names/_form.html.erb +18 -0
  161. data/app/views/naf/logger_names/edit.html.erb +11 -0
  162. data/app/views/naf/logger_names/new.html.erb +11 -0
  163. data/app/views/naf/logger_names/show.html.erb +44 -0
  164. data/app/views/naf/logger_styles/_form.html.erb +30 -0
  165. data/app/views/naf/logger_styles/_logger_style_names.html.erb +19 -0
  166. data/app/views/naf/logger_styles/edit.html.erb +11 -0
  167. data/app/views/naf/logger_styles/new.html.erb +11 -0
  168. data/app/views/naf/logger_styles/show.html.erb +48 -0
  169. data/app/views/naf/machine_affinity_slots/_form.html.erb +36 -0
  170. data/app/views/naf/machine_affinity_slots/edit.html.erb +11 -0
  171. data/app/views/naf/machine_affinity_slots/new.html.erb +11 -0
  172. data/app/views/naf/machine_runner_invocations/_filter.html.erb +21 -0
  173. data/app/views/naf/machine_runner_invocations/index.html.erb +36 -0
  174. data/app/views/naf/machine_runner_invocations/index.json.erb +16 -0
  175. data/app/views/naf/machine_runner_invocations/show.html.erb +91 -0
  176. data/app/views/naf/machine_runners/index.html.erb +82 -0
  177. data/app/views/naf/machine_runners/index.json.erb +16 -0
  178. data/app/views/naf/machine_runners/show.html.erb +113 -0
  179. data/app/views/naf/machines/_filter.html.erb +26 -0
  180. data/app/views/naf/machines/_form.html.erb +62 -0
  181. data/app/views/naf/machines/_show.html.erb +169 -0
  182. data/app/views/naf/machines/edit.html.erb +11 -0
  183. data/app/views/naf/machines/index.html.erb +51 -0
  184. data/app/views/naf/machines/index.json.erb +23 -0
  185. data/app/views/naf/machines/new.html.erb +11 -0
  186. data/app/views/naf/machines/show.html.erb +92 -0
  187. data/app/views/naf/record.html.erb +46 -0
  188. data/app/views/naf/shared/_application.html.erb +50 -0
  189. data/app/views/naf/shared/_information_container.html.erb +19 -0
  190. data/app/views/naf/shared/_select_per_page.html.erb +72 -0
  191. data/ci/test-build.sh +17 -0
  192. data/ci/travis.sh +26 -0
  193. data/config/initializers/naf.rb +3 -0
  194. data/config/routes.rb +38 -0
  195. data/db/migrate/20120820023848_naf_schema.rb +413 -0
  196. data/doc/README_FOR_APP +2 -0
  197. data/lib/generators/naf_generator.rb +45 -0
  198. data/lib/generators/templates/config/logging/af.yml +26 -0
  199. data/lib/generators/templates/config/logging/naf.yml +22 -0
  200. data/lib/generators/templates/config/logging/nafjob.yml +16 -0
  201. data/lib/generators/templates/config/logging/nafrunner.yml +17 -0
  202. data/lib/generators/templates/naf.rb +11 -0
  203. data/lib/generators/templates/naf_layout.html.erb +15 -0
  204. data/lib/naf.rb +48 -0
  205. data/lib/naf/configuration.rb +23 -0
  206. data/lib/naf/engine.rb +18 -0
  207. data/lib/naf/version.rb +3 -0
  208. data/lib/tasks/naf_tasks.rake +370 -0
  209. data/naf.gemspec +30 -0
  210. data/script/rails +10 -0
  211. data/spec/controllers/naf/affinities_controller_spec.rb +79 -0
  212. data/spec/controllers/naf/application_controller_spec.rb +10 -0
  213. data/spec/controllers/naf/application_schedule_affinity_tabs_controller_spec.rb +106 -0
  214. data/spec/controllers/naf/applications_controller_spec.rb +109 -0
  215. data/spec/controllers/naf/historical_job_affinity_tabs_controller_spec.rb +96 -0
  216. data/spec/controllers/naf/historical_jobs_controller_spec.rb +19 -0
  217. data/spec/controllers/naf/machine_affinity_slots_controller_spec.rb +109 -0
  218. data/spec/controllers/naf/machines_controller_spec.rb +74 -0
  219. data/spec/dummy/.gitignore +12 -0
  220. data/spec/dummy/README +19 -0
  221. data/spec/dummy/Rakefile +7 -0
  222. data/spec/dummy/app/assets/javascripts/application.js +16 -0
  223. data/spec/dummy/app/assets/stylesheets/application.css +14 -0
  224. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  225. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  226. data/spec/dummy/app/models/my_script.rb +8 -0
  227. data/spec/dummy/app/models/other/base.rb.sample +10 -0
  228. data/spec/dummy/app/views/layouts/application.html.erb +15 -0
  229. data/spec/dummy/app/views/layouts/naf_layout.html.erb +15 -0
  230. data/spec/dummy/config.ru +4 -0
  231. data/spec/dummy/config/application.rb +62 -0
  232. data/spec/dummy/config/boot.rb +10 -0
  233. data/spec/dummy/config/database-non_primary.yml +20 -0
  234. data/spec/dummy/config/database-primary.yml +16 -0
  235. data/spec/dummy/config/environment.rb +5 -0
  236. data/spec/dummy/config/environments/development.rb +37 -0
  237. data/spec/dummy/config/environments/production.rb +67 -0
  238. data/spec/dummy/config/environments/test.rb +37 -0
  239. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  240. data/spec/dummy/config/initializers/inflections.rb +15 -0
  241. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  242. data/spec/dummy/config/initializers/naf.rb.non_primary +4 -0
  243. data/spec/dummy/config/initializers/naf.rb.primary +3 -0
  244. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  245. data/spec/dummy/config/initializers/session_store.rb +8 -0
  246. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  247. data/spec/dummy/config/locales/en.yml +5 -0
  248. data/spec/dummy/config/logging/af.yml +26 -0
  249. data/spec/dummy/config/logging/naf.yml +22 -0
  250. data/spec/dummy/config/logging/nafjob.yml +16 -0
  251. data/spec/dummy/config/logging/nafrunner.yml +17 -0
  252. data/spec/dummy/config/routes.rb +5 -0
  253. data/spec/dummy/db/.gitignore +2 -0
  254. data/spec/dummy/lib/tasks/dummy.rake +60 -0
  255. data/spec/dummy/public/404.html +26 -0
  256. data/spec/dummy/public/422.html +26 -0
  257. data/spec/dummy/public/500.html +25 -0
  258. data/spec/dummy/public/favicon.ico +0 -0
  259. data/spec/dummy/script/rails +6 -0
  260. data/spec/factories/naf.rb +433 -0
  261. data/spec/helpers/naf/application_helper_spec.rb +0 -0
  262. data/spec/models/logical/naf/application_spec.rb +69 -0
  263. data/spec/models/logical/naf/job_creator_spec.rb +32 -0
  264. data/spec/models/logical/naf/job_fetcher_spec.rb +140 -0
  265. data/spec/models/logical/naf/job_spec.rb +282 -0
  266. data/spec/models/logical/naf/machine_spec.rb +61 -0
  267. data/spec/models/naf/affinity_classification_spec.rb +56 -0
  268. data/spec/models/naf/affinity_spec.rb +100 -0
  269. data/spec/models/naf/application_run_group_restriction_spec.rb +57 -0
  270. data/spec/models/naf/application_schedule_affinity_tab_spec.rb +85 -0
  271. data/spec/models/naf/application_schedule_prerequisite_spec.rb +35 -0
  272. data/spec/models/naf/application_schedule_spec.rb +166 -0
  273. data/spec/models/naf/application_spec.rb +128 -0
  274. data/spec/models/naf/application_type_spec.rb +104 -0
  275. data/spec/models/naf/historical_job_affinity_tab_spec.rb +59 -0
  276. data/spec/models/naf/historical_job_prerequisite_spec.rb +25 -0
  277. data/spec/models/naf/historical_job_spec.rb +334 -0
  278. data/spec/models/naf/logger_level_spec.rb +34 -0
  279. data/spec/models/naf/logger_name_spec.rb +35 -0
  280. data/spec/models/naf/logger_style_name_spec.rb +39 -0
  281. data/spec/models/naf/logger_style_spec.rb +89 -0
  282. data/spec/models/naf/machine_affinity_slot_spec.rb +77 -0
  283. data/spec/models/naf/machine_runner_invocation_spec.rb +38 -0
  284. data/spec/models/naf/machine_runner_spec.rb +37 -0
  285. data/spec/models/naf/machine_spec.rb +425 -0
  286. data/spec/models/naf/naf_base_spec.rb +14 -0
  287. data/spec/models/naf/queued_job_spec.rb +171 -0
  288. data/spec/models/naf/running_job_spec.rb +107 -0
  289. data/spec/models/process/naf/application_spec.rb +8 -0
  290. data/spec/models/process/naf/janitor_spec.rb +10 -0
  291. data/spec/models/process/naf/runner_spec.rb +10 -0
  292. data/spec/spec_helper.rb +32 -0
  293. data/spec/support/engine_routing.rb +27 -0
  294. data/spec/support/script_spec_helper.rb +58 -0
  295. metadata +590 -0
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,433 @@
1
+ require 'factory_girl'
2
+
3
+ FactoryGirl.define do
4
+
5
+ #############################################################
6
+ ####### Jobs #############################################
7
+ #############################################################
8
+
9
+ factory :job_base, class: ::Naf::HistoricalJob do
10
+ association :application_type, factory: :rails_app_type
11
+ association :application_run_group_restriction, factory: :no_limit
12
+ end
13
+
14
+ factory :job, parent: :job_base do
15
+ command "::Naf::HistoricalJob.test hello world"
16
+ sequence(:application_run_group_name) { |n| "Run Group #{n}" }
17
+ end
18
+
19
+ factory :queued_job, class: ::Naf::QueuedJob do
20
+ association :historical_job, factory: :job
21
+ association :application_type, factory: :rails_app_type
22
+ association :application_run_group_restriction, factory: :no_limit
23
+ command "::Naf::QueuedJob.test hello world"
24
+ end
25
+
26
+ factory :running_job_base, class: ::Naf::RunningJob do
27
+ association :historical_job, factory: :job
28
+ association :started_on_machine, factory: :machine
29
+ association :application_type, factory: :rails_app_type
30
+ association :application_run_group_restriction, factory: :no_limit
31
+ command "::Naf::RunningJob.test hello world"
32
+ end
33
+
34
+ factory :scheduled_job, parent: :job do
35
+ association :application, factory: :scheduled_application
36
+ end
37
+
38
+ factory :job_picked_by_machine, parent: :job do
39
+ association :started_on_machine, factory: :machine
40
+ end
41
+
42
+ factory :failed_to_start_job, parent: :job_picked_by_machine do
43
+ failed_to_start true
44
+ end
45
+
46
+ factory :running_job, parent: :job_picked_by_machine do
47
+ started_at Time.zone.now
48
+ end
49
+
50
+ factory :terminating_job, parent: :running_job do
51
+ request_to_terminate true
52
+ finished_at nil
53
+ end
54
+
55
+ factory :canceled_job, parent: :running_job do
56
+ request_to_terminate true
57
+ finished_at Time.zone.now
58
+ end
59
+
60
+ factory :finished_job, parent: :job_picked_by_machine do
61
+ started_at Time.zone.now - 3.minutes
62
+ finished_at Time.zone.now
63
+ exit_status 0
64
+ end
65
+
66
+ factory :job_with_error, parent: :finished_job do
67
+ exit_status 1
68
+ end
69
+
70
+ factory :job_with_signal, parent: :job_picked_by_machine do
71
+ termination_signal 1
72
+ end
73
+
74
+ factory :stale_job, parent: :job_picked_by_machine do
75
+ created_at Time.zone.now - 1.week - 3.days - 5.minutes
76
+ started_at Time.zone.now - 1.week - 3.days - 3.minutes
77
+ finished_at Time.zone.now - 1.week - 3.days
78
+ end
79
+
80
+ factory :scheduled_picked_job, parent: :job_picked_by_machine do
81
+ association :application, factory: :scheduled_application
82
+ end
83
+
84
+ factory :scheduled_running_job, parent: :scheduled_picked_job do
85
+ started_at Time.zone.now
86
+ end
87
+
88
+ factory :scheduled_finished_job, parent: :scheduled_picked_job do
89
+ started_at Time.zone.now - 3.minutes
90
+ finished_at Time.zone.now
91
+ end
92
+
93
+ factory :historical_job_prerequesite, class: ::Naf::HistoricalJobPrerequisite do
94
+ association :historical_job, factory: :job
95
+ association :prerequisite_historical_job, factory: :job
96
+ end
97
+
98
+ #############################################################
99
+ ####### Machines #########################################
100
+ #############################################################
101
+
102
+ factory :machine_base, class: ::Naf::Machine do
103
+ sequence(:short_name) { |n| "short_name#{n}" }
104
+ end
105
+
106
+ factory :machine, parent: :machine_base do
107
+ id 1
108
+ server_address "0.0.0.1"
109
+ initialize_with do
110
+ ::Naf::Machine.find_or_initialize_by_id(id)
111
+ end
112
+ end
113
+
114
+ factory :machine_two, parent: :machine_base do
115
+ id 2
116
+ server_address "0.0.0.2"
117
+ initialize_with do
118
+ ::Naf::Machine.find_or_initialize_by_id(id)
119
+ end
120
+ end
121
+
122
+ #############################################################
123
+ ####### Machine Runners ##################################
124
+ #############################################################
125
+
126
+ factory :machine_runner, class: ::Naf::MachineRunner do
127
+ association :machine, factory: :machine
128
+ sequence(:runner_cwd) { |n| "/proc/1/#{n}" }
129
+ end
130
+
131
+ #############################################################
132
+ ####### Machine Runner Invocations #######################
133
+ #############################################################
134
+
135
+ factory :machine_runner_invocation, class: ::Naf::MachineRunnerInvocation do
136
+ association :machine_runner, factory: :machine_runner
137
+ sequence(:pid) { |n| n }
138
+ commit_information '123456'
139
+ branch_name 'branch'
140
+ repository_name 'app/example'
141
+ deployment_tag "20130101_1200"
142
+ end
143
+
144
+ #############################################################
145
+ ####### Applications ######################################
146
+ #############################################################
147
+
148
+ factory :application_base, class: ::Naf::Application do
149
+ association :application_type, factory: :rails_app_type
150
+ sequence(:short_name) { |n| "short_name#{n}" }
151
+ end
152
+
153
+ factory :application, parent: :application_base do
154
+ sequence(:command) { |n| "::Naf::HistoricalJob.test hello_#{n}" }
155
+ sequence(:title) { |n| "Test #{n}" }
156
+ end
157
+
158
+ factory :scheduled_application, parent: :application do
159
+ association :application_schedule, factory: :schedule
160
+ end
161
+
162
+ #############################################################
163
+ ####### Application Schedules ############ ################
164
+ #############################################################
165
+
166
+ factory :schedule_base, class: ::Naf::ApplicationSchedule do
167
+ association :application, factory: :application
168
+ association :application_run_group_restriction, factory: :no_limit
169
+ end
170
+
171
+ factory :schedule, parent: :schedule_base do
172
+ run_interval 1
173
+ sequence(:application_run_group_name) { |n| "Run Group #{n}" }
174
+ end
175
+
176
+ factory :schedule_at_time, parent: :schedule do
177
+ run_interval nil
178
+ run_start_minute 5
179
+ end
180
+
181
+ #############################################################
182
+ ####### Application Schedules ############ ################
183
+ #############################################################
184
+
185
+ factory :schedule_prerequisite, class: ::Naf::ApplicationSchedulePrerequisite do
186
+ association :application_schedule, factory: :schedule
187
+ association :prerequisite_application_schedule, factory: :schedule
188
+ end
189
+
190
+ #############################################################
191
+ ####### Application Run Group Restrictions ################
192
+ #############################################################
193
+
194
+ factory :no_limit, class: ::Naf::ApplicationRunGroupRestriction do
195
+ id 1
196
+ application_run_group_restriction_name "no limit"
197
+ # Ensure single creation
198
+ initialize_with do
199
+ ::Naf::ApplicationRunGroupRestriction.find_or_initialize_by_id(id)
200
+ end
201
+ end
202
+
203
+ factory :limited_per_machine, class: ::Naf::ApplicationRunGroupRestriction do
204
+ id 2
205
+ application_run_group_restriction_name "limited per machine"
206
+ # Ensure single creation
207
+ initialize_with do
208
+ ::Naf::ApplicationRunGroupRestriction.find_or_initialize_by_id(id)
209
+ end
210
+ end
211
+
212
+ factory :limited_per_all_machines, class: ::Naf::ApplicationRunGroupRestriction do
213
+ id 3
214
+ application_run_group_restriction_name "limited per all machines"
215
+ # Ensure single creation
216
+ initialize_with do
217
+ ::Naf::ApplicationRunGroupRestriction.find_or_initialize_by_id(id)
218
+ end
219
+ end
220
+
221
+ #############################################################
222
+ ####### Application Types #################################
223
+ #############################################################
224
+
225
+ factory :rails_app_type, class: ::Naf::ApplicationType do
226
+ id 1
227
+ script_type_name "rails"
228
+ description "ruby on rails NAF application"
229
+ invocation_method "rails_invocator"
230
+ # Ensure single creation
231
+ initialize_with do
232
+ ::Naf::ApplicationType.find_or_initialize_by_id(id)
233
+ end
234
+ end
235
+
236
+ factory :bash_command_app_type, class: ::Naf::ApplicationType do
237
+ id 2
238
+ script_type_name "bash command"
239
+ description "bash command"
240
+ invocation_method "bash_command_invocator"
241
+ # Ensure single creation
242
+ initialize_with do
243
+ ::Naf::ApplicationType.find_or_initialize_by_id(id)
244
+ end
245
+ end
246
+
247
+ factory :bash_script_app_type, class: ::Naf::ApplicationType do
248
+ id 3
249
+ script_type_name "bash script"
250
+ description "bash script"
251
+ invocation_method "bash_script_invocator"
252
+ # Ensure single creation
253
+ initialize_with do
254
+ ::Naf::ApplicationType.find_or_initialize_by_id(id)
255
+ end
256
+ end
257
+
258
+ factory :ruby_script_app_type, class: ::Naf::ApplicationType do
259
+ id 4
260
+ script_type_name "ruby"
261
+ description "ruby script"
262
+ invocation_method "ruby_script_invocator"
263
+ # Ensure single creation
264
+ initialize_with do
265
+ ::Naf::ApplicationType.find_or_initialize_by_id(id)
266
+ end
267
+ end
268
+
269
+ #############################################################
270
+ ####### Affinities ###################################
271
+ #############################################################
272
+
273
+ factory :normal_affinity, class: ::Naf::Affinity do
274
+ id 1
275
+ association :affinity_classification, factory: :purpose_affinity_classification
276
+ affinity_name "normal"
277
+ affinity_short_name "short_name"
278
+ # Ensure single creation
279
+ initialize_with do
280
+ ::Naf::Affinity.find_or_initialize_by_id(id)
281
+ end
282
+ end
283
+
284
+ factory :canary_affinity, class: ::Naf::Affinity do
285
+ id 2
286
+ association :affinity_classification, factory: :purpose_affinity_classification
287
+ affinity_name "canary"
288
+ # Ensure single creation
289
+ initialize_with do
290
+ ::Naf::Affinity.find_or_initialize_by_id(id)
291
+ end
292
+ end
293
+
294
+ factory :perennial_affinity, class: ::Naf::Affinity do
295
+ id 3
296
+ association :affinity_classification, factory: :purpose_affinity_classification
297
+ affinity_name "perennial"
298
+ # Ensure single creation
299
+ initialize_with do
300
+ ::Naf::Affinity.find_or_initialize_by_id(id)
301
+ end
302
+ end
303
+
304
+ factory :affinity, class: ::Naf::Affinity do
305
+ association :affinity_classification, factory: :purpose_affinity_classification
306
+ sequence(:affinity_name) do |n|
307
+ "Affinity #{n}"
308
+ end
309
+ end
310
+
311
+ #############################################################
312
+ ####### Affinity Classifications #########################
313
+ #############################################################
314
+
315
+ factory :location_affinity_classification, class: ::Naf::AffinityClassification do
316
+ id 1
317
+ affinity_classification_name "location"
318
+ initialize_with do
319
+ ::Naf::AffinityClassification.find_or_initialize_by_id(id)
320
+ end
321
+ end
322
+
323
+ factory :purpose_affinity_classification, class: ::Naf::AffinityClassification do
324
+ id 2
325
+ affinity_classification_name "purpose"
326
+ initialize_with do
327
+ ::Naf::AffinityClassification.find_or_initialize_by_id(id)
328
+ end
329
+ end
330
+
331
+ factory :application_affinity_classification, class: ::Naf::AffinityClassification do
332
+ id 3
333
+ affinity_classification_name "application"
334
+ initialize_with do
335
+ ::Naf::AffinityClassification.find_or_initialize_by_id(id)
336
+ end
337
+ end
338
+
339
+ #############################################################
340
+ ####### Affinity Tabs and Slots #########################
341
+ #############################################################
342
+
343
+ # Job Affinity Tabs
344
+
345
+ factory :job_affinity_tab_base, class: ::Naf::HistoricalJobAffinityTab do
346
+ association :historical_job, factory: :job
347
+ end
348
+
349
+ factory :normal_job_affinity_tab, parent: :job_affinity_tab_base do
350
+ association :affinity, factory: :normal_affinity
351
+ end
352
+
353
+ factory :perennial_job_affinity_tab, parent: :job_affinity_tab_base do
354
+ association :affinity, factory: :perennial_affinity
355
+ end
356
+
357
+ factory :canary_job_affinity_tab, parent: :job_affinity_tab_base do
358
+ association :affinity, factory: :canary_affinity
359
+ end
360
+
361
+ # Application Schedule Affinity Tabs
362
+
363
+ factory :app_schedule_affinity_tab_base, class: ::Naf::ApplicationScheduleAffinityTab do
364
+ association :application_schedule, factory: :schedule
365
+ end
366
+
367
+ factory :normal_app_schedule_affinity_tab, parent: :app_schedule_affinity_tab_base do
368
+ association :affinity, factory: :normal_affinity
369
+ end
370
+
371
+ factory :canary_app_schedule_affinity_tab, parent: :app_schedule_affinity_tab_base do
372
+ association :affinity, factory: :canary_affinity
373
+ end
374
+
375
+ # Machine Affinity Slots
376
+
377
+ factory :machine_affinity_slot_base, class: ::Naf::MachineAffinitySlot do
378
+ association :machine, factory: :machine
379
+ end
380
+
381
+ factory :normal_machine_affinity_slot, parent: :machine_affinity_slot_base do
382
+ association :affinity, factory: :normal_affinity
383
+ end
384
+
385
+ factory :required_perennial_slot, parent: :machine_affinity_slot_base do
386
+ association :affinity, factory: :perennial_affinity
387
+ required true
388
+ end
389
+
390
+ factory :canary_slot, parent: :machine_affinity_slot_base do
391
+ association :affinity, factory: :canary_affinity
392
+ end
393
+
394
+ factory :required_canary_slot, parent: :machine_affinity_slot_base do
395
+ association :affinity, factory: :canary_affinity
396
+ required true
397
+ end
398
+
399
+ ##################################################
400
+ ####### Logger Level #########################
401
+ ##################################################
402
+
403
+ factory :logger_level, class: ::Naf::LoggerLevel do
404
+ sequence(:level) { |n| "level#{n}" }
405
+ end
406
+
407
+ #################################################
408
+ ####### Logger Name #########################
409
+ #################################################
410
+
411
+ factory :logger_name, class: ::Naf::LoggerName do
412
+ sequence(:name) { |n| "name#{n}" }
413
+ end
414
+
415
+ ##################################################
416
+ ####### Logger Style #########################
417
+ ##################################################
418
+
419
+ factory :logger_style, class: ::Naf::LoggerStyle do
420
+ sequence(:name) { |n| "name#{n}" }
421
+ end
422
+
423
+ ######################################################
424
+ ####### Logger Style Name #########################
425
+ ######################################################
426
+
427
+ factory :logger_style_name, class: ::Naf::LoggerStyleName do
428
+ association :logger_level, factory: :logger_level
429
+ association :logger_name, factory: :logger_name
430
+ association :logger_style, factory: :logger_style
431
+ end
432
+
433
+ end