rhoconnect 3.0.6 → 3.1.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. data/CHANGELOG.md +9 -0
  2. data/Gemfile +3 -3
  3. data/Gemfile.lock +38 -17
  4. data/Rakefile +0 -10
  5. data/bench/benchapp/Gemfile.lock +1 -0
  6. data/bench/distr_bench/distr_bench_main +94 -27
  7. data/bench/distr_bench/run_test_query_script.sh +22 -18
  8. data/bench/lib/bench/aws_utils.rb +326 -0
  9. data/bench/lib/bench/bench_result_processor.rb +268 -75
  10. data/bench/lib/bench/cli.rb +1 -0
  11. data/bench/lib/bench/distr_runner.rb +102 -0
  12. data/bench/lib/bench/utils.rb +127 -0
  13. data/bench/lib/bench.rb +16 -15
  14. data/bench/prepare_bench +3 -11
  15. data/bench/scripts/test_query_script.rb +6 -7
  16. data/bin/rhoconnect-benchmark +257 -5
  17. data/doc/benchmarks-running.txt +140 -0
  18. data/doc/client-java.txt +236 -0
  19. data/doc/client-objc.txt +41 -1
  20. data/doc/client.txt +12 -0
  21. data/doc/command-line.txt +12 -3
  22. data/doc/cud-conflicts.txt +68 -0
  23. data/doc/deploying.txt +1 -70
  24. data/doc/hosting-rhohub.txt +3 -0
  25. data/doc/install.txt +50 -13
  26. data/doc/java-plugin.txt +217 -177
  27. data/doc/net-plugin.txt +97 -64
  28. data/doc/plugin-intro.txt +4 -2
  29. data/doc/preparing-production.txt +63 -0
  30. data/doc/rhoconnect-redis-stack.txt +252 -0
  31. data/doc/source-adapters.txt +3 -1
  32. data/doc/tutorial.txt +111 -49
  33. data/examples/simple/dump.rdb +0 -0
  34. data/installer/unix-like/rho_connect_install_constants.rb +6 -5
  35. data/installer/unix-like/rho_connect_install_installers.rb +6 -2
  36. data/installer/utils/nix_install_test.rb +2 -0
  37. data/installer/utils/package_upload/auto-repo.rb +136 -0
  38. data/installer/utils/package_upload/repos.rake +6 -3
  39. data/installer/utils/package_upload/s3_upload.rb +11 -6
  40. data/installer/windows/rhosync.nsi +5 -5
  41. data/lib/rhoconnect/client_sync.rb +2 -2
  42. data/lib/rhoconnect/document.rb +12 -0
  43. data/lib/rhoconnect/jobs/source_job.rb +2 -2
  44. data/lib/rhoconnect/predefined_adapters/bench_adapter.rb +61 -0
  45. data/lib/rhoconnect/source.rb +5 -0
  46. data/lib/rhoconnect/source_adapter.rb +10 -1
  47. data/lib/rhoconnect/source_sync.rb +161 -88
  48. data/lib/rhoconnect/store.rb +48 -0
  49. data/lib/rhoconnect/test_methods.rb +6 -6
  50. data/lib/rhoconnect/version.rb +1 -1
  51. data/lib/rhoconnect.rb +25 -2
  52. data/spec/apps/rhotestapp/sources/sample_adapter.rb +29 -0
  53. data/spec/jobs/source_job_spec.rb +5 -5
  54. data/spec/source_adapter_spec.rb +10 -0
  55. data/spec/source_sync_spec.rb +114 -33
  56. data/spec/spec_helper.rb +21 -2
  57. data/spec/store_spec.rb +29 -0
  58. data/spec/support/shared_examples.rb +1 -1
  59. data/spec/test_methods_spec.rb +4 -4
  60. data/tasks/redis.rake +2 -2
  61. metadata +59 -59
  62. data/bench/benchapp/log/passenger.3000.log +0 -1
  63. data/bench/benchapp/log/passenger.9292.log +0 -59
  64. data/bench/benchapp/tmp/pids/passenger.3000.pid.lock +0 -0
  65. data/bench/benchapp/tmp/pids/passenger.9292.pid.lock +0 -0
  66. data/bench/lib/testdata/0-data.txt +0 -0
  67. data/bench/lib/testdata/1-data.txt +0 -0
  68. data/bench/lib/testdata/10-data.txt +0 -15
  69. data/bench/lib/testdata/2-data.txt +0 -3
  70. data/bench/lib/testdata/25-data.txt +0 -39
  71. data/bench/lib/testdata/250-data.txt +0 -353
  72. data/bench/lib/testdata/3-data.txt +0 -4
  73. data/bench/lib/testdata/50-data.txt +0 -70
  74. data/bench/lib/testdata/500-data.txt +0 -711
