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,21 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rhoconnect', '3.0.0'
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,76 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ SystemTimer (1.2.3)
5
+ daemons (1.1.4)
6
+ diff-lcs (1.1.2)
7
+ eventmachine (0.12.10)
8
+ extlib (0.9.15)
9
+ highline (1.6.2)
10
+ json (1.5.3)
11
+ mime-types (1.16)
12
+ rack (1.3.2)
13
+ rack-test (0.6.1)
14
+ rack (>= 1.0)
15
+ rake (0.9.2)
16
+ rcov (0.9.10)
17
+ redis (2.2.2)
18
+ redis-namespace (1.0.3)
19
+ redis (< 3.0.0)
20
+ resque (1.17.1)
21
+ json (< 1.6, >= 1.4.6)
22
+ redis-namespace (~> 1.0.2)
23
+ sinatra (>= 0.9.2)
24
+ vegas (~> 0.1.2)
25
+ rest-client (1.6.7)
26
+ mime-types (>= 1.16)
27
+ rhoconnect (3.0.0)
28
+ SystemTimer (~> 1.2.3)
29
+ bundler (~> 1.0)
30
+ json (~> 1.5.0)
31
+ rake (= 0.9.2)
32
+ redis (>= 2.2.0)
33
+ resque (~> 1.17.0)
34
+ rest-client (~> 1.6.1)
35
+ rubyzip (~> 0.9.4)
36
+ sinatra (~> 1.2)
37
+ sqlite3 (>= 1.3.3)
38
+ templater (~> 1.0.0)
39
+ uuidtools (>= 2.1.1)
40
+ rspec (2.6.0)
41
+ rspec-core (~> 2.6.0)
42
+ rspec-expectations (~> 2.6.0)
43
+ rspec-mocks (~> 2.6.0)
44
+ rspec-core (2.6.4)
45
+ rspec-expectations (2.6.0)
46
+ diff-lcs (~> 1.1.2)
47
+ rspec-mocks (2.6.0)
48
+ rubyzip (0.9.4)
49
+ sinatra (1.2.6)
50
+ rack (~> 1.1)
51
+ tilt (< 2.0, >= 1.2.2)
52
+ sqlite3 (1.3.4)
53
+ templater (1.0.0)
54
+ diff-lcs (>= 1.1.2)
55
+ extlib (>= 0.9.5)
56
+ highline (>= 1.4.0)
57
+ thin (1.2.11)
58
+ daemons (>= 1.0.9)
59
+ eventmachine (>= 0.12.6)
60
+ rack (>= 1.0.0)
61
+ tilt (1.3.3)
62
+ uuidtools (2.1.2)
63
+ vegas (0.1.8)
64
+ rack (>= 1.0.0)
65
+
66
+ PLATFORMS
67
+ ruby
68
+
69
+ DEPENDENCIES
70
+ rack-test (>= 0.5.3)
71
+ rcov (>= 0.9.8)
72
+ rhoconnect (= 3.0.0)
73
+ rspec (~> 2.6.0)
74
+ thin
75
+ trinidad
76
+ warbler (~> 1.3.0)
@@ -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, 'cf8e8a1d3653fcfb2332d8b1af9f6762c3c45ea12144bb5f15cd5618cc8e453b45a02dd304bdd791489dcd1ae35b807e4b4f4e6f7faedb551e76996c0f3c11c6'
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,20 @@
1
+ #Sources
2
+ :sources:
3
+ QueueMockAdapter:
4
+ :poll_interval: 300
5
+ queue: abc
6
+ MockAdapter:
7
+ :poll_interval: 300
8
+
9
+ :test:
10
+ :syncserver: http://localhost:9292/api/application/
11
+ :licensefile: settings/license.key
12
+ :redis: localhost:6379
13
+ :development:
14
+ :syncserver: http://localhost:9292/api/application/
15
+ :licensefile: settings/license.key
16
+ :redis: localhost:6379
17
+ :production:
18
+ :syncserver: http://localhost:9292/api/application/
19
+ :licensefile: settings/license.key
20
+ :redis: localhost:6379
@@ -0,0 +1,55 @@
1
+ class MockAdapter < SourceAdapter
2
+ def initialize(source)
3
+ super(source)
4
+ end
5
+
6
+ def login
7
+ true
8
+ end
9
+
10
+ def query(params=nil)
11
+ Store.lock(lock_name,1) do
12
+ @result = Store.get_data(db_name)
13
+ end
14
+ @result
15
+ end
16
+
17
+ def create(create_hash)
18
+ id = create_hash['mock_id']
19
+ Store.lock(lock_name,1) do
20
+ Store.put_data(db_name,{id=>create_hash},true) if id
21
+ end
22
+ id
23
+ end
24
+
25
+ def update(update_hash)
26
+ id = update_hash.delete('id')
27
+ return unless id
28
+ Store.lock(lock_name,1) do
29
+ data = Store.get_data(db_name)
30
+ return unless data and data[id]
31
+ update_hash.each do |attrib,value|
32
+ data[id][attrib] = value
33
+ end
34
+ Store.put_data(db_name,data)
35
+ end
36
+ end
37
+
38
+ def delete(delete_hash)
39
+ id = delete_hash.delete('id')
40
+ Store.lock(lock_name,1) do
41
+ Store.delete_data(db_name,{id=>delete_hash}) if id
42
+ end
43
+ end
44
+
45
+ def db_name
46
+ "test_db_storage:#{@source.app_id}:#{@source.user_id}"
47
+ end
48
+
49
+ def lock_name
50
+ "lock:#{db_name}"
51
+ end
52
+
53
+ private
54
+
55
+ end
@@ -0,0 +1,2 @@
1
+ require 'mock_adapter'
2
+ class QueueMockAdapter < MockAdapter; end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__),'..','spec_helper')
2
+
3
+ describe "MockAdapter" do
4
+ it_should_behave_like "SpecHelper" do
5
+ before(:each) do
6
+ setup_test_for MockAdapter,'testuser'
7
+ end
8
+
9
+ it "should process MockAdapter query" do
10
+ pending
11
+ end
12
+
13
+ it "should process MockAdapter create" do
14
+ pending
15
+ end
16
+
17
+ it "should process MockAdapter update" do
18
+ pending
19
+ end
20
+
21
+ it "should process MockAdapter delete" do
22
+ pending
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__),'..','spec_helper')
2
+
3
+ describe "QueueMockAdapter" do
4
+ it_should_behave_like "SpecHelper" do
5
+ before(:each) do
6
+ setup_test_for QueueMockAdapter,'testuser'
7
+ end
8
+
9
+ it "should process QueueMockAdapter query" do
10
+ pending
11
+ end
12
+
13
+ it "should process QueueMockAdapter create" do
14
+ pending
15
+ end
16
+
17
+ it "should process QueueMockAdapter update" do
18
+ pending
19
+ end
20
+
21
+ it "should process QueueMockAdapter delete" do
22
+ pending
23
+ end
24
+ end
25
+ end
@@ -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,31 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rhoconnect', '>= 3.0.0'
4
+
5
+ platforms :jruby do
6
+ gem 'jdbc-sqlite3', :require => false
7
+ gem 'dbi'
8
+ gem 'dbd-jdbc', :require => 'dbd/Jdbc'
9
+ gem 'jruby-openssl'
10
+ gem 'warbler'
11
+ end
12
+
13
+ platforms :ruby do
14
+ gem 'sqlite3'
15
+ end
16
+
17
+ group :development do
18
+ # By default to run application thin web server is used
19
+ gem 'thin', '1.2.11', :platforms => :ruby
20
+
21
+ # For jruby trinidad JRuby web server is used
22
+ gem 'trinidad', :platforms => :jruby
23
+ # Alternative for jruby
24
+ # gem 'jetty-rackup', :platforms => :jruby
25
+ end
26
+
27
+ group :test do
28
+ gem 'rack-test', '>= 0.5.3', :require => "rack/test"
29
+ gem 'rspec', '~> 2.6.0'
30
+ gem 'rcov', '>= 0.9.8'
31
+ end
@@ -0,0 +1,103 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ SystemTimer (1.2.3)
5
+ bouncy-castle-java (1.5.0146.1)
6
+ daemons (1.1.4)
7
+ dbd-jdbc (0.1.4)
8
+ dbi (0.4.5)
9
+ deprecated (= 2.0.1)
10
+ deprecated (2.0.1)
11
+ diff-lcs (1.1.2)
12
+ eventmachine (0.12.10)
13
+ extlib (0.9.15)
14
+ highline (1.6.2)
15
+ jdbc-sqlite3 (3.7.2)
16
+ jruby-jars (1.6.4)
17
+ jruby-openssl (0.7.4)
18
+ bouncy-castle-java
19
+ jruby-rack (1.0.10)
20
+ json (1.5.3)
21
+ json (1.5.3-java)
22
+ mime-types (1.16)
23
+ rack (1.3.2)
24
+ rack-test (0.6.1)
25
+ rack (>= 1.0)
26
+ rake (0.9.2)
27
+ rcov (0.9.10)
28
+ rcov (0.9.10-java)
29
+ redis (2.2.2)
30
+ redis-namespace (1.0.3)
31
+ redis (< 3.0.0)
32
+ resque (1.17.1)
33
+ json (< 1.6, >= 1.4.6)
34
+ redis-namespace (~> 1.0.2)
35
+ sinatra (>= 0.9.2)
36
+ vegas (~> 0.1.2)
37
+ rest-client (1.6.7)
38
+ mime-types (>= 1.16)
39
+ rhoconnect (3.0.0)
40
+ SystemTimer (~> 1.2.3)
41
+ bundler (~> 1.0)
42
+ json (~> 1.5.0)
43
+ rake (= 0.9.2)
44
+ redis (>= 2.2.0)
45
+ resque (~> 1.17.0)
46
+ rest-client (~> 1.6.1)
47
+ rubyzip (~> 0.9.4)
48
+ sinatra (~> 1.2)
49
+ sqlite3 (>= 1.3.3)
50
+ templater (~> 1.0.0)
51
+ uuidtools (>= 2.1.1)
52
+ rspec (2.6.0)
53
+ rspec-core (~> 2.6.0)
54
+ rspec-expectations (~> 2.6.0)
55
+ rspec-mocks (~> 2.6.0)
56
+ rspec-core (2.6.4)
57
+ rspec-expectations (2.6.0)
58
+ diff-lcs (~> 1.1.2)
59
+ rspec-mocks (2.6.0)
60
+ rubyzip (0.9.4)
61
+ sinatra (1.2.6)
62
+ rack (~> 1.1)
63
+ tilt (< 2.0, >= 1.2.2)
64
+ sqlite3 (1.3.4)
65
+ templater (1.0.0)
66
+ diff-lcs (>= 1.1.2)
67
+ extlib (>= 0.9.5)
68
+ highline (>= 1.4.0)
69
+ thin (1.2.11)
70
+ daemons (>= 1.0.9)
71
+ eventmachine (>= 0.12.6)
72
+ rack (>= 1.0.0)
73
+ tilt (1.3.3)
74
+ trinidad (1.2.3)
75
+ jruby-rack (>= 1.0.9)
76
+ trinidad_jars (>= 1.0.1)
77
+ trinidad_jars (1.0.1)
78
+ uuidtools (2.1.2)
79
+ vegas (0.1.8)
80
+ rack (>= 1.0.0)
81
+ warbler (1.3.2)
82
+ jruby-jars (>= 1.4.0)
83
+ jruby-rack (>= 1.0.0)
84
+ rake (>= 0.8.7)
85
+ rubyzip (>= 0.9.4)
86
+
87
+ PLATFORMS
88
+ java
89
+ ruby
90
+
91
+ DEPENDENCIES
92
+ dbd-jdbc
93
+ dbi
94
+ jdbc-sqlite3
95
+ jruby-openssl
96
+ rack-test (>= 0.5.3)
97
+ rcov (>= 0.9.8)
98
+ rhoconnect (>= 3.0.0)
99
+ rspec (~> 2.6.0)
100
+ sqlite3
101
+ thin (= 1.2.11)
102
+ trinidad
103
+ warbler
@@ -0,0 +1,25 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'rhoconnect/tasks'
4
+
5
+ ROOT_PATH = File.expand_path(File.dirname(__FILE__))
6
+
7
+ begin
8
+ require 'resque/tasks'
9
+ task "resque:setup" do
10
+ require 'application'
11
+ end
12
+ desc "run rhoconnect console"
13
+ task :console, :environment do |t, args|
14
+ if RedisRunner.running?
15
+ #load development environment by default
16
+ ENV['RACK_ENV'] = args[:environment] || 'development'
17
+ sh "irb -rubygems -r rhoconnect -r console -r application"
18
+ else
19
+ puts "Redis is not running. Please start it by running 'rake redis:start' command."
20
+ end
21
+ end
22
+ rescue LoadError
23
+ puts "Resque not available. Install it with: "
24
+ puts "gem install resque\n\n"
25
+ end
@@ -0,0 +1,44 @@
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
+ # Pass to BlobAdapter path to image and its original name
23
+ if blob
24
+ object['filename'] = blob[:filename]
25
+ object['image_uri'] = blob[:tempfile].path
26
+ end
27
+ super
28
+ end
29
+ end
30
+ end
31
+
32
+ Application.initializer(ROOT_PATH)
33
+
34
+ # Support passenger smart spawning/fork mode:
35
+ if defined?(PhusionPassenger)
36
+ PhusionPassenger.on_event(:starting_worker_process) do |forked|
37
+ if forked
38
+ # We're in smart spawning mode.
39
+ Store.db.client.reconnect
40
+ else
41
+ # We're in conservative spawning mode. We don't need to do anything.
42
+ end
43
+ end
44
+ 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, '096a8a4212b18d2b281d377f2c350421898a21fec78ac1baf5482c68ee41b30dcc46309cc2fb51ccc37f24789eeaed673a291efdfd0ec42df9f62351e71806f8'
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
+ 73e2fe1f3d161b339acc4acf748f800a08ff03444f3c4cc51524545717c1efa26625ff53238bde371ef6fc26c4a0ade3fe9e39aa7026236fad33d69c4af069e8
@@ -0,0 +1,16 @@
1
+ :sources:
2
+ BlobAdapter:
3
+ :poll_interval: 300
4
+
5
+ :test:
6
+ :redis: localhost:6379
7
+ :syncserver: http://localhost:9292/api/application/
8
+ :licensefile: settings/license.key
9
+ :development:
10
+ :redis: localhost:6379
11
+ :syncserver: http://localhost:9292/api/application/
12
+ :licensefile: settings/license.key
13
+ :production:
14
+ :redis: localhost:6379
15
+ :syncserver: http://localhost:9292/api/application/
16
+ :licensefile: settings/license.key