rhoconnect 4.0.0 → 4.0.1
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 +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}"
|