rhoconnect 3.0.0.beta1 → 3.0.0.beta3
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 +16 -2
- data/Gemfile +14 -5
- data/Gemfile.lock +13 -23
- data/Rakefile +86 -0
- data/bench/bench_runner.rb +5 -4
- data/bench/benchapp/Gemfile +17 -8
- data/bench/blobapp/Gemfile +13 -14
- data/doc/adapters-crm.txt +226 -0
- data/doc/adapters-intro.txt +18 -0
- data/doc/client.txt +29 -2
- data/doc/heroku-addon.txt +54 -0
- data/doc/install.txt +1 -2
- data/doc/migration.txt +18 -6
- data/doc/net-plugin.txt +276 -0
- data/doc/plugin-intro.txt +6 -0
- data/doc/push.txt +1 -1
- data/doc/rails-plugin.txt +116 -0
- data/doc/rest-api.txt +2 -2
- data/doc/settings.txt +59 -0
- data/doc/tutorial.txt +8 -5
- data/generators/rhoconnect.rb +30 -0
- data/generators/templates/application/Gemfile +16 -7
- data/generators/templates/application/gitignore +4 -0
- data/install.sh +74 -106
- data/installer/deb-scripts/LICENSE +75 -0
- data/installer/deb-scripts/install.sh +300 -0
- data/installer/deb-scripts/scripts/rho_connect_install_constants.rb +32 -0
- data/installer/deb-scripts/scripts/rho_connect_install_installers.rb +103 -0
- data/installer/deb-scripts/scripts/rho_connect_install_utilities.rb +110 -0
- data/installer/deb-scripts/scripts/rhoinstaller.rb +55 -0
- data/installer/deb-scripts/utils/README +67 -0
- data/installer/deb-scripts/utils/create_texts.rb +76 -0
- data/installer/deb-scripts/utils/redis_init_script +124 -0
- data/installer/deb-scripts/utils/redis_log_rotate +8 -0
- data/installer/unix-like/install.sh +361 -0
- data/installer/unix-like/post-install.sh +8 -0
- data/installer/unix-like/pre-install.sh +8 -0
- data/installer/unix-like/rho_connect_install_constants.rb +9 -14
- data/installer/unix-like/rho_connect_install_debian.rb +7 -5
- data/installer/unix-like/rho_connect_install_dnd.rb +6 -6
- data/installer/unix-like/rho_connect_install_get_params.rb +1 -1
- data/installer/unix-like/rho_connect_install_installers.rb +39 -38
- data/installer/unix-like/rho_connect_install_utilities.rb +9 -10
- data/installer/unix-like/rho_connect_install_yum.rb +6 -5
- data/installer/unix-like/rhoinstaller.rb +8 -3
- data/installer/utils/create_texts.rb +313 -85
- data/installer/windows/rhosync.nsi +5 -5
- data/lib/rhoconnect/api/application/clientcreate.rb +1 -1
- data/lib/rhoconnect/api/application/clientregister.rb +1 -1
- data/lib/rhoconnect/api/application/clientreset.rb +1 -1
- data/lib/rhoconnect/client.rb +0 -1
- data/lib/rhoconnect/client_sync.rb +1 -0
- data/lib/rhoconnect/console/app/routes/home.rb +1 -1
- data/lib/rhoconnect/console/app/routes/user.rb +8 -3
- data/lib/rhoconnect/console/app/views/adapter.erb +2 -2
- data/lib/rhoconnect/console/app/views/ping.erb +14 -2
- data/lib/rhoconnect/console/app/views/users.erb +8 -1
- data/lib/rhoconnect/jobs/ping_job.rb +11 -3
- data/lib/rhoconnect/model.rb +2 -2
- data/lib/rhoconnect/read_state.rb +2 -0
- data/lib/rhoconnect/server.rb +4 -3
- data/lib/rhoconnect/source.rb +33 -6
- data/lib/rhoconnect/source_adapter.rb +5 -9
- data/lib/rhoconnect/source_sync.rb +11 -5
- data/lib/rhoconnect/store.rb +7 -4
- data/lib/rhoconnect/tasks.rb +3 -3
- data/lib/rhoconnect/version.rb +1 -1
- data/lib/rhoconnect.rb +22 -8
- data/rhoconnect.gemspec +4 -22
- data/spec/api/application/rhoconnect_api_spec.rb +54 -8
- data/spec/api/source/get_source_params_spec.rb +2 -1
- data/spec/api/source/list_sources_spec.rb +3 -3
- data/spec/app_spec.rb +8 -1
- data/spec/apps/rhotestapp/settings/settings.yml +10 -5
- data/spec/apps/rhotestapp/sources/other_adapter.rb +7 -0
- data/spec/client_sync_spec.rb +5 -8
- data/spec/dynamic_adapter_spec.rb +8 -8
- data/spec/generator/generator_spec.rb +4 -2
- data/spec/jobs/ping_job_spec.rb +53 -0
- data/spec/model_spec.rb +2 -2
- data/spec/rhosync_spec.rb +1 -1
- data/spec/server/server_spec.rb +3 -14
- data/spec/source_sync_spec.rb +84 -2
- data/spec/support/shared_examples.rb +2 -2
- data/tasks/redis.rake +2 -2
- metadata +30 -41
- data/spec/api/rhosync_api_spec.rb.orig +0 -606
@@ -13,28 +13,28 @@ describe "DynamicAdapter" do
|
|
13
13
|
|
14
14
|
it "should query dynamic adapter service" do
|
15
15
|
data = {'1'=>@product1}
|
16
|
-
stub_request(:post, "http://test.
|
17
|
-
da = DynamicAdapter.new(@s2,nil,'http://test.
|
16
|
+
stub_request(:post, "http://test.com/rhoconnect/query").with(:headers => {'Content-Type' => 'application/json'}).to_return(:status => 200, :body => data.to_json)
|
17
|
+
da = DynamicAdapter.new(@s2,nil,'http://test.com')
|
18
18
|
da.query.should == data
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should create new object using dynamic adapter" do
|
22
|
-
stub_request(:post, "http://test.
|
23
|
-
da = DynamicAdapter.new(@s2,nil,'http://test.
|
22
|
+
stub_request(:post, "http://test.com/rhoconnect/create").with(:headers => {'Content-Type' => 'application/json'}).to_return(:body => {:id => 5})
|
23
|
+
da = DynamicAdapter.new(@s2,nil,'http://test.com')
|
24
24
|
da.create(@product1).should == {:id => 5}
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should update object using dynamic adapter" do
|
28
28
|
data = {'id' => 2}
|
29
|
-
stub_request(:post, "http://test.
|
30
|
-
da = DynamicAdapter.new(@s2,nil,'http://test.
|
29
|
+
stub_request(:post, "http://test.com/rhoconnect/update").with(:headers => {'Content-Type' => 'application/json'}).to_return(:body => {:id => 5})
|
30
|
+
da = DynamicAdapter.new(@s2,nil,'http://test.com')
|
31
31
|
da.update(data).should == {:id => 5}
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should delete object using dynamic adapter" do
|
35
35
|
data = {'id' => 2}
|
36
|
-
stub_request(:post, "http://test.
|
37
|
-
da = DynamicAdapter.new(@s2,nil,'http://test.
|
36
|
+
stub_request(:post, "http://test.com/rhoconnect/delete").with(:headers => {'Content-Type' => 'application/json'}).to_return(:body => {:id => 5})
|
37
|
+
da = DynamicAdapter.new(@s2,nil,'http://test.com')
|
38
38
|
da.delete(data).should == {:id => 5}
|
39
39
|
end
|
40
40
|
|
@@ -23,11 +23,13 @@ describe "Generator" do
|
|
23
23
|
it "should create new application files" do
|
24
24
|
SecureRandom.should_receive(:hex).with(64).any_number_of_times
|
25
25
|
[
|
26
|
-
'
|
26
|
+
'Gemfile',
|
27
|
+
'Rakefile',
|
27
28
|
"application.rb",
|
29
|
+
'config.ru',
|
30
|
+
'public',
|
28
31
|
'settings/settings.yml',
|
29
32
|
'settings/license.key',
|
30
|
-
'Rakefile',
|
31
33
|
'spec/spec_helper.rb'
|
32
34
|
].each do |template|
|
33
35
|
@generator.should create("/tmp/#{appname}/#{template}")
|
data/spec/jobs/ping_job_spec.rb
CHANGED
@@ -4,6 +4,21 @@ require File.join(File.dirname(__FILE__), '..', 'support', 'shared_examples')
|
|
4
4
|
describe "PingJob" do
|
5
5
|
it_behaves_like "SharedRhoconnectHelper", :rhoconnect_data => true do
|
6
6
|
|
7
|
+
before(:each) do
|
8
|
+
@u1_fields = {:login => 'testuser1'}
|
9
|
+
@u1 = User.create(@u1_fields)
|
10
|
+
@u1.password = 'testpass1'
|
11
|
+
@c1_fields = {
|
12
|
+
:device_type => 'Apple',
|
13
|
+
:device_pin => 'abcde',
|
14
|
+
:device_port => '3333',
|
15
|
+
:user_id => @u1.id,
|
16
|
+
:app_id => @a.id
|
17
|
+
}
|
18
|
+
@c1 = Client.create(@c1_fields,{:source_name => @s_fields[:name]})
|
19
|
+
@a.users << @u1.id
|
20
|
+
end
|
21
|
+
|
7
22
|
it "should perform apple ping with integer parameters" do
|
8
23
|
params = {"user_id" => @u.id, "api_token" => @api_token,
|
9
24
|
"sources" => [@s.name], "message" => 'hello world',
|
@@ -98,5 +113,43 @@ describe "PingJob" do
|
|
98
113
|
PingJob.should_receive(:log).twice.with(/Dropping ping request for client/)
|
99
114
|
lambda { PingJob.perform(params) }.should_not raise_error
|
100
115
|
end
|
116
|
+
|
117
|
+
it "should ping two different users from two different devices - Apple and Blackberry" do
|
118
|
+
params = {"user_id" => [ @u.id, @u1.id], "api_token" => @api_token,
|
119
|
+
"sources" => [@s.name], "message" => 'hello world',
|
120
|
+
"vibrate" => '5', "badge" => '5', "sound" => 'hello.mp3', 'phone_id' => nil }
|
121
|
+
@c.phone_id = '3'
|
122
|
+
|
123
|
+
scrubbed_params = params.dup
|
124
|
+
scrubbed_params['vibrate'] = '5'
|
125
|
+
@c1.device_type = 'blackberry'
|
126
|
+
|
127
|
+
Apple.should_receive(:ping).with(params.merge!({'device_pin' => @c.device_pin, 'phone_id' => @c.phone_id, 'device_port' => @c.device_port}))
|
128
|
+
Blackberry.should_receive(:ping).with({'device_pin' => @c1.device_pin, 'device_port' => @c1.device_port}.merge!(scrubbed_params))
|
129
|
+
PingJob.perform(params)
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should drop ping with two different users from the same device" do
|
133
|
+
params = {"user_id" => [ @u.id, @u1.id], "api_token" => @api_token,
|
134
|
+
"sources" => [@s.name], "message" => 'hello world',
|
135
|
+
"vibrate" => '5', "badge" => '5', "sound" => 'hello.mp3'}
|
136
|
+
@c.phone_id = '3'
|
137
|
+
@c1.phone_id = '3'
|
138
|
+
|
139
|
+
Apple.should_receive(:ping).with({'device_pin' => @c.device_pin, 'phone_id' => @c.phone_id, 'device_port' => @c.device_port}.merge!(params))
|
140
|
+
PingJob.should_receive(:log).once.with(/Dropping ping request for client/)
|
141
|
+
lambda { PingJob.perform(params) }.should_not raise_error
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should drop ping with two different users with the same pin" do
|
145
|
+
params = {"user_id" => [ @u.id, @u1.id], "api_token" => @api_token,
|
146
|
+
"sources" => [@s.name], "message" => 'hello world', "phone_id" => nil,
|
147
|
+
"vibrate" => '5', "badge" => '5', "sound" => 'hello.mp3'}
|
148
|
+
@c1.device_pin = @c.device_pin
|
149
|
+
|
150
|
+
Apple.should_receive(:ping).with({'device_pin' => @c.device_pin, 'device_port' => @c.device_port}.merge!(params))
|
151
|
+
PingJob.should_receive(:log).once.with(/Dropping ping request for client/)
|
152
|
+
lambda { PingJob.perform(params) }.should_not raise_error
|
153
|
+
end
|
101
154
|
end
|
102
155
|
end
|
data/spec/model_spec.rb
CHANGED
@@ -207,12 +207,12 @@ describe Rhoconnect::Model do
|
|
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(:incrby).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(:decrby).with("test_increments:1:foo", 1)
|
216
216
|
@x.decrement!(:foo)
|
217
217
|
end
|
218
218
|
|
data/spec/rhosync_spec.rb
CHANGED
@@ -23,7 +23,7 @@ describe "Rhoconnect" do
|
|
23
23
|
Rhoconnect.bulk_sync_poll_interval.should == 3600
|
24
24
|
Rhoconnect.environment.should == :test
|
25
25
|
Rhoconnect.stats.should == false
|
26
|
-
Rhoconnect.appserver.should == 'http://test.
|
26
|
+
Rhoconnect.appserver.should == 'http://test.com'
|
27
27
|
Rhoconnect.cookie_expire.should == 9999999
|
28
28
|
App.is_exist?(test_app_name).should be_true
|
29
29
|
end
|
data/spec/server/server_spec.rb
CHANGED
@@ -83,7 +83,6 @@ describe "Server" do
|
|
83
83
|
end
|
84
84
|
|
85
85
|
it "should return nil if params[:source_name] is missing" do
|
86
|
-
#stub_request(:post, "http://test.rhoconnect.com/rhoconnect/query")
|
87
86
|
get "/api/application/query"
|
88
87
|
last_response.status.should == 500
|
89
88
|
end
|
@@ -136,15 +135,6 @@ describe "Server" do
|
|
136
135
|
describe "client management routes" do
|
137
136
|
before(:each) do
|
138
137
|
do_post "/api/application/clientlogin", "login" => @u.login, "password" => 'testpass'
|
139
|
-
@source_config = {
|
140
|
-
"sources"=>
|
141
|
-
{"FixedSchemaAdapter"=>
|
142
|
-
{"poll_interval"=>300,
|
143
|
-
"sync_type"=>"incremental",
|
144
|
-
"belongs_to"=>[{"brand"=>"SampleAdapter"}]},
|
145
|
-
"SampleAdapter"=>{"poll_interval"=>300},
|
146
|
-
"SimpleAdapter"=>{"partition_type"=>"app", "poll_interval"=>600}}
|
147
|
-
}
|
148
138
|
end
|
149
139
|
|
150
140
|
it "should respond to clientcreate" do
|
@@ -154,7 +144,7 @@ describe "Server" do
|
|
154
144
|
id = JSON.parse(last_response.body)['client']['client_id']
|
155
145
|
id.length.should == 32
|
156
146
|
JSON.parse(last_response.body).should ==
|
157
|
-
{"client"=>{"client_id"=>id}}
|
147
|
+
{"client"=>{"client_id"=>id}}
|
158
148
|
c = Client.load(id,{:source_name => '*'})
|
159
149
|
c.user_id.should == 'testuser'
|
160
150
|
c.device_type.should == 'blackberry'
|
@@ -164,7 +154,6 @@ describe "Server" do
|
|
164
154
|
do_post "/api/application/clientregister",
|
165
155
|
"device_type" => "iPhone", "device_pin" => 'abcd', "client_id" => @c.id
|
166
156
|
last_response.should be_ok
|
167
|
-
JSON.parse(last_response.body).should == @source_config
|
168
157
|
@c.device_type.should == 'Apple'
|
169
158
|
@c.device_pin.should == 'abcd'
|
170
159
|
@c.id.length.should == 32
|
@@ -173,7 +162,6 @@ describe "Server" do
|
|
173
162
|
it "should respond to clientreset" do
|
174
163
|
set_state(@c.docname(:cd) => @data)
|
175
164
|
get "/api/application/clientreset", :client_id => @c.id,:version => ClientSync::VERSION
|
176
|
-
JSON.parse(last_response.body).should == @source_config
|
177
165
|
verify_result(@c.docname(:cd) => {})
|
178
166
|
end
|
179
167
|
|
@@ -184,7 +172,7 @@ describe "Server" do
|
|
184
172
|
set_state(@c.docname(:cd) => @data)
|
185
173
|
sources = [{'name' => 'SimpleAdapter'}]
|
186
174
|
get "/api/application/clientreset", :client_id => @c.id,:version => ClientSync::VERSION, :sources => sources
|
187
|
-
|
175
|
+
last_response.should be_ok
|
188
176
|
@c.source_name = 'SampleAdapter'
|
189
177
|
verify_result(@c.docname(:cd) => @data)
|
190
178
|
@c.source_name = 'SimpleAdapter'
|
@@ -436,6 +424,7 @@ describe "Server" do
|
|
436
424
|
it "should receive nop when no sources are available for partition" do
|
437
425
|
set_state('test_db_storage' => @data)
|
438
426
|
Source.load('SimpleAdapter',@s_params).partition = :user
|
427
|
+
@a.sources.delete('OtherAdapter')
|
439
428
|
get "/api/application/bulk_data", :partition => :app, :client_id => @c.id
|
440
429
|
last_response.should be_ok
|
441
430
|
last_response.body.should == {:result => :nop}.to_json
|
data/spec/source_sync_spec.rb
CHANGED
@@ -230,6 +230,87 @@ describe "SourceSync" do
|
|
230
230
|
it "should do query with exception raised" do
|
231
231
|
verify_read_operation_with_error('query')
|
232
232
|
end
|
233
|
+
|
234
|
+
it "should do query with exception raised and update refresh time only after retries limit is exceeded" do
|
235
|
+
@s.retry_limit = 1
|
236
|
+
msg = "Error during query"
|
237
|
+
@ss.should_receive(:log).with("SourceAdapter raised query exception: #{msg}")
|
238
|
+
@ss.should_receive(:log).with(anything)
|
239
|
+
set_test_data('test_db_storage',{},msg,"query error")
|
240
|
+
res = @ss.do_query
|
241
|
+
verify_result(@s.docname(:md) => {},
|
242
|
+
@s.docname(:errors) => {'query-error'=>{'message'=>msg}})
|
243
|
+
# 1) if retry_limit is set to N - then, first N retries should not update refresh_time
|
244
|
+
@s.read_state.retry_counter.should == 1
|
245
|
+
@s.read_state.refresh_time.should <= Time.now.to_i
|
246
|
+
|
247
|
+
# try once more and fail again
|
248
|
+
@ss.should_receive(:log).with("SourceAdapter raised query exception: #{msg}")
|
249
|
+
@ss.should_receive(:log).with(anything)
|
250
|
+
set_test_data('test_db_storage',{},msg,"query error")
|
251
|
+
res = @ss.do_query
|
252
|
+
verify_result(@s.docname(:md) => {},
|
253
|
+
@s.docname(:errors) => {'query-error'=>{'message'=>msg}})
|
254
|
+
|
255
|
+
# 2) if retry_limit is set to N and number of retries exceeded it - update refresh_time
|
256
|
+
@s.read_state.retry_counter.should == 0
|
257
|
+
@s.read_state.refresh_time.should > Time.now.to_i
|
258
|
+
end
|
259
|
+
|
260
|
+
it "should do query with exception raised and restore state with succesfull retry" do
|
261
|
+
@s.retry_limit = 1
|
262
|
+
msg = "Error during query"
|
263
|
+
@ss.should_receive(:log).with("SourceAdapter raised query exception: #{msg}")
|
264
|
+
@ss.should_receive(:log).with(anything)
|
265
|
+
set_test_data('test_db_storage',{},msg,"query error")
|
266
|
+
res = @ss.do_query
|
267
|
+
verify_result(@s.docname(:md) => {},
|
268
|
+
@s.docname(:errors) => {'query-error'=>{'message'=>msg}})
|
269
|
+
# 1) if retry_limit is set to N - then, first N retries should not update refresh_time
|
270
|
+
@s.read_state.retry_counter.should == 1
|
271
|
+
@s.read_state.refresh_time.should <= Time.now.to_i
|
272
|
+
|
273
|
+
# try once more (with success)
|
274
|
+
expected = {'1'=>@product1,'2'=>@product2}
|
275
|
+
set_test_data('test_db_storage',expected)
|
276
|
+
@ss.do_query
|
277
|
+
verify_result(@s.docname(:md) => expected,
|
278
|
+
@s.docname(:errors) => {})
|
279
|
+
@s.read_state.retry_counter.should == 0
|
280
|
+
@s.read_state.refresh_time.should > Time.now.to_i
|
281
|
+
end
|
282
|
+
|
283
|
+
it "should do query with exception raised and update refresh time if retry_limit is 0" do
|
284
|
+
@s.retry_limit = 0
|
285
|
+
msg = "Error during query"
|
286
|
+
@ss.should_receive(:log).with("SourceAdapter raised query exception: #{msg}")
|
287
|
+
@ss.should_receive(:log).with(anything)
|
288
|
+
set_test_data('test_db_storage',{},msg,"query error")
|
289
|
+
res = @ss.do_query
|
290
|
+
verify_result(@s.docname(:md) => {},
|
291
|
+
@s.docname(:errors) => {'query-error'=>{'message'=>msg}})
|
292
|
+
# if poll_interval is set to 0 - refresh time should be updated
|
293
|
+
@s.read_state.retry_counter.should == 0
|
294
|
+
@s.read_state.refresh_time.should > Time.now.to_i
|
295
|
+
end
|
296
|
+
|
297
|
+
it "should do query with exception raised and update refresh time if poll_interval == 0" do
|
298
|
+
@s.retry_limit = 1
|
299
|
+
@s.poll_interval = 0
|
300
|
+
msg = "Error during query"
|
301
|
+
@ss.should_receive(:log).with("SourceAdapter raised query exception: #{msg}")
|
302
|
+
@ss.should_receive(:log).with(anything)
|
303
|
+
set_test_data('test_db_storage',{},msg,"query error")
|
304
|
+
prev_refresh_time = @s.read_state.refresh_time
|
305
|
+
# make sure refresh time is expired
|
306
|
+
sleep(1)
|
307
|
+
res = @ss.do_query
|
308
|
+
verify_result(@s.docname(:md) => {},
|
309
|
+
@s.docname(:errors) => {'query-error'=>{'message'=>msg}})
|
310
|
+
# if poll_interval is set to 0 - refresh time should be updated
|
311
|
+
@s.read_state.retry_counter.should == 0
|
312
|
+
@s.read_state.refresh_time.should > prev_refresh_time
|
313
|
+
end
|
233
314
|
end
|
234
315
|
|
235
316
|
describe "search" do
|
@@ -257,7 +338,8 @@ describe "SourceSync" do
|
|
257
338
|
verify_result("source:#{test_app_name}:__shared__:#{@s_fields[:name]}:md" => expected)
|
258
339
|
Store.db.keys("read_state:#{test_app_name}:__shared__*").sort.should ==
|
259
340
|
[ "read_state:#{test_app_name}:__shared__:SampleAdapter:refresh_time",
|
260
|
-
"read_state:#{test_app_name}:__shared__:SampleAdapter:rho__id"
|
341
|
+
"read_state:#{test_app_name}:__shared__:SampleAdapter:rho__id",
|
342
|
+
"read_state:#{test_app_name}:__shared__:SampleAdapter:retry_counter"].sort
|
261
343
|
end
|
262
344
|
end
|
263
345
|
|
@@ -302,7 +384,7 @@ describe "SourceSync" do
|
|
302
384
|
if operation == 'query'
|
303
385
|
@ss.read.should == true
|
304
386
|
verify_result(@s.docname(:md) => {},
|
305
|
-
@s.docname(:errors) => {'query-error'=>{'message'=>msg}})
|
387
|
+
@s.docname(:errors) => {'query-error'=>{'message'=>msg}})
|
306
388
|
else
|
307
389
|
@ss.search(@c.id).should == true
|
308
390
|
verify_result(@c.docname(:search) => {},
|
@@ -54,7 +54,7 @@ shared_examples_for "SharedRhoconnectHelper" do |params|
|
|
54
54
|
@s2 = Source.create({:name=> 'Product2'},@s_params)
|
55
55
|
@s3 = Source.create({:name=> 'SimpleAdapter',:partition_type=> 'app'},@s_params)
|
56
56
|
@s1.belongs_to = [{'brand' => 'SampleAdapter'}].to_json
|
57
|
-
config = Rhoconnect.source_config
|
57
|
+
config = Rhoconnect.source_config('FixedSchemaAdapter')
|
58
58
|
@s1.update(config)
|
59
59
|
@r = @s.read_state
|
60
60
|
@a.sources << @s.id
|
@@ -146,7 +146,7 @@ shared_examples_for "ApiHelper" do
|
|
146
146
|
@s1 = Source.create(@s1_fields,@s_params)
|
147
147
|
@s2 = Source.create({:name=> 'Product2'},@s_params)
|
148
148
|
@s1.belongs_to = [{'brand' => 'SampleAdapter'}].to_json
|
149
|
-
config = Rhoconnect.source_config
|
149
|
+
config = Rhoconnect.source_config('FixedSchemaAdapter')
|
150
150
|
@s1.update(config)
|
151
151
|
@r = @s.read_state
|
152
152
|
@a.sources << @s.id
|
data/tasks/redis.rake
CHANGED
@@ -7,7 +7,7 @@ def windows?
|
|
7
7
|
end
|
8
8
|
|
9
9
|
if windows?
|
10
|
-
$redis_ver = "redis-2.2.
|
10
|
+
$redis_ver = "redis-2.2.13"
|
11
11
|
$redis_zip = "C:/#{$redis_ver}.zip"
|
12
12
|
$redis_dest = "C:/"
|
13
13
|
end
|
@@ -164,7 +164,7 @@ namespace :redis do
|
|
164
164
|
else
|
165
165
|
sh 'rm -rf /tmp/redis/' if File.exists?("#{RedisRunner.redisdir}")
|
166
166
|
sh 'git clone git://github.com/antirez/redis.git /tmp/redis -n'
|
167
|
-
sh "cd #{RedisRunner.redisdir} && git reset --hard && git checkout 2.2.
|
167
|
+
sh "cd #{RedisRunner.redisdir} && git reset --hard && git checkout 2.2.13"
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rhoconnect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 62196421
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 0
|
9
9
|
- 0
|
10
10
|
- beta
|
11
|
-
-
|
12
|
-
version: 3.0.0.
|
11
|
+
- 3
|
12
|
+
version: 3.0.0.beta3
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Rhomobile
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-09-
|
20
|
+
date: 2011-09-22 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
type: :runtime
|
@@ -177,39 +177,7 @@ dependencies:
|
|
177
177
|
version: 1.0.0
|
178
178
|
version_requirements: *id010
|
179
179
|
name: templater
|
180
|
-
-
|
181
|
-
type: :runtime
|
182
|
-
prerelease: false
|
183
|
-
requirement: &id011 !ruby/object:Gem::Requirement
|
184
|
-
none: false
|
185
|
-
requirements:
|
186
|
-
- - ">="
|
187
|
-
- !ruby/object:Gem::Version
|
188
|
-
hash: 29
|
189
|
-
segments:
|
190
|
-
- 1
|
191
|
-
- 3
|
192
|
-
- 3
|
193
|
-
version: 1.3.3
|
194
|
-
version_requirements: *id011
|
195
|
-
name: sqlite3
|
196
|
-
- !ruby/object:Gem::Dependency
|
197
|
-
type: :runtime
|
198
|
-
prerelease: false
|
199
|
-
requirement: &id012 !ruby/object:Gem::Requirement
|
200
|
-
none: false
|
201
|
-
requirements:
|
202
|
-
- - ~>
|
203
|
-
- !ruby/object:Gem::Version
|
204
|
-
hash: 25
|
205
|
-
segments:
|
206
|
-
- 1
|
207
|
-
- 2
|
208
|
-
- 3
|
209
|
-
version: 1.2.3
|
210
|
-
version_requirements: *id012
|
211
|
-
name: SystemTimer
|
212
|
-
description: RhoConnect Server Framework and related command-line utilities
|
180
|
+
description: RhoConnect App Integration Server and related command-line utilities
|
213
181
|
email: dev@rhomobile.com
|
214
182
|
executables:
|
215
183
|
- rhoconnect
|
@@ -293,6 +261,8 @@ files:
|
|
293
261
|
- bench/spec/mock_client_spec.rb
|
294
262
|
- bench/spec/result_spec.rb
|
295
263
|
- bench/spec/utils_spec.rb
|
264
|
+
- doc/adapters-crm.txt
|
265
|
+
- doc/adapters-intro.txt
|
296
266
|
- doc/async-jobs.txt
|
297
267
|
- doc/authentication.txt
|
298
268
|
- doc/benchmarks.txt
|
@@ -302,17 +272,22 @@ files:
|
|
302
272
|
- doc/command-line.txt
|
303
273
|
- doc/contributing.txt
|
304
274
|
- doc/deploying.txt
|
275
|
+
- doc/heroku-addon.txt
|
305
276
|
- doc/install.txt
|
306
277
|
- doc/introduction.txt
|
307
278
|
- doc/licensing.txt
|
308
279
|
- doc/metadata.txt
|
309
280
|
- doc/migration.txt
|
281
|
+
- doc/net-plugin.txt
|
282
|
+
- doc/plugin-intro.txt
|
310
283
|
- doc/public/css/print.css
|
311
284
|
- doc/public/css/screen.css
|
312
285
|
- doc/public/css/style.css
|
313
286
|
- doc/push.txt
|
287
|
+
- doc/rails-plugin.txt
|
314
288
|
- doc/release.txt
|
315
289
|
- doc/rest-api.txt
|
290
|
+
- doc/settings.txt
|
316
291
|
- doc/source-adapters.txt
|
317
292
|
- doc/stats-middleware.txt
|
318
293
|
- doc/testing.txt
|
@@ -329,12 +304,26 @@ files:
|
|
329
304
|
- generators/templates/application/application.rb
|
330
305
|
- generators/templates/application/config.ru
|
331
306
|
- generators/templates/application/Gemfile
|
307
|
+
- generators/templates/application/gitignore
|
332
308
|
- generators/templates/application/Rakefile
|
333
309
|
- generators/templates/application/settings/license.key
|
334
310
|
- generators/templates/application/settings/settings.yml
|
335
311
|
- generators/templates/application/spec/spec_helper.rb
|
336
312
|
- generators/templates/source/source_adapter.rb
|
337
313
|
- generators/templates/source/source_spec.rb
|
314
|
+
- installer/deb-scripts/install.sh
|
315
|
+
- installer/deb-scripts/LICENSE
|
316
|
+
- installer/deb-scripts/scripts/rho_connect_install_constants.rb
|
317
|
+
- installer/deb-scripts/scripts/rho_connect_install_installers.rb
|
318
|
+
- installer/deb-scripts/scripts/rho_connect_install_utilities.rb
|
319
|
+
- installer/deb-scripts/scripts/rhoinstaller.rb
|
320
|
+
- installer/deb-scripts/utils/create_texts.rb
|
321
|
+
- installer/deb-scripts/utils/README
|
322
|
+
- installer/deb-scripts/utils/redis_init_script
|
323
|
+
- installer/deb-scripts/utils/redis_log_rotate
|
324
|
+
- installer/unix-like/install.sh
|
325
|
+
- installer/unix-like/post-install.sh
|
326
|
+
- installer/unix-like/pre-install.sh
|
338
327
|
- installer/unix-like/rho_connect_install_checkers.rb
|
339
328
|
- installer/unix-like/rho_connect_install_constants.rb
|
340
329
|
- installer/unix-like/rho_connect_install_debian.rb
|
@@ -501,7 +490,6 @@ files:
|
|
501
490
|
- spec/api/client/list_client_docs_spec.rb
|
502
491
|
- spec/api/client/list_clients_spec.rb
|
503
492
|
- spec/api/client/ping_spec.rb
|
504
|
-
- spec/api/rhosync_api_spec.rb.orig
|
505
493
|
- spec/api/source/adapter_spec.rb
|
506
494
|
- spec/api/source/get_db_doc_spec.rb
|
507
495
|
- spec/api/source/get_source_params_spec.rb
|
@@ -529,6 +517,7 @@ files:
|
|
529
517
|
- spec/apps/rhotestapp/settings/settings.yml
|
530
518
|
- spec/apps/rhotestapp/sources/base_adapter.rb
|
531
519
|
- spec/apps/rhotestapp/sources/fixed_schema_adapter.rb
|
520
|
+
- spec/apps/rhotestapp/sources/other_adapter.rb
|
532
521
|
- spec/apps/rhotestapp/sources/sample_adapter.rb
|
533
522
|
- spec/apps/rhotestapp/sources/simple_adapter.rb
|
534
523
|
- spec/apps/rhotestapp/sources/sub_adapter.rb
|
@@ -609,10 +598,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
609
598
|
requirements: []
|
610
599
|
|
611
600
|
rubyforge_project:
|
612
|
-
rubygems_version: 1.8.
|
601
|
+
rubygems_version: 1.8.10
|
613
602
|
signing_key:
|
614
603
|
specification_version: 3
|
615
|
-
summary: RhoConnect Server
|
604
|
+
summary: RhoConnect App Integration Server
|
616
605
|
test_files:
|
617
606
|
- spec/api/admin/api_token_spec.rb
|
618
607
|
- spec/api/admin/get_api_token_spec.rb
|
@@ -627,7 +616,6 @@ test_files:
|
|
627
616
|
- spec/api/client/list_client_docs_spec.rb
|
628
617
|
- spec/api/client/list_clients_spec.rb
|
629
618
|
- spec/api/client/ping_spec.rb
|
630
|
-
- spec/api/rhosync_api_spec.rb.orig
|
631
619
|
- spec/api/source/adapter_spec.rb
|
632
620
|
- spec/api/source/get_db_doc_spec.rb
|
633
621
|
- spec/api/source/get_source_params_spec.rb
|
@@ -655,6 +643,7 @@ test_files:
|
|
655
643
|
- spec/apps/rhotestapp/settings/settings.yml
|
656
644
|
- spec/apps/rhotestapp/sources/base_adapter.rb
|
657
645
|
- spec/apps/rhotestapp/sources/fixed_schema_adapter.rb
|
646
|
+
- spec/apps/rhotestapp/sources/other_adapter.rb
|
658
647
|
- spec/apps/rhotestapp/sources/sample_adapter.rb
|
659
648
|
- spec/apps/rhotestapp/sources/simple_adapter.rb
|
660
649
|
- spec/apps/rhotestapp/sources/sub_adapter.rb
|