@@ -121,27 +121,27 @@ describe "SourceSync" do
121
121
 
122
122
  describe "create" do
123
123
  it "should do create where adapter.create returns nil" do
124
- set_state(@c.docname(:create) => {'2'=>@product2})
125
- @ss.create(@c.id)
124
+ set_zstate({@s.docname(:create) => {'2'=>@product2}}, @c.id, true)
125
+ @ss.create
126
+ verify_zresult(@s.docname(:create) => [])
126
127
  verify_result(@c.docname(:create_errors) => {},
127
- @c.docname(:create_links) => {},
128
- @c.docname(:create) => {})
128
+ @c.docname(:create_links) => {})
129
129
  end
130
130
 
131
131
  it "should do create where adapter.create returns object link" do
132
132
  @product4['link'] = 'test link'
133
- set_state(@c.docname(:create) => {'4'=>@product4})
134
- @ss.create(@c.id)
133
+ set_zstate({@s.docname(:create) => {'4'=>@product4}},@c.id,true)
134
+ @ss.create
135
+ verify_zresult(@s.docname(:create) => [])
135
136
  verify_result(@c.docname(:create_errors) => {},
136
- @c.docname(:create_links) => {'4'=>{'l'=>'backend_id'}},
137
- @c.docname(:create) => {})
137
+ @c.docname(:create_links) => {'4'=>{'l'=>'backend_id'}})
138
138
  end
139
139
 
140
140
  it "should raise exception on adapter.create" do
141
141
  msg = "Error creating record"
142
142
  data = add_error_object({'4'=>@product4,'2'=>@product2},msg)
143
- set_state(@c.docname(:create) => data)
144
- @ss.create(@c.id)
143
+ set_zstate({@s.docname(:create) => data},@c.id, true)
144
+ @ss.create
145
145
  verify_result(@c.docname(:create_errors) =>
146
146
  {"#{ERROR}-error"=>{"message"=>msg},ERROR=>data[ERROR]})
147
147
  end
@@ -149,44 +149,46 @@ describe "SourceSync" do
149
149
 
150
150
  describe "update" do
151
151
  it "should do update with no errors" do
152
- set_state(@c.docname(:update) => {'4'=> { 'price' => '199.99' }})
153
- @ss.update(@c.id)
154
- verify_result(@c.docname(:update_errors) => {},
155
- @c.docname(:update) => {})
152
+ set_zstate({@s.docname(:update) => {'4'=> { 'price' => '199.99' }}},@c.id,true)
153
+ @ss.update
154
+ verify_zresult(@s.docname(:update) => [])
155
+ verify_result(@c.docname(:update_errors) => {})
156
156
  end
157
157
 
158
158
  it "should do update with errors" do
159
159
  msg = "Error updating record"
160
160
  data = add_error_object({'4'=> { 'price' => '199.99' }},msg)
