rhoconnect 3.0.6 → 3.1.0.beta1
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 +9 -0
- data/Gemfile +3 -3
- data/Gemfile.lock +38 -17
- data/Rakefile +0 -10
- data/bench/benchapp/Gemfile.lock +1 -0
- data/bench/distr_bench/distr_bench_main +94 -27
- data/bench/distr_bench/run_test_query_script.sh +22 -18
- data/bench/lib/bench/aws_utils.rb +326 -0
- data/bench/lib/bench/bench_result_processor.rb +268 -75
- data/bench/lib/bench/cli.rb +1 -0
- data/bench/lib/bench/distr_runner.rb +102 -0
- data/bench/lib/bench/utils.rb +127 -0
- data/bench/lib/bench.rb +16 -15
- data/bench/prepare_bench +3 -11
- data/bench/scripts/test_query_script.rb +6 -7
- data/bin/rhoconnect-benchmark +257 -5
- data/doc/benchmarks-running.txt +140 -0
- data/doc/client-java.txt +236 -0
- data/doc/client-objc.txt +41 -1
- data/doc/client.txt +12 -0
- data/doc/command-line.txt +12 -3
- data/doc/cud-conflicts.txt +68 -0
- data/doc/deploying.txt +1 -70
- data/doc/hosting-rhohub.txt +3 -0
- data/doc/install.txt +50 -13
- data/doc/java-plugin.txt +217 -177
- data/doc/net-plugin.txt +97 -64
- data/doc/plugin-intro.txt +4 -2
- data/doc/preparing-production.txt +63 -0
- data/doc/rhoconnect-redis-stack.txt +252 -0
- data/doc/source-adapters.txt +3 -1
- data/doc/tutorial.txt +111 -49
- data/examples/simple/dump.rdb +0 -0
- data/installer/unix-like/rho_connect_install_constants.rb +6 -5
- data/installer/unix-like/rho_connect_install_installers.rb +6 -2
- data/installer/utils/nix_install_test.rb +2 -0
- data/installer/utils/package_upload/auto-repo.rb +136 -0
- data/installer/utils/package_upload/repos.rake +6 -3
- data/installer/utils/package_upload/s3_upload.rb +11 -6
- data/installer/windows/rhosync.nsi +5 -5
- data/lib/rhoconnect/client_sync.rb +2 -2
- data/lib/rhoconnect/document.rb +12 -0
- data/lib/rhoconnect/jobs/source_job.rb +2 -2
- data/lib/rhoconnect/predefined_adapters/bench_adapter.rb +61 -0
- data/lib/rhoconnect/source.rb +5 -0
- data/lib/rhoconnect/source_adapter.rb +10 -1
- data/lib/rhoconnect/source_sync.rb +161 -88
- data/lib/rhoconnect/store.rb +48 -0
- data/lib/rhoconnect/test_methods.rb +6 -6
- data/lib/rhoconnect/version.rb +1 -1
- data/lib/rhoconnect.rb +25 -2
- data/spec/apps/rhotestapp/sources/sample_adapter.rb +29 -0
- data/spec/jobs/source_job_spec.rb +5 -5
- data/spec/source_adapter_spec.rb +10 -0
- data/spec/source_sync_spec.rb +114 -33
- data/spec/spec_helper.rb +21 -2
- data/spec/store_spec.rb +29 -0
- data/spec/support/shared_examples.rb +1 -1
- data/spec/test_methods_spec.rb +4 -4
- data/tasks/redis.rake +2 -2
- metadata +59 -59
- data/bench/benchapp/log/passenger.3000.log +0 -1
- data/bench/benchapp/log/passenger.9292.log +0 -59
- data/bench/benchapp/tmp/pids/passenger.3000.pid.lock +0 -0
- data/bench/benchapp/tmp/pids/passenger.9292.pid.lock +0 -0
- data/bench/lib/testdata/0-data.txt +0 -0
- data/bench/lib/testdata/1-data.txt +0 -0
- data/bench/lib/testdata/10-data.txt +0 -15
- data/bench/lib/testdata/2-data.txt +0 -3
- data/bench/lib/testdata/25-data.txt +0 -39
- data/bench/lib/testdata/250-data.txt +0 -353
- data/bench/lib/testdata/3-data.txt +0 -4
- data/bench/lib/testdata/50-data.txt +0 -70
- data/bench/lib/testdata/500-data.txt +0 -711
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 3.1.0.beta1 (2011-12-31)
|
2
|
+
* #20396499 - saving rhoconnect-benchmark results into the file
|
3
|
+
* #21630639 - rhoconnect-benchmark post-processing (GRUFF png images and EXCEL spreadsheets generation)
|
4
|
+
* #21363347 - rhoconnect-benchmark - support for varying the number of concurrent clients and payload, distributed AWS clients
|
5
|
+
* #20151369 - rhoconnect-benchmark command
|
6
|
+
* #21187827 - support for built-in internal adapters
|
7
|
+
* #22208995 - AWS Cloud Formation deployment guidelines docs
|
8
|
+
* #22209097 - Conflict Resolution framework for simultaneous CUD operations
|
9
|
+
|
1
10
|
## 3.0.6 (2011-11-15)
|
2
11
|
* #20022889 - support for GET/POST /api/application routes
|
3
12
|
* #20609683 - support 'append' parameter in 'set_db_doc' REST API
|
data/Gemfile
CHANGED
@@ -11,15 +11,15 @@ platforms :jruby do
|
|
11
11
|
gem 'warbler'
|
12
12
|
end
|
13
13
|
|
14
|
-
gem 'sqlite3', ">= 1.3.3", :platforms => [:ruby, :mswin, :mingw]
|
15
|
-
|
16
14
|
group :development do
|
17
15
|
gem 'aws-s3', '>= 0.6.2', :require => 'aws/s3'
|
16
|
+
gem 'sqlite3', ">= 1.3.3", :platforms => [:ruby, :mswin, :mingw]
|
18
17
|
gem 'fpm', '>= 0.3.8'
|
19
|
-
gem 'fog'
|
18
|
+
gem 'fog'
|
20
19
|
gem 'ffaker', '~> 1.8.0'
|
21
20
|
gem 'thor', '>= 0.13.6'
|
22
21
|
gem 'webmock', '~> 1.6.4'
|
22
|
+
gem 'SystemTimer', '~> 1.2.3', :platforms => :ruby_18
|
23
23
|
end
|
24
24
|
|
25
25
|
group :test do
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rhoconnect (3.0.
|
4
|
+
rhoconnect (3.1.0.beta1)
|
5
5
|
bundler (~> 1.0)
|
6
6
|
json (~> 1.5.0)
|
7
7
|
rake (~> 0.9.2)
|
@@ -16,45 +16,59 @@ PATH
|
|
16
16
|
GEM
|
17
17
|
remote: http://rubygems.org/
|
18
18
|
specs:
|
19
|
+
SystemTimer (1.2.3)
|
19
20
|
addressable (2.2.6)
|
20
21
|
aws-s3 (0.6.2)
|
21
22
|
builder
|
22
23
|
mime-types
|
23
24
|
xml-simple
|
25
|
+
bouncy-castle-java (1.5.0146.1)
|
24
26
|
builder (3.0.0)
|
25
27
|
crack (0.3.1)
|
28
|
+
dbd-jdbc (0.1.4)
|
29
|
+
dbi (0.4.5)
|
30
|
+
deprecated (= 2.0.1)
|
31
|
+
deprecated (2.0.1)
|
26
32
|
diff-lcs (1.1.3)
|
27
|
-
excon (0.7.
|
33
|
+
excon (0.7.12)
|
28
34
|
extlib (0.9.15)
|
29
35
|
ffaker (1.8.1)
|
30
|
-
fog (1.
|
36
|
+
fog (1.1.1)
|
31
37
|
builder
|
32
|
-
excon (~> 0.7.
|
38
|
+
excon (~> 0.7.4)
|
33
39
|
formatador (~> 0.2.0)
|
34
40
|
mime-types
|
35
41
|
multi_json (~> 1.0.3)
|
36
42
|
net-scp (~> 1.0.4)
|
37
|
-
net-ssh (
|
43
|
+
net-ssh (>= 2.1.3)
|
38
44
|
nokogiri (~> 1.5.0)
|
39
45
|
ruby-hmac
|
40
46
|
formatador (0.2.1)
|
41
|
-
fpm (0.3.
|
47
|
+
fpm (0.3.11)
|
42
48
|
json
|
43
|
-
highline (1.6.
|
49
|
+
highline (1.6.8)
|
50
|
+
jdbc-sqlite3 (3.7.2)
|
51
|
+
jruby-jars (1.6.5)
|
52
|
+
jruby-openssl (0.7.4)
|
53
|
+
bouncy-castle-java
|
54
|
+
jruby-rack (1.1.1)
|
44
55
|
json (1.5.4)
|
45
|
-
|
46
|
-
|
56
|
+
json (1.5.4-java)
|
57
|
+
mime-types (1.17.2)
|
58
|
+
multi_json (1.0.4)
|
47
59
|
net-scp (1.0.4)
|
48
60
|
net-ssh (>= 1.99.1)
|
49
|
-
net-ssh (2.1
|
61
|
+
net-ssh (2.2.1)
|
50
62
|
nokogiri (1.5.0)
|
63
|
+
nokogiri (1.5.0-java)
|
51
64
|
rack (1.3.5)
|
52
65
|
rack-protection (1.1.4)
|
53
66
|
rack
|
54
67
|
rack-test (0.6.1)
|
55
68
|
rack (>= 1.0)
|
56
|
-
rake (0.9.2)
|
69
|
+
rake (0.9.2.2)
|
57
70
|
rcov (0.9.11)
|
71
|
+
rcov (0.9.11-java)
|
58
72
|
redis (2.2.2)
|
59
73
|
redis-namespace (1.0.3)
|
60
74
|
redis (< 3.0.0)
|
@@ -74,12 +88,12 @@ GEM
|
|
74
88
|
diff-lcs (~> 1.1.2)
|
75
89
|
rspec-mocks (2.6.0)
|
76
90
|
ruby-hmac (0.4.0)
|
77
|
-
rubyzip (0.9.
|
91
|
+
rubyzip (0.9.5)
|
78
92
|
sinatra (1.3.1)
|
79
|
-
rack (
|
80
|
-
rack-protection (
|
81
|
-
tilt (
|
82
|
-
sqlite3 (1.3.
|
93
|
+
rack (~> 1.3, >= 1.3.4)
|
94
|
+
rack-protection (~> 1.1, >= 1.1.2)
|
95
|
+
tilt (~> 1.3, >= 1.3.3)
|
96
|
+
sqlite3 (1.3.5)
|
83
97
|
templater (1.0.0)
|
84
98
|
diff-lcs (>= 1.1.2)
|
85
99
|
extlib (>= 0.9.5)
|
@@ -89,20 +103,27 @@ GEM
|
|
89
103
|
uuidtools (2.1.2)
|
90
104
|
vegas (0.1.8)
|
91
105
|
rack (>= 1.0.0)
|
106
|
+
warbler (1.3.2)
|
107
|
+
jruby-jars (>= 1.4.0)
|
108
|
+
jruby-rack (>= 1.0.0)
|
109
|
+
rake (>= 0.8.7)
|
110
|
+
rubyzip (>= 0.9.4)
|
92
111
|
webmock (1.6.4)
|
93
112
|
addressable (~> 2.2, > 2.2.5)
|
94
113
|
crack (>= 0.1.7)
|
95
114
|
xml-simple (1.1.1)
|
96
115
|
|
97
116
|
PLATFORMS
|
117
|
+
java
|
98
118
|
ruby
|
99
119
|
|
100
120
|
DEPENDENCIES
|
121
|
+
SystemTimer (~> 1.2.3)
|
101
122
|
aws-s3 (>= 0.6.2)
|
102
123
|
dbd-jdbc (>= 0.1.4)
|
103
124
|
dbi (>= 0.4.5)
|
104
125
|
ffaker (~> 1.8.0)
|
105
|
-
fog
|
126
|
+
fog
|
106
127
|
fpm (>= 0.3.8)
|
107
128
|
jdbc-sqlite3 (>= 3.7.2)
|
108
129
|
jruby-openssl (>= 0.7.4)
|
data/Rakefile
CHANGED
@@ -155,11 +155,6 @@ task "build:deb" => :build do
|
|
155
155
|
build_pkg "deb", "all", DEB_DEPS
|
156
156
|
end
|
157
157
|
|
158
|
-
desc "Build Debian DEB rhoconnect-#{Rhoconnect::VERSION}_all.deb package into the pkg directory"
|
159
|
-
task "build:bench:deb" => :build do
|
160
|
-
build_pkg "deb", "all", DEB_DEPS, true
|
161
|
-
end
|
162
|
-
|
163
158
|
RPM_DEPS = [
|
164
159
|
"wget >= 1.0", "make >= 3.0", "patch >= 2.0",
|
165
160
|
"gcc-c++ >= 4.1.2",
|
@@ -174,8 +169,3 @@ desc "Build Red Hat RPM rhoconnect-#{Rhoconnect::VERSION}.noarch.rpm package int
|
|
174
169
|
task "build:rpm" => :build do
|
175
170
|
build_pkg "rpm", "noarch", RPM_DEPS
|
176
171
|
end
|
177
|
-
|
178
|
-
desc "Build Red Hat RPM benchmark rhoconnect-#{Rhoconnect::VERSION}.noarch.rpm package into the pkg directory"
|
179
|
-
task "build:bench:rpm" => :build do
|
180
|
-
build_pkg "rpm", "noarch", RPM_DEPS, true
|
181
|
-
end
|
data/bench/benchapp/Gemfile.lock
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
$LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
|
5
|
+
require 'net/ssh/multi'
|
5
6
|
require 'bench'
|
7
|
+
require 'bench/aws_utils'
|
6
8
|
|
7
9
|
def process_results
|
8
10
|
finished_data = Bench.get_server_state("bench_statistics_data")
|
@@ -56,33 +58,97 @@ if server != 'default'
|
|
56
58
|
Bench.base_url = server
|
57
59
|
end
|
58
60
|
|
59
|
-
# 5)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
@
|
71
|
-
|
72
|
-
puts "
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
61
|
+
# 5) Create server EC2 instance
|
62
|
+
@fog = make_fog
|
63
|
+
server_stack = Constants::CENTOS_STACK
|
64
|
+
server_stack[:flavor_id] = 'm1.large'
|
65
|
+
|
66
|
+
puts "\n" +
|
67
|
+
"================================================\n" +
|
68
|
+
" Creating Benchmark Server \n" +
|
69
|
+
"================================================\n" +
|
70
|
+
"\n\n"
|
71
|
+
|
72
|
+
@server = create_ec2_instance(@fog, server_stack)
|
73
|
+
if @server.nil?
|
74
|
+
puts " Can not create Benchmark Server - Exiting..."
|
75
|
+
exit 7
|
76
|
+
end
|
77
|
+
|
78
|
+
@server_dist = compile_stack_info('centos')
|
79
|
+
|
80
|
+
# Establish connections
|
81
|
+
@server_ssh = establish_ssh_connection(@server.dns_name, @server_dist[:remote_user])
|
82
|
+
@server_dist[:remote_home] = @server_ssh.run("echo ~")[0].stdout.strip
|
83
|
+
|
84
|
+
install_package(@server_dist, @server_ssh)
|
85
|
+
|
86
|
+
start_servers(@server_ssh)
|
87
|
+
|
88
|
+
success = check_rc_service(@server.dns_name)
|
89
|
+
|
90
|
+
puts " success is #{success}"
|
91
|
+
|
92
|
+
if not success
|
93
|
+
exit 10
|
82
94
|
end
|
83
95
|
|
84
|
-
|
96
|
+
destroy_ec2_instance(@server)
|
97
|
+
exit 1
|
98
|
+
|
99
|
+
# 5) Set up the server
|
85
100
|
begin
|
101
|
+
Bench.admin_login = 'rhoadmin'
|
102
|
+
Bench.admin_password = ''
|
103
|
+
Bench.get_test_server
|
104
|
+
Bench.reset_app
|
105
|
+
Bench.user_name = "benchuser"
|
106
|
+
Bench.password = "password"
|
107
|
+
Bench.set_server_state("test_db_storage:application:#{Bench.user_name}",@expected)
|
108
|
+
Bench.reset_refresh_time('MockAdapter')
|
109
|
+
|
110
|
+
#6) set the sync key
|
111
|
+
@start_time = Time.now + 5.0
|
112
|
+
server_key = "#{sync_key}_#{Bench.datasize}"
|
113
|
+
Bench.set_server_state(server_key, @start_time.to_f.to_s)
|
114
|
+
puts "Sync Key #{server_key} is set to #{@start_time} - waiting for clients now!!!"
|
115
|
+
|
116
|
+
#7) Start-up all clients
|
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"
|
119
|
+
|
120
|
+
clients = ['ec2-107-20-56-25.compute-1.amazonaws.com',
|
121
|
+
'ec2-107-20-56-25.compute-1.amazonaws.com',
|
122
|
+
'ec2-67-202-35-54.compute-1.amazonaws.com',
|
123
|
+
'ec2-50-17-104-6.compute-1.amazonaws.com',
|
124
|
+
'ec2-204-236-222-92.compute-1.amazonaws.com',
|
125
|
+
'ec2-50-17-92-146.compute-1.amazonaws.com',
|
126
|
+
'ec2-107-22-124-158.compute-1.amazonaws.com',
|
127
|
+
'ec2-184-72-165-204.compute-1.amazonaws.com',
|
128
|
+
'ec2-107-20-41-32.compute-1.amazonaws.com',
|
129
|
+
'ec2-107-22-35-238.compute-1.amazonaws.com',
|
130
|
+
'ec2-50-16-180-250.compute-1.amazonaws.com']
|
131
|
+
|
132
|
+
sess_options = {:keys => ['/tmp/EC2-inst.pem']}
|
133
|
+
Net::SSH::Multi.start({:default_user => 'ec2-user'}) do |session|
|
134
|
+
# define the servers we want to use
|
135
|
+
session.use(sess_options) { clients[0..Bench.concurrency] }
|
136
|
+
|
137
|
+
# execute commands on all servers
|
138
|
+
session.exec command
|
139
|
+
end
|
140
|
+
|
141
|
+
#8) wait until all distributed clients are finished
|
142
|
+
while true
|
143
|
+
sleep(1)
|
144
|
+
stats_data = Bench.get_server_state("bench_statistics_data")
|
145
|
+
if (not stats_data.nil?) and stats_data.size == Bench.concurrency
|
146
|
+
break
|
147
|
+
end
|
148
|
+
puts " Waiting for the clients to finish : #{Bench.concurrency - stats_data.size} out of #{Bench.concurrency}"
|
149
|
+
end
|
150
|
+
|
151
|
+
# 9) Now, save all data to the disk
|
86
152
|
sleep(1)
|
87
153
|
@total_count = 0
|
88
154
|
@start_time = 0.0
|
@@ -91,9 +157,10 @@ begin
|
|
91
157
|
@times_count = 0
|
92
158
|
process_results
|
93
159
|
save_results
|
160
|
+
|
161
|
+
#10) Clean-up the db
|
162
|
+
Bench.reset_app
|
94
163
|
rescue Exception => e
|
164
|
+
puts "Distributed Bench Run-time ERROR!!!"
|
95
165
|
puts e
|
96
166
|
end
|
97
|
-
|
98
|
-
#8) Clean-up the db
|
99
|
-
Bench.reset_app
|
@@ -11,18 +11,20 @@ if [ $# -gt 1 ] ; then
|
|
11
11
|
server=$2
|
12
12
|
fi
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
clients[
|
17
|
-
clients[
|
18
|
-
clients[
|
19
|
-
clients[
|
20
|
-
clients[
|
21
|
-
clients[
|
22
|
-
clients[
|
23
|
-
clients[
|
24
|
-
|
25
|
-
|
14
|
+
|
15
|
+
|
16
|
+
clients[0]=ec2-107-20-56-25.compute-1.amazonaws.com
|
17
|
+
clients[1]=ec2-67-202-35-54.compute-1.amazonaws.com
|
18
|
+
clients[2]=ec2-50-17-104-6.compute-1.amazonaws.com
|
19
|
+
clients[3]=ec2-204-236-222-92.compute-1.amazonaws.com
|
20
|
+
clients[4]=ec2-50-17-92-146.compute-1.amazonaws.com
|
21
|
+
clients[5]=ec2-107-22-124-158.compute-1.amazonaws.com
|
22
|
+
clients[6]=ec2-184-72-165-204.compute-1.amazonaws.com
|
23
|
+
clients[7]=ec2-107-20-41-32.compute-1.amazonaws.com
|
24
|
+
clients[8]=ec2-107-22-35-238.compute-1.amazonaws.com
|
25
|
+
clients[9]=ec2-50-16-180-250.compute-1.amazonaws.com
|
26
|
+
|
27
|
+
n_iterations=25
|
26
28
|
current_path=`pwd`
|
27
29
|
|
28
30
|
# setup the benchmark directory structure
|
@@ -35,14 +37,16 @@ do
|
|
35
37
|
do
|
36
38
|
result_filename=./bench_results/query_bench_$timestamp_postfix/raw_data/query_bench_result.$payload
|
37
39
|
sync_key=sync_${timestamp_postfix}
|
38
|
-
for (( i = 0 ; i < $n_clients; i++ ))
|
39
|
-
do
|
40
|
-
ssh -i /tmp/EC2-inst.pem -o "UserKnownHostsFile /dev/null" -o "StrictHostKeyChecking no" ec2-user@${clients[$i]} "cd /opt/rhoconnect/bench/distr_bench; ./run_distr_client.sh $sync_key $server $n_iterations $payload 1>/dev/null" &
|
41
|
-
|
40
|
+
# for (( i = 0 ; i < $n_clients; i++ ))
|
41
|
+
# do
|
42
|
+
# ssh -i /tmp/EC2-inst.pem -o "UserKnownHostsFile /dev/null" -o "StrictHostKeyChecking no" ec2-user@${clients[$i]} "cd /opt/rhoconnect/bench/distr_bench; ./run_distr_client.sh $sync_key $server $n_iterations $payload 1>/dev/null" &
|
43
|
+
# started_pid=$!
|
44
|
+
# echo $started_pid
|
45
|
+
# done
|
42
46
|
|
43
47
|
# start main script
|
44
|
-
ruby distr_bench_main $
|
45
|
-
sleep
|
48
|
+
ruby distr_bench_main $sync_key $payload $n_clients $result_filename $server
|
49
|
+
sleep 10
|
46
50
|
done
|
47
51
|
done
|
48
52
|
|