rhoconnect 3.4.5 → 4.0.0.beta.10
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/spec/spec_helper.rb
CHANGED
@@ -4,6 +4,8 @@ require 'webmock/rspec'
|
|
4
4
|
require 'rspec/autorun' # Required for Rcov to run with rspec '~> 2.8.0'
|
5
5
|
if RUBY_VERSION =~ /1.9/ || defined?(JRUBY_VERSION)
|
6
6
|
require 'simplecov'
|
7
|
+
require 'simplecov-rcov'
|
8
|
+
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
|
7
9
|
SimpleCov.start do
|
8
10
|
add_filter '/spec/'
|
9
11
|
end
|
@@ -45,6 +47,7 @@ end
|
|
45
47
|
|
46
48
|
require 'rhoconnect'
|
47
49
|
include Rhoconnect
|
50
|
+
require 'rhoconnect/server'
|
48
51
|
|
49
52
|
# require RSpec shared examples
|
50
53
|
SPEC_PATH = File.expand_path(File.dirname(__FILE__))
|
@@ -140,9 +143,19 @@ module TestHelpers
|
|
140
143
|
end
|
141
144
|
end
|
142
145
|
|
143
|
-
def
|
146
|
+
def set_source_queue_state(source, state,assoc_key,append=false)
|
144
147
|
state.each do |dockey,data|
|
145
|
-
|
148
|
+
source.push_queue(dockey,assoc_key,data,append)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def set_doc_state(docobj, state,append=false)
|
153
|
+
state.each do |dockey,data|
|
154
|
+
if data.is_a?(Hash) or data.is_a?(Array)
|
155
|
+
docobj.put_data(dockey,data,append)
|
156
|
+
else
|
157
|
+
docobj.put_value(dockey,data)
|
158
|
+
end
|
146
159
|
end
|
147
160
|
end
|
148
161
|
|
@@ -173,11 +186,29 @@ module TestHelpers
|
|
173
186
|
end
|
174
187
|
end
|
175
188
|
|
176
|
-
def
|
189
|
+
def verify_doc_result(docobj, result)
|
190
|
+
result.keys.sort.each do |dockey|
|
191
|
+
expected = result[dockey]
|
192
|
+
begin
|
193
|
+
if expected.is_a?(Hash)
|
194
|
+
docobj.get_data(dockey).should == expected
|
195
|
+
elsif expected.is_a?(Array)
|
196
|
+
docobj.get_data(dockey,Array).should == expected
|
197
|
+
else
|
198
|
+
docobj.get_value(dockey).should == expected
|
199
|
+
end
|
200
|
+
rescue RSpec::Expectations::ExpectationNotMetError => e
|
201
|
+
message = "\nVerifying `#{dockey}`\n\n" + e.to_s
|
202
|
+
Kernel::raise(RSpec::Expectations::ExpectationNotMetError.new(message))
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
def verify_source_queue_data(source, result)
|
177
208
|
result.keys.sort.each do |dockey|
|
178
209
|
expected = result[dockey]
|
179
210
|
begin
|
180
|
-
data,assoc_keys =
|
211
|
+
data,assoc_keys = source.get_queue(dockey)
|
181
212
|
data.should == expected
|
182
213
|
rescue RSpec::Expectations::ExpectationNotMetError => e
|
183
214
|
message = "\nVerifying `#{dockey}`\n\n" + e.to_s
|
data/spec/stats/record_spec.rb
CHANGED
@@ -10,20 +10,20 @@ describe "Record" do
|
|
10
10
|
|
11
11
|
before(:each) do
|
12
12
|
@now = 9
|
13
|
-
Store.
|
13
|
+
Store.flush_all
|
14
14
|
Store.stub!(:lock).and_yield
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should add metric to the record and trim record size" do
|
18
18
|
Time.stub!(:now).and_return { @now }
|
19
19
|
10.times { @now += 1; Rhoconnect::Stats::Record.add('foo') }
|
20
|
-
Store.
|
20
|
+
Store.zrange('stat:foo', 0, -1).should == ["2:12", "2:14", "2:16", "2:18"]
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should add single record" do
|
24
24
|
Time.stub!(:now).and_return { @now += 1; @now }
|
25
25
|
Rhoconnect::Stats::Record.add('foo')
|
26
|
-
Store.
|
26
|
+
Store.zrange('stat:foo', 0, -1).should == ["1:10"]
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should return type of metric" do
|
@@ -33,11 +33,11 @@ describe "Record" do
|
|
33
33
|
|
34
34
|
it "should set string metric" do
|
35
35
|
Rhoconnect::Stats::Record.set_value('foo', 'bar')
|
36
|
-
Store.
|
36
|
+
Store.get_value('stat:foo').should == 'bar'
|
37
37
|
end
|
38
38
|
|
39
39
|
it "should get string metric" do
|
40
|
-
Store.
|
40
|
+
Store.put_value('stat:foo', 'bar')
|
41
41
|
Rhoconnect::Stats::Record.get_value('foo').should == 'bar'
|
42
42
|
end
|
43
43
|
|
@@ -55,7 +55,7 @@ describe "Record" do
|
|
55
55
|
Rhoconnect::Stats::Record.save_average('foo',time)
|
56
56
|
time += 1
|
57
57
|
end
|
58
|
-
Store.
|
58
|
+
Store.zrange('stat:foo', 0, -1).should == ["2.0,1.0:10", "2.0,5.0:12"]
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should update metric" do
|
@@ -74,7 +74,7 @@ describe "Record" do
|
|
74
74
|
@incr = 2
|
75
75
|
end
|
76
76
|
end
|
77
|
-
Store.
|
77
|
+
Store.zrange('stat:foo', 0, -1).should == ["1,1.0:14", "1,1.0:18", "1,1.0:20"]
|
78
78
|
Rhoconnect.stats = false
|
79
79
|
end
|
80
80
|
|
@@ -87,15 +87,15 @@ describe "Record" do
|
|
87
87
|
it "should reset metric" do
|
88
88
|
Time.stub!(:now).and_return { @now }
|
89
89
|
10.times { @now += 1; Rhoconnect::Stats::Record.add('foo') }
|
90
|
-
Store.
|
90
|
+
Store.zrange('stat:foo', 0, -1).should == ["2:12", "2:14", "2:16", "2:18"]
|
91
91
|
Rhoconnect::Stats::Record.reset('foo')
|
92
|
-
Store.
|
92
|
+
Store.zrange('stat:foo', 0, -1).should == []
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should reset all metrics" do
|
96
96
|
Rhoconnect::Stats::Record.add('foo')
|
97
97
|
Rhoconnect::Stats::Record.add('bar')
|
98
98
|
Rhoconnect::Stats::Record.reset_all
|
99
|
-
Store.
|
99
|
+
Store.keys('stat:*').should == []
|
100
100
|
end
|
101
101
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# Taken from http://github.com/voloko/redis-model
|
2
2
|
require File.join(File.dirname(__FILE__),'spec_helper')
|
3
3
|
|
4
|
-
describe Rhoconnect::
|
4
|
+
describe Rhoconnect::StoreOrm do
|
5
5
|
|
6
6
|
context "DSL" do
|
7
|
-
class TestDSL < Rhoconnect::
|
7
|
+
class TestDSL < Rhoconnect::StoreOrm
|
8
8
|
field :foo
|
9
9
|
list :bar
|
10
10
|
set :sloppy
|
@@ -29,7 +29,7 @@ describe Rhoconnect::Model do
|
|
29
29
|
|
30
30
|
it "should raise error on invalid type" do
|
31
31
|
lambda do
|
32
|
-
class TestInvalidType < Rhoconnect::
|
32
|
+
class TestInvalidType < Rhoconnect::StoreOrm
|
33
33
|
field :invalid, :invalid_type
|
34
34
|
end
|
35
35
|
end.should raise_error(ArgumentError, 'Unknown type invalid_type for field invalid')
|
@@ -37,7 +37,7 @@ describe Rhoconnect::Model do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
context "field type cast" do
|
40
|
-
class TestType < Rhoconnect::
|
40
|
+
class TestType < Rhoconnect::StoreOrm
|
41
41
|
field :foo_string, :string
|
42
42
|
field :foo_json, :json
|
43
43
|
field :foo_date, :datetime
|
@@ -48,23 +48,29 @@ describe Rhoconnect::Model do
|
|
48
48
|
set :set_date, :datetime
|
49
49
|
end
|
50
50
|
|
51
|
-
class TestValidateType < Rhoconnect::
|
51
|
+
class TestValidateType < Rhoconnect::StoreOrm
|
52
52
|
field :v_field, :string
|
53
53
|
validates_presence_of :v_field
|
54
54
|
end
|
55
55
|
|
56
|
-
class TestLoadType < Rhoconnect::
|
56
|
+
class TestLoadType < Rhoconnect::StoreOrm
|
57
57
|
field :something, :string
|
58
58
|
attr_accessor :foo
|
59
59
|
end
|
60
60
|
|
61
61
|
before(:each) do
|
62
|
+
Store.create
|
63
|
+
Store.flush_all
|
62
64
|
@xRedisMock = RSpec::Mocks::Mock.new
|
63
65
|
@yRedisMock = RSpec::Mocks::Mock.new
|
66
|
+
@xRedisDbMock = RSpec::Mocks::Mock.new
|
67
|
+
@yRedisDbMock = RSpec::Mocks::Mock.new
|
64
68
|
@x = TestType.with_key(1)
|
65
69
|
@y = TestType.with_key(1)
|
66
|
-
@x.stub!(:
|
67
|
-
@y.stub!(:
|
70
|
+
@x.stub!(:store).and_return(@xRedisMock)
|
71
|
+
@y.stub!(:store).and_return(@yRedisMock)
|
72
|
+
@xRedisMock.stub!(:db).and_return(@xRedisDbMock)
|
73
|
+
@yRedisMock.stub!(:db).and_return(@yRedisDbMock)
|
68
74
|
end
|
69
75
|
|
70
76
|
it "should create with string id" do
|
@@ -96,23 +102,23 @@ describe Rhoconnect::Model do
|
|
96
102
|
end
|
97
103
|
|
98
104
|
it "should save string as is" do
|
99
|
-
@xRedisMock.should_receive(:
|
100
|
-
@yRedisMock.should_receive(:
|
105
|
+
@xRedisMock.should_receive(:put_value).with('test_type:1:foo_string', 'xxx')
|
106
|
+
@yRedisMock.should_receive(:get_value).with('test_type:1:foo_string').and_return('xxx')
|
101
107
|
@x.foo_string = 'xxx'
|
102
108
|
@y.foo_string.should be_instance_of(String)
|
103
109
|
end
|
104
110
|
|
105
111
|
it "should marshal integer fields" do
|
106
|
-
@xRedisMock.should_receive(:
|
107
|
-
@yRedisMock.should_receive(:
|
112
|
+
@xRedisMock.should_receive(:put_value).with('test_type:1:foo_int', '12')
|
113
|
+
@yRedisMock.should_receive(:get_value).with('test_type:1:foo_int').and_return('12')
|
108
114
|
@x.foo_int = 12
|
109
115
|
@y.foo_int.should be_kind_of(Integer)
|
110
116
|
@y.foo_int.should == 12
|
111
117
|
end
|
112
118
|
|
113
119
|
it "should marshal float fields" do
|
114
|
-
@xRedisMock.should_receive(:
|
115
|
-
@yRedisMock.should_receive(:
|
120
|
+
@xRedisMock.should_receive(:put_value).with('test_type:1:foo_float', '12.1')
|
121
|
+
@yRedisMock.should_receive(:get_value).with('test_type:1:foo_float').and_return('12.1')
|
116
122
|
@x.foo_float = 12.1
|
117
123
|
@y.foo_float.should be_kind_of(Float)
|
118
124
|
@y.foo_float.should == 12.1
|
@@ -121,8 +127,8 @@ describe Rhoconnect::Model do
|
|
121
127
|
it "should marshal datetime fields" do
|
122
128
|
time = DateTime.now
|
123
129
|
str = time.strftime('%FT%T%z')
|
124
|
-
@xRedisMock.should_receive(:
|
125
|
-
@yRedisMock.should_receive(:
|
130
|
+
@xRedisMock.should_receive(:put_value).with('test_type:1:foo_date', str)
|
131
|
+
@yRedisMock.should_receive(:get_value).with('test_type:1:foo_date').and_return(str)
|
126
132
|
@x.foo_date = time
|
127
133
|
@y.foo_date.should be_kind_of(DateTime)
|
128
134
|
@y.foo_date.should.to_s == time.to_s
|
@@ -131,15 +137,15 @@ describe Rhoconnect::Model do
|
|
131
137
|
it "should marshal json structs" do
|
132
138
|
data = {'foo' => 'bar', 'x' => 2}
|
133
139
|
str = JSON.dump(data)
|
134
|
-
@xRedisMock.should_receive(:
|
135
|
-
@yRedisMock.should_receive(:
|
140
|
+
@xRedisMock.should_receive(:put_value).with('test_type:1:foo_json', str)
|
141
|
+
@yRedisMock.should_receive(:get_value).with('test_type:1:foo_json').and_return(str)
|
136
142
|
@x.foo_json = data
|
137
143
|
@y.foo_json.should be_kind_of(Hash)
|
138
144
|
@y.foo_json.should.inspect == data.inspect
|
139
145
|
end
|
140
146
|
|
141
147
|
it "should return nil for empty fields" do
|
142
|
-
@xRedisMock.should_receive(:
|
148
|
+
@xRedisMock.should_receive(:get_value).with('test_type:1:foo_date').and_return(nil)
|
143
149
|
@x.foo_date.should be_nil
|
144
150
|
end
|
145
151
|
|
@@ -147,15 +153,15 @@ describe Rhoconnect::Model do
|
|
147
153
|
data = DateTime.now
|
148
154
|
str = data.strftime('%FT%T%z')
|
149
155
|
|
150
|
-
@
|
151
|
-
@
|
152
|
-
@
|
153
|
-
@
|
154
|
-
@
|
155
|
-
@
|
156
|
-
@
|
157
|
-
@
|
158
|
-
@
|
156
|
+
@xRedisDbMock.should_receive('rpush').with('test_type:1:list_date', str)
|
157
|
+
@xRedisDbMock.should_receive('lset').with('test_type:1:list_date', 1, str)
|
158
|
+
@xRedisDbMock.should_receive('exists').with('test_type:1:list_date', str)
|
159
|
+
@xRedisDbMock.should_receive('lrem').with('test_type:1:list_date', 0, str)
|
160
|
+
@xRedisDbMock.should_receive('lpush').with('test_type:1:list_date', str)
|
161
|
+
@xRedisDbMock.should_receive('lrange').with('test_type:1:list_date', 0, 1).and_return([str])
|
162
|
+
@xRedisDbMock.should_receive('rpop').with('test_type:1:list_date').and_return(str)
|
163
|
+
@xRedisDbMock.should_receive('lpop').with('test_type:1:list_date').and_return(str)
|
164
|
+
@xRedisDbMock.should_receive('lindex').with('test_type:1:list_date', 0).and_return(str)
|
159
165
|
@x.list_date << data
|
160
166
|
@x.list_date[1] = data
|
161
167
|
@x.list_date.include?(data)
|
@@ -171,30 +177,24 @@ describe Rhoconnect::Model do
|
|
171
177
|
data = DateTime.now
|
172
178
|
str = data.strftime('%FT%T%z')
|
173
179
|
|
174
|
-
@
|
175
|
-
@
|
176
|
-
@
|
177
|
-
@
|
178
|
-
@xRedisMock.should_receive('sinter').with('test_type:1:set_date', 'x').and_return([str])
|
179
|
-
@xRedisMock.should_receive('sunion').with('test_type:1:set_date', 'x').and_return([str])
|
180
|
-
@xRedisMock.should_receive('sdiff').with('test_type:1:set_date', 'x', 'y').and_return([str])
|
180
|
+
@xRedisDbMock.should_receive('sadd').with('test_type:1:set_date', str)
|
181
|
+
@xRedisDbMock.should_receive('srem').with('test_type:1:set_date', str)
|
182
|
+
@xRedisDbMock.should_receive('sismember').with('test_type:1:set_date', str)
|
183
|
+
@xRedisDbMock.should_receive('smembers').with('test_type:1:set_date').and_return([str])
|
181
184
|
@x.set_date << data
|
182
185
|
@x.set_date.delete(data)
|
183
186
|
@x.set_date.include?(data)
|
184
187
|
@x.set_date.members[0].should be_kind_of(DateTime)
|
185
|
-
@x.set_date.intersect('x')[0].should be_kind_of(DateTime)
|
186
|
-
@x.set_date.union('x')[0].should be_kind_of(DateTime)
|
187
|
-
@x.set_date.diff('x', 'y')[0].should be_kind_of(DateTime)
|
188
188
|
end
|
189
189
|
|
190
190
|
it "should handle empty members" do
|
191
|
-
@
|
191
|
+
@xRedisDbMock.stub!(:smembers).and_return(nil)
|
192
192
|
@x.set_date.members.should == []
|
193
193
|
end
|
194
194
|
end
|
195
195
|
|
196
196
|
context "increment/decrement" do
|
197
|
-
class TestIncrements < Rhoconnect::
|
197
|
+
class TestIncrements < Rhoconnect::StoreOrm
|
198
198
|
field :foo, :integer
|
199
199
|
field :bar, :string
|
200
200
|
field :baz, :float
|
@@ -203,16 +203,16 @@ describe Rhoconnect::Model do
|
|
203
203
|
before do
|
204
204
|
@redisMock = RSpec::Mocks::Mock.new
|
205
205
|
@x = TestIncrements.with_key(1)
|
206
|
-
@x.stub!(:
|
206
|
+
@x.stub!(:store).and_return(@redisMock)
|
207
207
|
end
|
208
208
|
|
209
209
|
it "should send INCR when #increment! is called on an integer" do
|
210
|
-
@redisMock.should_receive(:
|
210
|
+
@redisMock.should_receive(:update_count).with("test_increments:1:foo", 1)
|
211
211
|
@x.increment!(:foo)
|
212
212
|
end
|
213
213
|
|
214
214
|
it "should send DECR when #decrement! is called on an integer" do
|
215
|
-
@redisMock.should_receive(:
|
215
|
+
@redisMock.should_receive(:update_count).with("test_increments:1:foo", -1)
|
216
216
|
@x.decrement!(:foo)
|
217
217
|
end
|
218
218
|
|
@@ -225,7 +225,7 @@ describe Rhoconnect::Model do
|
|
225
225
|
end
|
226
226
|
|
227
227
|
context "redis commands" do
|
228
|
-
class TestCommands < Rhoconnect::
|
228
|
+
class TestCommands < Rhoconnect::StoreOrm
|
229
229
|
field :foo
|
230
230
|
list :bar
|
231
231
|
set :sloppy
|
@@ -233,40 +233,42 @@ describe Rhoconnect::Model do
|
|
233
233
|
|
234
234
|
before(:each) do
|
235
235
|
@redisMock = RSpec::Mocks::Mock.new
|
236
|
+
@redisDbMock = RSpec::Mocks::Mock.new
|
236
237
|
@x = TestCommands.with_key(1)
|
237
|
-
@x.stub!(:
|
238
|
+
@x.stub!(:store).and_return(@redisMock)
|
239
|
+
@redisMock.stub!(:db).and_return(@redisDbMock)
|
238
240
|
end
|
239
241
|
|
240
242
|
it "should send GET on field read" do
|
241
|
-
@redisMock.should_receive(:
|
243
|
+
@redisMock.should_receive(:get_value).with('test_commands:1:foo')
|
242
244
|
@x.foo
|
243
245
|
end
|
244
246
|
|
245
247
|
it "should send SET on field write" do
|
246
|
-
@redisMock.should_receive(:
|
248
|
+
@redisMock.should_receive(:put_value).with('test_commands:1:foo', 'bar')
|
247
249
|
@x.foo = 'bar'
|
248
250
|
end
|
249
251
|
|
250
252
|
it "should send RPUSH on list <<" do
|
251
|
-
@
|
253
|
+
@redisDbMock.should_receive(:rpush).with('test_commands:1:bar', 'bar')
|
252
254
|
@x.bar << 'bar'
|
253
255
|
end
|
254
256
|
|
255
257
|
it "should send SADD on set <<" do
|
256
|
-
@
|
258
|
+
@redisDbMock.should_receive(:sadd).with('test_commands:1:sloppy', 'bar')
|
257
259
|
@x.sloppy << 'bar'
|
258
260
|
end
|
259
261
|
|
260
262
|
it "should delete separate fields" do
|
261
|
-
@redisMock.should_receive(:
|
263
|
+
@redisMock.should_receive(:delete_value).with('test_commands:1:foo')
|
262
264
|
@x.delete :foo
|
263
265
|
end
|
264
266
|
|
265
267
|
it "should delete all field" do
|
266
|
-
@redisMock.should_receive(:
|
267
|
-
@redisMock.should_receive(:
|
268
|
-
@redisMock.should_receive(:
|
269
|
-
@redisMock.should_receive(:
|
268
|
+
@redisMock.should_receive(:delete_value).with('test_commands:1:foo')
|
269
|
+
@redisMock.should_receive(:delete_value).with('test_commands:1:rho__id')
|
270
|
+
@redisMock.should_receive(:delete_value).with('test_commands:1:bar')
|
271
|
+
@redisMock.should_receive(:delete_value).with('test_commands:1:sloppy')
|
270
272
|
@x.delete
|
271
273
|
end
|
272
274
|
end
|