161
- set_state(@c.docname(:update) => data,
162
- @c.docname(:cd) => { ERROR => { 'price' => '99.99' } }
161
+ set_zstate({@s.docname(:update) => data},@c.id,true)
162
+ set_state(@c.docname(:cd) => { ERROR => { 'price' => '99.99' } }
163
163
  )
164
- @ss.update(@c.id)
164
+ @ss.update
165
+ update_data,client_ids = Store.get_zdata(@s.docname(:update))
166
+ update_data.should == [{'4'=> { 'price' => '199.99'}}]
167
+ client_ids.should == [@c.id]
165
168
  verify_result(
166
169
  @c.docname(:update_errors) =>
167
170
  {"#{ERROR}-error"=>{"message"=>msg}, ERROR=>data[ERROR]},
168
- @c.docname(:update) => {'4'=> { 'price' => '199.99'}},
169
171
  @c.docname(:update_rollback) => {ERROR=>{"price"=>"99.99"}})
170
172
  end
171
173
  end
172
174
 
173
175
  describe "delete" do
174
176
  it "should do delete with no errors" do
175
- set_state(@c.docname(:delete) => {'4'=>@product4},
176
- @s.docname(:md) => {'4'=>@product4,'3'=>@product3},
177
+ set_zstate({@s.docname(:delete) => {'4'=>@product4}}, @c.id, true)
178
+ set_state(@s.docname(:md) => {'4'=>@product4,'3'=>@product3},
177
179
  @c.docname(:cd) => {'4'=>@product4,'3'=>@product3})
178
- @ss.delete(@c.id)
180
+ @ss.delete
181
+ verify_zresult(@s.docname(:delete) => [])
179
182
  verify_result(@c.docname(:delete_errors) => {},
180
183
  @s.docname(:md) => {'3'=>@product3},
181
- @c.docname(:cd) => {'3'=>@product3},
182
- @c.docname(:delete) => {})
184
+ @c.docname(:cd) => {'3'=>@product3})
183
185
  end
184
186
 
185
187
  it "should do delete with errors" do
186
188
  msg = "Error delete record"
187
189
  data = add_error_object({'2'=>@product2},msg)
188
- set_state(@c.docname(:delete) => data)
189
- @ss.delete(@c.id)
190
+ set_zstate({@s.docname(:delete) => data}, @c.id, true)
191
+ @ss.delete
190
192
 
191
193
  # FIXME: Failed for jruby, ruby 1.9.2
192
194
  # verify_result(@c.docname(:delete_errors) =>
@@ -211,10 +213,89 @@ describe "SourceSync" do
211
213
  describe "cud" do
212
214
  it "should do process_cud" do
213
215
  @ss.should_receive(:_auth_op).twice.and_return(true)
214
- @ss.should_receive(:create).once.with(@c.id)
215
- @ss.should_receive(:update).once.with(@c.id)
216
- @ss.should_receive(:delete).once.with(@c.id)
217
- @ss.process_cud(@c.id)
216
+ @ss.should_receive(:create).once
217
+ @ss.should_receive(:update).once
218
+ @ss.should_receive(:delete).once
219
+ @ss.process_cud
220
+ end
221
+ end
222
+
223
+ describe "cud conflicts" do
224
+ it "should detect create conflict and skip the duplicate record creation, but properly update the links" do
225
+ set_zstate({@s.docname(:create) => {'4'=> { 'name' => 'Android', 'link' => '1' }}},@c.id,true)
226
+ set_zstate({@s.docname(:create) => {'5'=> { 'name' => 'Android', 'link' => '1', 'duplicate_of_cid' => @c.id, 'duplicate_of_key' => '4', 'duplicate_of_queue_index' => '0' }}},@c.id,true)
227
+ @ss.process_cud
228
+
229
+ verify_zresult(@s.docname(:create) => [])
230
+ verify_result(@c.docname(:create_errors) => {})
231
+ verify_result(@c.docname(:create_links) => {'4'=> { 'l' => 'backend_id' }, '5' => { 'l' => 'backend_id'}})
232
+ end
233
+
234
+ it "should detect create conflict and skip the duplicate record creation, but properly update the errors page" do
235
+ create_doc1 = { 'name' => 'wrongname', 'link' => '1', 'an_attribute' => "Create Sample Adapter Error" }
236
+ create_doc2 = { 'name' => 'wrongname', 'link' => '1', 'duplicate_of_cid' => @c.id, 'duplicate_of_key' => '4', 'duplicate_of_queue_index' => '0'}
237
+ set_zstate({@s.docname(:create) => {'4' => create_doc1}},@c.id,true)
238
+ set_zstate({@s.docname(:create) => {'5' => create_doc2}},@c.id,true)
239
+ @ss.process_cud
240
+
241
+ verify_zresult(@s.docname(:create) => [])
242
+ verify_result(@c.docname(:create_errors) => {"4-error"=>{"message"=>"Create Sample Adapter Error"},
243
+ '4' => create_doc1,
244
+ "5-error"=>{"message"=>"Create Sample Adapter Error"},
245
+ '5' => create_doc2})
246
+ verify_result(@c.docname(:create_links) => {})
247
+ end
248
+
249
+ it "should detect create conflict and force and error" do
250
+ set_zstate({@s.docname(:create) => {'4'=> { 'name' => 'Android', 'link' => true }}},@c.id,true)
251
+ set_zstate({@s.docname(:create) => {'5'=> { 'name' => 'Android', 'link' => '1', 'force_duplicate_error' => '1' }}},@c.id,true)
252
+ @ss.process_cud
253
+ verify_zresult(@s.docname(:create) => [])
254
+ verify_result(@c.docname(:create_errors) => {"5-error"=>{"message"=>"Error during create: object confict detected"}, "5"=>{"name"=>"Android", "link"=>"1", 'force_duplicate_error' => '1'}} )
255
+ end
256
+
257
+ it "should detect update conflict and skip the duplicate record update" do
258
+ set_state(@c.docname(:cd) => {'4'=> {'name' => 'Apple'}})
259
+ set_zstate({@s.docname(:update) => {'4'=> { 'name' => 'Android' }}},@c.id,true)
260
+ set_zstate({@s.docname(:update) => {'4'=> { 'name' => 'InvalidName', 'duplicate_of_cid' => @c.id, 'duplicate_of_key' => '4', 'duplicate_of_queue_index' => '0'}}},@c.id,true)
261
+ @ss.process_cud
262
+
263
+ verify_zresult(@s.docname(:update) => [])
264
+ verify_result(@c.docname(:update_errors) => {})
265
+ verify_result(@c.docname(:update_rollback) => {})
266
+ end
267
+
268
+ it "should detect update conflict and force an error on duplicate record update" do
269
+ set_state(@c.docname(:cd) => {'4'=> {'name' => 'Apple'}})
270
+ set_zstate({@s.docname(:update) => {'4'=> { 'name' => 'Android' }}},@c.id,true)
271
+ set_zstate({@s.docname(:update) => {'4'=> { 'name' => 'ErrorName', 'force_duplicate_error' => '1' }}},@c.id,true)
272
+ @ss.process_cud
273
+
274
+ verify_zresult(@s.docname(:update) => [])
275
+ verify_result(@c.docname(:update_errors) => {"4-error"=>{"message"=>"Error during update: object confict detected"}, "4"=>{"name"=>"ErrorName", 'force_duplicate_error' => '1'}})
276
+ verify_result(@c.docname(:update_rollback) => {'4'=> {'name' => 'Apple'}})
277
+ end
278
+
279
+ it "should detect delete conflict and skip the duplicate record delete" do
280
+ set_state(@c.docname(:cd) => {'4'=> {'name' => 'Apple'}})
281
+ set_zstate({@s.docname(:delete) => {'4'=> { 'name' => 'Apple' }}},@c.id,true)
282
+ set_zstate({@s.docname(:delete) => {'4'=> { 'name' => 'Apple', 'duplicate_of_cid' => @c.id, 'duplicate_of_key' => '4', 'duplicate_of_queue_index' => '0'}}},@c.id,true)
283
+ @ss.process_cud
284
+
285
+ verify_zresult(@s.docname(:delete) => [])
286
+ verify_result(@c.docname(:cd) => {})
287
+ verify_result(@c.docname(:cd_size) => '0')
288
+ verify_result(@c.docname(:delete_errors) => {})
289
+ end
290
+
291
+ it "should detect delete conflict and force an error on duplicate record delete" do
292
+ set_state(@c.docname(:cd) => {'4'=> {'name' => 'Apple'}})
293
+ set_zstate({@s.docname(:delete) => {'4'=> { 'name' => 'Apple' }}},@c.id,true)
294
+ set_zstate({@s.docname(:delete) => {'4'=> { 'name' => 'Apple', 'force_duplicate_error' => '1'}}},@c.id,true)
295
+ @ss.process_cud
296
+
297
+ verify_zresult(@s.docname(:delete) => [])
298
+ verify_result(@c.docname(:delete_errors) => {"4-error"=>{"message"=>"Error during delete: object confict detected"}, "4"=>{"name"=>"Apple", 'force_duplicate_error' => '1'}})
218
299
  end
219
300
  end
220
301
 
@@ -334,7 +415,7 @@ describe "SourceSync" do
334
415
  @s.read_state.refresh_time.should > prev_refresh_time
335
416
  end
336
417
  end
337
-
418
+
338
419
  describe "search" do
339
420
  it "should do search with no exception" do
340
421
  verify_read_operation('search')
@@ -418,16 +499,16 @@ describe "SourceSync" do
418
499
 
419
500
  it "should enqueue process_cud SourceJob" do
420
501
  @s.cud_queue = :cud
421
- @ss.process_cud(@c.id)
502
+ @ss.process_cud
422
503
  Resque.peek(:cud).should == {"args"=>
423
- ["cud", @s.name, @a.name, @u.login, @c.id, nil], "class"=>"Rhoconnect::SourceJob"}
504
+ ["cud", @s.name, @a.name, @u.login, nil], "class"=>"Rhoconnect::SourceJob"}
424
505
  end
