rhoconnect 4.0.0 → 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +16 -18
- data/Rakefile +4 -4
- data/bench/benchapp/Rakefile +10 -16
- data/bench/blobapp/Rakefile +9 -18
- data/bench/distr_bench/distr_bench_main +1 -1
- data/bench/distr_bench/run_distr_client.sh +2 -1
- data/bench/lib/bench.rb +1 -1
- data/bench/lib/bench/cli.rb +2 -0
- data/bench/lib/bench/distr_runner.rb +5 -5
- data/bench/lib/bench/test_data.rb +2 -2
- data/bench/scripts/test_query_script.rb +7 -6
- data/bin/rhoconnect +2 -0
- data/bin/rhoconnect-benchmark +13 -1
- data/commands/redis/redis_download.rb +1 -1
- data/commands/rhoconnect/routes.rb +12 -0
- data/doc/authentication.txt +1 -1
- data/doc/command-line.txt +1 -1
- data/doc/deploying.txt +2 -2
- data/doc/migration.txt +21 -12
- data/doc/push-client-setup-android.txt +1 -1
- data/doc/push-client-setup-rps.txt +3 -1
- data/doc/supported-platforms.txt +14 -7
- data/examples/simple/Rakefile +0 -1
- data/generators/rhoconnect.rb +15 -3
- data/generators/templates/application/Rakefile +1 -2
- data/js-adapters/ballroom.js +36 -9
- data/js-adapters/node.rb +8 -2
- data/js-adapters/node_channel.rb +10 -6
- data/js-adapters/rhoconnect_helpers.js +4 -0
- data/js-adapters/router.js +5 -3
- data/js-adapters/server.js +1 -1
- data/lib/rhoconnect.rb +9 -5
- data/lib/rhoconnect/api_token.rb +1 -2
- data/lib/rhoconnect/client.rb +1 -1
- data/lib/rhoconnect/controller/js_base.rb +7 -2
- data/lib/rhoconnect/model/base.rb +1 -1
- data/lib/rhoconnect/predefined_adapters/controllers/js/rho_internal_js_bench_adapter_controller.js +12 -0
- data/lib/rhoconnect/predefined_adapters/models/js/rho_internal_js_bench_adapter.js +107 -0
- data/lib/rhoconnect/source.rb +5 -0
- data/lib/rhoconnect/store.rb +3 -0
- data/lib/rhoconnect/version.rb +1 -1
- data/lib/rhoconnect/web-console/server.rb +1 -2
- data/rhoconnect.gemspec +0 -1
- data/spec/apps/jstestapp/Rakefile +1 -0
- data/spec/apps/jstestapp/config.ru +16 -0
- data/spec/apps/jstestapp/controllers/js/application_controller.js +18 -0
- data/spec/apps/jstestapp/settings/license.key +1 -0
- data/spec/apps/jstestapp/settings/settings.yml +13 -0
- data/spec/controllers/js_base_spec.rb +129 -97
- data/spec/predefined_adapters/rho_internal_bench_adapter_controller_js_spec.rb +111 -0
- data/spec/predefined_adapters/rho_internal_js_bench_adapter_js_spec.rb +44 -0
- data/spec/spec_helper.rb +4 -0
- data/tasks/redis.rake +9 -127
- metadata +19 -20
- data/lib/rhoconnect/tasks.rb +0 -315
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 4.0.1 (2013-10-29)
|
2
|
+
* fixed issue with loading JS Store api from controller context
|
3
|
+
* spelling mistakes in docs
|
4
|
+
* Updated load path to run CLI commands directly from rhoconnect bin directory
|
5
|
+
* Added warning msg to app generator if it cannot run bundler due to missing rhoconnect version.
|
6
|
+
* Setup redis_url variable to represent connection string for redis (fixes #57611994 and #57773212)
|
7
|
+
* Use unique identifier for pubsub channel names (#58934776)
|
8
|
+
|
1
9
|
## 4.0.0 (2013-09-05)
|
2
10
|
* Final v4.0.0 stable release based on beta.63
|
3
11
|
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rhoconnect (4.0.
|
4
|
+
rhoconnect (4.0.1)
|
5
5
|
bundler (~> 1.0)
|
6
6
|
connection_pool (~> 1.0.0)
|
7
7
|
json (~> 1.7.7)
|
@@ -14,7 +14,6 @@ PATH
|
|
14
14
|
sinatra (~> 1.3)
|
15
15
|
templater (~> 1.0.0)
|
16
16
|
thor (~> 0.18.0)
|
17
|
-
uuidtools (>= 2.1.1)
|
18
17
|
|
19
18
|
GEM
|
20
19
|
remote: https://rubygems.org/
|
@@ -28,7 +27,7 @@ GEM
|
|
28
27
|
builder
|
29
28
|
mime-types
|
30
29
|
xml-simple
|
31
|
-
backports (3.3.
|
30
|
+
backports (3.3.5)
|
32
31
|
builder (3.2.2)
|
33
32
|
cabin (0.6.1)
|
34
33
|
childprocess (0.3.9)
|
@@ -45,7 +44,7 @@ GEM
|
|
45
44
|
diff-lcs (1.1.3)
|
46
45
|
eventmachine (1.0.3)
|
47
46
|
excon (0.22.1)
|
48
|
-
execjs (2.0.
|
47
|
+
execjs (2.0.2)
|
49
48
|
extlib (0.9.16)
|
50
49
|
ffaker (1.14.0)
|
51
50
|
ffi (1.9.0)
|
@@ -68,12 +67,12 @@ GEM
|
|
68
67
|
clamp (~> 0.6)
|
69
68
|
ftw (~> 0.0.30)
|
70
69
|
json (>= 1.7.7)
|
71
|
-
ftw (0.0.
|
70
|
+
ftw (0.0.36)
|
72
71
|
addressable
|
73
72
|
backports (>= 2.6.2)
|
74
73
|
cabin (> 0)
|
75
74
|
http_parser.rb (= 0.5.3)
|
76
|
-
highline (1.6.
|
75
|
+
highline (1.6.20)
|
77
76
|
hike (1.2.3)
|
78
77
|
http_parser.rb (0.5.3)
|
79
78
|
jasmine (1.3.2)
|
@@ -89,25 +88,25 @@ GEM
|
|
89
88
|
rainbow
|
90
89
|
sprockets (~> 2)
|
91
90
|
json (1.7.7)
|
92
|
-
mime-types (
|
91
|
+
mime-types (2.0)
|
93
92
|
mono_logger (1.1.0)
|
94
|
-
multi_json (1.
|
93
|
+
multi_json (1.8.2)
|
95
94
|
net-scp (1.1.2)
|
96
95
|
net-ssh (>= 2.6.5)
|
97
|
-
net-ssh (2.
|
96
|
+
net-ssh (2.7.0)
|
98
97
|
nokogiri (1.5.10)
|
99
98
|
rack (1.5.2)
|
100
99
|
rack-fiber_pool (0.9.3)
|
101
|
-
rack-protection (1.5.
|
100
|
+
rack-protection (1.5.1)
|
102
101
|
rack
|
103
102
|
rack-test (0.6.2)
|
104
103
|
rack (>= 1.0)
|
105
104
|
rainbow (1.1.4)
|
106
105
|
rake (10.0.4)
|
107
|
-
redis (3.0.
|
106
|
+
redis (3.0.5)
|
108
107
|
redis-namespace (1.3.1)
|
109
108
|
redis (~> 3.0.0)
|
110
|
-
resque (1.
|
109
|
+
resque (1.25.1)
|
111
110
|
mono_logger (~> 1.0)
|
112
111
|
multi_json (~> 1.0)
|
113
112
|
redis-namespace (~> 1.2)
|
@@ -125,7 +124,7 @@ GEM
|
|
125
124
|
rspec-mocks (2.10.1)
|
126
125
|
ruby-hmac (0.4.0)
|
127
126
|
rubyzip (0.9.9)
|
128
|
-
safe_yaml (0.9.
|
127
|
+
safe_yaml (0.9.7)
|
129
128
|
selenium-webdriver (2.35.1)
|
130
129
|
childprocess (>= 0.2.5)
|
131
130
|
multi_json (~> 1.0)
|
@@ -137,7 +136,7 @@ GEM
|
|
137
136
|
simplecov-html (0.7.1)
|
138
137
|
simplecov-rcov (0.2.3)
|
139
138
|
simplecov (>= 0.4.1)
|
140
|
-
sinatra (1.4.
|
139
|
+
sinatra (1.4.4)
|
141
140
|
rack (~> 1.4)
|
142
141
|
rack-protection (~> 1.4)
|
143
142
|
tilt (~> 1.3, >= 1.3.4)
|
@@ -151,13 +150,12 @@ GEM
|
|
151
150
|
diff-lcs (>= 1.1.2)
|
152
151
|
extlib (>= 0.9.5)
|
153
152
|
highline (>= 1.4.0)
|
154
|
-
thin (1.
|
153
|
+
thin (1.6.0)
|
155
154
|
daemons (>= 1.0.9)
|
156
|
-
eventmachine (>= 0.
|
157
|
-
rack (>= 1.
|
155
|
+
eventmachine (>= 1.0.0)
|
156
|
+
rack (>= 1.5.0)
|
158
157
|
thor (0.18.1)
|
159
158
|
tilt (1.4.1)
|
160
|
-
uuidtools (2.1.4)
|
161
159
|
vegas (0.1.11)
|
162
160
|
rack (>= 1.0.0)
|
163
161
|
webmock (1.9.3)
|
data/Rakefile
CHANGED
@@ -2,9 +2,9 @@ require 'rubygems'
|
|
2
2
|
require 'bundler'
|
3
3
|
Bundler.setup(:default, :development, :test, :build)
|
4
4
|
|
5
|
-
load 'tasks
|
6
|
-
load 'installer
|
7
|
-
load 'installer
|
5
|
+
load File.join(File.dirname(__FILE__) ,'tasks', 'redis.rake')
|
6
|
+
load File.join(File.dirname(__FILE__) ,'installer', 'utils', 'nix_installation.rake')
|
7
|
+
load File.join(File.dirname(__FILE__) ,'installer', 'utils', '', 'package_upload', 'repos.rake')
|
8
8
|
|
9
9
|
require 'yaml'
|
10
10
|
$:.unshift File.join(File.dirname(__FILE__),'lib')
|
@@ -181,7 +181,7 @@ end
|
|
181
181
|
|
182
182
|
begin
|
183
183
|
require 'jasmine'
|
184
|
-
load 'tasks
|
184
|
+
load File.join(File.dirname(__FILE__) ,'tasks', 'jasmine.rake')
|
185
185
|
rescue LoadError
|
186
186
|
task :jasmine do
|
187
187
|
abort "Jasmine is not available. In order to run jasmine, you must: (sudo) gem install jasmine"
|
data/bench/benchapp/Rakefile
CHANGED
@@ -1,22 +1,16 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler/setup'
|
3
|
-
|
4
|
-
|
5
|
-
require 'vendor/rhoconnect/lib/rhoconnect/tasks'
|
6
|
-
require 'vendor/rhoconnect/lib/rhoconnect'
|
7
|
-
rescue LoadError
|
8
|
-
require 'rhoconnect/tasks'
|
9
|
-
require 'rhoconnect'
|
10
|
-
end
|
3
|
+
require 'rhoconnect'
|
4
|
+
require 'resque/tasks'
|
11
5
|
|
12
6
|
ROOT_PATH = File.expand_path(File.dirname(__FILE__))
|
13
7
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
8
|
+
task 'resque:setup' do
|
9
|
+
# The number of redis connections you want a job to have
|
10
|
+
Rhoconnect.connection_pool_size = 1
|
11
|
+
require 'rhoconnect/application/init'
|
12
|
+
|
13
|
+
Resque.after_fork do
|
14
|
+
Store.reconnect
|
18
15
|
end
|
19
|
-
|
20
|
-
puts "Resque not available. Install it with: "
|
21
|
-
puts "gem install resque\n\n"
|
22
|
-
end
|
16
|
+
end
|
data/bench/blobapp/Rakefile
CHANGED
@@ -1,25 +1,16 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler/setup'
|
3
|
-
require 'rhoconnect
|
3
|
+
require 'rhoconnect'
|
4
|
+
require 'resque/tasks'
|
4
5
|
|
5
6
|
ROOT_PATH = File.expand_path(File.dirname(__FILE__))
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
if RedisRunner.running?
|
15
|
-
#load development environment by default
|
16
|
-
ENV['RACK_ENV'] = args[:environment] || 'development'
|
17
|
-
sh "irb -rubygems -r rhoconnect -r console -r application"
|
18
|
-
else
|
19
|
-
puts "Redis is not running. Please start it by running 'rake redis:start' command."
|
20
|
-
end
|
8
|
+
task 'resque:setup' do
|
9
|
+
# The number of redis connections you want a job to have
|
10
|
+
Rhoconnect.connection_pool_size = 1
|
11
|
+
require 'rhoconnect/application/init'
|
12
|
+
|
13
|
+
Resque.after_fork do
|
14
|
+
Store.reconnect
|
21
15
|
end
|
22
|
-
rescue LoadError
|
23
|
-
puts "Resque not available. Install it with: "
|
24
|
-
puts "gem install resque\n\n"
|
25
16
|
end
|
@@ -115,7 +115,7 @@ begin
|
|
115
115
|
|
116
116
|
#7) Start-up all clients
|
117
117
|
n_iterations = 50
|
118
|
-
command="cd /opt/rhoconnect/bench/distr_bench; ./run_distr_client.sh #{sync_key} #{server} #{n_iterations} #{Bench.datasize} 1>/dev/null"
|
118
|
+
command="cd /opt/rhoconnect/bench/distr_bench; ./run_distr_client.sh #{sync_key} #{server} #{n_iterations} #{Bench.datasize} #{Bench.adapter_name} 1>/dev/null"
|
119
119
|
|
120
120
|
clients = ['ec2-107-20-56-25.compute-1.amazonaws.com',
|
121
121
|
'ec2-107-20-56-25.compute-1.amazonaws.com',
|
@@ -3,10 +3,11 @@ test_label=$1
|
|
3
3
|
server=$2
|
4
4
|
n_iterations=$3
|
5
5
|
payload=$4
|
6
|
+
adapter_name=$5
|
6
7
|
|
7
8
|
RACK_ENV=production
|
8
9
|
export RACK_ENV
|
9
10
|
|
10
11
|
sync_key="${test_label}_$payload"
|
11
12
|
n_threads=1
|
12
|
-
ruby distr_bench start '../scripts/test_query_script.rb' 'rhoadmin' '' $server $sync_key $n_threads $n_iterations $payload
|
13
|
+
ruby distr_bench start '../scripts/test_query_script.rb' 'rhoadmin' '' $server $sync_key $n_threads $n_iterations $payload 0 $adapter_name
|
data/bench/lib/bench.rb
CHANGED
@@ -26,7 +26,7 @@ module Bench
|
|
26
26
|
include TestData
|
27
27
|
include Utils
|
28
28
|
|
29
|
-
attr_accessor :concurrency, :iterations, :admin_login, :simtime
|
29
|
+
attr_accessor :concurrency, :iterations, :admin_login, :simtime, :adapter_name
|
30
30
|
attr_accessor :admin_password, :user_name
|
31
31
|
attr_accessor :password, :base_url, :host, :token
|
32
32
|
attr_accessor :total_time, :sessions, :verify_error
|
data/bench/lib/bench/cli.rb
CHANGED
@@ -15,6 +15,7 @@ module Bench
|
|
15
15
|
Bench.iterations = params[3].to_i unless params[3].nil?
|
16
16
|
Bench.datasize = params[4].to_i unless params[4].nil?
|
17
17
|
Bench.simtime = params[5].to_i unless params[5].nil?
|
18
|
+
Bench.adapter_name = params[6] unless params[6].nil?
|
18
19
|
Bench.admin_login = login
|
19
20
|
Bench.admin_password = password
|
20
21
|
load(script)
|
@@ -41,6 +42,7 @@ module Bench
|
|
41
42
|
Bench.iterations = params[3].to_i unless params[3].nil?
|
42
43
|
Bench.datasize = params[4].to_i unless params[4].nil?
|
43
44
|
Bench.simtime = params[5].to_i unless params[5].nil?
|
45
|
+
Bench.adapter_name = params[6] unless params[6].nil?
|
44
46
|
Bench.admin_login = login
|
45
47
|
Bench.admin_password = password
|
46
48
|
load(script)
|
@@ -8,7 +8,7 @@ module Bench
|
|
8
8
|
@clients_group = clientgroup
|
9
9
|
end
|
10
10
|
|
11
|
-
def run(server, sync_key, payload, concurrency, niterations, result_filename=nil, sim_time = 0)
|
11
|
+
def run(server, sync_key, payload, concurrency, niterations, result_filename=nil, sim_time = 0, bench_adapter_name = "RhoInternalBenchmarkAdapter")
|
12
12
|
# 1) Extract server name
|
13
13
|
server ||= 'default'
|
14
14
|
if server != 'default'
|
@@ -20,7 +20,7 @@ module Bench
|
|
20
20
|
expected_data = Bench.get_test_data(Bench.datasize)
|
21
21
|
Bench.concurrency = concurrency.to_i
|
22
22
|
Bench.iterations = niterations.to_i
|
23
|
-
|
23
|
+
Bench.adapter_name = bench_adapter_name
|
24
24
|
# 3) extract result filename
|
25
25
|
Bench.result_filename = result_filename
|
26
26
|
|
@@ -33,8 +33,8 @@ module Bench
|
|
33
33
|
Bench.user_name = "benchuser"
|
34
34
|
Bench.password = "password"
|
35
35
|
Bench.set_server_state("test_db_storage:application:#{Bench.user_name}",expected_data)
|
36
|
-
Bench.reset_refresh_time(
|
37
|
-
Bench.set_simulate_time(
|
36
|
+
Bench.reset_refresh_time(Bench.adapter_name, 0)
|
37
|
+
Bench.set_simulate_time(Bench.adapter_name, sim_time)
|
38
38
|
|
39
39
|
#6) set the sync key
|
40
40
|
@start_time = Time.now + 10.0
|
@@ -42,7 +42,7 @@ module Bench
|
|
42
42
|
puts "Sync Key #{sync_key} is set to #{@start_time} - waiting for clients now!!!"
|
43
43
|
|
44
44
|
#7) Start-up all clients
|
45
|
-
command="cd /opt/rhoconnect/bin; ruby run_client_benchmark #{server} #{sync_key} #{niterations} 1 #{Bench.datasize} 1>/dev/null"
|
45
|
+
command="cd /opt/rhoconnect/bin; ruby run_client_benchmark #{server} #{sync_key} #{niterations} 1 #{Bench.datasize} #{Bench.adapter_name} 1>/dev/null"
|
46
46
|
ec2_clients = clients_group.client_instances[0,concurrency]
|
47
47
|
Bench::AWSUtils.run_stack_ssh_command(ec2_clients, command)
|
48
48
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'ffaker'
|
2
|
-
require '
|
2
|
+
require 'securerandom'
|
3
3
|
|
4
4
|
module Bench
|
5
5
|
module TestData
|
@@ -43,7 +43,7 @@ module Bench
|
|
43
43
|
def generate_fake_data(num, generate_blob)
|
44
44
|
res = {}
|
45
45
|
num.times do |n|
|
46
|
-
mock_id =
|
46
|
+
mock_id = SecureRandom.hex
|
47
47
|
res[mock_id] = {
|
48
48
|
"mock_id" => mock_id,
|
49
49
|
"FirstName" => Faker::Name.first_name,
|
@@ -2,6 +2,7 @@ include BenchHelpers
|
|
2
2
|
bench_log "Runs simple login,clientcreate,clientregister,sync session and validates response"
|
3
3
|
|
4
4
|
Bench.config do |config|
|
5
|
+
config.adapter_name ||= "RhoInternalBenchmarkAdapter"
|
5
6
|
config.concurrency ||= 1
|
6
7
|
config.iterations ||= 10
|
7
8
|
config.datasize ||= 100
|
@@ -39,7 +40,7 @@ Bench.config do |config|
|
|
39
40
|
#exit(1)
|
40
41
|
|
41
42
|
#config.reset_refresh_time('RhoInternalBenchmarkAdapter', 0)
|
42
|
-
config.set_simulate_time(
|
43
|
+
config.set_simulate_time(Bench.adapter_name, Bench.simtime)
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
@@ -73,14 +74,14 @@ Bench.test do |config,session|
|
|
73
74
|
pagesize = @datasize
|
74
75
|
pagesize = @datasize/10 if @datasize > 1000
|
75
76
|
session.get "get-cud",
|
76
|
-
"#{config.host}/app/#{Rhoconnect::API_VERSION}
|
77
|
+
"#{config.host}/app/#{Rhoconnect::API_VERSION}/#{Bench.adapter_name}",
|
77
78
|
{'X-RhoConnect-CLIENT-ID' => session.client_id} do
|
78
79
|
{'p_size' => pagesize}
|
79
80
|
end
|
80
81
|
token = session.last_result.headers[:x_rhoconnect_page_token]
|
81
82
|
while (token and token != '') do
|
82
83
|
session.get "ack-cud",
|
83
|
-
"#{config.host}/app/#{Rhoconnect::API_VERSION}
|
84
|
+
"#{config.host}/app/#{Rhoconnect::API_VERSION}/#{Bench.adapter_name}",
|
84
85
|
{'X-RhoConnect-CLIENT-ID' => session.client_id} do
|
85
86
|
{'token' => token,
|
86
87
|
'p_size' => pagesize}
|
@@ -93,7 +94,7 @@ Bench.test do |config,session|
|
|
93
94
|
# we also generate 2 random records for CUD calls
|
94
95
|
expected_for_cud = Bench.generate_fake_data(2, false)
|
95
96
|
session.post "create-object",
|
96
|
-
"#{config.host}/app/#{Rhoconnect::API_VERSION}
|
97
|
+
"#{config.host}/app/#{Rhoconnect::API_VERSION}/#{Bench.adapter_name}",
|
97
98
|
{:content_type => :json, 'X-RhoConnect-CLIENT-ID' => session.client_id} do
|
98
99
|
{:create => expected_for_cud}.to_json
|
99
100
|
end
|
@@ -101,13 +102,13 @@ Bench.test do |config,session|
|
|
101
102
|
|
102
103
|
obj_to_delete = expected_for_cud.keys[0]
|
103
104
|
session.delete "delete_object",
|
104
|
-
"#{config.host}/app/#{Rhoconnect::API_VERSION}
|
105
|
+
"#{config.host}/app/#{Rhoconnect::API_VERSION}/#{Bench.adapter_name}/#{obj_to_delete}",
|
105
106
|
{'X-RhoConnect-CLIENT-ID' => session.client_id}
|
106
107
|
session.last_result.verify_code(200)
|
107
108
|
|
108
109
|
obj_to_delete = expected_for_cud.keys[1]
|
109
110
|
session.post "push_deletes",
|
110
|
-
"#{config.host}/app/#{Rhoconnect::API_VERSION}/
|
111
|
+
"#{config.host}/app/#{Rhoconnect::API_VERSION}/#{Bench.adapter_name}/push_deletes",
|
111
112
|
{'X-RhoConnect-API-TOKEN' => config.token, :content_type => :json} do
|
112
113
|
{:user_id => username,
|
113
114
|
:rebuild_md => false,
|
data/bin/rhoconnect
CHANGED
data/bin/rhoconnect-benchmark
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
|
+
|
4
5
|
$:.unshift File.join(File.dirname(__FILE__),'..','bench','lib')
|
5
6
|
$:.unshift File.join(File.dirname(__FILE__),'..','bench')
|
7
|
+
require 'forwardable'
|
6
8
|
require 'bench'
|
7
9
|
require 'optparse'
|
8
10
|
|
@@ -23,6 +25,11 @@ def parse_options
|
|
23
25
|
opts.on( '-u', '--url URL', 'Use URL as a server for benchmarking' ) do |url|
|
24
26
|
options[:server_url] = url
|
25
27
|
end
|
28
|
+
|
29
|
+
options[:js_bench] = false
|
30
|
+
opts.on( '-j', '--jsbench', 'Runs Benchmark tests against JavaScript Benchmark Adapter (requires JS App)' ) do
|
31
|
+
options[:js_bench] = true
|
32
|
+
end
|
26
33
|
|
27
34
|
options[:start_server] = nil
|
28
35
|
opts.on( '-s', '--startserver [APP_PATH]', 'Starts Rhoconnect App Server on localhost and use it for benchmarking' ) do |path|
|
@@ -218,6 +225,9 @@ begin
|
|
218
225
|
x_keys = concurrency_array.collect {|t| t.to_s }
|
219
226
|
Bench.prepare_bench_results_meta(result_dir, options[:title], x_keys)
|
220
227
|
end
|
228
|
+
|
229
|
+
# adapter name
|
230
|
+
bench_adapter_name = options[:js_bench] ? "RhoInternalJsBenchAdapter" : "RhoInternalBenchmarkAdapter"
|
221
231
|
|
222
232
|
concurrency_array.each do |concurrency|
|
223
233
|
payload_array.each do |payload|
|
@@ -245,11 +255,13 @@ begin
|
|
245
255
|
bench_args[8] = payload
|
246
256
|
# simulate backend delay
|
247
257
|
bench_args[9] = options[:simtime]
|
258
|
+
# JS Adapter
|
259
|
+
bench_args[10] = bench_adapter_name
|
248
260
|
|
249
261
|
# now execute Bench
|
250
262
|
if(options[:distributed])
|
251
263
|
sync_key = "#{options[:title]}_#{payload}"
|
252
|
-
options[:distr_runner].run(Bench.base_url, sync_key, payload, concurrency, options[:num_iterations], result_fname, options[:simtime])
|
264
|
+
options[:distr_runner].run(Bench.base_url, sync_key, payload, concurrency, options[:num_iterations], result_fname, options[:simtime], bench_adapter_name)
|
253
265
|
else
|
254
266
|
Bench::Cli.start bench_args
|
255
267
|
end
|
@@ -21,6 +21,18 @@ Execute.define_task do
|
|
21
21
|
puts " --> #{verb.to_s.upcase}\t #{path}"
|
22
22
|
end
|
23
23
|
end
|
24
|
+
# also , look in superclasses
|
25
|
+
klass = controller.helpers.class
|
26
|
+
superklass = controller.helpers.class.superclass
|
27
|
+
until superklass.nil? or (superklass.name == "Sinatra::Base")
|
28
|
+
superklass.paths.each do |verb, paths|
|
29
|
+
paths.each do |path|
|
30
|
+
puts " --> #{verb.to_s.upcase}\t #{path}\t (defined in #{superklass.name})"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
klass = superklass
|
34
|
+
superklass = klass.superclass
|
35
|
+
end
|
24
36
|
end
|
25
37
|
rescue Exception => e
|
26
38
|
Rhoconnect.log "#{e.inspect}"
|