rhoconnect 3.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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
data/CHANGELOG ADDED
@@ -0,0 +1,208 @@
1
+ ## 3.0.0 (not released)
2
+ * #1018 user delete now iterates through user sources and deletes data in redis
3
+ * #11102931 ping api accepts vibrate string and int
4
+ * #7197617 test spec helpers support pass through
5
+ * #11944605 implemented pass through feature
6
+ * #4397476 wrapped login/logoff around cud spec helpers
7
+ * backtrace logging in source adapter method exceptions
8
+ * returning string in authenticate instead of true sets the current user login name (Useful for OAuth2)
9
+ * #11904353 - fixed broken 'rake console' task, added new 'rhosync' namespace: 'rake rhosync:console'
10
+ * #12105115 - removed unnecessary log4r dependency
11
+ * added bundler to manage gem's dependencies, migrated from rspec1 to rspec2
12
+ * #5687948 - fixed issue "iPhone push specs failed"
13
+ * use redis 2.2.12 by default
14
+ * added SystemTimer gem dependency (used only on posix systems)
15
+ * #13616807 - Rake task spec:all fails for enterprise ruby (ree)
16
+ * #13776713 - Rake -v 0.9.0 breaks rhosync rake tasks
17
+ * #14514773 - REST API push_object, push_deletes :md_size count fix
18
+ * #5687948 - fixed issue "iPhone push specs failed"
19
+ * #12854737 - string vs. symbol problem in ruby 1.9 model.rb (contribute to ruby 1.9 support)
20
+ * #11692191 - ruby 1.9 support
21
+ * #2020980 - Test on JRuby. Code reworked to fully support JRuby platform.
22
+ * #14087743 - Merging the /login and /get_api_token methods.
23
+ * #14713569 - Moving all Server REST API calls into namespaces.
24
+ * #14284841 - Merge ruby_19 branch into master
25
+ * #14784949 - Suppress rake -v 0.9.2 warning messages while running tasks.
26
+ * #3174947 - RESTful routes for client management
27
+ * #14968209 - Generated Specs are failing on 2nd generated source
28
+ * #15270505 - sqlite3 is not listed as a dependency of rhosync gem (3.0.0)
29
+ * #15143911 - Schema Changed message from Zendesk ticket #1035 (merge from branch 2-1-stable 2.1.9)
30
+ * #14950665 - Benchmark application and libraries: rework REST calls to match new API restful routes.
31
+ * #14860303 - In bench tests x_domain_session_wrapper middleware not working under ruby 1.9.2.
32
+ * #15615327 - Rhoconnect migration
33
+ * #15730829 - added migration guidelines doc
34
+ * #14286067 - jruby rhosync:start : console doesn't work
35
+ * #14286249 - jruby WAR file deployed , some of the links are broken in console window, should use the relative paths
36
+ * #14285867 - jruby rhosync:start should have run with dtach
37
+ * #17526603 - implement clientreset support for specified sources
38
+
39
+ ## 2.1.10 (2011-08-17)
40
+ * #16001227 - raise exceptions on c2dm errors
41
+ * #1018 - delete read state for user as well
42
+
43
+ ## 2.1.9 (2011-07-01)
44
+ * #15143911 - Fix for incident schema changed message
45
+
46
+ ## 2.1.8 (2011-06-29)
47
+ * #1018 - added functionality to delete user source data on user delete
48
+ * updated to rake 0.9.2
49
+ * #14911833 - Add support for rolling back updates on sync errors
50
+
51
+ ## 2.1.7 (2011-05-31)
52
+ * #14021681 - check for client on client_sync class methods
53
+ * #14082861 - expose Store.lock timeout to high-level functions
54
+ * #14082589 - fixed source loading so a unique instance is loaded
55
+ * #14124195 - concurrency issue under load for same user via push_objects api
56
+ * #14511763 - added global options `raise_on_expired_lock` (true/false) and `lock_duration` (sec) settings
57
+
58
+ ## 2.1.6 (2011-05-25)
59
+ * #13830841 - fixed issue where current_user.login doesn't match @source.user_id
60
+
61
+ ## 2.1.5 (2011-05-24)
62
+ * #13578473 - fixed "undefined method `user_id' for nil:NilClass" error in server.rb
63
+
64
+ ## 2.1.4 (2011-05-20)
65
+ * #13354369 - bug fix "rhosync bootstrap process shouldn't store sources in redis"
66
+
67
+ ## 2.1.3 (2011-05-05)
68
+ * #4398193 - ping should only send push messages to unique device pin list
69
+ * #13022667 - settings.yml doesn't work for setting external Redis instances
70
+
71
+ ## 2.1.2 (2011-03-18)
72
+ * Use server-dir/redis.conf if not found at RedisRunner.prefix (via artemk)
73
+ * #8471337 - switch client user if it is not equal to current_user
74
+ * Upgrade rest-client dependency which includes cookie escape fix
75
+ * #10097347 - generate cryptographically secure secret key by default
76
+ * Fixed 'application/json; charset=UTF-8' content handling in the server before filter
77
+ * #11017509 - fixed sinatra 1.2 incompatibility with url() helper
78
+ * #4569337 - use redis 2.2.2 by default
79
+ * #4398193 - ping should only send push messages to unique device pin list
80
+
81
+ ## 2.1.1 (2011-01-04)
82
+ * #7679395 - added support for gzipped bulk data files
83
+ * #8167507 - fixed typo in console login page
84
+ * #7025387 - customizable redis.conf for windows
85
+
86
+ ## 2.1.0
87
+ * #4302316 - don't allow set blank admin password
88
+ * #5672322 - stats for user count
89
+ * #5672316 - stats for device count
90
+ * #5717916 - stats api call
91
+ * #5821277 - http stats by source not showing
92
+ * #5899454 - move lock prefix to beginning so we don't return stats keys with it
93
+ * #5822966 - bulk sync data file cannot handle space in the username
94
+ * #6450519 - blob sync resend_page doesn't send metadata
95
+ * #4646791 - cryptic error message if client exists, but source name is bogus
96
+ * #6827511 - fill in schema column in bulk sync file sources table
97
+ * #4490679 - support schema method in source adapter (runtime schema for bulk data)
98
+ * #6573429 - if schema changed in any adapter, invalidate bulk data file
99
+ * #7034095 - don't ping device if device_pin is empty or nil
100
+ * #7089047 - fixed application.rb template store_blob method
101
+ * #7055889 - fixed schema tables should have 'object' primary key
102
+ * #6011821 - try to make bin_dir on redis:install and dtach:install
103
+
104
+ ## 2.0.9 (2010-10-14)
105
+ * #5154725 - stats framework
106
+ * #5013521 - new web interface style
107
+ * #5615901 - fixing hsqldata bulk data file format
108
+ * #5672140 - http request timings middleware
109
+ * #5672148 - source adapter execution timings
110
+ * #5620719 - session secret override didn't work
111
+ * #3713049 - added support for Android Cloud to Device Messaging
112
+
113
+ ## 2.0.8 (2010-10-08)
114
+ * #5185540 - don't try to load licensefile if env var exists
115
+ * #5246936 - changed settings.yml-belongs_to format to use array instead of hash
116
+ * #5578580 - allow Store.db to accept an existing redis object (useful for overriding redis settings)
117
+
118
+ ## 2.0.7 (2010-09-13)
119
+ * #4893692 - fixed infinite search loop
120
+ * search properly handles multiple page results
121
+
122
+ ## 2.0.6 (2010-08-25)
123
+ * #4701421 - dbfile url has junk characters
124
+ * #4731763 - support 'apple' device type, deprecate 'iphone' device type
125
+ * #4763532 - sound was missing from BB pap message
126
+
127
+ ## 2.0.5 (2010-08-10)
128
+ * #4650808 - use ENV['RHOSYNC_LICENSE'] if it exists
129
+ * #4650820 - added UI checkbox for direct api calls
130
+
131
+ ## 2.0.4 (2010-08-04)
132
+ * #3624650 - support redis-rb ~>2.0.0
133
+ * #4480303 - support connection to redis uri, if ENV[REDIS_URL] exists
134
+ * #4565808 - support direct ruby api calls
135
+
136
+ ## 2.0.3 (2010-07-21)
137
+ * #4379293 - don't fail ping job if device type is nil or empty, just skip the device
138
+
139
+ ## 2.0.2 (2010-07-16)
140
+ * #4236653 - add confirmation to console and task reset
141
+ * #3582679 - added rhosync:set_admin_password task
142
+
143
+ ## 2.0.1 (2010-07-01)
144
+ * #4124559 - rake redis:install fails due to redis build changes, require 1.3.12 for now
145
+ * #4094373 - default task is now rhosync:spec
146
+
147
+ ## 2.0.0.rc2, 2.0.0 (2010-06-28)
148
+ * #4040573 - sqlite3-ruby v1.3.0 breaks bulk data tests, require ~>1.2.5 for now
149
+
150
+ ## 2.0.0.rc1
151
+ * dupe tag of 2.0.0.beta13
152
+
153
+ ## 2.0.0.beta13
154
+ * #3417862 - namespacing issue with HashWithIndifferentAccess
155
+
156
+ ## 2.0.0.beta12
157
+ * #3851464 - log every error in client post parsing
158
+ * #3795105 - store associations in sources table for bulk data
159
+
160
+ ## 2.0.0.beta11
161
+ * #3850478 - fix hardcoded hsqldata.jar path
162
+
163
+ ## 2.0.0.beta10
164
+ * #3662891 - adding rhosync:flushdb rake task
165
+ * #3742919 - fixing sources json structure according to http://wiki.rhomobile.com/index.php/Rhom#Source_Configuration_Protocol
166
+ * #3740205 - changed default admin user to 'rhoadmin'
167
+
168
+ ## 2.0.0.beta9
169
+ * #3565139 - return better error message if client/source is unknown
170
+ * #3616601 - added blob_attribs to bulk data job file
171
+ * #3576126 - added expire_bulk_data source adapter method
172
+ * #3576151 - trigger new bulk data job if any relevant dbfiles are missing
173
+ * #3707791 - fixing ROOT_PATH problem on windows
174
+
175
+ ## 2.0.0.beta8
176
+ * #3685476 - CGI escape api cookies
177
+
178
+ ## 2.0.0.beta7
179
+ * #3651932 - support redis:* tasks on windows and linux/mac
180
+ * #3663335 - don't need ENV['PWD'] in tasks.rb
181
+
182
+ ## 2.0.0.beta6
183
+ * no new changes, rubygems.org upload failed for 2.0.0.beta5
184
+
185
+ ## 2.0.0.beta5
186
+ * #3628036 - support loading generator from gem
187
+
188
+ ## 2.0.0.beta4
189
+ * #3316030 - added rspec test framework
190
+ * #3557341 - create new bulk data instance if the file is missing
191
+ * #3415335 - support fixed schema models
192
+ * #3582235 - report error if client-posted json doesn't parse (instead of crashing server)
193
+
194
+ ## 2.0.0.beta3
195
+ * #3316030 - added source adapter spec helper + infrastructure
196
+ * #3475519 - return exception string on 401 / 500 login errors
197
+ * #3513037 - re-animated bulk sync feature
198
+ * #3511533 - added stash_result source adapter utility - useful for huge datasets
199
+ * #3539092 - added rake rhosync:web task
200
+
201
+ ## 2.0.0.beta2
202
+ * #3416343 - unify rake tasks to work on windows & Mac OS / *nix
203
+
204
+ ## 2.0.0.beta1
205
+ * New implementation of RhoSync using redis storage engine
206
+ * Support for modular routes (console & resque frontend optional)
207
+ * Bulk Data synchronization
208
+ * REST api for server management
data/CREDITS ADDED
@@ -0,0 +1,38 @@
1
+ RhoConnect uses following other projects:
2
+
3
+ Ruby language 1.8.7 (http://www.ruby-lang.org/en/downloads/)
4
+ License: GPL or Ruby own license (http://www.ruby-lang.org/en/about/license.txt)
5
+
6
+ Redis 2.2.x (http://redis.io)
7
+ License: BSD (https://github.com/antirez/redis/blob/master/COPYING)
8
+
9
+ Resque 1.13.0 (https://github.com/defunkt/resque)
10
+ License: MIT-like (https://github.com/defunkt/resque/blob/master/LICENSE)
11
+
12
+ Sinatra 1.1.3 (http://www.sinatrarb.com/)
13
+ License: MIT-like (https://github.com/sinatra/sinatra/blob/master/LICENSE)
14
+
15
+ sqlite3-ruby 1.2.5 (http://github.com/luislavena/sqlite3-ruby)
16
+ License: MIT-like (https://github.com/luislavena/sqlite3-ruby/blob/master/LICENSE)
17
+
18
+ uuidtools 2.1.1 (https://github.com/sporkmonger/uuidtools/)
19
+ License: MIT-like (https://github.com/sporkmonger/uuidtools/blob/master/LICENSE)
20
+
21
+ rest-client 1.6.1 (https://github.com/archiloque/rest-client)
22
+ License: MIT (http://www.opensource.org/licenses/mit-license.php)
23
+
24
+ json 1.4.6 (http://flori.github.com/json/)
25
+ License: GPL2 or Ruby (http://www.ruby-lang.org/en/LICENSE.txt)
26
+
27
+ templater 1.0.0 (https://github.com/jnicklas/templater)
28
+ License: MIT (https://github.com/jnicklas/templater)
29
+
30
+ Apache 2.2 (http://httpd.apache.org)
31
+ License: Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
32
+
33
+ thin 1.2.8 (https://github.com/macournoyer/thin)
34
+ License: MIT (https://github.com/macournoyer/thin/blob/master/COPYING)
35
+
36
+ bundler 1.0.10 (http://gembundler.com/)
37
+ License: MIT (http://www.opensource.org/licenses/mit-license.php)
38
+
data/Gemfile ADDED
@@ -0,0 +1,18 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rhoconnect.gemspec
4
+ gemspec
5
+
6
+ platforms :jruby do
7
+ gem 'trinidad'
8
+ gem 'warbler'
9
+ end
10
+
11
+ group :development do
12
+ gem 'rspec', '~> 2.6.0'
13
+ gem 'rcov', '>= 0.9.8'
14
+ gem 'ffaker', '~> 1.8.0'
15
+ gem 'rack-test', '>= 0.5.3', :require => 'rack/test'
16
+ gem 'thor', '>= 0.13.6'
17
+ gem 'webmock', '~> 1.6.4'
18
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,97 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rhoconnect (3.0.0.beta1)
5
+ SystemTimer (~> 1.2.3)
6
+ bundler (~> 1.0)
7
+ json (~> 1.5.0)
8
+ rake (= 0.9.2)
9
+ redis (>= 2.2.0)
10
+ resque (~> 1.17.0)
11
+ rest-client (~> 1.6.1)
12
+ rubyzip (~> 0.9.4)
13
+ sinatra (~> 1.2)
14
+ sqlite3 (>= 1.3.3)
15
+ templater (~> 1.0.0)
16
+ uuidtools (>= 2.1.1)
17
+
18
+ GEM
19
+ remote: http://rubygems.org/
20
+ specs:
21
+ SystemTimer (1.2.3)
22
+ addressable (2.2.6)
23
+ crack (0.1.8)
24
+ diff-lcs (1.1.3)
25
+ extlib (0.9.15)
26
+ ffaker (1.8.0)
27
+ highline (1.6.2)
28
+ jruby-jars (1.6.4)
29
+ jruby-rack (1.0.10)
30
+ json (1.5.4)
31
+ json (1.5.4-java)
32
+ mime-types (1.16)
33
+ rack (1.3.2)
34
+ rack-test (0.6.1)
35
+ rack (>= 1.0)
36
+ rake (0.9.2)
37
+ rcov (0.9.10)
38
+ rcov (0.9.10-java)
39
+ redis (2.2.2)
40
+ redis-namespace (1.0.3)
41
+ redis (< 3.0.0)
42
+ resque (1.17.1)
43
+ json (>= 1.4.6, < 1.6)
44
+ redis-namespace (~> 1.0.2)
45
+ sinatra (>= 0.9.2)
46
+ vegas (~> 0.1.2)
47
+ rest-client (1.6.7)
48
+ mime-types (>= 1.16)
49
+ rspec (2.6.0)
50
+ rspec-core (~> 2.6.0)
51
+ rspec-expectations (~> 2.6.0)
52
+ rspec-mocks (~> 2.6.0)
53
+ rspec-core (2.6.4)
54
+ rspec-expectations (2.6.0)
55
+ diff-lcs (~> 1.1.2)
56
+ rspec-mocks (2.6.0)
57
+ rubyzip (0.9.4)
58
+ sinatra (1.2.6)
59
+ rack (~> 1.1)
60
+ tilt (< 2.0, >= 1.2.2)
61
+ sqlite3 (1.3.4)
62
+ templater (1.0.0)
63
+ diff-lcs (>= 1.1.2)
64
+ extlib (>= 0.9.5)
65
+ highline (>= 1.4.0)
66
+ thor (0.14.6)
67
+ tilt (1.3.3)
68
+ trinidad (1.2.3)
69
+ jruby-rack (>= 1.0.9)
70
+ trinidad_jars (>= 1.0.1)
71
+ trinidad_jars (1.0.1)
72
+ uuidtools (2.1.2)
73
+ vegas (0.1.8)
74
+ rack (>= 1.0.0)
75
+ warbler (1.3.2)
76
+ jruby-jars (>= 1.4.0)
77
+ jruby-rack (>= 1.0.0)
78
+ rake (>= 0.8.7)
79
+ rubyzip (>= 0.9.4)
80
+ webmock (1.6.4)
81
+ addressable (> 2.2.5, ~> 2.2)
82
+ crack (>= 0.1.7)
83
+
84
+ PLATFORMS
85
+ java
86
+ ruby
87
+
88
+ DEPENDENCIES
89
+ ffaker (~> 1.8.0)
90
+ rack-test (>= 0.5.3)
91
+ rcov (>= 0.9.8)
92
+ rhoconnect!
93
+ rspec (~> 2.6.0)
94
+ thor (>= 0.13.6)
95
+ trinidad
96
+ warbler
97
+ webmock (~> 1.6.4)
data/LICENSE ADDED
@@ -0,0 +1,75 @@
1
+ An online copy of the following license is available here: http://rhomobile.com/products/rhosync/license/
2
+
3
+ This RhoSync Commercial License Agreement is a legal agreement between Rhomobile Inc. ("Rhomobile"), and Licensee (either an individual or a legal entity, hereafter referred to as "Licensee") for the Licensed Software (as defined below). The Licensed Software is not open source software and this is not an open source license.
4
+
5
+ 1. DEFINITIONS
6
+ Affiliate of a Party shall mean an entity (i) which is directly or indirectly controlling such Party; (ii) which is under the same direct or indirect ownership or control as such Party; or (iii) which is directly or indirectly owned or controlled by such Party.
7
+
8
+ Licensee Application shall mean an application (a) developed using a license under Rhomobile's Rhodes framework and (b) which runs on a Mobile Device and synchronizes through the Licensed Software running on a server.
9
+
10
+ Licensed Software shall mean the RhoSync computer software, online or electronic documentation, associated media and printed materials, including the source code, example programs and the documentation delivered by Rhomobile to Licensee in conjunction with this Agreement.
11
+
12
+ Support shall mean standard developer support that is provided by Rhomobile to assist eligible Designated Users in using the Licensed Software in accordance with its established standard support procedures.
13
+
14
+ Updates shall mean a release or version of the Licensed Software containing enhancements, new features, bug fixes, error corrections and other changes that are generally made available to users of the Licensed Software that have contracted for maintenance and support.
15
+
16
+ Device shall mean a specific physical mobile device that interacts with the Licensed Software
17
+
18
+ 2. OWNERSHIP
19
+ The Licensed Software is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The Licensed Software is licensed, not sold.
20
+
21
+ Rhomobile shall own all right, title and interest including the intellectual property rights in and to the information on bug fixes or error corrections relating to the Licensed Software that are submitted by Licensee to Rhomobile as well as any intellectual property rights to the correction of any errors, if any. To the extent any rights do not automatically vest in Rhomobile, Licensee assigns, and shall ensure that all of its Affiliates, agents, subcontractors and employees assign, all such rights to Rhomobile.
22
+
23
+ 3. VALIDITY OF THE AGREEMENT
24
+ By installing, copying, or otherwise using the Licensed Software, Licensee agrees to be bound by the terms of this Agreement. If Licensee does not agree to the terms of this Agreement, Licensee may not install, copy, or otherwise use the Licensed Software. In addition, by installing, copying, or otherwise using any Updates or other components of the Licensed Software that Licensee receives separately as part of the Licensed Software, Licensee agrees to be bound by any additional license terms that accompany such Updates, if any. If Licensee does not agree to the additional license terms that accompany such Updates, Licensee may not install, copy, or otherwise use such Updates. Upon Licensee's acceptance of the terms and conditions of this Agreement and payment of the licensee fee, Rhomobile grants Licensee the right to use the Licensed Software in the manner provided below.
25
+
26
+ 4. LICENSE GRANT
27
+
28
+ 4.1 Grant
29
+ Subject to the terms and conditions of this Agreement, Rhomobile grants to Licensee a non-exclusive, non-transferable, non-sublicensable license to install and use the Licensed Software as contemplated in the applicable documentation and the applicable invoice for the Licensed Software. Licensee is not granted any rights or licenses in the Licensed Software other than those rights expressly granted in this Agreement. Unless otherwise provided in an invoice from Rhomobile or Rhomobile authorized third party sublicensor, Licensee may only install and use the Licensed Software on a single computer ("Server"). If Licensee is explicitly granted a multiple Server license by Rhomobile, or Rhomobile authorized third party sublicensor in an invoice, Licensee may install and use the Licensed Software on not more than the number of Servers listed in the applicable invoice. All uses of the Licensed Software must be in accordance with the documentation provided for the Licensed Software. The Licensed Software is licensed only to Licensee and may not be transferred to any other person or entity without Rhomobile's prior written authorization. Any authorized transferee of the Licensed Software shall be bound in writing by the terms and conditions of this Agreement. In no event may Licensee transfer, assign, rent, lease, sell, or otherwise dispose of the Licensed Software on a temporary or permanent basis except as expressly provided herein. The license granted herein will automatically terminate in the event of any violation of this Agreement by Licensee.
30
+
31
+ 4.2 Capacity Restrictions
32
+ The Licensed Software shall only be used to support the number of Devices and the number of Licensee Applications set forth in the applicable invoice and paid for. To replace a Device with a new Device for purposes of determining how many Devices are being supported at any one time, the replaced Device must be removed from the RhoSync directory. Increases in the number of Devices and/or the number of Licensee Applications being supported by the Licenses Software must be purchased in advance.
33
+
34
+ 5 LIMITED WARRANTY AND WARRANTY DISCLAIMER
35
+ Rhomobile warrants to Licensee for a period of ninety (90) days from the date of Licensee's receipt of the Licensed Software (the "Warranty Period") that the Licensed Software as delivered will conform substantially to Rhomobile's then-current published functional specifications set forth in the documentation for the Licensed Software when installed and operated as contemplated in such documentation. In the event of any nonconformity, Rhomobile (or its designee) may, in its sole discretion, either (i) remedy the nonconformity within a reasonable period after notice and verification thereof or (ii) refund the amount Licensee paid for the Software and terminate this Agreement and the license granted herein; provided, however, that Licensee must return the original and all copies of the Licensed Software to Rhomobile or its authorized representative before Licensee will be entitled to receive any such refund. THIS SECTION 5 STATES LICENSEE'S SOLE REMEDY FOR A BREACH OF THE LIMITED WARRANTY OF THE LICENSED SOFTWARE.
36
+
37
+ EXCEPT AS SET FORTH IN SECTION 6, THE LICENSED SOFTWARE IS PROVIDED BY RHOMOBILE AND ITS LICENSORS "AS IS" WITHOUT ANY WARRANTY OF ANY KIND INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. NEITHER RHOMOBILE NOR ITS LICENSORS WARRANT THAT THE LICENSED SOFTWARE IS ERROR-FREE OR THAT IT WILL OPERATE WITHOUT INTERRUPTION. NEITHER RHOMOBILE NOR ITS LICENSORS WARRANT, GUARANTEE OR MAKE ANY REPRESENTATION REGARDING THE USE, OR THE RESULTS OF THE USE OF THE LICENSED SOFTWARE INCLUDING, WITHOUT LIMITATION, THE CORRECTNESS, ACCURACY OR RELIABILITY OF SUCH USE OR RESULTS. LICENSEE ACKNOWLEDGES AND AGREES THAT RHOMOBILE IS NOT RESPONSIBLE FOR AND WILL HAVE NO LIABILITY FOR HARDWARE, SOFTWARE, CONTENT OR OTHER ITEMS OR ANY SERVICES PROVIDED BY ANY PERSONS OTHER THAN RHOMOBILE.
38
+
39
+ 6. LIMITATION OF LIABILITY
40
+ TO THE MAXIMUM EXTENT PERMITTED BY LAW, RHOMOBILE AND ITS LICENSORS WILL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT MATTER OF THIS AGREEMENT UNDER ANY CONTRACT, NEGLIGENCE, STRICT LIABILITY OR OTHER LEGAL OR EQUITABLE THEORY FOR: (I) ANY AMOUNTS IN EXCESS IN THE AGGREGATE OF THE AMOUNTS YOU PAID FOR THE LICENSED SOFTWARE; (II) ANY LOST DATA OR OTHER EXEMPLARY, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, LOSS OF DATA, OR ANY AND ALL LOST PROFITS, EVEN IF RHOMOBILE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES; OR (III) THE COST OF PROCURING SUBSTITUTE GOODS, SERVICES OR TECHNOLOGY. THE LIMITATION OF LIABILITY SET FORTH IN THIS SECTION 6 SHALL NOT APPLY TO THE EXTENT PROHIBITED BY APPLICABLE LAW.
41
+
42
+ 7. SUPPORT AND UPDATES
43
+ Licensee shall be eligible to receive Support and Updates for one year from the date of the delivery of the Licensed Software to Licensee, in accordance with Rhomobile's then current policies and procedures, if any. After that time period the customer shall be entitled to execute a maintenance agreement which will entitle them to ongoing support and updates. Licensee may purchase additional Support and Updates following the Initial Term at 18% of the original price of the Licensed Software.
44
+
45
+ 8. EXPORT
46
+
47
+ Licensee acknowledges that the Licensed Software may be subject to the export and import control laws of the United States and any country where the Licensed Software is manufactured or received. Licensee agrees not to violate any such laws. Licensee further agrees not to export the Licensed Software to any prohibited country, entity or person for which an export license or other governmental approval is required. Obtaining any necessary governmental approval or licenses is solely the obligation of Licensee.
48
+
49
+ 9. GENERAL PROVISIONS
50
+
51
+ 9.1 Marketing
52
+ Rhomobile may include Licensee's company name and logo in a publicly available list of Rhomobile Licensees and in its public communications.
53
+
54
+ 9.2 No Assignment
55
+ Licensee shall not be entitled to assign or transfer all or any of its rights, benefits and obligations under this Agreement without the prior written consent of Rhomobile, which shall not be unreasonably withheld.
56
+
57
+ 9.3 Termination
58
+ This Agreement will remain in force until terminated. Licensee may terminate this Agreement at any time upon providing written notice thirty days in advance of the termination. Rhomobile may terminate this Agreement if Licensee breaches any of the terms or conditions hereunder. Licensee agrees to destroy or return to Rhomobile the original and all copies of the Licensed Software immediately upon any termination of this Agreement, and certify the same in writing if requested.
59
+
60
+ 9.4 Surviving Sections
61
+ Any terms and conditions that by their nature or otherwise reasonably should survive a cancellation or termination of this Agreement shall also be deemed to survive. Such terms and conditions include, but are not limited to the following Sections: 2, 4, 5, 6, 7, 8, 9, 11, and 12of this Agreement. Notwithstanding the foregoing, Section 4.1 shall not survive if the Agreement is terminated for material breach.
62
+
63
+ 9.5 Entire Agreement
64
+ This Agreement constitutes the complete agreement between the parties and supersedes all prior or contemporaneous discussions, representations, and proposals, written or oral, with respect to the subject matters discussed herein No modification of this Agreement shall be effective unless contained in a writing executed by an authorized representative of each party. No term or condition contained in Licensee's purchase order shall apply unless expressly accepted by Rhomobile in writing. If any provision of the Agreement is found void or unenforceable, the remainder shall remain valid and enforceable according to its terms. If any remedy provided is determined to have failed for its essential purpose, all limitations of liability and exclusions of damages set forth in this Agreement shall remain in effect.
65
+
66
+ 9.6 Notices
67
+ Any notice given by one party to the other shall be deemed properly given and deemed received if specifically acknowledged by the receiving party in writing or when successfully delivered to the recipient by hand, fax, or special courier during normal business hours on a business day to the addresses specified below. Each communication and document made or delivered by one party to the other party pursuant to this Agreement shall be in the English language or accompanied by a translation thereof.
68
+ Notices to Rhomobile shall be given to:
69
+
70
+ Rhomobile, Inc.
71
+ 3031 Tisch Way Suite 1002
72
+ San Jose, CA 95128
73
+
74
+ 9.7 Governing Law and Legal Venue
75
+ This Agreement shall be governed by and construed in accordance with the federal laws of the United States of America and the internal laws of the State of California without giving effect to any choice of law rule that would result in the application of the laws of any other jurisdiction. The United Nations Convention on Contracts for the International Sale of Goods (CISG) shall not apply. Each Party (a) hereby irrevocably submits itself to and consents to the jurisdiction of the United States District Court for the Northern District of California (or if such court lacks jurisdiction, the state courts of the State of California) for the purposes of any action, claim, suit or proceeding between the Parties in connection with any controversy, claim, or dispute arising out of or relating to this Agreement; and (b) hereby waives, and agrees not to assert by way of motion, as a defense or otherwise, in any such action, claim, suit or proceeding, any claim that is not personally subject to the jurisdiction of such court(s), that the action, claim, suit or proceeding is brought in an inconvenient forum or that the venue of the action, claim, suit or proceeding is improper.
data/README.md ADDED
@@ -0,0 +1,10 @@
1
+ RhoConnect App Integration Server
2
+ -------------------------------------------------------------
3
+ RhoConnect is an app integration server which keeps enterprise data current and available on users’ devices.
4
+
5
+ More Info
6
+ -------------------------------------------------------------
7
+ * Intro to Rhodes & RhoConnect: <http://docs.rhomobile.com>
8
+ * RhoConnect: <http://docs.rhomobile.com/rhoconnect/introduction>
9
+ * Tutorial: <http://docs.rhomobile.com/rhoconnect/tutorial>
10
+ * RDoc (still rough): <http://rdoc.info/projects/rhomobile/rhoconnect>
data/Rakefile ADDED
@@ -0,0 +1,82 @@
1
+ require 'rubygems'
2
+ load 'tasks/redis.rake'
3
+
4
+ require 'bundler'
5
+ Bundler.setup(:default, :development, :test)
6
+
7
+ require 'yaml'
8
+ $:.unshift File.join(File.dirname(__FILE__),'lib')
9
+ require 'rhoconnect'
10
+
11
+ include Rake::DSL
12
+ task :default => 'spec:all'
13
+ task :spec => 'spec:spec'
14
+
15
+ begin
16
+ require 'rspec/core/rake_task'
17
+ require 'rcov/rcovtask'
18
+
19
+ TYPES = {
20
+ :spec => 'spec/*_spec.rb',
21
+ :perf => 'spec/perf/*_spec.rb',
22
+ :server => 'spec/server/*_spec.rb',
23
+ :api => 'spec/api/**/*_spec.rb',
24
+ :bulk => 'spec/bulk_data/*_spec.rb',
25
+ :jobs => 'spec/jobs/*_spec.rb',
26
+ :stats => 'spec/stats/*_spec.rb',
27
+ :ping => 'spec/ping/*_spec.rb',
28
+ :generator => 'spec/generator/*_spec.rb',
29
+ :bench => 'bench/spec/*_spec.rb'
30
+ }
31
+
32
+ TYPES.each do |type,files|
33
+ desc "Run specs in #{files}"
34
+ RSpec::Core::RakeTask.new("spec:#{type}") do |t|
35
+ t.rspec_opts = ["-b", "-c", "-fd"]
36
+ t.pattern = FileList[TYPES[type]]
37
+ end
38
+ end
39
+
40
+ desc "Run specs in spec/**/*_spec.rb "
41
+ RSpec::Core::RakeTask.new('spec:all') do |t|
42
+ t.rspec_opts = ["-b", "-c", "-fd"]
43
+ t.pattern = FileList[TYPES.values]
44
+ unless RUBY_VERSION =~ /1.9/ # FIXME: code coverage not working for Ruby 1.9 !!! Use CoverMe instead.
45
+ t.rcov = true
46
+ t.rcov_opts = ['--exclude', 'spec/*,gems/*,apps/*,bench/spec/*,json/*']
47
+ end
48
+ end
49
+
50
+ desc "Run doc generator - dumps out doc/protocol.html"
51
+ RSpec::Core::RakeTask.new('doc') do |t|
52
+ t.pattern = FileList['spec/doc/*_spec.rb']
53
+ t.rcov = false
54
+ end
55
+
56
+ rescue LoadError => e
57
+ puts "rspec / rcov not available. Install with: "
58
+ puts "gem install rspec rcov\n\n"
59
+ end
60
+
61
+ # desc "Build rhoconnect gem"
62
+ # task :gem => [ 'spec:all', 'clobber_spec:all', :gemspec, :build ]
63
+
64
+ desc "Run benchmark scripts"
65
+ task :bench do
66
+ login = ask "login: "
67
+ password = ask "password: "
68
+ prefix = 'bench/scripts/'
69
+ suffix = '_script.rb'
70
+ list = ask "scripts(default is '*'): "
71
+ file_list = list.empty? ? FileList[prefix+'*'+suffix] : FileList[prefix+list+suffix]
72
+ file_list.each do |script|
73
+ sh "bench/bench start #{script} #{login} #{password}"
74
+ end
75
+ end
76
+
77
+ def ask(msg)
78
+ print msg
79
+ STDIN.gets.chomp
80
+ end
81
+
82
+ Bundler::GemHelper.install_tasks
data/bench/bench ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
5
+ require 'bench'
6
+
7
+ Bench::Cli.start
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #LOG_FILE = '/var/log/bench_runner.log'
4
+ # orig_stdout = $stdout # redirect stdout to LOG_FILE
5
+ # $stdout = File.new(LOG_FILE, 'a')
6
+
7
+ RHOCONNECT_PATH = ARGV[0]
8
+ puts "Script #{$0} is started at #{Time.now.to_s}"
9
+
10
+ begin
11
+ ruby_version = `rvm current`
12
+ puts "Ruby version: #{ruby_version}"
13
+ puts
14
+
15
+ Dir.chdir(RHOCONNECT_PATH)
16
+ puts "Checking rhoconnect dependencies ..."
17
+ puts `bundle update`
18
+ puts
19
+
20
+ puts "Installing rhoconnect ..."
21
+ puts `rake install`
22
+ puts
23
+
24
+ Dir.chdir "bench/benchapp" #puts Dir.pwd
25
+ puts "Checking bench application dependencies ..."
26
+ puts `bundle update`
27
+ puts
28
+
29
+ # TODO: Check for another instance of bench application
30
+ # log = `ps aux | grep /tmp/benchapp.pid | grep -v grep`
31
+ # puts log
32
+
33
+ puts "Starting bench application ..."
34
+ t = Thread.new do
35
+ log = `rackup -D -P /tmp/benchapp.pid -s thin config.ru`
36
+ puts log
37
+ end
38
+ t.join
39
+
40
+ =begin
41
+ if ruby_version =~ /jruby/
42
+ # puts "Ruby version: #{ruby_version}"
43
+ t = Thread.new do
44
+ puts `jruby -S trinidad -p 9292 -r config.ru --load daemon --daemonize /tmp/benchapp.pid`
45
+ end
46
+ # t.join
47
+ else
48
+ pid = Process.fork do
49
+ log = `rackup -D -P /tmp/benchapp.pid -s thin config.ru`
50
+ puts log
51
+ puts
52
+ Process.exit(0)
53
+ end
54
+ Process.waitpid(pid)
55
+ end
56
+ =end
57
+
58
+ sleep 5
59
+ raise "Error: Bench application failed to start. File /tmp/benchapp.pid does not exist." unless File.exist? '/tmp/benchapp.pid'
60
+
61
+ pid = `cat /tmp/benchapp.pid`
62
+ puts "Bench application is up and running with pid #{pid}"
63
+ puts
64
+
65
+ Dir.chdir "../"
66
+ bench_errors = {}
67
+ puts "Running bench scripts ..."
68
+ %w[ cud_script query_only_script query_script query_md_script ].each do |script|
69
+ puts "Script #{script} ..."
70
+ log = `"./run_#{script}.sh"`
71
+
72
+ count = 0
73
+ stats_found = nil
74
+ log.each_line do |line|
75
+ puts line if count <= 1
76
+ count += 1
77
+ stats_found ||= (/Statistics:/ =~ line)
78
+ if stats_found
79
+ puts line
80
+ if line.match /err: (\d+), verification err: (\d+)$/
81
+ if $1.to_i != 0 || $2.to_i != 0
82
+ bench_errors[script] ||= []
83
+ bench_errors[script] << line
84
+ end
85
+ end
86
+ end
87
+ end
88
+ puts
89
+ end
90
+
91
+ if not bench_errors.empty?
92
+ #puts "TODO: send email"
93
+ puts "The following scripts completed with errors:"
94
+ bench_errors.each do |script, errors|
95
+ puts "#{script}:"
96
+ errors.each { |err| puts " #{err}" }
97
+ end
98
+ end
99
+
100
+ rescue Exception => e
101
+ puts e.message
102
+ ensure
103
+ if File.exist? '/tmp/benchapp.pid'
104
+ pid = `cat /tmp/benchapp.pid`
105
+ res = `kill -9 #{pid}` if pid.to_i > 0 # `kill -s SIGINT #{pid}`
106
+ File.delete '/tmp/benchapp.pid'
107
+ end
108
+ end
109
+
110
+ puts "Script #{$0} is finished at #{Time.now.to_s}"
111
+ puts ""
112
+ # $stdout = orig_stdout #restore stdout