425
506
 
426
507
  it "should enqueue process_query SourceJob" do
427
508
  @s.query_queue = :abc
428
509
  @ss.process_query({'foo'=>'bar'})
429
510
  Resque.peek(:abc).should == {"args"=>
430
- ["query", @s.name, @a.name, @u.login, nil, {'foo'=>'bar'}], "class"=>"Rhoconnect::SourceJob"}
511
+ ["query", @s.name, @a.name, @u.login, {'foo'=>'bar'}], "class"=>"Rhoconnect::SourceJob"}
431
512
  end
432
513
  end
433
514
  end
data/spec/spec_helper.rb CHANGED
@@ -83,16 +83,22 @@ module TestHelpers
83
83
  JSON.parse(data.to_json)
84
84
  end
85
85
 
86
- def set_state(state)
86
+ def set_state(state,append=false)
87
87
  state.each do |dockey,data|
88
88
  if data.is_a?(Hash) or data.is_a?(Array)
89
- Store.put_data(dockey,data)
89
+ Store.put_data(dockey,data,append)
90
90
  else
91
91
  Store.put_value(dockey,data)
92
92
  end
93
93
  end
94
94
  end
95
95
 
96
+ def set_zstate(state,assoc_key,append=false)
97
+ state.each do |dockey,data|
98
+ Store.put_zdata(dockey,assoc_key,data,append)
99
+ end
100
+ end
101
+
96
102
  def set_test_data(dockey,data,error_message=nil,error_name='wrongname')
