rhoconnect 3.3.6 → 3.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +40 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +27 -25
- data/bench/benchapp/Gemfile +7 -27
- data/bench/benchapp/config.ru +9 -31
- data/bench/blobapp/Gemfile +7 -27
- data/bench/blobapp/config.ru +9 -29
- data/bench/lib/bench.rb +8 -1
- data/bench/lib/bench/test_data.rb +4 -1
- data/bench/scripts/blob_cud_script.rb +4 -0
- data/bench/scripts/cud_script.rb +7 -1
- data/bench/scripts/helpers.rb +1 -1
- data/bench/scripts/test_query_script.rb +20 -7
- data/bench/spec/bench_spec_helper.rb +3 -1
- data/bin/rhoconnect +22 -12
- data/commands/{commands/dtach_commands → dtach}/dtach_about.rb +0 -0
- data/commands/{commands/dtach_commands → dtach}/dtach_install.rb +0 -0
- data/commands/{commands/redis_commands → dtach}/redis_attach.rb +0 -0
- data/commands/execute.rb +14 -15
- data/commands/generators/update.rb +26 -0
- data/commands/{commands/redis_commands → redis}/redis_about.rb +0 -0
- data/commands/redis/redis_download.rb +13 -0
- data/commands/redis/redis_install.rb +26 -0
- data/commands/{commands/redis_commands → redis}/redis_make.rb +0 -0
- data/commands/{commands/redis_commands → redis}/redis_restart.rb +3 -2
- data/commands/{commands/redis_commands → redis}/redis_start.rb +0 -0
- data/commands/{commands/redis_commands → redis}/redis_startbg.rb +0 -0
- data/commands/{commands/redis_commands → redis}/redis_stop.rb +3 -2
- data/commands/{commands/rhoconnect → rhoconnect}/clean_start.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/config.rb +7 -2
- data/commands/{commands/rhoconnect → rhoconnect}/create_user.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/delete_device.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/delete_user.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/flushdb.rb +4 -4
- data/commands/{commands/rhoconnect → rhoconnect}/get_token.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/reset.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/reset_refresh.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/restart.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/secret.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/set_admin_password.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/spec.rb +0 -0
- data/commands/rhoconnect/start.rb +27 -0
- data/commands/{commands/rhoconnect → rhoconnect}/startbg.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/startdebug.rb +2 -2
- data/commands/{commands/rhoconnect → rhoconnect}/stop.rb +3 -4
- data/commands/{commands/rhoconnect → rhoconnect}/version.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect}/web.rb +0 -0
- data/commands/rhoconnect_attach/attach.rb +10 -0
- data/commands/rhoconnect_console/console.rb +16 -0
- data/commands/{commands/rhoconnect → rhoconnect_console}/console_helper.rb +0 -0
- data/commands/{commands/rhoconnect → rhoconnect_war}/war.rb +0 -0
- data/commands/{commands/redis_commands → utilities}/redis_runner.rb +22 -19
- data/commands/utilities/utilities.rb +6 -0
- data/doc/benchmarks.txt +2 -2
- data/doc/bulk-sync.txt +12 -1
- data/doc/client-java.txt +3 -3
- data/doc/client-objc.txt +1 -1
- data/doc/client.txt +5 -5
- data/doc/command-line.txt +80 -135
- data/doc/deploying.txt +119 -12
- data/doc/extending-rhoconnect-server.txt +1 -1
- data/doc/heroku-addon.txt +119 -23
- data/doc/install.txt +101 -39
- data/doc/java-plugin.txt +2 -2
- data/doc/licensing.txt +1 -1
- data/doc/plugin-intro.txt +3 -1
- data/doc/preparing-production.txt +4 -4
- data/doc/public/cli.txt +2 -2
- data/doc/push-backend-setup.txt +11 -1
- data/doc/push-client-setup.txt +72 -2
- data/doc/push-server-setup.txt +129 -8
- data/doc/rails-plugin.txt +245 -40
- data/doc/rest-api.txt +10 -6
- data/doc/rhoconnect-calculator.txt +237 -0
- data/doc/rhoconnect-redis-stack.txt +35 -0
- data/doc/session-and-configuration.txt +24 -0
- data/doc/settings.txt +51 -41
- data/doc/source-adapters.txt +45 -45
- data/doc/stats-middleware.txt +2 -2
- data/doc/supported-platforms.txt +6 -6
- data/doc/testing.txt +2 -2
- data/doc/tutorial.txt +63 -63
- data/examples/simple/Gemfile +7 -35
- data/examples/simple/config.ru +8 -26
- data/examples/simple/sources/product.rb +6 -6
- data/generators/rhoconnect.rb +5 -0
- data/generators/templates/application/Gemfile +7 -37
- data/generators/templates/application/Rakefile +8 -0
- data/generators/templates/application/config.ru +12 -31
- data/generators/templates/application/rcgemfile +44 -0
- data/generators/templates/application/settings/settings.yml +7 -5
- data/install.sh +4 -4
- data/installer/unix-like/create_texts.rb +7 -2
- data/installer/unix-like/rho_connect_install_constants.rb +2 -2
- data/installer/unix-like/rho_connect_install_installers.rb +1 -16
- data/lib/rhoconnect.rb +51 -38
- data/lib/rhoconnect/api/app/query.rb +4 -1
- data/lib/rhoconnect/api/app/search.rb +4 -1
- data/lib/rhoconnect/api/client/list_client_docs.rb +3 -1
- data/lib/rhoconnect/api/user/ping.rb +1 -5
- data/lib/rhoconnect/application/init.rb +43 -0
- data/lib/rhoconnect/async.rb +11 -6
- data/lib/rhoconnect/client_sync.rb +30 -37
- data/lib/rhoconnect/document.rb +4 -0
- data/lib/rhoconnect/graph_helper.rb +74 -56
- data/lib/rhoconnect/middleware/helpers.rb +4 -0
- data/lib/rhoconnect/ping.rb +1 -0
- data/lib/rhoconnect/ping/gcm.rb +58 -0
- data/lib/rhoconnect/predefined_adapters/bench_adapter.rb +7 -1
- data/lib/rhoconnect/source.rb +70 -56
- data/lib/rhoconnect/source_sync.rb +33 -5
- data/lib/rhoconnect/store.rb +358 -110
- data/lib/rhoconnect/user.rb +8 -0
- data/lib/rhoconnect/utilities.rb +16 -14
- data/lib/rhoconnect/version.rb +1 -1
- data/lib/rhoconnect/web-console/models/client.js +1 -1
- data/lib/rhoconnect/web-console/public/UNVR67bold.ttf +0 -0
- data/lib/rhoconnect/web-console/public/bootstrap.css +6 -0
- data/lib/rhoconnect/web-console/public/logo.png +0 -0
- data/lib/rhoconnect/web-console/server.rb +13 -11
- data/lib/rhoconnect/web-console/templates/index.erb +5 -5
- data/lib/rhoconnect/web-console/templates/jqplot.erb +1 -0
- data/lib/rhoconnect/web-console/views/doc.js +0 -4
- data/lib/rhoconnect/web-console/views/home.js +2 -1
- data/lib/rhoconnect/web-console/views/new_ping.js +11 -6
- data/lib/rhoconnect/web-console/views/stats.js +9 -5
- data/rhoconnect.gemspec +6 -4
- data/spec/api/app/fast_update_spec.rb +2 -2
- data/spec/api/source/get_source_params_spec.rb +1 -0
- data/spec/apps/rhotestapp/settings/settings.yml +5 -5
- data/spec/client_sync_spec.rb +3 -14
- data/spec/perf/perf_spec_helper.rb +11 -7
- data/spec/perf/store_perf_spec.rb +88 -11
- data/spec/ping/gcm_spec.rb +99 -0
- data/spec/server/server_spec.rb +7 -0
- data/spec/server/stats_spec.rb +9 -2
- data/spec/source_sync_spec.rb +29 -0
- data/spec/spec_helper.rb +40 -38
- data/spec/stats/record_spec.rb +18 -9
- data/spec/store_spec.rb +128 -19
- data/spec/testdata/10000-data.txt +0 -0
- data/spec/testdata/5-data.txt +0 -0
- data/spec/testdata/5000-data.txt +0 -0
- data/tasks/jasmine.rake +1 -0
- data/tasks/redis.rake +16 -13
- metadata +71 -39
- data/commands/commands/redis_commands/redis_download.rb +0 -33
- data/commands/commands/redis_commands/redis_install.rb +0 -26
- data/commands/commands/rhoconnect/attach.rb +0 -8
- data/commands/commands/rhoconnect/console.rb +0 -15
- data/commands/commands/rhoconnect/start.rb +0 -18
- data/commands/utilities/dtach_installed.rb +0 -10
data/lib/rhoconnect/user.rb
CHANGED
@@ -32,6 +32,14 @@ module Rhoconnect
|
|
32
32
|
return if current_user.nil?
|
33
33
|
return current_user if User.encrypt(password, current_user.salt) == current_user.hashed_password
|
34
34
|
end
|
35
|
+
|
36
|
+
def ping(params)
|
37
|
+
if params['async']
|
38
|
+
PingJob.enqueue(params)
|
39
|
+
else
|
40
|
+
PingJob.perform(params)
|
41
|
+
end
|
42
|
+
end
|
35
43
|
end
|
36
44
|
|
37
45
|
def new_password=(pass)
|
data/lib/rhoconnect/utilities.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'rbconfig'
|
2
3
|
|
3
4
|
module Utilities
|
4
5
|
# Prints the command to be issued and then issues it to system
|
@@ -7,10 +8,6 @@ module Utilities
|
|
7
8
|
system "#{cmd}"
|
8
9
|
end #cmd
|
9
10
|
|
10
|
-
def redis_home
|
11
|
-
ENV['REDIS_HOME'] || File.join($redis_dest,$redis_ver)
|
12
|
-
end
|
13
|
-
|
14
11
|
def mk_bin_dir(bin_dir)
|
15
12
|
begin
|
16
13
|
mkdir_p bin_dir unless File.exists?(bin_dir)
|
@@ -28,7 +25,7 @@ module Utilities
|
|
28
25
|
|
29
26
|
def print_resp(resp,success=true)
|
30
27
|
if success
|
31
|
-
puts "=> OK"
|
28
|
+
puts "=> OK"
|
32
29
|
else
|
33
30
|
puts "=> FAILED"
|
34
31
|
end
|
@@ -43,7 +40,7 @@ module Utilities
|
|
43
40
|
print msg
|
44
41
|
STDIN.gets.chomp
|
45
42
|
end
|
46
|
-
|
43
|
+
|
47
44
|
def load_settings(file)
|
48
45
|
begin
|
49
46
|
$settings = YAML.load_file(file)
|
@@ -53,11 +50,11 @@ module Utilities
|
|
53
50
|
raise e
|
54
51
|
end
|
55
52
|
end
|
56
|
-
|
53
|
+
|
57
54
|
def rhoconnect_socket
|
58
55
|
'/tmp/rhoconnect.dtach'
|
59
56
|
end
|
60
|
-
|
57
|
+
|
61
58
|
def rhoconnect_pid
|
62
59
|
if windows?
|
63
60
|
Dir.mkdir 'C:/TMP' unless File.directory? 'C:/TMP'
|
@@ -67,18 +64,23 @@ module Utilities
|
|
67
64
|
end
|
68
65
|
end
|
69
66
|
|
67
|
+
# See http://rbjl.net/35-how-to-properly-check-for-your-ruby-interpreter-version-and-os
|
70
68
|
def windows?
|
71
|
-
|
69
|
+
RbConfig::CONFIG['host_os'] =~ /(win|w)32$/
|
72
70
|
end
|
73
|
-
|
71
|
+
|
72
|
+
def redis_home
|
73
|
+
ENV['REDIS_HOME'] || File.join($redis_dest,$redis_ver)
|
74
|
+
end
|
75
|
+
|
74
76
|
def ruby19?
|
75
|
-
RUBY_VERSION =~ /1.9/
|
77
|
+
RUBY_VERSION =~ /1.9/
|
76
78
|
end
|
77
79
|
|
78
80
|
def jruby?
|
79
81
|
defined?(JRUBY_VERSION)
|
80
82
|
end
|
81
|
-
|
83
|
+
|
82
84
|
def thin?
|
83
85
|
begin
|
84
86
|
require 'thin'
|
@@ -87,7 +89,7 @@ module Utilities
|
|
87
89
|
nil
|
88
90
|
end
|
89
91
|
end
|
90
|
-
|
92
|
+
|
91
93
|
def mongrel?
|
92
94
|
begin
|
93
95
|
require 'mongrel'
|
@@ -96,7 +98,7 @@ module Utilities
|
|
96
98
|
nil
|
97
99
|
end
|
98
100
|
end
|
99
|
-
|
101
|
+
|
100
102
|
def report_missing_server
|
101
103
|
msg =<<-EOF
|
102
104
|
Could not find 'thin' or 'mongrel' on your system. Please install one:
|
data/lib/rhoconnect/version.rb
CHANGED
@@ -49,7 +49,7 @@ var Client = Backbone.Model.extend({
|
|
49
49
|
var r = JSON.parse(resp)
|
50
50
|
data = ""
|
51
51
|
$.each(r,function(index,value){
|
52
|
-
data += "<tr><td><a href='#doc/"+value+"/source_id="+source_id+"'>"+value+"</a></td></tr>";
|
52
|
+
data += "<tr><td colspan='2'><a href='#doc/"+value+"/source_id="+source_id+"'>"+value+"</a></td></tr>";
|
53
53
|
})
|
54
54
|
$('tr.remove-tr-docs').remove();
|
55
55
|
$('#sourcedocs-table tr:last').after(data);
|
Binary file
|
@@ -62,6 +62,12 @@ img {
|
|
62
62
|
-ms-interpolation-mode: bicubic;
|
63
63
|
vertical-align: middle;
|
64
64
|
}
|
65
|
+
@font-face {
|
66
|
+
font-family: Motofont;
|
67
|
+
src: url("UNVR67bold.ttf") format("truetype"); /* For IE */
|
68
|
+
src: local("Motofont"), url("UNVR67bold.ttf") format("truetype"); /* For non-IE */
|
69
|
+
}
|
70
|
+
|
65
71
|
button,
|
66
72
|
input,
|
67
73
|
select,
|
Binary file
|
@@ -60,18 +60,20 @@ module RhoconnectConsole
|
|
60
60
|
end
|
61
61
|
|
62
62
|
get '/get_http_routes' do
|
63
|
-
keys = get_user_count("http:*:*")
|
64
|
-
sources = get_sources('all')
|
63
|
+
# keys = get_user_count("http:*:*")
|
64
|
+
# sources = get_sources('all')
|
65
|
+
#
|
66
|
+
# #loop through arrays and remove any regex matches
|
67
|
+
# keysf = keys.inject([]) do |keys_final, element|
|
68
|
+
# found = true
|
69
|
+
# sources.each do |s|
|
70
|
+
# found = false if element.match(s)
|
71
|
+
# end
|
72
|
+
# keys_final << element.strip if found
|
73
|
+
# keys_final
|
74
|
+
# end
|
65
75
|
|
66
|
-
|
67
|
-
keysf = keys.inject([]) do |keys_final, element|
|
68
|
-
found = true
|
69
|
-
sources.each do |s|
|
70
|
-
found = false if element.match(s)
|
71
|
-
end
|
72
|
-
keys_final << element.strip if found
|
73
|
-
keys_final
|
74
|
-
end
|
76
|
+
keysf = get_http_routes()
|
75
77
|
|
76
78
|
keysf.to_json
|
77
79
|
end
|
@@ -45,11 +45,11 @@
|
|
45
45
|
<div id='nav_menu' class="navbar navbar-fixed-top" style="<%@heroku ? 'display:none' : 'display:block'%>">
|
46
46
|
<div class='navbar-inner'>
|
47
47
|
<div class='container'>
|
48
|
-
<div class="brand" style='padding-
|
49
|
-
|
50
|
-
|
48
|
+
<div class="brand" style='padding:5px 0 0 0;margin-left:0;font-size:26px'>
|
49
|
+
<img src='public/logo.png' alt='image' height='40' width='40'/>
|
50
|
+
<div style='font-family:Motofont;display:inline-block'>RHO<div style='color:#c91a1d;display:inline'>CONNECT</div></div>
|
51
51
|
</div>
|
52
|
-
<ul class='nav pull-right'>
|
52
|
+
<ul class='nav pull-right' style='margin-top:10px'>
|
53
53
|
<li class=""><a href="/resque/" >Resque</a></li>
|
54
54
|
<li class="active"><a href="#" >Console</a></li>
|
55
55
|
<li><a href='http://docs.rhomobile.com/rhoconnect/introduction' target='_blank'>Docs</a></li>
|
@@ -61,7 +61,7 @@
|
|
61
61
|
</div><!-- END navbar -->
|
62
62
|
<div class='container'>
|
63
63
|
<!-- secondary nav after login -->
|
64
|
-
<div id='secondary-nav' class='span12' style='display:none;margin-top:
|
64
|
+
<div id='secondary-nav' class='span12' style='display:none;margin-top:70px;margin-left:0'>
|
65
65
|
<ul class='nav nav-tabs'>
|
66
66
|
<li id='info_home'><a href='#'>Home</a></li>
|
67
67
|
<li id='server_doc'><a href='#docselect'>Server Doc</a></li>
|
@@ -5,6 +5,7 @@
|
|
5
5
|
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.canvasTextRenderer.js"></script>
|
6
6
|
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.canvasAxisLabelRenderer.js"></script>
|
7
7
|
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.canvasAxisTickRenderer.js"></script>
|
8
|
+
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.pointLabels.min.js"></script>
|
8
9
|
<script language="javascript" type="text/javascript" src="public/jqplot/jqplot.cursor.js"></script>
|
9
10
|
<style type='text/css'>
|
10
11
|
.jqplot-yaxis-label{
|
@@ -49,10 +49,6 @@ App.Views.Doc = Backbone.View.extend({
|
|
49
49
|
$('#secondary-nav').css('display','block');
|
50
50
|
out = "<div class='page-header'><h2>Document "+dbkey+"</h2></div>";
|
51
51
|
out += "<div id='docalert' class='alert alert-error' style='display:none'></div>";
|
52
|
-
//out += "<form 'string_s' class='form-horizontal'>";
|
53
|
-
//out += "<input type='text' name='data' value='' class='input-xlarge' placeholder='Upload string'/>";
|
54
|
-
//out += "<input type='submit' value='Submit' class='btn btn-primary' style='margin-left:10px'>";
|
55
|
-
//out += "</form>";
|
56
52
|
out += "<table id='docdata-table' class='table table-bordered'><tr></tr>";
|
57
53
|
out += "<tr class='remove-tr-doc'><td colspan='2' style='text-align:center'>Loading...</td></tr>"
|
58
54
|
out += "</table>"
|
@@ -1,9 +1,9 @@
|
|
1
1
|
App.Views.NewPing = Backbone.View.extend({
|
2
|
-
|
2
|
+
|
3
3
|
events:{
|
4
4
|
"submit form" : "ping"
|
5
5
|
},
|
6
|
-
|
6
|
+
|
7
7
|
initialize: function() {
|
8
8
|
var name = this.model.get('name');
|
9
9
|
this.render(name);
|
@@ -19,7 +19,12 @@ App.Views.NewPing = Backbone.View.extend({
|
|
19
19
|
var vibrate = $('#pingvibrate').val();
|
20
20
|
var sound = $('#pingsound').val();
|
21
21
|
var badge = $('#pingbadge').val();
|
22
|
-
var sources = $('#sources').val()
|
22
|
+
var sources = $('#sources').val();
|
23
|
+
if(sources.length > 0) {
|
24
|
+
sources = sources.split(',');
|
25
|
+
} else {
|
26
|
+
sources = [];
|
27
|
+
}
|
23
28
|
var token = this.model.get('api_token');
|
24
29
|
$.ajax({
|
25
30
|
type: 'POST',
|
@@ -47,7 +52,7 @@ App.Views.NewPing = Backbone.View.extend({
|
|
47
52
|
}
|
48
53
|
})
|
49
54
|
},
|
50
|
-
|
55
|
+
|
51
56
|
render: function(name) {
|
52
57
|
$('#secondary-nav').css('display','block');
|
53
58
|
out = "<div class='page-header'><h2>Ping User/s</h2></div>";
|
@@ -62,11 +67,11 @@ App.Views.NewPing = Backbone.View.extend({
|
|
62
67
|
out += "<td>allows you to play audio file if it exists on client</td></tr>"
|
63
68
|
out += "<tr><td>Badge</td><td><input id='pingbadge' type='text' name='badge' value='1' class='input-small'/></td>";
|
64
69
|
out += "<td>Number displayed on device next to app when push notification arrives. Available for iPhone</td></tr>"
|
65
|
-
out += "<tr><td>Vibrate</td><td><input id='pingvibrate' type='text' name='vibrate' value='2' class='input-small'/> (
|
70
|
+
out += "<tr><td>Vibrate</td><td><input id='pingvibrate' type='text' name='vibrate' value='2' class='input-small'/> (milliseconds)</td>"
|
66
71
|
out += "<td>Duration of vibration when push notification is received</td></tr>"
|
67
72
|
out += "<tr><td colspan=3><input type='submit' class='btn btn-primary' value='Ping!' /></td></tr>"
|
68
73
|
out += "</table></form>";
|
69
|
-
|
74
|
+
|
70
75
|
$(this.el).html(out);
|
71
76
|
$('#main_content').html(this.el);
|
72
77
|
}
|
@@ -24,12 +24,14 @@ App.Views.Stats = Backbone.View.extend({
|
|
24
24
|
},
|
25
25
|
|
26
26
|
device_count: function(){
|
27
|
+
$('#stats_main').html("<i>Loading...</i>")
|
27
28
|
$("#user_count").attr('class','');
|
28
29
|
$('#device_count').attr('class','label label-info');
|
29
30
|
this.model.device_count();
|
30
31
|
},
|
31
32
|
|
32
33
|
http_timing: function(ev){
|
34
|
+
$('#stats_main').html("<i>Loading...</i>")
|
33
35
|
var display_name = ev.currentTarget.id;
|
34
36
|
$('.http_timing').attr('class','http_timing');
|
35
37
|
ev.currentTarget.className = "http_timing label label-info"
|
@@ -37,6 +39,7 @@ App.Views.Stats = Backbone.View.extend({
|
|
37
39
|
},
|
38
40
|
|
39
41
|
http_timing_key: function(ev){
|
42
|
+
$('#stats_main').html("<i>Loading...</i>")
|
40
43
|
var display_name = ev.currentTarget.id;
|
41
44
|
$('.http_timing_key').attr('class','http_timing_key');
|
42
45
|
ev.currentTarget.className = "http_timing_key label label-info"
|
@@ -44,6 +47,7 @@ App.Views.Stats = Backbone.View.extend({
|
|
44
47
|
},
|
45
48
|
|
46
49
|
source_timing_display: function(ev){
|
50
|
+
$('#stats_main').html("<i>Loading...</i>")
|
47
51
|
var display_name = ev.currentTarget.id;
|
48
52
|
|
49
53
|
$(".source_timing_display").attr('class','source_timing_display');
|
@@ -83,11 +87,11 @@ App.Views.Stats = Backbone.View.extend({
|
|
83
87
|
out += "<div id='collapseTwo' class='accordion-body collapse'>";
|
84
88
|
out += "</div></div>"
|
85
89
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
90
|
+
out += "<div class='accordion-group'>"
|
91
|
+
out += "<div class='accordion-heading' style='font-weight:bold'>"
|
92
|
+
out += "<a class='accordion-toggle' data-toggle='collapse' data-parent='#accordion2' href='#collapseFour'>HTTP Route Timing</a></div>"
|
93
|
+
out += "<div id='collapseFour' class='accordion-body collapse'>";
|
94
|
+
out += "</div></div>"
|
91
95
|
|
92
96
|
out += "<div class='accordion-group'>"
|
93
97
|
out += "<div class='accordion-heading' style='font-weight:bold'>"
|
data/rhoconnect.gemspec
CHANGED
@@ -14,15 +14,16 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.description = %q{RhoConnect App Integration Server and related command-line utilities}
|
15
15
|
|
16
16
|
s.rubyforge_project = nil
|
17
|
-
|
18
|
-
s.files = %w(
|
19
|
-
CHANGELOG.md CREDITS Gemfile Gemfile.lock install.sh README.md Rakefile LICENSE Rakefile rhoconnect.gemspec
|
17
|
+
|
18
|
+
s.files = %w(
|
19
|
+
CHANGELOG.md CREDITS Gemfile Gemfile.lock install.sh README.md Rakefile LICENSE Rakefile rhoconnect.gemspec
|
20
20
|
)
|
21
21
|
s.files += Dir.glob("bench/**/*")
|
22
22
|
s.files += Dir.glob("commands/**/*")
|
23
23
|
s.files += Dir.glob("doc/**/*")
|
24
24
|
s.files += Dir.glob("examples/**/*")
|
25
25
|
s.files += Dir.glob("generators/**/*")
|
26
|
+
s.files += Dir.glob("generators/templates/application/.rcgemfile")
|
26
27
|
s.files += Dir.glob("installer/**/*")
|
27
28
|
s.files += Dir.glob("lib/**/*")
|
28
29
|
s.files += Dir.glob("tasks/**/*")
|
@@ -37,12 +38,13 @@ Gem::Specification.new do |s|
|
|
37
38
|
"README.md"
|
38
39
|
]
|
39
40
|
|
40
|
-
s.add_dependency('bundler', '~> 1.0')
|
41
|
+
s.add_dependency('bundler', '~> 1.0')
|
41
42
|
s.add_dependency("sinatra", '~> 1.3')
|
42
43
|
s.add_dependency('rake', '~> 0.9.2.2')
|
43
44
|
s.add_dependency('json', '~> 1.6.0')
|
44
45
|
s.add_dependency('rubyzip', '~> 0.9.4')
|
45
46
|
s.add_dependency('uuidtools', '>= 2.1.1')
|
47
|
+
s.add_dependency('connection_pool', '>= 0.9.2')
|
46
48
|
s.add_dependency('redis', '>= 3.0.1')
|
47
49
|
s.add_dependency('resque', '>= 1.22.0')
|
48
50
|
s.add_dependency('rest-client', '~> 1.6.1')
|
@@ -49,7 +49,7 @@ describe "RhoconnectApiFastUpdate" do
|
|
49
49
|
verify_result(@s.docname(:md) => data,@s.docname(:md_size)=>'3')
|
50
50
|
end
|
51
51
|
|
52
|
-
it "should remove all attributes ,
|
52
|
+
it "should remove all attributes , and properly adjust md_size" do
|
53
53
|
data = {'1' => @product1, '2' => @product2, '3' => @product3}
|
54
54
|
@s = Source.load(@s_fields[:name],@s_params)
|
55
55
|
set_state(@s.docname(:md) => data,@s.docname(:md_size) => '3')
|
@@ -61,7 +61,7 @@ describe "RhoconnectApiFastUpdate" do
|
|
61
61
|
{:user_id => @u.id, :delete_data => orig_obj_attrs, :data => new_obj_attrs}, {Rhoconnect::API_TOKEN_HEADER => @api_token}
|
62
62
|
last_response.should be_ok
|
63
63
|
data.delete('3')
|
64
|
-
verify_result(@s.docname(:md) => data,@s.docname(:md_size)=>'
|
64
|
+
verify_result(@s.docname(:md) => data,@s.docname(:md_size)=>'2')
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -21,6 +21,7 @@ describe "RhoconnectApiGetSourceParams" do
|
|
21
21
|
{"name"=>"retry_limit", "type"=>"integer", "value"=>0},
|
22
22
|
{"name"=>"simulate_time", "value"=>0, "type"=>"integer"},
|
23
23
|
{"name"=>"partition_type", "value"=>"user", "type"=>"string"},
|
24
|
+
{"name"=>"push_notify", "value"=>"false", "type"=>"string"},
|
24
25
|
{"name"=>"sync_type", "value"=>"incremental", "type"=>"string"},
|
25
26
|
{"name"=>"belongs_to", "type"=>"string", "value"=>nil},
|
26
27
|
{"name"=>"has_many", "type"=>"string", "value"=>"FixedSchemaAdapter,brand"},
|
@@ -9,24 +9,24 @@
|
|
9
9
|
:poll_interval: 300
|
10
10
|
:priority: 5
|
11
11
|
sync_type: 'incremental'
|
12
|
-
belongs_to:
|
12
|
+
belongs_to:
|
13
13
|
- brand: 'SampleAdapter'
|
14
14
|
OtherAdapter:
|
15
15
|
partition_type: 'app'
|
16
16
|
:force_default: true
|
17
17
|
:poll_interval: 300
|
18
|
-
|
18
|
+
|
19
19
|
:development:
|
20
20
|
:licensefile: settings/license.key
|
21
21
|
:bulk_sync_poll_interval: 3600
|
22
22
|
:redis: localhost:6379
|
23
23
|
:syncserver: http://localhost:9292/application/
|
24
|
-
:test:
|
24
|
+
:test:
|
25
25
|
:licensefile: settings/license.key
|
26
26
|
:iphonecertfile: settings/apple_fake_cert.pem
|
27
27
|
:iphonepassphrase: certpassword
|
28
28
|
:iphoneserver: gateway.sandbox.push.apple.com
|
29
|
-
:iphoneport: 2195
|
29
|
+
:iphoneport: 2195
|
30
30
|
:bulk_sync_poll_interval: 3600
|
31
31
|
:redis: localhost:6379
|
32
32
|
:syncserver: http://localhost:9292/application/
|
@@ -34,7 +34,7 @@
|
|
34
34
|
:push_server: http://user:pwd@localhost:8675
|
35
35
|
:cookie_expire: 9999999
|
36
36
|
:poll_interval_default: 201
|
37
|
-
:production:
|
37
|
+
:production:
|
38
38
|
:licensefile: settings/license.key
|
39
39
|
:bulk_sync_poll_interval: 3600
|
40
40
|
:redis: localhost:6379
|
data/spec/client_sync_spec.rb
CHANGED
@@ -518,7 +518,7 @@ describe "ClientSync" do
|
|
518
518
|
Store.get_data(@c.docname(:cd)).should == @expected
|
519
519
|
end
|
520
520
|
|
521
|
-
it "should return deleted objects in the
|
521
|
+
it "should delete objects from the client document and return deleted objects in the page" do
|
522
522
|
Store.put_data(@s.docname(:md),@data).should == true
|
523
523
|
Store.get_data(@s.docname(:md)).should == @data
|
524
524
|
|
@@ -527,22 +527,11 @@ describe "ClientSync" do
|
|
527
527
|
Store.get_data(@cs.client.docname(:cd)).should == @cd
|
528
528
|
|
529
529
|
@expected = {'4'=>@product4}
|
530
|
-
@cs.
|
530
|
+
@cs.send_new_page
|
531
531
|
Store.get_data(@cs.client.docname(:delete_page)).should == @expected
|
532
|
+
Store.get_data(@cs.client.docname(:cd)).should == @data
|
532
533
|
end
|
533
534
|
|
534
|
-
it "should delete objects from client document" do
|
535
|
-
Store.put_data(@s.docname(:md),@data).should == true
|
536
|
-
Store.get_data(@s.docname(:md)).should == @data
|
537
|
-
|
538
|
-
@cd = {'1'=>@product1,'2'=>@product2,'3'=>@product3,'4'=>@product4}
|
539
|
-
Store.put_data(@cs.client.docname(:cd),@cd)
|
540
|
-
Store.get_data(@cs.client.docname(:cd)).should == @cd
|
541
|
-
|
542
|
-
Store.delete_data(@cs.client.docname(:cd),@cs.compute_deleted_page).should == true
|
543
|
-
Store.get_data(@cs.client.docname(:cd)).should == @data
|
544
|
-
end
|
545
|
-
|
546
535
|
it "should resend page if page exists and no token provided" do
|
547
536
|
expected = {'1'=>@product1}
|
548
537
|
set_test_data('test_db_storage',{'1'=>@product1,'2'=>@product2,'4'=>@product4})
|