rhoconnect 3.3.6 → 3.4.2
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.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})
|