97
103
  if error_message
98
104
  error = {'an_attribute'=>error_message,'name'=>error_name}
@@ -120,6 +126,19 @@ module TestHelpers
120
126
  end
121
127
  end
122
128
 
129
+ def verify_zresult(result)
130
+ result.keys.sort.each do |dockey|
131
+ expected = result[dockey]
132
+ begin
133
+ data,assoc_keys = Store.get_zdata(dockey)
134
+ data.should == expected
135
+ rescue RSpec::Expectations::ExpectationNotMetError => e
136
+ message = "\nVerifying `#{dockey}`\n\n" + e.to_s
137
+ Kernel::raise(RSpec::Expectations::ExpectationNotMetError.new(message))
138
+ end
139
+ end
140
+ end
141
+
123
142
  def validate_db(bulk_data,data)
124
143
  validate_db_file(bulk_data.dbfile,bulk_data.sources.members,data)
125
144
  end
data/spec/store_spec.rb CHANGED
@@ -194,6 +194,35 @@ describe "Store" do
194
194
  Store.put_data(expected[1],@data)
195
195
  Store.get_keys('doc1:1:1:1:*').sort.should == expected
196
196
  end
197
+
198
+ it "should put_zdata and get_zdata" do
199
+ create_doc = {'1' => {'foo' => 'bar'}}
200
+ assoc_key = 'my_assoc_key'
201
+ Store.put_zdata('doc1',assoc_key,create_doc)
202
+ zdata,keys = Store.get_zdata('doc1')
203
+ zdata.should == [create_doc]
204
+ keys.should == [assoc_key]
205
+ end
206
+
207
+ it "should append duplicate data in put_zdata" do
208
+ create_doc = {'1' => {'foo' => 'bar'}}
209
+ assoc_key = 'my_assoc_key'
210
+ Store.put_zdata('doc1',assoc_key,create_doc)
211
+ Store.put_zdata('doc1',assoc_key,create_doc, true)
212
+ zdata,keys = Store.get_zdata('doc1')
213
+ zdata.should == [create_doc,create_doc]
214
+ keys.should == [assoc_key,assoc_key]
215
+ end
216
+
217
+ it "should flush_zdata" do
218
+ create_doc = {'1' => {'foo' => 'bar'}}
219
+ assoc_key = 'my_assoc_key'
220
+ Store.put_zdata('doc1',assoc_key,create_doc)
221
+ Store.flush_zdata('doc1')
222
+ zdata,keys = Store.get_zdata('doc1')
223
+ zdata.should == []
224
+ keys.should == []
225
+ end
197
226
 
198
227
  if defined?(JRUBY_VERSION)
199
228
  # FIXME:
@@ -62,7 +62,7 @@ shared_examples_for "SharedRhoconnectHelper" do |params|
62
62
  @a.sources << @s3.id
63
63
  Source.update_associations(@a.sources)
64
64
  @a.users << @u.id
65
-
65
+
66
66
  # "RhoconnectDataHelper"
67
67
  if params && params[:rhoconnect_data]
68
68
  @source = 'Product'
@@ -86,14 +86,14 @@ describe "TestMethods" do
86
86
  it "should include test_update helper" do
87
87
  record = {'4'=> { 'price' => '199.99' }}
88
88
  test_update(record)
89
- verify_result(@c.docname(:update) => {})
89
+ verify_zresult(@s.docname(:update) => [])
90
90
  end
91
91
 
92
92
  it "should include test_update helper when pass through" do
93
93
  record = {'4'=> { 'price' => '199.99' }}
94
94
  @s.pass_through = 'true'
95
95
  test_update(record).should == {'processed' => ["4"]}.to_json
96
- verify_result(@c.docname(:update) => {})
96
+ verify_zresult(@s.docname(:update) => [])
97
97
  end
98
98
 
99
99
  it "should include update_errors helper" do
@@ -105,14 +105,14 @@ describe "TestMethods" do
105
105
  it "should include test_delete helper" do
