tlb-rspec1 0.3.0 → 0.3.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/.emacs_project +18 -6
- data/lib/tlb.rb +116 -24
- data/test.sh +42 -0
- metadata +83 -87
data/.emacs_project
CHANGED
@@ -1,7 +1,19 @@
|
|
1
1
|
(setq rspec-executable "spec")
|
2
|
-
(
|
3
|
-
(
|
4
|
-
|
5
|
-
|
6
|
-
(
|
7
|
-
|
2
|
+
(setq rb_platform "jruby")
|
3
|
+
(setq rb_platform "mri")
|
4
|
+
|
5
|
+
(unless (getenv "ORIG_PATH")
|
6
|
+
(setenv "ORIG_PATH" (getenv "PATH")))
|
7
|
+
|
8
|
+
(defun add-gem-bin (gem-bin)
|
9
|
+
(setenv "PATH" (concat gem-bin ":" (getenv "ORIG_PATH"))))
|
10
|
+
|
11
|
+
(if (equal rb_platform "jruby")
|
12
|
+
(progn
|
13
|
+
(setenv "GEM_HOME" "/home/janmejay/.rvm/gems/jruby-1.5.6@tlb")
|
14
|
+
(setenv "GEM_PATH" "/home/janmejay/.rvm/gems/jruby-1.5.6@tlb:/home/janmejay/.rvm/gems/jruby-1.5.6@global")
|
15
|
+
(add-gem-bin "/home/janmejay/.rvm/gems/jruby-1.5.6@tlb/bin"))
|
16
|
+
(progn
|
17
|
+
(setenv "GEM_HOME" "/home/janmejay/.rvm/gems/ruby-1.9.2-head@rspec-1")
|
18
|
+
(setenv "GEM_PATH" "/home/janmejay/.rvm/gems/ruby-1.9.2-head@rspec-1:/home/janmejay/.rvm/gems/ruby-1.8.7-head@global")
|
19
|
+
(add-gem-bin "/home/janmejay/.rvm/gems/ruby-1.9.2-head@rspec-1/bin")))
|
data/lib/tlb.rb
CHANGED
@@ -23,7 +23,7 @@ module Tlb
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.port
|
26
|
-
ENV[TLB_BALANCER_PORT]
|
26
|
+
ENV[TLB_BALANCER_PORT] || '8019'
|
27
27
|
end
|
28
28
|
|
29
29
|
def self.send path, data
|
@@ -44,10 +44,13 @@ module Tlb
|
|
44
44
|
false
|
45
45
|
end
|
46
46
|
|
47
|
+
def self.terminate
|
48
|
+
get("/control/suicide")
|
49
|
+
end
|
50
|
+
|
47
51
|
def self.wait_for_start
|
48
52
|
loop do
|
49
53
|
begin
|
50
|
-
TCPSocket.new(host, port)
|
51
54
|
break if running?
|
52
55
|
rescue
|
53
56
|
#ignore
|
@@ -103,37 +106,126 @@ module Tlb
|
|
103
106
|
"java -jar #{tlb_jar}"
|
104
107
|
end
|
105
108
|
|
106
|
-
def self.
|
107
|
-
|
108
|
-
|
109
|
+
def self.can_fork?
|
110
|
+
RUBY_PLATFORM != 'java'
|
111
|
+
end
|
112
|
+
|
113
|
+
class BalancerProcess
|
114
|
+
class StreamPumper
|
115
|
+
def initialize stream, file
|
116
|
+
@stream, @file = stream, file
|
117
|
+
@thd = Thread.new { pump }
|
118
|
+
end
|
119
|
+
|
120
|
+
def pump
|
121
|
+
loop do
|
122
|
+
data_available? && flush_stream
|
123
|
+
Thread.current[:stop_pumping] && break
|
124
|
+
sleep 0.1
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def flush_stream
|
129
|
+
File.open(ENV[@file], 'a') do |h|
|
130
|
+
h.write(read)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def stop_pumping!
|
135
|
+
@thd[:stop_pumping] = true
|
136
|
+
@thd.join
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def initialize server_command
|
141
|
+
pumper_type, out, err = start(server_command)
|
142
|
+
@out_pumper = pumper_type.new(out, TLB_OUT_FILE)
|
143
|
+
@err_pumper = pumper_type.new(err, TLB_ERR_FILE)
|
144
|
+
end
|
145
|
+
|
146
|
+
def stop_pumping
|
147
|
+
@out_pumper.stop_pumping!
|
148
|
+
@err_pumper.stop_pumping!
|
149
|
+
end
|
150
|
+
|
151
|
+
def die
|
152
|
+
Balancer.terminate
|
153
|
+
stop_pumping
|
109
154
|
end
|
110
155
|
end
|
111
156
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
157
|
+
class ForkBalancerProcess < BalancerProcess
|
158
|
+
def start server_command
|
159
|
+
@pid, input, out, err = Open4.popen4(server_command)
|
160
|
+
unless (out)
|
161
|
+
raise "out was nil"
|
162
|
+
end
|
163
|
+
return Class.new(StreamPumper) do
|
164
|
+
def data_available?
|
165
|
+
not @stream.eof?
|
166
|
+
end
|
167
|
+
|
168
|
+
def read
|
169
|
+
@stream.read
|
170
|
+
end
|
171
|
+
end, out, err
|
172
|
+
end
|
173
|
+
|
174
|
+
def die
|
175
|
+
super
|
176
|
+
@pid = nil
|
177
|
+
Process.wait
|
178
|
+
end
|
118
179
|
end
|
119
180
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
181
|
+
class JavaBalancerProcess < BalancerProcess
|
182
|
+
def start server_command
|
183
|
+
require 'java'
|
184
|
+
pb = java.lang.ProcessBuilder.new(server_command.split)
|
185
|
+
ENV.each do |key, val|
|
186
|
+
pb.environment[key] = val
|
126
187
|
end
|
188
|
+
@process = pb.start()
|
189
|
+
return Class.new(StreamPumper) do
|
190
|
+
def data_available?
|
191
|
+
@stream.ready
|
192
|
+
end
|
193
|
+
|
194
|
+
def read
|
195
|
+
@stream.read_line
|
196
|
+
end
|
197
|
+
|
198
|
+
def stop_pumping!
|
199
|
+
super
|
200
|
+
@stream.close
|
201
|
+
end
|
202
|
+
end, buf_reader(@process.input_stream), buf_reader(@process.error_stream)
|
127
203
|
end
|
204
|
+
|
205
|
+
def buf_reader stream
|
206
|
+
java.io.BufferedReader.new(java.io.InputStreamReader.new(stream))
|
207
|
+
end
|
208
|
+
|
209
|
+
def die
|
210
|
+
super
|
211
|
+
@process.destroy
|
212
|
+
@process.waitFor
|
213
|
+
@process = nil
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
def self.balancer_process_type
|
218
|
+
can_fork? ? ForkBalancerProcess : JavaBalancerProcess
|
219
|
+
end
|
220
|
+
|
221
|
+
def self.start_server
|
222
|
+
ENV[TLB_APP] = 'tlb.balancer.BalancerInitializer'
|
223
|
+
bal_klass = balancer_process_type
|
224
|
+
@balancer_process = bal_klass.new(server_command)
|
225
|
+
Balancer.wait_for_start
|
128
226
|
end
|
129
227
|
|
130
228
|
def self.stop_server
|
131
|
-
|
132
|
-
@pid = nil
|
133
|
-
@out_pumper[:stop_pumping] = true
|
134
|
-
@err_pumper[:stop_pumping] = true
|
135
|
-
@out_pumper.join
|
136
|
-
@err_pumper.join
|
137
|
-
Process.wait
|
229
|
+
@balancer_process.die
|
138
230
|
end
|
139
231
|
end
|
data/test.sh
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# this is a smart hack strictly meant for developer convinience, not for CI. -janmejay
|
4
|
+
|
5
|
+
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
|
6
|
+
|
7
|
+
sep() {
|
8
|
+
in_red "-----------------------------------------------------------------"
|
9
|
+
echo
|
10
|
+
}
|
11
|
+
|
12
|
+
function in_red {
|
13
|
+
tput sgr0
|
14
|
+
tput setaf 1;
|
15
|
+
tput setab 7;
|
16
|
+
echo -n $1;
|
17
|
+
tput sgr0
|
18
|
+
}
|
19
|
+
|
20
|
+
function show_running_with {
|
21
|
+
echo -e "\n"
|
22
|
+
sep
|
23
|
+
in_red "|"
|
24
|
+
echo -n " "
|
25
|
+
tput setaf 4
|
26
|
+
echo -n "Running tests with: "
|
27
|
+
tput bold;
|
28
|
+
tput setaf 0
|
29
|
+
ruby --version
|
30
|
+
sep
|
31
|
+
echo
|
32
|
+
}
|
33
|
+
|
34
|
+
run_tests_with() {
|
35
|
+
rvm use $1
|
36
|
+
show_running_with
|
37
|
+
rake spec
|
38
|
+
}
|
39
|
+
|
40
|
+
run_tests_with ruby-1.9.2-head@rspec-1
|
41
|
+
|
42
|
+
run_tests_with jruby-1.5.6@rspec-1
|
metadata
CHANGED
@@ -3,71 +3,68 @@ name: tlb-rspec1
|
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
version: 0.3.
|
6
|
+
- 0
|
7
|
+
- 3
|
8
|
+
- 1
|
9
|
+
version: 0.3.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
|
-
- Janmejay Singh
|
13
|
-
- Pavan KS
|
12
|
+
- Janmejay Singh
|
13
|
+
- Pavan KS
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-05-11 00:00:00 +05:30
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
version: 2.0.0
|
69
|
-
type: :runtime
|
70
|
-
version_requirements: *id003
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: open4
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 1
|
30
|
+
- 0
|
31
|
+
- 1
|
32
|
+
version: 1.0.1
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rake
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
version: "0"
|
45
|
+
type: :runtime
|
46
|
+
version_requirements: *id002
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec
|
49
|
+
prerelease: false
|
50
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 1
|
56
|
+
- 3
|
57
|
+
- 0
|
58
|
+
version: 1.3.0
|
59
|
+
- - <
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
segments:
|
62
|
+
- 2
|
63
|
+
- 0
|
64
|
+
- 0
|
65
|
+
version: 2.0.0
|
66
|
+
type: :runtime
|
67
|
+
version_requirements: *id003
|
71
68
|
description: |
|
72
69
|
TLB ruby implementation base, which provides support for load balancing tests written in rspec-1.x.
|
73
70
|
TLB.rb test suite is not bundled, please check http://github.com/test-load-balancer/tlb.rb for tests.
|
@@ -79,21 +76,22 @@ executables: []
|
|
79
76
|
extensions: []
|
80
77
|
|
81
78
|
extra_rdoc_files:
|
82
|
-
- README.markdown
|
79
|
+
- README.markdown
|
83
80
|
files:
|
84
|
-
- .emacs_project
|
85
|
-
- .gitignore
|
86
|
-
- .gitmodules
|
87
|
-
- README.markdown
|
88
|
-
- Rakefile
|
89
|
-
- gem_common.rb
|
90
|
-
- lib/tasks/tlb.rake
|
91
|
-
- lib/tlb.rb
|
92
|
-
- lib/tlb/spec_formatter.rb
|
93
|
-
- lib/tlb/spec_task.rb
|
94
|
-
- lib/tlb/util.rb
|
95
|
-
-
|
96
|
-
- tlb-
|
81
|
+
- .emacs_project
|
82
|
+
- .gitignore
|
83
|
+
- .gitmodules
|
84
|
+
- README.markdown
|
85
|
+
- Rakefile
|
86
|
+
- gem_common.rb
|
87
|
+
- lib/tasks/tlb.rake
|
88
|
+
- lib/tlb.rb
|
89
|
+
- lib/tlb/spec_formatter.rb
|
90
|
+
- lib/tlb/spec_task.rb
|
91
|
+
- lib/tlb/util.rb
|
92
|
+
- test.sh
|
93
|
+
- tlb-rspec1.gemspec
|
94
|
+
- tlb-alien-g0.3.0-4-g1077d1b.jar
|
97
95
|
has_rdoc: true
|
98
96
|
homepage: http://github.com/test-load-balancer/tlb.rb
|
99
97
|
licenses: []
|
@@ -117,31 +115,29 @@ post_install_message: |
|
|
117
115
|
-------------------------------------------------------------------------
|
118
116
|
|
119
117
|
rdoc_options:
|
120
|
-
- --charset=UTF-8
|
118
|
+
- --charset=UTF-8
|
121
119
|
require_paths:
|
122
|
-
- lib
|
120
|
+
- lib
|
123
121
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
122
|
requirements:
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
version: "0"
|
131
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
129
|
requirements:
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
segments:
|
133
|
+
- 0
|
134
|
+
version: "0"
|
139
135
|
requirements: []
|
140
136
|
|
141
137
|
rubyforge_project: tlb-rb
|
142
|
-
rubygems_version: 1.3.
|
138
|
+
rubygems_version: 1.3.6
|
143
139
|
signing_key:
|
144
140
|
specification_version: 3
|
145
|
-
summary: tlb-rspec1-0.3.
|
141
|
+
summary: tlb-rspec1-0.3.1-rspec-1
|
146
142
|
test_files: []
|
147
143
|
|