rhoconnect 3.4.5 → 4.0.0.beta.10
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.
- data/CHANGELOG.md +57 -3
- data/Gemfile +9 -7
- data/Gemfile.lock +37 -37
- data/Rakefile +18 -7
- data/bench/benchapp/Gemfile +1 -1
- data/bench/benchapp/config.ru +0 -3
- data/bench/benchapp/controllers/ruby/application.rb +17 -0
- data/bench/benchapp/controllers/ruby/application_controller.rb +17 -0
- data/bench/benchapp/controllers/ruby/mock_adapter_controller.rb +8 -0
- data/bench/benchapp/controllers/ruby/queue_mock_adapter_controller.rb +8 -0
- data/bench/benchapp/{sources → models/ruby}/mock_adapter.rb +1 -1
- data/bench/benchapp/{sources → models/ruby}/queue_mock_adapter.rb +0 -0
- data/bench/benchapp/spec/{sources → models/ruby}/mock_adapter_spec.rb +1 -1
- data/bench/benchapp/spec/{sources → models/ruby}/queue_mock_adapter_spec.rb +1 -1
- data/bench/benchapp/spec/spec_helper.rb +2 -2
- data/bench/blobapp/Gemfile +1 -1
- data/bench/blobapp/config.ru +0 -3
- data/bench/blobapp/controllers/ruby/application_controller.rb +17 -0
- data/bench/blobapp/controllers/ruby/blob_adapter_controller.rb +8 -0
- data/bench/blobapp/{sources → models/ruby}/blob_adapter.rb +9 -2
- data/bench/blobapp/spec/{sources → models/ruby}/blob_adapter_spec.rb +1 -1
- data/bench/blobapp/spec/spec_helper.rb +1 -1
- data/bench/lib/bench/cli.rb +1 -1
- data/bench/scripts/blob_cud_script.rb +1 -1
- data/bench/scripts/query_md_script.rb +1 -1
- data/bench/scripts/query_only_script.rb +1 -1
- data/bench/scripts/query_script.rb +1 -1
- data/bench/scripts/test_query_script.rb +7 -1
- data/bench/spec/mock_adapter_spec.rb +1 -1
- data/bench/spec/result_spec.rb +3 -3
- data/bin/rhoconnect +5 -3
- data/commands/dtach/dtach_install.rb +2 -2
- data/commands/execute.rb +8 -3
- data/commands/generators/app.rb +3 -3
- data/commands/generators/controller.rb +6 -0
- data/commands/generators/model.rb +6 -0
- data/commands/generators/source.rb +3 -3
- data/commands/generators/update.rb +1 -1
- data/commands/redis/redis_about.rb +2 -2
- data/commands/redis/redis_download.rb +1 -1
- data/commands/redis/redis_install.rb +4 -3
- data/commands/redis/redis_restart.rb +4 -4
- data/commands/redis/redis_start.rb +5 -4
- data/commands/redis/redis_startbg.rb +5 -4
- data/commands/redis/redis_status.rb +13 -0
- data/commands/redis/redis_stop.rb +3 -3
- data/commands/rhoconnect/config.rb +28 -16
- data/commands/rhoconnect/flushdb.rb +1 -2
- data/commands/rhoconnect/get_token.rb +15 -11
- data/commands/rhoconnect/restart.rb +13 -5
- data/commands/rhoconnect/set_admin_password.rb +8 -8
- data/commands/rhoconnect/start.rb +74 -16
- data/commands/rhoconnect/startbg.rb +1 -1
- data/commands/rhoconnect/startdebug.rb +1 -1
- data/commands/rhoconnect/stop.rb +13 -1
- data/commands/rhoconnect/web.rb +5 -5
- data/commands/rhoconnect_console/console.rb +7 -5
- data/commands/{rhoconnect → rhoconnect_spec}/spec.rb +0 -0
- data/commands/rhoconnect_war/war.rb +9 -9
- data/commands/utilities/blank_app.ru +56 -0
- data/commands/utilities/redis_runner.rb +54 -19
- data/doc/authentication.txt +80 -6
- data/doc/blob-sync.txt +104 -97
- data/doc/bulk-sync.txt +1 -1
- data/doc/client-java.txt +3 -3
- data/doc/client-objc.txt +2 -2
- data/doc/client.txt +4 -4
- data/doc/command-line.txt +105 -200
- data/doc/data-partitioning.txt +40 -0
- data/doc/deploying.txt +249 -77
- data/doc/extending-rhoconnect-server.txt +40 -57
- data/doc/heroku-addon.txt +2 -0
- data/doc/install.txt +45 -95
- data/doc/introduction.txt +1 -1
- data/doc/java-plugin.txt +365 -190
- data/doc/metadata.txt +1 -1
- data/doc/migration.txt +108 -142
- data/doc/preparing-production.txt +1 -1
- data/doc/push-backend-setup.txt +2 -0
- data/doc/push-client-setup-android.txt +78 -0
- data/doc/push-client-setup-bb.txt +81 -0
- data/doc/push-client-setup-ios.txt +70 -0
- data/doc/push-client-setup-rps.txt +200 -0
- data/doc/push-client-setup.txt +63 -66
- data/doc/push-server-setup.txt +67 -40
- data/doc/push-testing.txt +29 -0
- data/doc/push.txt +21 -6
- data/doc/rest-api.txt +128 -55
- data/doc/rhoconnect-redis-stack.txt +120 -0
- data/doc/settings.txt +4 -12
- data/doc/source-adapters-intro.txt +28 -0
- data/doc/source-adapters.txt +235 -272
- data/doc/stats-middleware.txt +9 -29
- data/doc/supported-platforms.txt +21 -30
- data/doc/testing.txt +40 -42
- data/doc/tutorial.txt +72 -57
- data/examples/simple/Gemfile +1 -1
- data/examples/simple/application.rb +4 -5
- data/examples/simple/my_server.rb +2 -2
- data/examples/simple/settings/settings.yml +1 -1
- data/generators/rhoconnect.rb +151 -50
- data/generators/templates/application/Gemfile +1 -1
- data/generators/templates/application/Rakefile +3 -3
- data/generators/templates/application/config.ru +1 -4
- data/generators/templates/application/controllers/application_controller.rb +17 -0
- data/generators/templates/application/controllers/js/application_controller.js +14 -0
- data/generators/templates/application/controllers/ruby/application_controller.rb +17 -0
- data/generators/templates/application/package.json +8 -0
- data/generators/templates/application/rcgemfile +2 -5
- data/generators/templates/application/settings/settings.yml +3 -3
- data/generators/templates/application/spec/application_controller_spec.rb +23 -0
- data/generators/templates/application/spec/js_spec.rb +25 -0
- data/generators/templates/application/spec/spec_helper.rb +21 -7
- data/generators/templates/source/controllers/js/controller.js +7 -0
- data/generators/templates/source/controllers/ruby/controller.rb +8 -0
- data/generators/templates/source/controllers/ruby/controller_spec.rb +27 -0
- data/generators/templates/source/models/js/model.js +46 -0
- data/generators/templates/source/{source_adapter.rb → models/ruby/model.rb} +15 -10
- data/generators/templates/source/{source_spec.rb → models/ruby/model_spec.rb} +1 -1
- data/install.sh +5 -5
- data/installer/unix-like/create_texts.rb +2 -2
- data/installer/unix-like/rho_connect_install_constants.rb +2 -2
- data/installer/unix-like/rho_connect_install_utilities.rb +1 -1
- data/installer/utils/constants.rb +4 -4
- data/js-adapters/ballroom.js +216 -0
- data/js-adapters/node.rb +52 -0
- data/js-adapters/node_channel.rb +181 -0
- data/js-adapters/request.js +27 -0
- data/js-adapters/response.js +57 -0
- data/js-adapters/rhoconnect_helpers.js +60 -0
- data/js-adapters/router.js +60 -0
- data/js-adapters/server.js +5 -0
- data/lib/rhoconnect/api/app/ans_login.rb +3 -3
- data/lib/rhoconnect/api/app/bulk_data.rb +10 -10
- data/lib/rhoconnect/api/app/fast_delete.rb +11 -10
- data/lib/rhoconnect/api/app/fast_insert.rb +11 -10
- data/lib/rhoconnect/api/app/fast_update.rb +11 -10
- data/lib/rhoconnect/api/app/login.rb +5 -5
- data/lib/rhoconnect/api/app/push_deletes.rb +12 -11
- data/lib/rhoconnect/api/app/push_objects.rb +12 -11
- data/lib/rhoconnect/api/app/query.rb +8 -7
- data/lib/rhoconnect/api/app/queue_updates.rb +98 -94
- data/lib/rhoconnect/api/app/search.rb +8 -7
- data/lib/rhoconnect/api/client/client_get_db_doc.rb +5 -5
- data/lib/rhoconnect/api/client/client_set_db_doc.rb +8 -8
- data/lib/rhoconnect/api/client/create.rb +7 -7
- data/lib/rhoconnect/api/client/get_client_params.rb +4 -4
- data/lib/rhoconnect/api/client/list_client_docs.rb +17 -17
- data/lib/rhoconnect/api/client/register.rb +12 -12
- data/lib/rhoconnect/api/client/reset.rb +5 -5
- data/lib/rhoconnect/api/readstate/set_refresh_time.rb +9 -9
- data/lib/rhoconnect/api/source/get_source_params.rb +4 -4
- data/lib/rhoconnect/api/source/list_sources.rb +16 -16
- data/lib/rhoconnect/api/source/update_source_params.rb +6 -6
- data/lib/rhoconnect/api/store/get_db_doc.rb +4 -4
- data/lib/rhoconnect/api/store/set_db_doc.rb +7 -7
- data/lib/rhoconnect/api/system/get_adapter.rb +4 -4
- data/lib/rhoconnect/api/system/get_license_info.rb +8 -8
- data/lib/rhoconnect/api/system/login.rb +15 -15
- data/lib/rhoconnect/api/system/reset.rb +11 -11
- data/lib/rhoconnect/api/system/save_adapter.rb +4 -4
- data/lib/rhoconnect/api/system/stats.rb +22 -22
- data/lib/rhoconnect/api/user/create_user.rb +7 -7
- data/lib/rhoconnect/api/user/delete_client.rb +6 -6
- data/lib/rhoconnect/api/user/delete_user.rb +11 -10
- data/lib/rhoconnect/api/user/list_clients.rb +4 -4
- data/lib/rhoconnect/api/user/list_source_docs.rb +10 -10
- data/lib/rhoconnect/api/user/list_users.rb +3 -3
- data/lib/rhoconnect/api/user/ping.rb +3 -3
- data/lib/rhoconnect/api/user/show_user.rb +3 -3
- data/lib/rhoconnect/api/user/update_user.rb +5 -5
- data/lib/rhoconnect/api/user/user_get_db_doc.rb +5 -5
- data/lib/rhoconnect/api/user/user_set_db_doc.rb +10 -10
- data/lib/rhoconnect/api_token.rb +5 -6
- data/lib/rhoconnect/app.rb +6 -46
- data/lib/rhoconnect/application/init.rb +5 -2
- data/lib/rhoconnect/async.rb +76 -39
- data/lib/rhoconnect/bulk_data/bulk_data.rb +6 -4
- data/lib/rhoconnect/client.rb +59 -9
- data/lib/rhoconnect/condition/admin_required.rb +27 -0
- data/lib/rhoconnect/condition/client_required.rb +50 -0
- data/lib/rhoconnect/condition/login_required.rb +22 -0
- data/lib/rhoconnect/condition/source_required.rb +49 -0
- data/lib/rhoconnect/condition/verbs.rb +17 -0
- data/lib/rhoconnect/condition/verify_success.rb +19 -0
- data/lib/rhoconnect/controller/app_base.rb +74 -0
- data/lib/rhoconnect/controller/base.rb +68 -0
- data/lib/rhoconnect/controller/clients_controller.rb +79 -0
- data/lib/rhoconnect/controller/dynamic_adapter_controller.rb +93 -0
- data/lib/rhoconnect/controller/js_base.rb +124 -0
- data/lib/rhoconnect/controller/read_state_controller.rb +22 -0
- data/lib/rhoconnect/controller/source_adapter_base.rb +14 -0
- data/lib/rhoconnect/controller/sources_controller.rb +44 -0
- data/lib/rhoconnect/controller/store_controller.rb +25 -0
- data/lib/rhoconnect/controller/system_controller.rb +67 -0
- data/lib/rhoconnect/controller/users_controller.rb +99 -0
- data/lib/rhoconnect/db_adapter.rb +1 -3
- data/lib/rhoconnect/document.rb +159 -50
- data/lib/rhoconnect/handler/authenticate/execute_methods.rb +77 -0
- data/lib/rhoconnect/handler/authenticate/runner.rb +49 -0
- data/lib/rhoconnect/handler/authenticate.rb +3 -0
- data/lib/rhoconnect/handler/bulk_data.rb +28 -0
- data/lib/rhoconnect/handler/changes/engine.rb +271 -0
- data/lib/rhoconnect/handler/changes/execute_methods.rb +88 -0
- data/lib/rhoconnect/handler/changes/pass_through_runner.rb +11 -0
- data/lib/rhoconnect/handler/changes/runner.rb +53 -0
- data/lib/rhoconnect/handler/changes.rb +31 -0
- data/lib/rhoconnect/handler/helpers/auth_method.rb +29 -0
- data/lib/rhoconnect/handler/helpers/binding.rb +18 -0
- data/lib/rhoconnect/handler/helpers/bulk_data.rb +53 -0
- data/lib/rhoconnect/handler/helpers/source_job.rb +14 -0
- data/lib/rhoconnect/handler/helpers.rb +4 -0
- data/lib/rhoconnect/handler/plugin_callbacks/execute_methods.rb +99 -0
- data/lib/rhoconnect/handler/plugin_callbacks/runner.rb +28 -0
- data/lib/rhoconnect/handler/plugin_callbacks.rb +67 -0
- data/lib/rhoconnect/handler/query/engine.rb +93 -0
- data/lib/rhoconnect/handler/query/execute_methods.rb +21 -0
- data/lib/rhoconnect/handler/query/pass_through_runner.rb +35 -0
- data/lib/rhoconnect/handler/query/runner.rb +270 -0
- data/lib/rhoconnect/handler/query.rb +19 -0
- data/lib/rhoconnect/handler/search/engine.rb +60 -0
- data/lib/rhoconnect/handler/search/execute_methods.rb +32 -0
- data/lib/rhoconnect/handler/search/pass_through_runner.rb +18 -0
- data/lib/rhoconnect/handler/search/runner.rb +104 -0
- data/lib/rhoconnect/handler/search.rb +26 -0
- data/lib/rhoconnect/handler/sync.rb +29 -0
- data/lib/rhoconnect/jobs/source_job.rb +13 -4
- data/lib/rhoconnect/js_adapter.rb +79 -0
- data/lib/rhoconnect/license.rb +10 -2
- data/lib/rhoconnect/middleware/current_user.rb +14 -1
- data/lib/rhoconnect/middleware/helpers.rb +10 -93
- data/lib/rhoconnect/middleware/x_domain_session_wrapper.rb +1 -1
- data/lib/rhoconnect/model/base.rb +229 -0
- data/lib/rhoconnect/model/dynamic_adapter_model.rb +90 -0
- data/lib/rhoconnect/model/js_base.rb +121 -0
- data/lib/rhoconnect/ping/android.rb +1 -1
- data/lib/rhoconnect/predefined_adapters/bench_adapter.rb +7 -4
- data/lib/rhoconnect/read_state.rb +3 -3
- data/lib/rhoconnect/server.rb +159 -190
- data/lib/rhoconnect/source.rb +100 -11
- data/lib/rhoconnect/stats/record.rb +10 -10
- data/lib/rhoconnect/store.rb +905 -591
- data/lib/rhoconnect/{model.rb → store_orm.rb} +53 -115
- data/lib/rhoconnect/tasks.rb +18 -4
- data/lib/rhoconnect/test_methods.rb +30 -17
- data/lib/rhoconnect/user.rb +35 -17
- data/lib/rhoconnect/utilities.rb +1 -1
- data/lib/rhoconnect/version.rb +2 -2
- data/lib/rhoconnect/web-console/server.rb +29 -14
- data/lib/rhoconnect/web-console/views/home.js +10 -10
- data/lib/rhoconnect/web-console/views/new_ping.js +1 -1
- data/lib/rhoconnect.rb +120 -51
- data/rhoconnect.gemspec +4 -3
- data/spec/api/api_helper.rb +1 -6
- data/spec/api/app/fast_delete_spec.rb +4 -4
- data/spec/api/app/fast_insert_spec.rb +4 -4
- data/spec/api/app/fast_update_spec.rb +8 -8
- data/spec/api/app/push_deletes_spec.rb +2 -2
- data/spec/api/app/push_objects_spec.rb +5 -5
- data/spec/api/client/client_get_db_doc_spec.rb +6 -4
- data/spec/api/client/client_set_db_doc_spec.rb +3 -2
- data/spec/api/client/get_client_params_spec.rb +14 -0
- data/spec/api/client/list_client_docs_spec.rb +30 -20
- data/spec/api/client/reset_spec.rb +36 -0
- data/spec/api/source/get_source_params_spec.rb +23 -17
- data/spec/api/system/get_license_info_spec.rb +0 -20
- data/spec/api/system/login_spec.rb +8 -0
- data/spec/api/system/reset_spec.rb +0 -1
- data/spec/api/system/stats_spec.rb +5 -5
- data/spec/api/user/create_user_spec.rb +14 -6
- data/spec/api/user/delete_user_spec.rb +20 -18
- data/spec/api/user/list_users_spec.rb +5 -6
- data/spec/api/user/update_user_spec.rb +5 -4
- data/spec/apps/rhotestapp/config.ru +16 -1
- data/spec/apps/rhotestapp/controllers/js/js_sample_controller.js +23 -0
- data/spec/apps/rhotestapp/controllers/js/sample2_controller.js +32 -0
- data/spec/apps/rhotestapp/controllers/ruby/application_controller.rb +21 -0
- data/spec/apps/rhotestapp/controllers/ruby/sample_adapter_controller.rb +8 -0
- data/spec/apps/rhotestapp/models/js/js_sample.js +55 -0
- data/spec/apps/rhotestapp/models/js/sample2.js +25 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/base_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/fixed_schema_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/other_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/sample_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/simple_adapter.rb +2 -2
- data/spec/apps/rhotestapp/{sources → models/ruby}/sub_adapter.rb +0 -0
- data/spec/apps/rhotestapp/settings/settings.yml +0 -1
- data/spec/bulk_data/bulk_data_spec.rb +20 -5
- data/spec/cli/cli_spec.rb +83 -0
- data/spec/client_spec.rb +20 -17
- data/spec/client_sync_spec.rb +244 -406
- data/spec/controllers/js_base_spec.rb +89 -0
- data/spec/doc/doc_spec.rb +18 -18
- data/spec/document_spec.rb +29 -13
- data/spec/dynamic_adapter_spec.rb +6 -6
- data/spec/generator/generator_spec.rb +7 -4
- data/spec/jobs/bulk_data_job_spec.rb +14 -10
- data/spec/jobs/source_job_spec.rb +8 -8
- data/spec/license_spec.rb +5 -2
- data/spec/models/js_model_spec.rb +39 -0
- data/spec/node_spec.rb +42 -0
- data/spec/perf/store_perf_spec.rb +67 -12
- data/spec/ping/android_spec.rb +1 -1
- data/spec/read_state_spec.rb +1 -1
- data/spec/rhoconnect_spec.rb +1 -1
- data/spec/server/cors_spec.rb +14 -18
- data/spec/server/server_spec.rb +265 -88
- data/spec/server/stats_spec.rb +1 -1
- data/spec/source_adapter_spec.rb +54 -27
- data/spec/source_spec.rb +8 -3
- data/spec/source_sync_spec.rb +538 -468
- data/spec/spec_helper.rb +35 -4
- data/spec/stats/record_spec.rb +10 -10
- data/spec/{model_spec.rb → store_orm_spec.rb} +56 -54
- data/spec/store_spec.rb +159 -179
- data/spec/support/shared_examples.rb +36 -27
- data/spec/sync_states_spec.rb +40 -33
- data/spec/test_methods_spec.rb +18 -14
- data/spec/user_spec.rb +17 -30
- metadata +156 -52
- data/bench/benchapp/application.rb +0 -39
- data/bench/blobapp/application.rb +0 -44
- data/commands/rhoconnect/clean_start.rb +0 -9
- data/commands/rhoconnect/create_user.rb +0 -18
- data/commands/rhoconnect/delete_device.rb +0 -9
- data/commands/rhoconnect/delete_user.rb +0 -8
- data/commands/rhoconnect/reset.rb +0 -16
- data/commands/rhoconnect/reset_refresh.rb +0 -11
- data/generators/templates/application/application.rb +0 -43
- data/lib/rhoconnect/client_sync.rb +0 -434
- data/lib/rhoconnect/dynamic_adapter.rb +0 -91
- data/lib/rhoconnect/middleware/admin_user.rb +0 -23
- data/lib/rhoconnect/middleware/current_request.rb +0 -16
- data/lib/rhoconnect/middleware/login_required.rb +0 -22
- data/lib/rhoconnect/source_adapter.rb +0 -132
- data/lib/rhoconnect/source_sync.rb +0 -464
- data/spec/apps/rhotestapp/application.rb +0 -23
|
@@ -61,25 +61,55 @@ describe "Rhoconnect Performance" do
|
|
|
61
61
|
@data1 = get_test_data(10000)
|
|
62
62
|
@data1['950']['Phone1'] = 'This is changed'
|
|
63
63
|
expected = {'950' => {'Phone1' => 'This is changed'}}
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
@s.put_data(:md,@data1).should == true
|
|
65
|
+
@c.put_data(:cd,@data).should == true
|
|
66
66
|
start = start_timer
|
|
67
|
-
cs =
|
|
67
|
+
cs = create_sync_handler
|
|
68
68
|
token,progress_count,total_count,res = cs.send_new_page
|
|
69
69
|
lap_timer('compute_page duration', start)
|
|
70
|
-
|
|
70
|
+
@c.get_data(:page).should == expected
|
|
71
|
+
res['insert'].should == expected
|
|
72
|
+
res['delete'].should == {'950' => {'Phone1' => @data['950']['Phone1']}}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "should process single attribute diff for 10000-record doc using brute-force approach" do
|
|
76
|
+
@data = get_test_data(10000)
|
|
77
|
+
@data1 = get_test_data(10000)
|
|
78
|
+
@data1['950']['Phone1'] = 'This is changed'
|
|
79
|
+
expected = {'950' => {'Phone1' => 'This is changed'}}
|
|
80
|
+
@s.put_data(:md,@data1).should == true
|
|
81
|
+
@c.put_data(:cd,@data).should == true
|
|
82
|
+
start = start_timer
|
|
83
|
+
cs = create_sync_handler
|
|
84
|
+
token,progress_count,total_count,res = cs.send_new_page_bruteforce
|
|
85
|
+
lap_timer('compute_page duration', start)
|
|
86
|
+
@c.get_data(:page).should == expected
|
|
71
87
|
res['insert'].should == expected
|
|
72
88
|
res['delete'].should == {'950' => {'Phone1' => @data['950']['Phone1']}}
|
|
73
89
|
end
|
|
74
90
|
|
|
75
91
|
it "should process full-sync for 5000-record doc" do
|
|
76
92
|
@data = get_test_data(5000)
|
|
77
|
-
|
|
93
|
+
@s.put_data(:md,@data).should == true
|
|
78
94
|
start = start_timer
|
|
79
|
-
|
|
95
|
+
params = { :p_size => 5000 }
|
|
96
|
+
cs = create_sync_handler params
|
|
80
97
|
token,progress_count,total_count,res = cs.send_new_page
|
|
81
98
|
lap_timer('compute_page duration', start)
|
|
82
|
-
|
|
99
|
+
@c.get_data(:page).should == @data
|
|
100
|
+
res['insert'].should == @data
|
|
101
|
+
res['delete'].should == nil
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "should process full-sync for 5000-record doc using brute-force approach" do
|
|
105
|
+
@data = get_test_data(5000)
|
|
106
|
+
@s.put_data(:md,@data).should == true
|
|
107
|
+
start = start_timer
|
|
108
|
+
params = { :p_size => 5000 }
|
|
109
|
+
cs = create_sync_handler params
|
|
110
|
+
token,progress_count,total_count,res = cs.send_new_page_bruteforce
|
|
111
|
+
lap_timer('compute_page duration', start)
|
|
112
|
+
@c.get_data(:page).should == @data
|
|
83
113
|
res['insert'].should == @data
|
|
84
114
|
res['delete'].should == nil
|
|
85
115
|
end
|
|
@@ -88,17 +118,42 @@ describe "Rhoconnect Performance" do
|
|
|
88
118
|
@data = generate_fake_data(5000,true)
|
|
89
119
|
sleep(1.5)
|
|
90
120
|
@data1 = generate_fake_data(5000,true)
|
|
91
|
-
|
|
92
|
-
|
|
121
|
+
@s.put_data(:md,@data).should == true
|
|
122
|
+
@c.put_data(:cd,@data1).should == true
|
|
93
123
|
start = start_timer
|
|
94
|
-
|
|
124
|
+
params = { :p_size => 5000 }
|
|
125
|
+
cs = create_sync_handler params
|
|
95
126
|
token,progress_count,total_count,res = cs.send_new_page
|
|
96
127
|
lap_timer('compute_page duration', start)
|
|
97
|
-
|
|
98
|
-
|
|
128
|
+
@c.get_data(:page).should == @data
|
|
129
|
+
@c.get_data(:cd).should == @s.get_data(:md)
|
|
130
|
+
res['insert'].should == @data
|
|
131
|
+
res['delete'].should == @data1
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "should process worst-case sync scenario there every attrib of every object is changed for 5000-record doc using brute-force approach" do
|
|
135
|
+
@data = generate_fake_data(5000,true)
|
|
136
|
+
sleep(1.5)
|
|
137
|
+
@data1 = generate_fake_data(5000,true)
|
|
138
|
+
@s.put_data(:md,@data).should == true
|
|
139
|
+
@c.put_data(:cd,@data1).should == true
|
|
140
|
+
start = start_timer
|
|
141
|
+
params = { :p_size => 5000 }
|
|
142
|
+
cs = create_sync_handler params
|
|
143
|
+
token,progress_count,total_count,res = cs.send_new_page_bruteforce
|
|
144
|
+
lap_timer('compute_page duration', start)
|
|
145
|
+
@c.get_data(:page).should == @data
|
|
146
|
+
@c.get_data(:cd).should == @s.get_data(:md)
|
|
99
147
|
res['insert'].should == @data
|
|
100
148
|
res['delete'].should == @data1
|
|
101
149
|
end
|
|
102
150
|
end
|
|
103
151
|
|
|
152
|
+
# helper
|
|
153
|
+
def create_sync_handler(params = {})
|
|
154
|
+
rh = lambda { @model.do_query(params[:query]) }
|
|
155
|
+
@model = Rhoconnect::Model::Base.create(@s)
|
|
156
|
+
Rhoconnect::Handler::Query::Runner.new(@model, @c, rh, params)
|
|
157
|
+
end
|
|
158
|
+
|
|
104
159
|
end
|
data/spec/ping/android_spec.rb
CHANGED
|
@@ -69,7 +69,7 @@ describe "Ping Android" do
|
|
|
69
69
|
@response.stub!(:[]).and_return(nil)
|
|
70
70
|
setup_post_yield(@response)
|
|
71
71
|
|
|
72
|
-
Store.should_receive(:
|
|
72
|
+
Store.should_receive(:flush_data).once
|
|
73
73
|
Android.should_receive(:get_c2dm_token).twice.and_return('BadToken')
|
|
74
74
|
Android.should_receive(:log).twice
|
|
75
75
|
lambda { Android.ping(@params) }.should raise_error(Android::InvalidAuthToken, "Invalid or expired auth token. Obtain new authtoken from C2DM service.")
|
data/spec/read_state_spec.rb
CHANGED
data/spec/rhoconnect_spec.rb
CHANGED
data/spec/server/cors_spec.rb
CHANGED
|
@@ -33,10 +33,9 @@ describe "CORS middleware" do
|
|
|
33
33
|
@middleware = Rack::Cors.new @app, {} do |cfg|
|
|
34
34
|
cfg.allow do |allow|
|
|
35
35
|
allow.origins /allowed_origin/, 'file://'
|
|
36
|
-
allow.resource
|
|
37
|
-
allow.resource
|
|
38
|
-
allow.resource
|
|
39
|
-
allow.resource '/api/application/*', :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => true
|
|
36
|
+
allow.resource "/StubAdapter", :headers => 'allowed_header', :methods => [:get, :post, :put, :delete], :credentials => true, :expose => 'Content-Length'
|
|
37
|
+
allow.resource "/StubAdapter/any_header_allowed_here", :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => true
|
|
38
|
+
allow.resource "/StubAdapter/no_default_exposed_headers", :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => true
|
|
40
39
|
end
|
|
41
40
|
end
|
|
42
41
|
end
|
|
@@ -58,16 +57,13 @@ describe "CORS middleware" do
|
|
|
58
57
|
end
|
|
59
58
|
exception_happens.should == true
|
|
60
59
|
|
|
61
|
-
allow.resource
|
|
62
|
-
allow.resource '/application/*', :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => false
|
|
63
|
-
allow.resource '/api/application', :headers => 'allowed_header', :methods => [:get, :post, :put, :delete], :credentials => true, :expose => 'Content-Length'
|
|
64
|
-
allow.resource '/api/application/*', :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => true
|
|
60
|
+
allow.resource "/*", :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => true
|
|
65
61
|
end
|
|
66
62
|
end
|
|
67
63
|
|
|
68
64
|
env = {
|
|
69
65
|
'REQUEST_METHOD' => 'OPTIONS',
|
|
70
|
-
'PATH_INFO' => '/
|
|
66
|
+
'PATH_INFO' => '/StubAdapter',
|
|
71
67
|
'HTTP_ORIGIN' => 'wrong_origin',
|
|
72
68
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST'
|
|
73
69
|
}
|
|
@@ -79,7 +75,7 @@ describe "CORS middleware" do
|
|
|
79
75
|
it "preflight check should disable unknown origins" do
|
|
80
76
|
env = {
|
|
81
77
|
'REQUEST_METHOD' => 'OPTIONS',
|
|
82
|
-
'PATH_INFO' => '/
|
|
78
|
+
'PATH_INFO' => '/StubAdapter',
|
|
83
79
|
'HTTP_ORIGIN' => 'wrong_origin',
|
|
84
80
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST'
|
|
85
81
|
}
|
|
@@ -91,7 +87,7 @@ describe "CORS middleware" do
|
|
|
91
87
|
it "preflight check should allow known origins" do
|
|
92
88
|
env = {
|
|
93
89
|
'REQUEST_METHOD' => 'OPTIONS',
|
|
94
|
-
'PATH_INFO' => '/
|
|
90
|
+
'PATH_INFO' => '/StubAdapter',
|
|
95
91
|
'HTTP_ORIGIN' => 'allowed_origin',
|
|
96
92
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST'
|
|
97
93
|
}
|
|
@@ -103,7 +99,7 @@ describe "CORS middleware" do
|
|
|
103
99
|
it "able to use fallback X-ORIGIN request header if ORIGIN header is undefined" do
|
|
104
100
|
env = {
|
|
105
101
|
'REQUEST_METHOD' => 'POST',
|
|
106
|
-
'PATH_INFO' => '/
|
|
102
|
+
'PATH_INFO' => '/StubAdapter',
|
|
107
103
|
'HTTP_X_ORIGIN' => 'allowed_origin',
|
|
108
104
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST'
|
|
109
105
|
}
|
|
@@ -115,7 +111,7 @@ describe "CORS middleware" do
|
|
|
115
111
|
it "preflight check treats empty 'null' origin as 'file://' one" do
|
|
116
112
|
env = {
|
|
117
113
|
'REQUEST_METHOD' => 'OPTIONS',
|
|
118
|
-
'PATH_INFO' => '/
|
|
114
|
+
'PATH_INFO' => '/StubAdapter',
|
|
119
115
|
'HTTP_ORIGIN' => 'null',
|
|
120
116
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST'
|
|
121
117
|
}
|
|
@@ -127,7 +123,7 @@ describe "CORS middleware" do
|
|
|
127
123
|
it "preflight check should enable allowed request headers" do
|
|
128
124
|
env = {
|
|
129
125
|
'REQUEST_METHOD' => 'OPTIONS',
|
|
130
|
-
'PATH_INFO' => '/
|
|
126
|
+
'PATH_INFO' => '/StubAdapter',
|
|
131
127
|
'HTTP_ORIGIN' => 'allowed_origin',
|
|
132
128
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
|
|
133
129
|
'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'allowed_header'
|
|
@@ -141,7 +137,7 @@ describe "CORS middleware" do
|
|
|
141
137
|
it "preflight check should disable not allowed request headers" do
|
|
142
138
|
env = {
|
|
143
139
|
'REQUEST_METHOD' => 'OPTIONS',
|
|
144
|
-
'PATH_INFO' => '/
|
|
140
|
+
'PATH_INFO' => '/StubAdapter',
|
|
145
141
|
'HTTP_ORIGIN' => 'allowed_origin',
|
|
146
142
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
|
|
147
143
|
'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'not_allowed_header'
|
|
@@ -155,7 +151,7 @@ describe "CORS middleware" do
|
|
|
155
151
|
it "preflight check should allow any request headers if configured so" do
|
|
156
152
|
env = {
|
|
157
153
|
'REQUEST_METHOD' => 'OPTIONS',
|
|
158
|
-
'PATH_INFO' => '/
|
|
154
|
+
'PATH_INFO' => '/StubAdapter/any_header_allowed_here',
|
|
159
155
|
'HTTP_ORIGIN' => 'allowed_origin',
|
|
160
156
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST',
|
|
161
157
|
'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' => 'not_allowed_header'
|
|
@@ -170,7 +166,7 @@ describe "CORS middleware" do
|
|
|
170
166
|
it "only allowed response headers should be exposed" do
|
|
171
167
|
env = {
|
|
172
168
|
'REQUEST_METHOD' => 'POST',
|
|
173
|
-
'PATH_INFO' => '/
|
|
169
|
+
'PATH_INFO' => '/StubAdapter',
|
|
174
170
|
'HTTP_ORIGIN' => 'allowed_origin',
|
|
175
171
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST'
|
|
176
172
|
}
|
|
@@ -182,7 +178,7 @@ describe "CORS middleware" do
|
|
|
182
178
|
it "no response headers should be exposed by default" do
|
|
183
179
|
env = {
|
|
184
180
|
'REQUEST_METHOD' => 'POST',
|
|
185
|
-
'PATH_INFO' => '/
|
|
181
|
+
'PATH_INFO' => '/StubAdapter/no_default_exposed_headers',
|
|
186
182
|
'HTTP_ORIGIN' => 'allowed_origin',
|
|
187
183
|
'HTTP_ACCESS_CONTROL_REQUEST_METHOD' => 'POST'
|
|
188
184
|
}
|