106
106
  record = {'4'=> { 'price' => '199.99' }}
107
107
  test_delete(record)
108
- verify_result(@c.docname(:delete) => {})
108
+ verify_zresult(@s.docname(:delete) => [])
109
109
  end
110
110
 
111
111
  it "should include test_delete helper when pass through" do
112
112
  record = {'4'=> { 'price' => '199.99' }}
113
113
  @s.pass_through = 'true'
114
114
  test_delete(record).should == {'processed' => ["4"]}.to_json
115
- verify_result(@c.docname(:delete) => {})
115
+ verify_zresult(@s.docname(:delete) => [])
116
116
  end
117
117
 
118
118
  it "should include delete_errors helper" do
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.4.2"
10
+ $redis_ver = "redis-2.4.5"
11
11
  $redis_zip = "C:/#{$redis_ver}.zip"
12
12
  $redis_dest = "C:/"
13
13
  end
@@ -181,7 +181,7 @@ namespace :redis do
181
181
  else
182
182
  sh 'rm -rf /tmp/redis/' if File.exists?("#{RedisRunner.redisdir}")
183
183
  sh 'git clone git://github.com/antirez/redis.git /tmp/redis -n'
184
- sh "cd #{RedisRunner.redisdir} && git reset --hard && git checkout 2.4.2"
184
+ sh "cd #{RedisRunner.redisdir} && git reset --hard && git checkout 2.4.5"
185
185
  end
186
186
  end
187
187
 
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhoconnect
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease:
4
+ hash: 62196433
5
+ prerelease: 6
6
6
  segments:
7
7
  - 3
8
+ - 1
8
9
  - 0
9
- - 6
10
- version: 3.0.6
10
+ - beta
11
+ - 1
12
+ version: 3.1.0.beta1
11
13
  platform: ruby
12
14
  authors:
13
15
  - Rhomobile
@@ -15,12 +17,12 @@ autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
 
18
- date: 2011-11-15 00:00:00 Z
20
+ date: 2011-12-29 00:00:00 Z
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
- type: :runtime
22
23
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ name: bundler
25
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
26
  none: false
25
27
  requirements:
26
28
  - - ~>
@@ -30,12 +32,12 @@ dependencies:
30
32
  - 1
31
33
  - 0
32
34
  version: "1.0"
33
- version_requirements: *id001
34
- name: bundler
35
- - !ruby/object:Gem::Dependency
36
35
  type: :runtime
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
37
38
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
+ name: sinatra
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
41
  none: false
40
42
  requirements:
41
43
  - - ~>
@@ -45,12 +47,12 @@ dependencies:
45
47
  - 1
46
48
  - 3
47
49
  version: "1.3"
48
- version_requirements: *id002
49
- name: sinatra
50
- - !ruby/object:Gem::Dependency
51
50
  type: :runtime
51
+ requirement: *id002
52
+ - !ruby/object:Gem::Dependency
52
53
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
54
+ name: rake
55
+ version_requirements: &id003 !ruby/object:Gem::Requirement
54
56
  none: false
55
57
  requirements:
56
58
  - - ~>
@@ -61,12 +63,12 @@ dependencies:
61
63
  - 9
62
64
  - 2
63
65
  version: 0.9.2
64
- version_requirements: *id003
65
- name: rake
66
- - !ruby/object:Gem::Dependency
67
66
  type: :runtime
67
+ requirement: *id003
68
+ - !ruby/object:Gem::Dependency
68
69
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
70
+ name: json
71
+ version_requirements: &id004 !ruby/object:Gem::Requirement
70
72
  none: false
71
73
  requirements:
72
74
  - - ~>
@@ -77,12 +79,12 @@ dependencies:
77
79
  - 5
78
80
  - 0
79
81
  version: 1.5.0
80
- version_requirements: *id004
81
- name: json
82
- - !ruby/object:Gem::Dependency
83
82
  type: :runtime
83
+ requirement: *id004
84
+ - !ruby/object:Gem::Dependency
84
85
  prerelease: false
85
- requirement: &id005 !ruby/object:Gem::Requirement
86
+ name: rubyzip
87
+ version_requirements: &id005 !ruby/object:Gem::Requirement
86
88
  none: false
87
89
  requirements:
88
90
  - - ~>
@@ -93,12 +95,12 @@ dependencies:
93
95
  - 9
94
96
  - 4
95
97
  version: 0.9.4
96
- version_requirements: *id005
97
- name: rubyzip
98
- - !ruby/object:Gem::Dependency
99
98
  type: :runtime
99
+ requirement: *id005
100
+ - !ruby/object:Gem::Dependency
100
101
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
102
+ name: uuidtools
103
+ version_requirements: &id006 !ruby/object:Gem::Requirement
102
104
  none: false
