rhoconnect 3.0.6 → 3.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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"