rhoconnect 3.0.0.beta1

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 (361) hide show
  1. data/CHANGELOG +208 -0
  2. data/CREDITS +38 -0
  3. data/Gemfile +18 -0
  4. data/Gemfile.lock +97 -0
  5. data/LICENSE +75 -0
  6. data/README.md +10 -0
  7. data/Rakefile +82 -0
  8. data/bench/bench +7 -0
  9. data/bench/bench_runner.rb +112 -0
  10. data/bench/benchapp/Gemfile +21 -0
  11. data/bench/benchapp/Gemfile.lock +76 -0
  12. data/bench/benchapp/Rakefile +22 -0
  13. data/bench/benchapp/application.rb +39 -0
  14. data/bench/benchapp/config.ru +36 -0
  15. data/bench/benchapp/settings/license.key +1 -0
  16. data/bench/benchapp/settings/settings.yml +20 -0
  17. data/bench/benchapp/sources/mock_adapter.rb +55 -0
  18. data/bench/benchapp/sources/queue_mock_adapter.rb +2 -0
  19. data/bench/benchapp/spec/sources/mock_adapter_spec.rb +25 -0
  20. data/bench/benchapp/spec/sources/queue_mock_adapter_spec.rb +25 -0
  21. data/bench/benchapp/spec/spec_helper.rb +42 -0
  22. data/bench/blobapp/Gemfile +31 -0
  23. data/bench/blobapp/Gemfile.lock +103 -0
  24. data/bench/blobapp/Rakefile +25 -0
  25. data/bench/blobapp/application.rb +44 -0
  26. data/bench/blobapp/config.ru +36 -0
  27. data/bench/blobapp/settings/license.key +1 -0
  28. data/bench/blobapp/settings/settings.yml +16 -0
  29. data/bench/blobapp/sources/blob_adapter.rb +71 -0
  30. data/bench/blobapp/spec/sources/blob_adapter_spec.rb +25 -0
  31. data/bench/blobapp/spec/spec_helper.rb +42 -0
  32. data/bench/lib/bench/cli.rb +16 -0
  33. data/bench/lib/bench/logging.rb +13 -0
  34. data/bench/lib/bench/mock_client.rb +41 -0
  35. data/bench/lib/bench/result.rb +50 -0
  36. data/bench/lib/bench/runner.rb +107 -0
  37. data/bench/lib/bench/session.rb +67 -0
  38. data/bench/lib/bench/statistics.rb +56 -0
  39. data/bench/lib/bench/test_data.rb +98 -0
  40. data/bench/lib/bench/timer.rb +10 -0
  41. data/bench/lib/bench/utils.rb +49 -0
  42. data/bench/lib/bench.rb +129 -0
  43. data/bench/lib/testdata/100-data.txt +148 -0
  44. data/bench/lib/testdata/5-data.txt +9 -0
  45. data/bench/lib/testdata/images/icon.ico +0 -0
  46. data/bench/lib/testdata/images/icon.png +0 -0
  47. data/bench/lib/testdata/images/loading-Landscape.png +0 -0
  48. data/bench/lib/testdata/images/loading-LandscapeLeft.png +0 -0
  49. data/bench/lib/testdata/images/loading-LandscapeRight.png +0 -0
  50. data/bench/lib/testdata/images/loading-Portrait.png +0 -0
  51. data/bench/lib/testdata/images/loading-PortraitUpsideDown.png +0 -0
  52. data/bench/lib/testdata/images/loading.png +0 -0
  53. data/bench/lib/testdata/images/loading@2x.png +0 -0
  54. data/bench/run_bench.sh +42 -0
  55. data/bench/run_blob_script.sh +3 -0
  56. data/bench/run_cud_script.sh +3 -0
  57. data/bench/run_query_md_script.sh +3 -0
  58. data/bench/run_query_only_script.sh +3 -0
  59. data/bench/run_query_script.sh +3 -0
  60. data/bench/scripts/blob_cud_script.rb +98 -0
  61. data/bench/scripts/cud_script.rb +92 -0
  62. data/bench/scripts/helpers.rb +101 -0
  63. data/bench/scripts/query_md_script.rb +45 -0
  64. data/bench/scripts/query_only_script.rb +51 -0
  65. data/bench/scripts/query_script.rb +45 -0
  66. data/bench/spec/bench_spec_helper.rb +33 -0
  67. data/bench/spec/logging_spec.rb +15 -0
  68. data/bench/spec/mock_adapter_spec.rb +61 -0
  69. data/bench/spec/mock_client_spec.rb +65 -0
  70. data/bench/spec/result_spec.rb +61 -0
  71. data/bench/spec/utils_spec.rb +36 -0
  72. data/bin/rhoconnect +34 -0
  73. data/bin/rhoconnect-setup +84 -0
  74. data/doc/async-jobs.txt +69 -0
  75. data/doc/authentication.txt +76 -0
  76. data/doc/benchmarks.txt +168 -0
  77. data/doc/blob-sync.txt +130 -0
  78. data/doc/bulk-sync.txt +102 -0
  79. data/doc/client.txt +432 -0
  80. data/doc/command-line.txt +210 -0
  81. data/doc/contributing.txt +60 -0
  82. data/doc/deploying.txt +82 -0
  83. data/doc/install.txt +28 -0
  84. data/doc/introduction.txt +20 -0
  85. data/doc/licensing.txt +18 -0
  86. data/doc/metadata.txt +458 -0
  87. data/doc/migration.txt +182 -0
  88. data/doc/public/css/print.css +29 -0
  89. data/doc/public/css/screen.css +257 -0
  90. data/doc/public/css/style.css +20 -0
  91. data/doc/push.txt +135 -0
  92. data/doc/release.txt +41 -0
  93. data/doc/rest-api.txt +367 -0
  94. data/doc/source-adapters.txt +325 -0
  95. data/doc/stats-middleware.txt +69 -0
  96. data/doc/testing.txt +222 -0
  97. data/doc/tutorial.txt +315 -0
  98. data/doc/web-console.txt +35 -0
  99. data/examples/simple/Rakefile +14 -0
  100. data/examples/simple/application.rb +27 -0
  101. data/examples/simple/config.ru +49 -0
  102. data/examples/simple/settings/license.key +1 -0
  103. data/examples/simple/settings/settings.yml +23 -0
  104. data/examples/simple/sources/sample_adapter.rb +5 -0
  105. data/examples/simple/sources/simple_adapter.rb +5 -0
  106. data/generators/rhoconnect.rb +119 -0
  107. data/generators/templates/application/Gemfile +21 -0
  108. data/generators/templates/application/Rakefile +22 -0
  109. data/generators/templates/application/application.rb +39 -0
  110. data/generators/templates/application/config.ru +36 -0
  111. data/generators/templates/application/settings/license.key +1 -0
  112. data/generators/templates/application/settings/settings.yml +14 -0
  113. data/generators/templates/application/spec/spec_helper.rb +42 -0
  114. data/generators/templates/source/source_adapter.rb +47 -0
  115. data/generators/templates/source/source_spec.rb +25 -0
  116. data/install.sh +408 -0
  117. data/installer/unix-like/rho_connect_install_checkers.rb +140 -0
  118. data/installer/unix-like/rho_connect_install_constants.rb +51 -0
  119. data/installer/unix-like/rho_connect_install_debian.rb +63 -0
  120. data/installer/unix-like/rho_connect_install_dnd.rb +58 -0
  121. data/installer/unix-like/rho_connect_install_get_params.rb +30 -0
  122. data/installer/unix-like/rho_connect_install_installers.rb +142 -0
  123. data/installer/unix-like/rho_connect_install_utilities.rb +85 -0
  124. data/installer/unix-like/rho_connect_install_yum.rb +63 -0
  125. data/installer/unix-like/rhoinstaller.rb +89 -0
  126. data/installer/utils/create_texts.rb +366 -0
  127. data/installer/utils/install_test.rb +140 -0
  128. data/installer/windows/EnvVarUpdate.nsh +328 -0
  129. data/installer/windows/ServiceLib.nsh +369 -0
  130. data/installer/windows/configUi.ini +44 -0
  131. data/installer/windows/icon.ico +0 -0
  132. data/installer/windows/rhosync.nsi +418 -0
  133. data/installer/windows/uninstall.bat +7 -0
  134. data/lib/rhoconnect/api/admin/get_api_token.rb +14 -0
  135. data/lib/rhoconnect/api/admin/get_license_info.rb +8 -0
  136. data/lib/rhoconnect/api/admin/login.rb +6 -0
  137. data/lib/rhoconnect/api/admin/reset.rb +10 -0
  138. data/lib/rhoconnect/api/admin/stats.rb +21 -0
  139. data/lib/rhoconnect/api/application/bulk_data.rb +7 -0
  140. data/lib/rhoconnect/api/application/clientcreate.rb +8 -0
  141. data/lib/rhoconnect/api/application/clientlogin.rb +6 -0
  142. data/lib/rhoconnect/api/application/clientregister.rb +6 -0
  143. data/lib/rhoconnect/api/application/clientreset.rb +6 -0
  144. data/lib/rhoconnect/api/application/query.rb +7 -0
  145. data/lib/rhoconnect/api/application/queue_updates.rb +6 -0
  146. data/lib/rhoconnect/api/application/search.rb +6 -0
  147. data/lib/rhoconnect/api/client/create_client.rb +3 -0
  148. data/lib/rhoconnect/api/client/delete_client.rb +5 -0
  149. data/lib/rhoconnect/api/client/get_client_params.rb +3 -0
  150. data/lib/rhoconnect/api/client/list_client_docs.rb +12 -0
  151. data/lib/rhoconnect/api/client/list_clients.rb +3 -0
  152. data/lib/rhoconnect/api/client/ping.rb +7 -0
  153. data/lib/rhoconnect/api/source/get_adapter.rb +3 -0
  154. data/lib/rhoconnect/api/source/get_db_doc.rb +7 -0
  155. data/lib/rhoconnect/api/source/get_source_params.rb +3 -0
  156. data/lib/rhoconnect/api/source/list_source_docs.rb +10 -0
  157. data/lib/rhoconnect/api/source/list_sources.rb +15 -0
  158. data/lib/rhoconnect/api/source/push_deletes.rb +8 -0
  159. data/lib/rhoconnect/api/source/push_objects.rb +8 -0
  160. data/lib/rhoconnect/api/source/save_adapter.rb +3 -0
  161. data/lib/rhoconnect/api/source/set_db_doc.rb +8 -0
  162. data/lib/rhoconnect/api/source/set_refresh_time.rb +8 -0
  163. data/lib/rhoconnect/api/source/upload_file.rb +4 -0
  164. data/lib/rhoconnect/api/user/create_user.rb +7 -0
  165. data/lib/rhoconnect/api/user/delete_user.rb +9 -0
  166. data/lib/rhoconnect/api/user/list_users.rb +3 -0
  167. data/lib/rhoconnect/api/user/update_user.rb +4 -0
  168. data/lib/rhoconnect/api_token.rb +19 -0
  169. data/lib/rhoconnect/app.rb +76 -0
  170. data/lib/rhoconnect/bulk_data/bulk_data.rb +88 -0
  171. data/lib/rhoconnect/bulk_data/syncdb.index.schema +4 -0
  172. data/lib/rhoconnect/bulk_data/syncdb.schema +41 -0
  173. data/lib/rhoconnect/bulk_data.rb +2 -0
  174. data/lib/rhoconnect/client.rb +96 -0
  175. data/lib/rhoconnect/client_sync.rb +412 -0
  176. data/lib/rhoconnect/console/app/helpers/auth_helper.rb +22 -0
  177. data/lib/rhoconnect/console/app/helpers/extensions.rb +19 -0
  178. data/lib/rhoconnect/console/app/helpers/helpers.rb +57 -0
  179. data/lib/rhoconnect/console/app/public/ThickBox.css +649 -0
  180. data/lib/rhoconnect/console/app/public/home.css +438 -0
  181. data/lib/rhoconnect/console/app/public/images/foot_logo_rhoconnect.png +0 -0
  182. data/lib/rhoconnect/console/app/public/images/header_halo.jpg +0 -0
  183. data/lib/rhoconnect/console/app/public/images/land_separator.gif +0 -0
  184. data/lib/rhoconnect/console/app/public/images/landing_header.jpg +0 -0
  185. data/lib/rhoconnect/console/app/public/images/logo_rhoconnect.png +0 -0
  186. data/lib/rhoconnect/console/app/public/images/rhomobile_rhohub_logo.png +0 -0
  187. data/lib/rhoconnect/console/app/public/images/tabs_separator.png +0 -0
  188. data/lib/rhoconnect/console/app/public/jqplot/excanvas.min.js +35 -0
  189. data/lib/rhoconnect/console/app/public/jqplot/jqplot.barRenderer.min.js +34 -0
  190. data/lib/rhoconnect/console/app/public/jqplot/jqplot.canvasAxisLabelRenderer.js +187 -0
  191. data/lib/rhoconnect/console/app/public/jqplot/jqplot.canvasAxisTickRenderer.js +226 -0
  192. data/lib/rhoconnect/console/app/public/jqplot/jqplot.canvasTextRenderer.js +408 -0
  193. data/lib/rhoconnect/console/app/public/jqplot/jqplot.categoryAxisRenderer.min.js +34 -0
  194. data/lib/rhoconnect/console/app/public/jqplot/jqplot.cursor.js +952 -0
  195. data/lib/rhoconnect/console/app/public/jqplot/jqplot.dateAxisRenderer.js +313 -0
  196. data/lib/rhoconnect/console/app/public/jqplot/jqplot.dateAxisRenderer.min.js +34 -0
  197. data/lib/rhoconnect/console/app/public/jqplot/jqplot.pointLabels.min.js +34 -0
  198. data/lib/rhoconnect/console/app/public/jqplot/jquery-1.4.2.min.js +154 -0
  199. data/lib/rhoconnect/console/app/public/jqplot/jquery.jqplot.min.css +1 -0
  200. data/lib/rhoconnect/console/app/public/jqplot/jquery.jqplot.min.js +34 -0
  201. data/lib/rhoconnect/console/app/public/main.css +7 -0
  202. data/lib/rhoconnect/console/app/public/reset.css +76 -0
  203. data/lib/rhoconnect/console/app/public/style.css +2201 -0
  204. data/lib/rhoconnect/console/app/public/text.txt +0 -0
  205. data/lib/rhoconnect/console/app/routes/adapter.rb +28 -0
  206. data/lib/rhoconnect/console/app/routes/auth.rb +29 -0
  207. data/lib/rhoconnect/console/app/routes/client.rb +31 -0
  208. data/lib/rhoconnect/console/app/routes/docs.rb +145 -0
  209. data/lib/rhoconnect/console/app/routes/heroku.rb +19 -0
  210. data/lib/rhoconnect/console/app/routes/home.rb +63 -0
  211. data/lib/rhoconnect/console/app/routes/timing.rb +242 -0
  212. data/lib/rhoconnect/console/app/routes/user.rb +117 -0
  213. data/lib/rhoconnect/console/app/views/adapter.erb +16 -0
  214. data/lib/rhoconnect/console/app/views/client.erb +30 -0
  215. data/lib/rhoconnect/console/app/views/content.erb +14 -0
  216. data/lib/rhoconnect/console/app/views/doc.erb +8 -0
  217. data/lib/rhoconnect/console/app/views/docdata.erb +28 -0
  218. data/lib/rhoconnect/console/app/views/docs.erb +30 -0
  219. data/lib/rhoconnect/console/app/views/edituser.erb +13 -0
  220. data/lib/rhoconnect/console/app/views/headermenu.erb +40 -0
  221. data/lib/rhoconnect/console/app/views/home.erb +24 -0
  222. data/lib/rhoconnect/console/app/views/index.erb +58 -0
  223. data/lib/rhoconnect/console/app/views/jqplot.erb +52 -0
  224. data/lib/rhoconnect/console/app/views/layout.erb +165 -0
  225. data/lib/rhoconnect/console/app/views/login.erb +26 -0
  226. data/lib/rhoconnect/console/app/views/newuser.erb +17 -0
  227. data/lib/rhoconnect/console/app/views/ping.erb +28 -0
  228. data/lib/rhoconnect/console/app/views/result.erb +11 -0
  229. data/lib/rhoconnect/console/app/views/rightboxlinks.erb +15 -0
  230. data/lib/rhoconnect/console/app/views/select_doc.erb +17 -0
  231. data/lib/rhoconnect/console/app/views/upload_doc.erb +23 -0
  232. data/lib/rhoconnect/console/app/views/user.erb +29 -0
  233. data/lib/rhoconnect/console/app/views/users.erb +12 -0
  234. data/lib/rhoconnect/console/rhoconnect_api.rb +245 -0
  235. data/lib/rhoconnect/console/server.rb +32 -0
  236. data/lib/rhoconnect/console.rb +3 -0
  237. data/lib/rhoconnect/cors.rb +229 -0
  238. data/lib/rhoconnect/credential.rb +9 -0
  239. data/lib/rhoconnect/db_adapter.rb +46 -0
  240. data/lib/rhoconnect/document.rb +49 -0
  241. data/lib/rhoconnect/dynamic_adapter.rb +91 -0
  242. data/lib/rhoconnect/generator.rb +1 -0
  243. data/lib/rhoconnect/jobs/bulk_data_job.rb +203 -0
  244. data/lib/rhoconnect/jobs/ping_job.rb +46 -0
  245. data/lib/rhoconnect/jobs/source_job.rb +16 -0
  246. data/lib/rhoconnect/license.rb +86 -0
  247. data/lib/rhoconnect/lock_ops.rb +11 -0
  248. data/lib/rhoconnect/model.rb +414 -0
  249. data/lib/rhoconnect/ping/android.rb +56 -0
  250. data/lib/rhoconnect/ping/apple.rb +52 -0
  251. data/lib/rhoconnect/ping/blackberry.rb +56 -0
  252. data/lib/rhoconnect/ping.rb +3 -0
  253. data/lib/rhoconnect/read_state.rb +31 -0
  254. data/lib/rhoconnect/rho_indifferent_access.rb +88 -0
  255. data/lib/rhoconnect/server/views/index.erb +13 -0
  256. data/lib/rhoconnect/server.rb +286 -0
  257. data/lib/rhoconnect/source.rb +289 -0
  258. data/lib/rhoconnect/source_adapter.rb +123 -0
  259. data/lib/rhoconnect/source_sync.rb +302 -0
  260. data/lib/rhoconnect/stats/middleware.rb +20 -0
  261. data/lib/rhoconnect/stats/record.rb +108 -0
  262. data/lib/rhoconnect/store.rb +232 -0
  263. data/lib/rhoconnect/tasks.rb +350 -0
  264. data/lib/rhoconnect/test_methods.rb +220 -0
  265. data/lib/rhoconnect/user.rb +95 -0
  266. data/lib/rhoconnect/version.rb +3 -0
  267. data/lib/rhoconnect/x_domain_session_wrapper.rb +53 -0
  268. data/lib/rhoconnect.rb +285 -0
  269. data/rhoconnect.gemspec +67 -0
  270. data/spec/api/admin/api_token_spec.rb +14 -0
  271. data/spec/api/admin/get_api_token_spec.rb +36 -0
  272. data/spec/api/admin/get_license_info_spec.rb +38 -0
  273. data/spec/api/admin/reset_spec.rb +22 -0
  274. data/spec/api/admin/stats_spec.rb +66 -0
  275. data/spec/api/api_helper.rb +21 -0
  276. data/spec/api/application/rhoconnect_api_spec.rb +548 -0
  277. data/spec/api/client/create_client_spec.rb +13 -0
  278. data/spec/api/client/delete_client_spec.rb +13 -0
  279. data/spec/api/client/get_client_params_spec.rb +18 -0
  280. data/spec/api/client/list_client_docs_spec.rb +32 -0
  281. data/spec/api/client/list_clients_spec.rb +22 -0
  282. data/spec/api/client/ping_spec.rb +23 -0
  283. data/spec/api/rhosync_api_spec.rb.orig +606 -0
  284. data/spec/api/source/adapter_spec.rb +29 -0
  285. data/spec/api/source/get_db_doc_spec.rb +21 -0
  286. data/spec/api/source/get_source_params_spec.rb +32 -0
  287. data/spec/api/source/list_source_docs_spec.rb +25 -0
  288. data/spec/api/source/list_sources_spec.rb +26 -0
  289. data/spec/api/source/push_deletes_spec.rb +18 -0
  290. data/spec/api/source/push_objects_spec.rb +27 -0
  291. data/spec/api/source/set_db_doc_spec.rb +19 -0
  292. data/spec/api/source/set_refresh_time_spec.rb +43 -0
  293. data/spec/api/source/upload_file_spec.rb +26 -0
  294. data/spec/api/user/create_user_spec.rb +16 -0
  295. data/spec/api/user/delete_user_spec.rb +36 -0
  296. data/spec/api/user/list_users_spec.rb +30 -0
  297. data/spec/api/user/update_user_spec.rb +31 -0
  298. data/spec/api_token_spec.rb +14 -0
  299. data/spec/app_spec.rb +18 -0
  300. data/spec/apps/emptyapp/application.rb +27 -0
  301. data/spec/apps/emptyapp/settings/license.key +1 -0
  302. data/spec/apps/emptyapp/settings/settings.yml +14 -0
  303. data/spec/apps/rhotestapp/Rakefile +1 -0
  304. data/spec/apps/rhotestapp/application.rb +19 -0
  305. data/spec/apps/rhotestapp/config.ru +1 -0
  306. data/spec/apps/rhotestapp/settings/apple_fake_cert.pem +1 -0
  307. data/spec/apps/rhotestapp/settings/license.key +1 -0
  308. data/spec/apps/rhotestapp/settings/settings.yml +36 -0
  309. data/spec/apps/rhotestapp/sources/base_adapter.rb +9 -0
  310. data/spec/apps/rhotestapp/sources/fixed_schema_adapter.rb +28 -0
  311. data/spec/apps/rhotestapp/sources/sample_adapter.rb +71 -0
  312. data/spec/apps/rhotestapp/sources/simple_adapter.rb +41 -0
  313. data/spec/apps/rhotestapp/sources/sub_adapter.rb +7 -0
  314. data/spec/apps/rhotestapp/vendor/mygem-0.1.0/lib/mygem/mygem.rb +8 -0
  315. data/spec/apps/rhotestapp/vendor/mygem-0.1.0/lib/mygem.rb +1 -0
  316. data/spec/bulk_data/bulk_data_spec.rb +97 -0
  317. data/spec/client_spec.rb +124 -0
  318. data/spec/client_sync_spec.rb +774 -0
  319. data/spec/doc/base.html +72 -0
  320. data/spec/doc/doc_spec.rb +376 -0
  321. data/spec/doc/footer.html +4 -0
  322. data/spec/doc/header.html +30 -0
  323. data/spec/document_spec.rb +31 -0
  324. data/spec/dynamic_adapter_spec.rb +43 -0
  325. data/spec/factories/factories.rb +17 -0
  326. data/spec/generator/generator_spec.rb +58 -0
  327. data/spec/generator/generator_spec_helper.rb +9 -0
  328. data/spec/jobs/bulk_data_job_spec.rb +125 -0
  329. data/spec/jobs/ping_job_spec.rb +102 -0
  330. data/spec/jobs/source_job_spec.rb +29 -0
  331. data/spec/license_spec.rb +66 -0
  332. data/spec/model_spec.rb +273 -0
  333. data/spec/perf/bulk_data_perf_spec.rb +32 -0
  334. data/spec/perf/perf_spec_helper.rb +50 -0
  335. data/spec/perf/store_perf_spec.rb +27 -0
  336. data/spec/ping/android_spec.rb +91 -0
  337. data/spec/ping/apple_spec.rb +70 -0
  338. data/spec/ping/blackberry_spec.rb +62 -0
  339. data/spec/read_state_spec.rb +35 -0
  340. data/spec/rhosync_spec.rb +75 -0
  341. data/spec/server/cors_spec.rb +287 -0
  342. data/spec/server/server_spec.rb +470 -0
  343. data/spec/server/x_domain_session_wrapper_spec.rb +150 -0
  344. data/spec/source_adapter_spec.rb +125 -0
  345. data/spec/source_spec.rb +114 -0
  346. data/spec/source_sync_spec.rb +328 -0
  347. data/spec/spec.opts +4 -0
  348. data/spec/spec_helper.rb +231 -0
  349. data/spec/stats/middleware_spec.rb +53 -0
  350. data/spec/stats/record_spec.rb +92 -0
  351. data/spec/store_spec.rb +251 -0
  352. data/spec/support/shared_examples.rb +168 -0
  353. data/spec/sync_states_spec.rb +72 -0
  354. data/spec/test_methods_spec.rb +134 -0
  355. data/spec/testdata/1000-data.txt +1414 -0
  356. data/spec/testdata/compressed/compress-data.txt +1 -0
  357. data/spec/testdata/upload1.txt +1 -0
  358. data/spec/testdata/upload2.txt +1 -0
  359. data/spec/user_spec.rb +139 -0
  360. data/tasks/redis.rake +206 -0
  361. metadata +706 -0
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ path = File.join(File.dirname(__FILE__),'..','..','lib')
4
+ $:.unshift path
5
+
6
+ # Try to load vendor-ed rhoconnect, otherwise load the gem
7
+ begin
8
+ require 'vendor/rhoconnect/lib/rhoconnect/server'
9
+ require 'vendor/rhoconnect/lib/rhoconnect/console/server'
10
+ rescue LoadError
11
+ require 'rhoconnect/server'
12
+ require 'rhoconnect/console/server'
13
+ end
14
+
15
+ require 'x_domain_session_wrapper'
16
+ use XDomainSessionWrapper
17
+
18
+ # By default, turn on the resque web console
19
+ require 'resque/server'
20
+
21
+ ROOT_PATH = File.expand_path(File.dirname(__FILE__))
22
+
23
+ # Rhoconnect server flags
24
+ Rhoconnect::Server.disable :run
25
+ Rhoconnect::Server.disable :clean_trace
26
+ Rhoconnect::Server.enable :raise_errors
27
+ Rhoconnect::Server.set :root, ROOT_PATH
28
+ Rhoconnect::Server.enable :stats
29
+ Rhoconnect::Server.set :secret, '3ddaa72a36466bae3fc5e54c09324db50cfc30588d8dee1a2700e61195bdbbb5eeb65da2a184d274ce644b20b0e986046c2447730c85555ce18a4eb2fce7ebf5'
30
+ Rhoconnect::Server.use Rack::Static, :urls => ["/data"], :root => Rhoconnect::Server.root
31
+
32
+ # configure Cross-Domain Resource Sharing
33
+ require 'cors'
34
+ use Rack::Cors do |cfg|
35
+ cfg.allow do |allow|
36
+ allow.origins /.*/
37
+ allow.resource '/application', :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => true
38
+ allow.resource '/application/*', :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => true
39
+ end
40
+ end
41
+
42
+ # Load our rhoconnect application
43
+ require './application'
44
+
45
+ # Setup the url map
46
+ run Rack::URLMap.new \
47
+ "/" => Rhoconnect::Server.new,
48
+ "/resque" => Resque::Server.new, # If you don't want resque frontend, disable it here
49
+ "/console" => RhoconnectConsole::Server.new # If you don't want rhoconnect frontend, disable it here
@@ -0,0 +1 @@
1
+ 858fc60fadfde40273d0ac505906969318aa4931d1a2c4aeb24d98393c74379f60e226651601969874257f7f1fbda9b099ecd551a641519aa46819947fda0191
@@ -0,0 +1,23 @@
1
+ :sources:
2
+ SimpleAdapter:
3
+ :poll_interval: 300
4
+ SampleAdapter:
5
+ :partition_type: app
6
+ :poll_interval: 500
7
+
8
+ :development:
9
+ :licensefile: settings/license.key
10
+ :redis: localhost:6379
11
+ :syncserver: http://localhost:9292/api/application/
12
+ :api_token: sometokenforme
13
+ :test:
14
+ :licensefile: settings/license.key
15
+ :redis: localhost:6379
16
+ :syncserver: http://localhost:9292/api/application/
17
+ :api_token: sometokenforme
18
+ :production:
19
+ :licensefile: settings/license.key
20
+ :redis: localhost:6379
21
+ :syncserver: http://localhost:9292/api/application/
22
+ :api_token: sometokenforme
23
+
@@ -0,0 +1,5 @@
1
+ class SampleAdapter < SourceAdapter
2
+ def initialize(source)
3
+ super(source)
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class SimpleAdapter < SourceAdapter
2
+ def initialize(source)
3
+ super(source)
4
+ end
5
+ end
@@ -0,0 +1,119 @@
1
+ require 'rubygems'
2
+ require 'templater'
3
+
4
+ module Rhoconnect
5
+ extend Templater::Manifold
6
+ extend Rhoconnect
7
+
8
+ desc <<-DESC
9
+ Rhoconnect generator
10
+ DESC
11
+
12
+ class BaseGenerator < Templater::Generator
13
+ def class_name
14
+ name.gsub('-', '_').camel_case
15
+ end
16
+
17
+ def underscore_name
18
+ Rhoconnect.under_score(name)
19
+ end
20
+
21
+ def gem_version
22
+ VERSION
23
+ end
24
+
25
+ alias_method :module_name, :class_name
26
+ end
27
+
28
+ class AppGenerator < BaseGenerator
29
+ def self.source_root
30
+ File.join(File.dirname(__FILE__), 'templates', 'application')
31
+ end
32
+
33
+ desc <<-DESC
34
+ Generates a new rhoconnect application.
35
+
36
+ Required:
37
+ name - application name
38
+ DESC
39
+
40
+ first_argument :name, :required => true, :desc => "application name"
41
+
42
+ template :configru do |template|
43
+ require 'securerandom' rescue nil
44
+ @secret = SecureRandom.hex(64) rescue '<changeme>'
45
+ template.source = 'config.ru'
46
+ template.destination = "#{name}/config.ru"
47
+ end
48
+
49
+ template :settings do |template|
50
+ template.source = 'settings/settings.yml'
51
+ template.destination = "#{name}/settings/settings.yml"
52
+ end
53
+
54
+ template :license do |template|
55
+ template.source = 'settings/license.key'
56
+ template.destination = "#{name}/settings/license.key"
57
+ end
58
+
59
+ template :application do |template|
60
+ template.source = 'application.rb'
61
+ template.destination = "#{name}/application.rb"
62
+ end
63
+
64
+ template :rakefile do |template|
65
+ template.source = 'Rakefile'
66
+ template.destination = "#{name}/Rakefile"
67
+ end
68
+
69
+ template :gemfile do |template|
70
+ template.source = 'Gemfile'
71
+ template.destination = "#{name}/Gemfile"
72
+ end
73
+
74
+ template :spec_helper do |template|
75
+ template.source = 'spec/spec_helper.rb'
76
+ template.destination = "#{name}/spec/spec_helper.rb"
77
+ end
78
+ end
79
+
80
+ class SourceGenerator < BaseGenerator
81
+ def self.source_root
82
+ File.join(File.dirname(__FILE__), 'templates', 'source')
83
+ end
84
+
85
+ desc <<-DESC
86
+ Generates a new source adapter.
87
+
88
+ Required:
89
+ name - source name(i.e. product)
90
+ DESC
91
+
92
+ first_argument :name, :required => true, :desc => "source name"
93
+
94
+ template :source do |template|
95
+ template.source = 'source_adapter.rb'
96
+ template.destination = "sources/#{underscore_name}.rb"
97
+ settings_file = File.join(@destination_root,'settings','settings.yml')
98
+ settings = YAML.load_file(settings_file)
99
+ settings[:sources] ||= {}
100
+ settings[:sources][class_name] = {:poll_interval => 300}
101
+ File.open(settings_file, 'w' ) do |file|
102
+ file.write "#Sources" + {:sources => settings[:sources]}.to_yaml[3..-1]
103
+ envs = {}
104
+ [:development,:test,:production].each do |env|
105
+ envs[env] = settings[env]
106
+ end
107
+ file.write envs.to_yaml[3..-1]
108
+ end
109
+ end
110
+
111
+ template :source_spec do |template|
112
+ template.source = 'source_spec.rb'
113
+ template.destination = "spec/sources/#{underscore_name}_spec.rb"
114
+ end
115
+ end
116
+
117
+ add :app, AppGenerator
118
+ add :source, SourceGenerator
119
+ end
@@ -0,0 +1,21 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rhoconnect', '<%=gem_version%>'
4
+
5
+ gem 'warbler', "~> 1.3.0", :platforms => :jruby
6
+
7
+ group :development do
8
+ # By default to run application thin web server is used
9
+ gem 'thin', :platforms => :ruby
10
+
11
+ # For jruby trinidad JRuby web server is used
12
+ gem 'trinidad', :platforms => :jruby
13
+ # Alternative for jruby
14
+ # gem 'jetty-rackup', :platforms => :jruby
15
+ end
16
+
17
+ group :test do
18
+ gem 'rack-test', '>= 0.5.3', :require => "rack/test"
19
+ gem 'rspec', '~> 2.6.0'
20
+ gem 'rcov', '>= 0.9.8'
21
+ end
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ begin
5
+ require 'vendor/rhoconnect/lib/rhoconnect/tasks'
6
+ require 'vendor/rhoconnect/lib/rhoconnect'
7
+ rescue LoadError
8
+ require 'rhoconnect/tasks'
9
+ require 'rhoconnect'
10
+ end
11
+
12
+ ROOT_PATH = File.expand_path(File.dirname(__FILE__))
13
+
14
+ begin
15
+ require 'resque/tasks'
16
+ task "resque:setup" do
17
+ require 'application'
18
+ end
19
+ rescue LoadError
20
+ puts "Resque not available. Install it with: "
21
+ puts "gem install resque\n\n"
22
+ end
@@ -0,0 +1,39 @@
1
+ class Application < Rhoconnect::Base
2
+ class << self
3
+ def authenticate(username,password,session)
4
+ true # do some interesting authentication here...
5
+ end
6
+
7
+ # Add hooks for application startup here
8
+ # Don't forget to call super at the end!
9
+ def initializer(path)
10
+ super
11
+ end
12
+
13
+ # Calling super here returns rack tempfile path:
14
+ # i.e. /var/folders/J4/J4wGJ-r6H7S313GEZ-Xx5E+++TI
15
+ # Note: This tempfile is removed when server stops or crashes...
16
+ # See http://rack.rubyforge.org/doc/Multipart.html for more info
17
+ #
18
+ # Override this by creating a copy of the file somewhere
19
+ # and returning the path to that file (then don't call super!):
20
+ # i.e. /mnt/myimages/soccer.png
21
+ def store_blob(object,field_name,blob)
22
+ super #=> returns blob[:tempfile]
23
+ end
24
+ end
25
+ end
26
+
27
+ Application.initializer(ROOT_PATH)
28
+
29
+ # Support passenger smart spawning/fork mode:
30
+ if defined?(PhusionPassenger)
31
+ PhusionPassenger.on_event(:starting_worker_process) do |forked|
32
+ if forked
33
+ # We're in smart spawning mode.
34
+ Store.db.client.reconnect
35
+ else
36
+ # We're in conservative spawning mode. We don't need to do anything.
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'bundler'
4
+ Bundler.require
5
+
6
+ # Try to load vendor-ed rhoconnect, otherwise load the gem
7
+ begin
8
+ require 'vendor/rhoconnect/lib/rhoconnect/server'
9
+ require 'vendor/rhoconnect/lib/rhoconnect/console/server'
10
+ rescue LoadError
11
+ require 'rhoconnect/server'
12
+ require 'rhoconnect/console/server'
13
+ end
14
+
15
+ # By default, turn on the resque web console
16
+ require 'resque/server'
17
+
18
+ ROOT_PATH = File.expand_path(File.dirname(__FILE__))
19
+
20
+ # Rhoconnect server flags
21
+ Rhoconnect::Server.disable :run
22
+ Rhoconnect::Server.disable :clean_trace
23
+ Rhoconnect::Server.enable :raise_errors
24
+ Rhoconnect::Server.set :secret, '<%= @secret %>'
25
+ Rhoconnect::Server.set :root, ROOT_PATH
26
+ Rhoconnect::Server.use Rack::Static, :urls => ["/data"], :root => Rhoconnect::Server.root
27
+
28
+ # Load our rhoconnect application
29
+ $:.unshift ROOT_PATH if RUBY_VERSION =~ /1.9/ # FIXME: see PT story #16682771
30
+ require 'application'
31
+
32
+ # Setup the url map
33
+ run Rack::URLMap.new \
34
+ "/" => Rhoconnect::Server.new,
35
+ "/resque" => Resque::Server.new, # If you don't want resque frontend, disable it here
36
+ "/console" => RhoconnectConsole::Server.new # If you don't want rhoconnect frontend, disable it here
@@ -0,0 +1 @@
1
+ 858fc60fadfde40273d0ac505906969318aa4931d1a2c4aeb24d98393c74379f60e226651601969874257f7f1fbda9b099ecd551a641519aa46819947fda0191
@@ -0,0 +1,14 @@
1
+ :sources:
2
+
3
+ :development:
4
+ :licensefile: settings/license.key
5
+ :redis: localhost:6379
6
+ :syncserver: http://localhost:9292/api/application/
7
+ :test:
8
+ :licensefile: settings/license.key
9
+ :redis: localhost:6379
10
+ :syncserver: http://localhost:9292/api/application/
11
+ :production:
12
+ :licensefile: settings/license.key
13
+ :redis: localhost:6379
14
+ :syncserver: http://localhost:9292/api/application/
@@ -0,0 +1,42 @@
1
+ require 'rubygems'
2
+
3
+ # Set environment to test
4
+ ENV['RHO_ENV'] = 'test'
5
+ ROOT_PATH = File.expand_path(File.join(File.dirname(__FILE__),'..'))
6
+ Bundler.require(:default, ENV['RHO_ENV'].to_sym)
7
+
8
+ # Try to load vendor-ed rhoconnect, otherwise load the gem
9
+ begin
10
+ require 'vendor/rhoconnect/lib/rhoconnect'
11
+ rescue LoadError
12
+ require 'rhoconnect'
13
+ end
14
+
15
+ $:.unshift File.join(File.dirname(__FILE__), "..") # FIXME:
16
+ # Load our rhoconnect application
17
+ require 'application'
18
+ include Rhoconnect
19
+
20
+ require 'rhoconnect/test_methods'
21
+
22
+ # Monkey patch to fix the following issue:
23
+ # /Library/Ruby/Gems/1.8/gems/rspec-core-2.5.1/lib/rspec/core/shared_example_group.rb:45:
24
+ # in `ensure_shared_example_group_name_not_taken': Shared example group '...' already exists (ArgumentError)
25
+ module RSpec
26
+ module Core
27
+ module SharedExampleGroup
28
+ private
29
+ def ensure_shared_example_group_name_not_taken(name)
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ shared_examples_for "SpecHelper" do
36
+ include Rhoconnect::TestMethods
37
+
38
+ before(:each) do
39
+ Store.db.flushdb
40
+ Application.initializer(ROOT_PATH)
41
+ end
42
+ end
@@ -0,0 +1,47 @@
1
+ class <%=class_name%> < SourceAdapter
2
+ def initialize(source)
3
+ super(source)
4
+ end
5
+
6
+ def login
7
+ # TODO: Login to your data source here if necessary
8
+ end
9
+
10
+ def query(params=nil)
11
+ # TODO: Query your backend data source and assign the records
12
+ # to a nested hash structure called @result. For example:
13
+ # @result = {
14
+ # "1"=>{"name"=>"Acme", "industry"=>"Electronics"},
15
+ # "2"=>{"name"=>"Best", "industry"=>"Software"}
16
+ # }
17
+ raise SourceAdapterException.new("Please provide some code to read records from the backend data source")
18
+ end
19
+
20
+ def sync
21
+ # Manipulate @result before it is saved, or save it
22
+ # yourself using the Rhoconnect::Store interface.
23
+ # By default, super is called below which simply saves @result
24
+ super
25
+ end
26
+
27
+ def create(create_hash)
28
+ # TODO: Create a new record in your backend data source
29
+ raise "Please provide some code to create a single record in the backend data source using the create_hash"
30
+ end
31
+
32
+ def update(update_hash)
33
+ # TODO: Update an existing record in your backend data source
34
+ raise "Please provide some code to update a single record in the backend data source using the update_hash"
35
+ end
36
+
37
+ def delete(delete_hash)
38
+ # TODO: write some code here if applicable
39
+ # be sure to have a hash key and value for "object"
40
+ # for now, we'll say that its OK to not have a delete operation
41
+ # raise "Please provide some code to delete a single object in the backend application using the object_id"
42
+ end
43
+
44
+ def logoff
45
+ # TODO: Logout from the data source if necessary
46
+ end
47
+ end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__),'..','spec_helper')
2
+
3
+ describe "<%=class_name%>" do
4
+ it_should_behave_like "SpecHelper" do
5
+ before(:each) do
6
+ setup_test_for <%=class_name%>,'testuser'
7
+ end
8
+
9
+ it "should process <%=class_name%> query" do
10
+ pending
11
+ end
12
+
13
+ it "should process <%=class_name%> create" do
14
+ pending
15
+ end
16
+
17
+ it "should process <%=class_name%> update" do
18
+ pending
19
+ end
20
+
21
+ it "should process <%=class_name%> delete" do
22
+ pending
23
+ end
24
+ end
25
+ end