103
105
  requirements:
104
106
  - - ">="
@@ -109,12 +111,12 @@ dependencies:
109
111
  - 1
110
112
  - 1
111
113
  version: 2.1.1
112
- version_requirements: *id006
113
- name: uuidtools
114
- - !ruby/object:Gem::Dependency
115
114
  type: :runtime
115
+ requirement: *id006
116
+ - !ruby/object:Gem::Dependency
116
117
  prerelease: false
117
- requirement: &id007 !ruby/object:Gem::Requirement
118
+ name: redis
119
+ version_requirements: &id007 !ruby/object:Gem::Requirement
118
120
  none: false
119
121
  requirements:
120
122
  - - ">="
@@ -125,12 +127,12 @@ dependencies:
125
127
  - 2
126
128
  - 0
127
129
  version: 2.2.0
128
- version_requirements: *id007
129
- name: redis
130
- - !ruby/object:Gem::Dependency
131
130
  type: :runtime
131
+ requirement: *id007
132
+ - !ruby/object:Gem::Dependency
132
133
  prerelease: false
133
- requirement: &id008 !ruby/object:Gem::Requirement
134
+ name: resque
135
+ version_requirements: &id008 !ruby/object:Gem::Requirement
134
136
  none: false
135
137
  requirements:
136
138
  - - ~>
@@ -141,12 +143,12 @@ dependencies:
141
143
  - 19
142
144
  - 0
143
145
  version: 1.19.0
144
- version_requirements: *id008
145
- name: resque
146
- - !ruby/object:Gem::Dependency
147
146
  type: :runtime
147
+ requirement: *id008
148
+ - !ruby/object:Gem::Dependency
148
149
  prerelease: false
149
- requirement: &id009 !ruby/object:Gem::Requirement
150
+ name: rest-client
151
+ version_requirements: &id009 !ruby/object:Gem::Requirement
150
152
  none: false
151
153
  requirements:
152
154
  - - ~>
@@ -157,12 +159,12 @@ dependencies:
157
159
  - 6
158
160
  - 1
159
161
  version: 1.6.1
160
- version_requirements: *id009
161
- name: rest-client
162
- - !ruby/object:Gem::Dependency
163
162
  type: :runtime
163
+ requirement: *id009
164
+ - !ruby/object:Gem::Dependency
164
165
  prerelease: false
165
- requirement: &id010 !ruby/object:Gem::Requirement
166
+ name: templater
167
+ version_requirements: &id010 !ruby/object:Gem::Requirement
166
168
  none: false
167
169
  requirements:
168
170
  - - ~>
@@ -173,8 +175,8 @@ dependencies:
173
175
  - 0
174
176
  - 0
175
177
  version: 1.0.0
176
- version_requirements: *id010
177
- name: templater
178
+ type: :runtime
179
+ requirement: *id010
178
180
  description: RhoConnect App Integration Server and related command-line utilities
179
181
  email: dev@rhomobile.com
180
182
  executables:
@@ -201,8 +203,6 @@ files:
201
203
  - bench/benchapp/config.ru
202
204
  - bench/benchapp/Gemfile
203
205
  - bench/benchapp/Gemfile.lock
204
- - bench/benchapp/log/passenger.3000.log
205
- - bench/benchapp/log/passenger.9292.log
206
206
  - bench/benchapp/Rakefile
207
207
  - bench/benchapp/settings/license.key
208
208
  - bench/benchapp/settings/settings.yml
@@ -211,8 +211,6 @@ files:
211
211
  - bench/benchapp/spec/sources/mock_adapter_spec.rb
212
212
  - bench/benchapp/spec/sources/queue_mock_adapter_spec.rb
213
213
  - bench/benchapp/spec/spec_helper.rb
214
- - bench/benchapp/tmp/pids/passenger.3000.pid.lock
215
- - bench/benchapp/tmp/pids/passenger.9292.pid.lock
216
214
  - bench/blobapp/application.rb
217
215
  - bench/blobapp/config.ru
218
216
  - bench/blobapp/Gemfile
@@ -227,8 +225,10 @@ files:
227
225
  - bench/distr_bench/distr_bench_main
228
226
  - bench/distr_bench/run_distr_client.sh
229
227
  - bench/distr_bench/run_test_query_script.sh
228
+ - bench/lib/bench/aws_utils.rb
230
229
  - bench/lib/bench/bench_result_processor.rb
231
230
  - bench/lib/bench/cli.rb
231
+ - bench/lib/bench/distr_runner.rb
232
232
  - bench/lib/bench/logging.rb
233
233
  - bench/lib/bench/mock_client.rb
234
234
  - bench/lib/bench/result.rb
@@ -239,17 +239,8 @@ files:
239
239
  - bench/lib/bench/timer.rb
240
240
  - bench/lib/bench/utils.rb
241
241
  - bench/lib/bench.rb
242
- - bench/lib/testdata/0-data.txt
243
- - bench/lib/testdata/1-data.txt
244
- - bench/lib/testdata/10-data.txt
245
242
  - bench/lib/testdata/100-data.txt
246
- - bench/lib/testdata/2-data.txt
247
- - bench/lib/testdata/25-data.txt
248
- - bench/lib/testdata/250-data.txt
249
- - bench/lib/testdata/3-data.txt
250
243
  - bench/lib/testdata/5-data.txt
251
- - bench/lib/testdata/50-data.txt
252
- - bench/lib/testdata/500-data.txt
253
244
  - bench/lib/testdata/images/icon.ico
254
245
  - bench/lib/testdata/images/icon.png
255
246
  - bench/lib/testdata/images/loading-Landscape.png
@@ -286,16 +277,20 @@ files:
286
277
  - doc/adapters-intro.txt
287
278
  - doc/async-jobs.txt
288
279
  - doc/authentication.txt
280
+ - doc/benchmarks-running.txt
289
281
  - doc/benchmarks.txt
290
282
  - doc/blob-sync.txt
291
283
  - doc/bulk-sync.txt
284
+ - doc/client-java.txt
292
285
  - doc/client-objc.txt
293
286
  - doc/client.txt
294
287
  - doc/command-line.txt
295
288
  - doc/contributing.txt
289
+ - doc/cud-conflicts.txt
296
290
  - doc/deploying.txt
297
291
  - doc/extending-rhoconnect-server.txt
298
292
  - doc/heroku-addon.txt
293
+ - doc/hosting-rhohub.txt
299
294
  - doc/install.txt
300
295
  - doc/introduction.txt
301
296
  - doc/java-plugin.txt
@@ -304,6 +299,7 @@ files:
304
299
  - doc/migration.txt
305
300
  - doc/net-plugin.txt
306
301
  - doc/plugin-intro.txt
302
+ - doc/preparing-production.txt
307
303
  - doc/public/css/print.css
308
304
  - doc/public/css/screen.css
309
305
  - doc/public/css/style.css
@@ -311,6 +307,7 @@ files:
311
307
  - doc/rails-plugin.txt
312
308
  - doc/release.txt
313
309
  - doc/rest-api.txt
310
+ - doc/rhoconnect-redis-stack.txt
314
311
  - doc/settings.txt
315
312
  - doc/source-adapters.txt
316
313
  - doc/stats-middleware.txt
@@ -319,6 +316,7 @@ files:
319
316
  - doc/web-console.txt
320
317
  - examples/simple/application.rb
321
318
  - examples/simple/config.ru
319
+ - examples/simple/dump.rdb
322
320
  - examples/simple/Rakefile
323
321
  - examples/simple/settings/license.key
324
322
  - examples/simple/settings/settings.yml
@@ -352,6 +350,7 @@ files:
352
350
  - installer/utils/constants.rb
353
351
  - installer/utils/nix_install_test.rb
354
352
  - installer/utils/nix_installation.rake
353
+ - installer/utils/package_upload/auto-repo.rb
355
354
  - installer/utils/package_upload/repos.rake
356
355
  - installer/utils/package_upload/s3_upload.rb
357
356
  - installer/windows/configUi.ini
@@ -479,6 +478,7 @@ files:
479
478
  - lib/rhoconnect/ping/apple.rb
480
479
  - lib/rhoconnect/ping/blackberry.rb
481
480
  - lib/rhoconnect/ping.rb
481
+ - lib/rhoconnect/predefined_adapters/bench_adapter.rb
482
482
  - lib/rhoconnect/read_state.rb
483
483
  - lib/rhoconnect/rho_indifferent_access.rb
484
484
  - lib/rhoconnect/server/views/index.erb
@@ -617,7 +617,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
617
617
  requirements: []
618
618
 
619
619
  rubyforge_project:
620
- rubygems_version: 1.8.10
620
+ rubygems_version: 1.8.13
621
621
  signing_key:
622
622
  specification_version: 3
623
623
  summary: RhoConnect App Integration Server
@@ -1 +0,0 @@
1
- 2011/10/24 15:33:01 [error] 35864#0: *4 "/Users/mzverev/Projects/master/rhoconnect/bench/benchapp/public/index.html" is not found (2: No such file or directory), client: 127.0.0.1, server: _, request: "HEAD / HTTP/1.1", host: "0.0.0.0"