tlb-rspec1 0.1.1 → 0.3.0
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 +7 -0
- data/.gitignore +3 -1
- data/README.markdown +50 -14
- data/Rakefile +4 -3
- data/gem_common.rb +18 -9
- data/lib/tlb/spec_formatter.rb +1 -0
- data/lib/tlb/spec_task.rb +3 -3
- data/lib/tlb/util.rb +15 -0
- data/lib/tlb.rb +7 -3
- data/tlb-alien-g0.3.0.jar +0 -0
- data/tlb-rspec1.gemspec +1 -1
- metadata +25 -28
- data/spec/fixtures/foo.sh +0 -7
- data/spec/spec_helper.rb +0 -19
- data/spec/tlb/spec_formatter_spec.rb +0 -140
- data/spec/tlb/spec_task_spec.rb +0 -40
- data/spec/tlb_http_communication_spec.rb +0 -146
- data/spec/tlb_process_control_spec.rb +0 -89
- data/tlb-all-gv0.2-9-g1f1a4aa.jar +0 -0
data/.emacs_project
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
(setq rspec-executable "spec")
|
2
|
+
(setenv "GEM_HOME" "/home/janmejay/.rvm/gems/ruby-1.9.2-head@rspec-1")
|
3
|
+
(setenv "GEM_PATH" "/home/janmejay/.rvm/gems/ruby-1.9.2-head@rspec-1:/home/janmejay/.rvm/gems/ruby-1.9.2-head@global")
|
4
|
+
(let ((bindir "/home/janmejay/.rvm/gems/ruby-1.9.2-head@rspec-1/bin")
|
5
|
+
(path (getenv "PATH")))
|
6
|
+
(unless (string-match-p bindir path)
|
7
|
+
(setenv "PATH" (concat bindir ":" path))))
|
data/.gitignore
CHANGED
data/README.markdown
CHANGED
@@ -1,30 +1,66 @@
|
|
1
1
|
## Using tlb_rb:
|
2
2
|
|
3
|
-
|
4
|
-
Balancer process is actually an HTTP server which
|
3
|
+
tlb.rb uses [tlb](https://github.com/test-load-balancer/tlb "TLB") under the hood. It runs a sub-process which talks to the actual tlb-server(or equivallent) to balance and post run-feedback.
|
4
|
+
Balancer process is actually an HTTP server which listen to a certain TCP port so tlb-ruby library can talk to it.
|
5
5
|
This is controlled by an environment variable named *'TLB_BALANCER_PORT'*, which can be set to any port number(integer between 1024 to 65535) that is guaranteed to remain un-bound while the build runs.
|
6
6
|
|
7
7
|
In addition to this extra environment variable, the usual TLB environment variable setup is required(so the balancer knows things like what partitioning algorithm to use or what server to talk to).
|
8
|
-
Detailed documentation of TLB environment variable configuration is available at [
|
8
|
+
Detailed documentation of TLB environment variable configuration is available at [http://test-load-balancer.github.com](http://test-load-balancer.github.com "Tlb Documentation")
|
9
9
|
|
10
|
-
As of now,
|
10
|
+
As of now, tlb.rb supports RSpec(1.x and 2.x) and Test::Unit, which are the two most widely used testing frameworks in Ruby. We plan to add support for other ruby-testing-frameworks soon.
|
11
11
|
|
12
12
|
## Setting it up for your project
|
13
13
|
|
14
14
|
Please refer the [sample_projects](http://github.com/test-load-balancer/sample_projects "Tlb setup examples") to see the details of how to set it up.
|
15
15
|
|
16
16
|
Usually, something equivallent of this in one of your Rake files should suffice:
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
require
|
21
|
-
|
17
|
+
__RSpec-1.x__:
|
18
|
+
require 'rubygems'
|
19
|
+
gem 'tlb-rspec1'
|
20
|
+
require 'tlb/spec_task'
|
21
|
+
|
22
22
|
Tlb::SpecTask.new(:balanced_specs) do |t|
|
23
23
|
t.spec_files = FileList['spec/**/*_spec.rb']
|
24
|
-
t.spec_opts << "--
|
24
|
+
t.spec_opts << "--format progress"
|
25
25
|
end
|
26
|
+
|
27
|
+
load 'tasks/tlb.rake'
|
28
|
+
desc "run specs load-balanced(based on environment variables)"
|
29
|
+
task :bal => ['tlb:start', :balanced_specs]
|
30
|
+
|
31
|
+
__RSpec-2.x__:
|
32
|
+
require 'rubygems'
|
33
|
+
gem 'tlb-rspec2'
|
34
|
+
require 'tlb/rspec/spec_task'
|
35
|
+
|
36
|
+
Tlb::RSpec::SpecTask.new(:run_balanced) do |t|
|
37
|
+
t.pattern = 'spec/**/*_spec.rb'
|
38
|
+
end
|
39
|
+
|
40
|
+
load 'tasks/tlb.rake'
|
41
|
+
desc "run specs load-balanced(based on environment variables)"
|
42
|
+
task :bal => ['tlb:start', :run_balanced]
|
43
|
+
|
44
|
+
__Test::Unit__:
|
45
|
+
require 'rake'
|
46
|
+
require 'rubygems'
|
47
|
+
gem 'tlb-testunit'
|
48
|
+
require 'tlb/test_unit/test_task'
|
49
|
+
|
50
|
+
Tlb::TestUnit::TestTask.new(:test_balanced) do |t|
|
51
|
+
t.libs << "test"
|
52
|
+
t.test_files = FileList['test/**/*_test.rb']
|
53
|
+
t.verbose = true
|
54
|
+
end
|
55
|
+
|
56
|
+
load 'tasks/tlb.rake'
|
57
|
+
|
58
|
+
task :bal => ['tlb:start', :test_balanced]
|
59
|
+
|
60
|
+
Where __bal__ is the task you invoke at the top-level(invoked externally).
|
61
|
+
|
62
|
+
## RSpec source-control and release-version/environment compatibility
|
63
|
+
The branch '__master__' supports __Test::Unit__ and __RSpec-2.x__. If you use __RSpec-1__(i.e. __1.3.x__ etc), please use the branch named '__rspec-1__'.
|
64
|
+
Having said that, we encourage end-users to use the released gem versions insteed of using upstream snapshot. Detailed documentation for every released version is available at http://test-load-balancer.github.com.
|
65
|
+
Please post any issues on our [Issue Tracker](http://code.google.com/p/tlb/issues/list "Issue Tracker").
|
26
66
|
|
27
|
-
desc "load balanced spec"
|
28
|
-
task :run_balanced => ['tlb:start', :balanced_specs]
|
29
|
-
|
30
|
-
Where run_balanced is the task you invoke at the top-level(invoked externally).
|
data/Rakefile
CHANGED
@@ -5,9 +5,10 @@ Spec::Rake::SpecTask.new(:spec) do |t|
|
|
5
5
|
end
|
6
6
|
|
7
7
|
task :build_tlb do
|
8
|
-
Dir.glob("tlb-
|
9
|
-
sh 'ant
|
10
|
-
Dir.glob('tlb/target/tlb-
|
8
|
+
[Dir.glob("tlb-alien*.jar"), Dir.glob("tlb-server*.jar")].flatten.each { |jar| FileUtils.rm(jar) }
|
9
|
+
sh '(cd tlb && ant clean package -Doffline=t)'
|
10
|
+
Dir.glob('tlb/target/tlb-alien*').each { |file| FileUtils.copy(file, ".") }
|
11
|
+
Dir.glob('tlb/target/tlb-server*').each { |file| FileUtils.copy(file, "spec/") }
|
11
12
|
end
|
12
13
|
|
13
14
|
task :package do
|
data/gem_common.rb
CHANGED
@@ -5,21 +5,29 @@ TAG_VERSION = `git describe --abbrev=0`.gsub(/^v/, '').gsub(/-rspec-1$/, '')
|
|
5
5
|
CODE_VERSION = `git describe --always`
|
6
6
|
AUTHORS = ["Janmejay Singh", "Pavan KS"]
|
7
7
|
EMAIL = "singh.janmejay@gmail.com;itspanzi@gmail.com"
|
8
|
-
HOME_PAGE = "http://github.com/test-load-balancer/
|
8
|
+
HOME_PAGE = "http://github.com/test-load-balancer/tlb.rb"
|
9
9
|
SUMMARY = "#{$name}-#{CODE_VERSION}"
|
10
10
|
DESC = <<END
|
11
11
|
TLB ruby implementation base, which provides support for load balancing tests written in #{$framework}.
|
12
|
-
|
13
|
-
Detailed
|
12
|
+
TLB.rb test suite is not bundled, please check http://github.com/test-load-balancer/tlb.rb for tests.
|
13
|
+
Detailed documentation is available at http://test-load-balancer.github.com.
|
14
14
|
END
|
15
15
|
POST_INSTALL_MESSAGE = <<END
|
16
16
|
-------------------------------------------------------------------------
|
17
|
-
Documentation: Detailed configuration documentation can be found at
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
TLB Documentation: Detailed configuration documentation can be found at http://test-load-balancer.github.com. Documentation section in this website hosts documentation for every public release.
|
18
|
+
|
19
|
+
-------------------------------------------------------------------------
|
20
|
+
TLB Example(s): We maintain a directory of tlb-enabled dummy projects written in different languages using different testing and build frameworks to help new TLB users get started and provide people a working project to refer to while hooking up TLB on their project(s). Each of these projects have a shell script(named run_balanced.sh) that is meant to demonstrate a typical tlb-enabled build(by starting a local tlb server, and executing two partitions that run dummy tests locally).
|
21
|
+
For demonstration purpose, aforementioned shell script executes partitions in the example-project one after another(serially). However, partitions will be executed parallely on different machines in a real-world setup(hence cutting the build time).
|
22
|
+
We recommend playing with the configuration-variable values being set in the shell-script(s) to understand the effect different values have on load-balancing/reordering behavior. You may want to check http://test-load-balancer.github.com, which links to 'detailed documentation' that covers each configuration variable and explains its purpose, effect and implication.
|
23
|
+
|
24
|
+
Examples archive is released along-with TLB, and is available for download at http://code.google.com/p/tlb/downloads/list.
|
25
|
+
|
26
|
+
To execute the example project, drop into the example project directory(examples/rspec2_example for instance) and invoke the './run_balanced.sh'.
|
27
|
+
|
28
|
+
-------------------------------------------------------------------------
|
29
|
+
TLB Issue Tracker: Please report/port bugs/enhancements/feature-requests on http://code.google.com/p/tlb/issues/list. Github, Rubyforge or any other issue trackers are not monitored or updated.
|
30
|
+
|
23
31
|
-------------------------------------------------------------------------
|
24
32
|
END
|
25
33
|
RUBYFORGE_PROJECT = "tlb-rb"
|
@@ -28,6 +36,7 @@ RUBYGEMS_VERSION = "1.3.7"
|
|
28
36
|
def files *exclude_dirs
|
29
37
|
files = `git ls-files`.split("\n")
|
30
38
|
files += Dir.glob(File.join(File.dirname(__FILE__), "*.jar")).map { |path| File.basename(path) }
|
39
|
+
files += Dir.glob(File.join(File.dirname(__FILE__), "doc", "**", "*"))
|
31
40
|
exclude_dirs.inject(files) { |files, dir| files - `git ls-files #{dir}`.split("\n") }
|
32
41
|
end
|
33
42
|
|
data/lib/tlb/spec_formatter.rb
CHANGED
data/lib/tlb/spec_task.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
require 'spec/rake/spectask'
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'tlb'))
|
3
|
+
require 'tlb/util'
|
2
4
|
|
3
5
|
class Tlb::SpecTask < Spec::Rake::SpecTask
|
4
6
|
attr_accessor :tlb_out
|
5
7
|
|
6
8
|
def initialize *args
|
7
|
-
path_to_tlb = File.expand_path(File.join(File.dirname(__FILE__), '..', 'tlb'))
|
8
|
-
path_to_spec_formatter = File.expand_path(File.join(File.dirname(__FILE__), 'spec_formatter'))
|
9
9
|
self.tlb_out = '/dev/null'
|
10
10
|
super do |this|
|
11
11
|
yield this if block_given?
|
12
|
-
this.spec_opts.unshift "--require #{
|
12
|
+
this.spec_opts.unshift "--require #{Tlb::Util.quote_path(File.dirname(__FILE__), 'spec_formatter')} --format 'Tlb::SpecFormatter:#{Tlb::Util.escape_quote(this.tlb_out)}'"
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
data/lib/tlb/util.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'tlb'))
|
2
|
+
|
3
|
+
module Tlb::Util
|
4
|
+
def self.quote_path *fragments
|
5
|
+
quote(File.expand_path(File.join(*fragments)))
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.quote str
|
9
|
+
"'#{escape_quote(str)}'"
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.escape_quote str
|
13
|
+
str.gsub(/'/, "\\'")
|
14
|
+
end
|
15
|
+
end
|
data/lib/tlb.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
-
$LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), "tlb"))
|
2
1
|
require 'rubygems'
|
3
2
|
require 'open4'
|
4
3
|
require 'net/http'
|
5
4
|
|
5
|
+
TLB_RB_LIB = File.expand_path(File.dirname(__FILE__))
|
6
|
+
unless $LOAD_PATH.include? TLB_RB_LIB
|
7
|
+
$LOAD_PATH << TLB_RB_LIB
|
8
|
+
end
|
9
|
+
|
6
10
|
module Tlb
|
7
11
|
TLB_OUT_FILE = 'TLB_OUT_FILE'
|
8
12
|
TLB_ERR_FILE = 'TLB_ERR_FILE'
|
@@ -92,7 +96,7 @@ module Tlb
|
|
92
96
|
end
|
93
97
|
|
94
98
|
def self.tlb_jar
|
95
|
-
File.expand_path(Dir.glob(File.join(root_dir, "tlb-
|
99
|
+
File.expand_path(Dir.glob(File.join(root_dir, "tlb-alien*")).first)
|
96
100
|
end
|
97
101
|
|
98
102
|
def self.server_command
|
@@ -106,7 +110,7 @@ module Tlb
|
|
106
110
|
end
|
107
111
|
|
108
112
|
def self.start_server
|
109
|
-
ENV[TLB_APP] = '
|
113
|
+
ENV[TLB_APP] = 'tlb.balancer.BalancerInitializer'
|
110
114
|
@pid, input, out, err = Open4.popen4(server_command)
|
111
115
|
@out_pumper = stream_pumper_for(out, TLB_OUT_FILE)
|
112
116
|
@err_pumper = stream_pumper_for(err, TLB_ERR_FILE)
|
Binary file
|
data/tlb-rspec1.gemspec
CHANGED
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tlb-rspec1
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 25
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Janmejay Singh
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date:
|
18
|
+
date: 2011-03-05 00:00:00 +05:30
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
@@ -27,7 +26,6 @@ dependencies:
|
|
27
26
|
requirements:
|
28
27
|
- - ">="
|
29
28
|
- !ruby/object:Gem::Version
|
30
|
-
hash: 21
|
31
29
|
segments:
|
32
30
|
- 1
|
33
31
|
- 0
|
@@ -43,7 +41,6 @@ dependencies:
|
|
43
41
|
requirements:
|
44
42
|
- - ">="
|
45
43
|
- !ruby/object:Gem::Version
|
46
|
-
hash: 3
|
47
44
|
segments:
|
48
45
|
- 0
|
49
46
|
version: "0"
|
@@ -57,7 +54,6 @@ dependencies:
|
|
57
54
|
requirements:
|
58
55
|
- - ">="
|
59
56
|
- !ruby/object:Gem::Version
|
60
|
-
hash: 27
|
61
57
|
segments:
|
62
58
|
- 1
|
63
59
|
- 3
|
@@ -65,7 +61,6 @@ dependencies:
|
|
65
61
|
version: 1.3.0
|
66
62
|
- - <
|
67
63
|
- !ruby/object:Gem::Version
|
68
|
-
hash: 15
|
69
64
|
segments:
|
70
65
|
- 2
|
71
66
|
- 0
|
@@ -75,8 +70,8 @@ dependencies:
|
|
75
70
|
version_requirements: *id003
|
76
71
|
description: |
|
77
72
|
TLB ruby implementation base, which provides support for load balancing tests written in rspec-1.x.
|
78
|
-
|
79
|
-
Detailed
|
73
|
+
TLB.rb test suite is not bundled, please check http://github.com/test-load-balancer/tlb.rb for tests.
|
74
|
+
Detailed documentation is available at http://test-load-balancer.github.com.
|
80
75
|
|
81
76
|
email: singh.janmejay@gmail.com;itspanzi@gmail.com
|
82
77
|
executables: []
|
@@ -86,6 +81,7 @@ extensions: []
|
|
86
81
|
extra_rdoc_files:
|
87
82
|
- README.markdown
|
88
83
|
files:
|
84
|
+
- .emacs_project
|
89
85
|
- .gitignore
|
90
86
|
- .gitmodules
|
91
87
|
- README.markdown
|
@@ -95,26 +91,29 @@ files:
|
|
95
91
|
- lib/tlb.rb
|
96
92
|
- lib/tlb/spec_formatter.rb
|
97
93
|
- lib/tlb/spec_task.rb
|
98
|
-
-
|
99
|
-
- spec/spec_helper.rb
|
100
|
-
- spec/tlb/spec_formatter_spec.rb
|
101
|
-
- spec/tlb/spec_task_spec.rb
|
102
|
-
- spec/tlb_http_communication_spec.rb
|
103
|
-
- spec/tlb_process_control_spec.rb
|
94
|
+
- lib/tlb/util.rb
|
104
95
|
- tlb-rspec1.gemspec
|
105
|
-
- tlb-
|
96
|
+
- tlb-alien-g0.3.0.jar
|
106
97
|
has_rdoc: true
|
107
|
-
homepage: http://github.com/test-load-balancer/
|
98
|
+
homepage: http://github.com/test-load-balancer/tlb.rb
|
108
99
|
licenses: []
|
109
100
|
|
110
101
|
post_install_message: |
|
111
102
|
-------------------------------------------------------------------------
|
112
|
-
Documentation: Detailed configuration documentation can be found at
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
103
|
+
TLB Documentation: Detailed configuration documentation can be found at http://test-load-balancer.github.com. Documentation section in this website hosts documentation for every public release.
|
104
|
+
|
105
|
+
-------------------------------------------------------------------------
|
106
|
+
TLB Example(s): We maintain a directory of tlb-enabled dummy projects written in different languages using different testing and build frameworks to help new TLB users get started and provide people a working project to refer to while hooking up TLB on their project(s). Each of these projects have a shell script(named run_balanced.sh) that is meant to demonstrate a typical tlb-enabled build(by starting a local tlb server, and executing two partitions that run dummy tests locally).
|
107
|
+
For demonstration purpose, aforementioned shell script executes partitions in the example-project one after another(serially). However, partitions will be executed parallely on different machines in a real-world setup(hence cutting the build time).
|
108
|
+
We recommend playing with the configuration-variable values being set in the shell-script(s) to understand the effect different values have on load-balancing/reordering behavior. You may want to check http://test-load-balancer.github.com, which links to 'detailed documentation' that covers each configuration variable and explains its purpose, effect and implication.
|
109
|
+
|
110
|
+
Examples archive is released along-with TLB, and is available for download at http://code.google.com/p/tlb/downloads/list.
|
111
|
+
|
112
|
+
To execute the example project, drop into the example project directory(examples/rspec2_example for instance) and invoke the './run_balanced.sh'.
|
113
|
+
|
114
|
+
-------------------------------------------------------------------------
|
115
|
+
TLB Issue Tracker: Please report/port bugs/enhancements/feature-requests on http://code.google.com/p/tlb/issues/list. Github, Rubyforge or any other issue trackers are not monitored or updated.
|
116
|
+
|
118
117
|
-------------------------------------------------------------------------
|
119
118
|
|
120
119
|
rdoc_options:
|
@@ -126,7 +125,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
125
|
requirements:
|
127
126
|
- - ">="
|
128
127
|
- !ruby/object:Gem::Version
|
129
|
-
hash: 3
|
130
128
|
segments:
|
131
129
|
- 0
|
132
130
|
version: "0"
|
@@ -135,7 +133,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
133
|
requirements:
|
136
134
|
- - ">="
|
137
135
|
- !ruby/object:Gem::Version
|
138
|
-
hash: 3
|
139
136
|
segments:
|
140
137
|
- 0
|
141
138
|
version: "0"
|
@@ -145,6 +142,6 @@ rubyforge_project: tlb-rb
|
|
145
142
|
rubygems_version: 1.3.7
|
146
143
|
signing_key:
|
147
144
|
specification_version: 3
|
148
|
-
summary: tlb-rspec1-0.
|
145
|
+
summary: tlb-rspec1-0.3.0-rspec-1
|
149
146
|
test_files: []
|
150
147
|
|
data/spec/fixtures/foo.sh
DELETED
data/spec/spec_helper.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'mocha'
|
3
|
-
require 'spec'
|
4
|
-
require 'rake'
|
5
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__), "..", "lib")
|
6
|
-
require 'tlb'
|
7
|
-
|
8
|
-
Spec::Runner.configure do |config|
|
9
|
-
config.mock_with :mocha
|
10
|
-
end
|
11
|
-
|
12
|
-
def tmp_file file_name
|
13
|
-
path = File.join(Dir.tmpdir, file_name)
|
14
|
-
file = File.new(path, 'w')
|
15
|
-
File.truncate path, 0
|
16
|
-
file.close
|
17
|
-
file
|
18
|
-
end
|
19
|
-
|
@@ -1,140 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
2
|
-
require 'spec_formatter'
|
3
|
-
require 'spec/example/example_proxy'
|
4
|
-
require 'spec/example/example_group_proxy'
|
5
|
-
|
6
|
-
describe Tlb::SpecFormatter do
|
7
|
-
before :all do
|
8
|
-
FileUtils.mkdir_p(@dir = Dir.pwd + "/tmp/foo/../bar/..")
|
9
|
-
end
|
10
|
-
|
11
|
-
before do
|
12
|
-
@group_1, @file_1 = stubbed_group("baz/group1")
|
13
|
-
@group_2, @file_2 = stubbed_group("group2")
|
14
|
-
@group_3, @file_3 = stubbed_group("group3")
|
15
|
-
@group_proxy_1 = Spec::Example::ExampleGroupProxy.new(@group_1)
|
16
|
-
@group_proxy_2 = Spec::Example::ExampleGroupProxy.new(@group_2)
|
17
|
-
@group_proxy_3 = Spec::Example::ExampleGroupProxy.new(@group_3)
|
18
|
-
@formatter = Tlb::SpecFormatter.new(nil, nil)
|
19
|
-
end
|
20
|
-
|
21
|
-
def stubbed_group group_name
|
22
|
-
grp = stub(group_name)
|
23
|
-
grp.expects(:description).returns("#{group_name} desc")
|
24
|
-
grp.expects(:nested_descriptions).returns("#{group_name} nested desc")
|
25
|
-
grp.expects(:example_proxies).returns("#{group_name} example proxies")
|
26
|
-
grp.expects(:options).returns({:name => group_name})
|
27
|
-
|
28
|
-
file_name = "#{@dir}/#{group_name}.rb"
|
29
|
-
FileUtils.mkdir_p(File.dirname(file_name))
|
30
|
-
File.open(file_name, 'w') do |h|
|
31
|
-
h.write("something")
|
32
|
-
end
|
33
|
-
rel_file_name = File.expand_path(file_name).sub(Dir.pwd, '.')
|
34
|
-
grp.expects(:location).times(2).returns(file_name + ":4")
|
35
|
-
|
36
|
-
[grp, rel_file_name]
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should be silent formatter" do
|
40
|
-
@formatter.should be_a(Spec::Runner::Formatter::SilentFormatter)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should use last finished example's time" do
|
44
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 5, 10))
|
45
|
-
@formatter.example_group_started(@group_proxy_1)
|
46
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 5, 20))
|
47
|
-
@formatter.example_passed(Spec::Example::ExampleProxy.new("group1 spec 1", {}, "#{@dir}/baz/group1.rb:12"))
|
48
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 5, 22))
|
49
|
-
@formatter.example_failed(Spec::Example::ExampleProxy.new("group1 spec 2", {}, "#{@dir}/baz/group1.rb:40"), 1, "ignore")
|
50
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 5, 29))
|
51
|
-
@formatter.example_pending(Spec::Example::ExampleProxy.new("group1 spec 3", {}, "#{@dir}/baz/group1.rb:55"), "some reason")
|
52
|
-
|
53
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 6, 00))
|
54
|
-
@formatter.example_group_started(@group_proxy_2)
|
55
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 6, 12))
|
56
|
-
@formatter.example_pending(Spec::Example::ExampleProxy.new("group2 spec 1", {}, "#{@dir}/group2.rb:5"), "some reason")
|
57
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 6, 25))
|
58
|
-
@formatter.example_passed(Spec::Example::ExampleProxy.new("group2 spec 2", {}, "#{@dir}/group2.rb:38"))
|
59
|
-
|
60
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 7, 15))
|
61
|
-
@formatter.example_group_started(@group_proxy_3)
|
62
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 8, 12))
|
63
|
-
@formatter.example_pending(Spec::Example::ExampleProxy.new("group3 spec 1", {}, "#{@dir}/group3.rb:45"), "some reason")
|
64
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 8, 55))
|
65
|
-
@formatter.example_failed(Spec::Example::ExampleProxy.new("group3 spec 2", {}, "#{@dir}/group3.rb:80"), 3, "ignore")
|
66
|
-
|
67
|
-
Tlb.stubs(:suite_result)
|
68
|
-
|
69
|
-
Tlb.expects(:suite_time).with(@file_1, 19000)
|
70
|
-
Tlb.expects(:suite_time).with(@file_2, 25000)
|
71
|
-
Tlb.expects(:suite_time).with(@file_3, 100000)
|
72
|
-
|
73
|
-
@formatter.start_dump
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should report suite result to tlb" do
|
77
|
-
@formatter.example_group_started(@group_proxy_1)
|
78
|
-
@formatter.example_passed(Spec::Example::ExampleProxy.new("group1 spec 1", {}, "#{@dir}/baz/group1.rb:12"))
|
79
|
-
@formatter.example_failed(Spec::Example::ExampleProxy.new("group1 spec 2", {}, "#{@dir}/baz/group1.rb:40"), 1, "ignore")
|
80
|
-
@formatter.example_pending(Spec::Example::ExampleProxy.new("group1 spec 3", {}, "#{@dir}/baz/group1.rb:55"), "some reason")
|
81
|
-
|
82
|
-
@formatter.example_group_started(@group_proxy_2)
|
83
|
-
@formatter.example_pending(Spec::Example::ExampleProxy.new("group2 spec 1", {}, "#{@dir}/group2.rb:5"), "some reason")
|
84
|
-
@formatter.example_passed(Spec::Example::ExampleProxy.new("group2 spec 2", {}, "#{@dir}/group2.rb:38"))
|
85
|
-
|
86
|
-
@formatter.example_group_started(@group_proxy_3)
|
87
|
-
@formatter.example_pending(Spec::Example::ExampleProxy.new("group3 spec 1", {}, "#{@dir}/group3.rb:45"), "some reason")
|
88
|
-
@formatter.example_failed(Spec::Example::ExampleProxy.new("group3 spec 2", {}, "#{@dir}/group3.rb:80"), 3, "ignore")
|
89
|
-
@formatter.example_passed(Spec::Example::ExampleProxy.new("group3 spec 3", {}, "#{@dir}/group3.rb:85"))
|
90
|
-
@formatter.example_passed(Spec::Example::ExampleProxy.new("group3 spec 4", {}, "#{@dir}/group3.rb:103"))
|
91
|
-
|
92
|
-
Tlb.stubs(:suite_time)
|
93
|
-
|
94
|
-
Tlb.expects(:suite_result).with(@file_1, true)
|
95
|
-
Tlb.expects(:suite_result).with(@file_2, false)
|
96
|
-
Tlb.expects(:suite_result).with(@file_3, true)
|
97
|
-
|
98
|
-
@formatter.start_dump
|
99
|
-
end
|
100
|
-
|
101
|
-
it "should parse example_file_name" do
|
102
|
-
@formatter.send(:example_file_name, Spec::Example::ExampleProxy.new("some method call inside spec", {}, "./spec/baz_quux.rb:9")).should == "./spec/baz_quux.rb"
|
103
|
-
@formatter.send(:example_file_name, Spec::Example::ExampleProxy.new("some method call inside spec", {}, "./spec/foo_bar_baz.rb:9:in `should_quux'")).should == "./spec/foo_bar_baz.rb"
|
104
|
-
end
|
105
|
-
|
106
|
-
it "should report suite result for last heard file name when it received example_proxy having no location" do
|
107
|
-
@formatter.example_group_started(@group_proxy_1)
|
108
|
-
@formatter.example_failed(Spec::Example::ExampleProxy.new("before(:all)"))
|
109
|
-
Tlb.stubs(:suite_time)
|
110
|
-
|
111
|
-
Tlb.expects(:suite_result).with(@file_1, true)
|
112
|
-
|
113
|
-
@formatter.start_dump
|
114
|
-
end
|
115
|
-
|
116
|
-
it "should share the same suite when example_group starts twice(this happens in nested describe blocks)" do
|
117
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 5, 10))
|
118
|
-
@formatter.example_group_started(@group_proxy_1)
|
119
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 5, 20))
|
120
|
-
@formatter.example_passed(Spec::Example::ExampleProxy.new("group1 spec 1", {}, "#{@dir}/baz/group1.rb:12"))
|
121
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 5, 22))
|
122
|
-
@formatter.example_failed(Spec::Example::ExampleProxy.new("group1 spec 2", {}, "#{@dir}/baz/group1.rb:40"), 1, "ignore")
|
123
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 5, 29))
|
124
|
-
@formatter.example_pending(Spec::Example::ExampleProxy.new("group1 spec 3", {}, "#{@dir}/baz/group1.rb:55"), "some reason")
|
125
|
-
|
126
|
-
@formatter.example_group_started(@group_proxy_1)
|
127
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 6, 12))
|
128
|
-
@formatter.example_failed(Spec::Example::ExampleProxy.new("group1 spec 4(nested)", {}, "#{@dir}/baz/group1.rb:100"), 1, "foo_bar")
|
129
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 6, 25))
|
130
|
-
@formatter.example_pending(Spec::Example::ExampleProxy.new("group1 spec 4(nested)", {}, "#{@dir}/baz/group1.rb:130"), "some pending")
|
131
|
-
Time.expects(:now).returns(Time.local( 2010, "jul", 16, 12, 7, 15))
|
132
|
-
@formatter.example_passed(Spec::Example::ExampleProxy.new("group1 spec 4(nested)", {}, "#{@dir}/baz/group1.rb:145"))
|
133
|
-
|
134
|
-
Tlb.stubs(:suite_result)
|
135
|
-
|
136
|
-
Tlb.expects(:suite_time).with(@file_1, 125000)
|
137
|
-
@formatter.start_dump
|
138
|
-
end
|
139
|
-
|
140
|
-
end
|
data/spec/tlb/spec_task_spec.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
2
|
-
require 'spec_task'
|
3
|
-
|
4
|
-
describe Tlb::SpecTask do
|
5
|
-
before(:all) do
|
6
|
-
@path_to_tlb = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'tlb'))
|
7
|
-
@path_to_spec_formatter = File.expand_path(File.join(@path_to_tlb, 'spec_formatter'))
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should return balanced and ordered subset" do
|
11
|
-
@task = Tlb::SpecTask.new
|
12
|
-
Tlb.stubs(:start_unless_running)
|
13
|
-
@task.expects(:rspec_spec_file_list).returns(FileList['foo.rb', 'bar.rb', 'baz.rb', 'quux.rb'])
|
14
|
-
Tlb.stubs(:balance_and_order).with(['foo.rb', 'bar.rb', 'baz.rb', 'quux.rb']).returns(['quux.rb', 'foo.rb'])
|
15
|
-
balanced_list = @task.spec_file_list
|
16
|
-
balanced_list.should be_a(Rake::FileList)
|
17
|
-
balanced_list.to_a.should == ['quux.rb', 'foo.rb']
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should hookup formatter so feedback is posted" do
|
21
|
-
@task = Tlb::SpecTask.new
|
22
|
-
@task.spec_opts.should == ["--require #{@path_to_tlb},#{@path_to_spec_formatter} --format 'Tlb::SpecFormatter:/dev/null'"]
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should honor user specified attributes" do
|
26
|
-
@task = Tlb::SpecTask.new(:foo) do |t|
|
27
|
-
t.spec_opts << "--require foo_bar"
|
28
|
-
t.spec_opts << "--require baz_quux"
|
29
|
-
end
|
30
|
-
@task.spec_opts.should == ["--require #{@path_to_tlb},#{@path_to_spec_formatter} --format 'Tlb::SpecFormatter:/dev/null'", "--require foo_bar", "--require baz_quux"]
|
31
|
-
@task.name.should == :foo
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should use specified output file for tlb's spec_formatter" do
|
35
|
-
@task = Tlb::SpecTask.new(:foo) do |t|
|
36
|
-
t.tlb_out = "/tmp/tlb_spec_formatter_out"
|
37
|
-
end
|
38
|
-
@task.spec_opts.should == ["--require #{@path_to_tlb},#{@path_to_spec_formatter} --format 'Tlb::SpecFormatter:/tmp/tlb_spec_formatter_out'"]
|
39
|
-
end
|
40
|
-
end
|
@@ -1,146 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
-
require 'open4'
|
3
|
-
require 'parsedate'
|
4
|
-
require 'tmpdir'
|
5
|
-
require 'webrick'
|
6
|
-
|
7
|
-
describe Tlb do
|
8
|
-
URL = "http://localhost:7019"
|
9
|
-
JOB_NAME = "foo"
|
10
|
-
TLB_BALANCER_PORT = '9173'
|
11
|
-
before :all do
|
12
|
-
ENV['TLB_APP'] = 'com.github.tlb.server.TlbServerInitializer'
|
13
|
-
@pid, i, o, e = Open4.popen4(Tlb.server_command)
|
14
|
-
end
|
15
|
-
|
16
|
-
after :all do
|
17
|
-
Process.kill(Signal.list['KILL'], @pid)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should wait for balancer server to come up before returning from start_server" do
|
21
|
-
Tlb::Balancer.expects(:wait_for_start)
|
22
|
-
Open4.stubs(:popen4)
|
23
|
-
Tlb.start_server
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "using server" do
|
27
|
-
before do
|
28
|
-
ENV[Tlb::TLB_OUT_FILE] = (@out_file = tmp_file('tlb_out_file').path)
|
29
|
-
ENV[Tlb::TLB_ERR_FILE] = (@err_file = tmp_file('tlb_err_file').path)
|
30
|
-
Tlb.server_running?.should be_false #precondition (the server must be started if not running)
|
31
|
-
|
32
|
-
ENV['TLB_BALANCER_PORT'] = TLB_BALANCER_PORT
|
33
|
-
ENV['TLB_URL'] = URL
|
34
|
-
ENV['TALK_TO_SERVICE'] = "com.github.tlb.service.TalkToTlbServer"
|
35
|
-
ENV['TLB_JOB_NAME'] = JOB_NAME
|
36
|
-
ENV['TOTAL_PARTITIONS'] = '2'
|
37
|
-
ENV['JOB_VERSION'] = '123'
|
38
|
-
ENV['TLB_CRITERIA'] = 'com.github.tlb.splitter.CountBasedTestSplitterCriteria'
|
39
|
-
end
|
40
|
-
|
41
|
-
after do
|
42
|
-
Tlb.server_running?.should be_true #api calls need not worry about killing it
|
43
|
-
Tlb.stop_server
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should balance for first partition" do
|
47
|
-
ENV['PARTITION_NUMBER'] = '1'
|
48
|
-
Tlb.start_server
|
49
|
-
Tlb.balance_and_order(["foo/bar.rb", "foo/baz.rb", "bar/foo.rb", "bar/quux.rb"]).should == ["./foo/bar.rb", "./foo/baz.rb"]
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should balance for second partition" do
|
53
|
-
ENV['PARTITION_NUMBER'] = '2'
|
54
|
-
Tlb.start_server
|
55
|
-
Tlb.balance_and_order(["foo/bar.rb", "foo/baz.rb", "bar/foo.rb", "bar/quux.rb"]).should == ["./bar/foo.rb", "./bar/quux.rb"]
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should balance with file path names relative to working dir" do
|
59
|
-
ENV['PARTITION_NUMBER'] = '1'
|
60
|
-
Tlb.start_server
|
61
|
-
Tlb.balance_and_order(["foo/hi/../baz/quux/../hello/../../bar.rb", "foo/bar/../baz.rb", "bar/baz/quux/../../foo.rb", "bar/quux.rb"]).should == ["./foo/bar.rb", "./foo/baz.rb"]
|
62
|
-
end
|
63
|
-
|
64
|
-
describe "thats already running" do
|
65
|
-
before do
|
66
|
-
Tlb.start_server
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should publish suite result" do
|
70
|
-
Tlb.suite_result("foo/bar.rb", true)
|
71
|
-
Tlb.suite_result("foo/baz.rb", false)
|
72
|
-
Tlb.suite_result("foo/quux.rb", true)
|
73
|
-
get_from_tlb_server("suite_result").should include("foo/bar.rb: true", "foo/baz.rb: false", "foo/quux.rb: true")
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should publish suite time" do
|
77
|
-
Tlb.suite_time("foo/bar.rb", 102)
|
78
|
-
Tlb.suite_time("foo/baz.rb", 3599)
|
79
|
-
Tlb.suite_time("foo/quux.rb", 2010)
|
80
|
-
get_from_tlb_server("suite_time").should include("foo/bar.rb: 102", "foo/baz.rb: 3599", "foo/quux.rb: 2010")
|
81
|
-
end
|
82
|
-
|
83
|
-
def get_from_tlb_server path
|
84
|
-
body = Net::HTTP.get(URI.parse("#{URL}/#{JOB_NAME}/#{path}"))
|
85
|
-
body.split("\n")
|
86
|
-
end
|
87
|
-
|
88
|
-
it "should use send method to balance" do
|
89
|
-
Tlb::Balancer.expects(:send).with(Tlb::Balancer::BALANCE_PATH, "./foo/bar.rb\n./foo/baz.rb").returns("foo\nbar")
|
90
|
-
Tlb.balance_and_order(["foo/bar.rb", "foo/baz.rb"]).should == ["foo", "bar"]
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should use send method to post results" do
|
94
|
-
Tlb::Balancer.expects(:send).with(Tlb::Balancer::SUITE_RESULT_REPORTING_PATH, "foo/bar.rb: false")
|
95
|
-
Tlb.suite_result("foo/bar.rb", false)
|
96
|
-
end
|
97
|
-
|
98
|
-
it "should use send method to post time" do
|
99
|
-
Tlb::Balancer.expects(:send).with(Tlb::Balancer::SUITE_TIME_REPORTING_PATH, "foo/bar.rb: 42")
|
100
|
-
Tlb.suite_time("foo/bar.rb", 42)
|
101
|
-
end
|
102
|
-
|
103
|
-
it "should raise exception when call to tlb fails" do
|
104
|
-
lambda do
|
105
|
-
Tlb::Balancer.send("/foo", "bar")
|
106
|
-
end.should raise_error(Net::HTTPServerException, '404 "The server has not found anything matching the request URI"')
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
describe :wait_for_server_to_start do
|
112
|
-
class CtrlStatus < WEBrick::HTTPServlet::AbstractServlet
|
113
|
-
def do_GET(request, response)
|
114
|
-
response.status = 200
|
115
|
-
response['Content-Type'] = 'text/plain'
|
116
|
-
response.body = 'RUNNING'
|
117
|
-
end
|
118
|
-
end
|
119
|
-
before do
|
120
|
-
@server = nil
|
121
|
-
ENV['TLB_BALANCER_PORT'] = TLB_BALANCER_PORT
|
122
|
-
end
|
123
|
-
|
124
|
-
after do
|
125
|
-
@server.shutdown
|
126
|
-
end
|
127
|
-
|
128
|
-
it "should wait until socket has a listener" do
|
129
|
-
@wait_completed = false
|
130
|
-
before_start = Time.now
|
131
|
-
wait_thread = Thread.new do
|
132
|
-
sleep 3
|
133
|
-
@wait_completed = true
|
134
|
-
@server = WEBrick::HTTPServer.new(:Port => TLB_BALANCER_PORT,
|
135
|
-
:Logger => WEBrick::BasicLog.new(tmp_file('tlb_webrick_log').path),
|
136
|
-
:AccessLog => WEBrick::BasicLog.new(tmp_file('tlb_webrick_access_log').path))
|
137
|
-
@server.mount '/control/status', CtrlStatus
|
138
|
-
@server.start
|
139
|
-
end
|
140
|
-
@wait_completed.should be_false
|
141
|
-
Tlb::Balancer.wait_for_start
|
142
|
-
@wait_completed.should be_true
|
143
|
-
Time.now.should > (before_start + 3)
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
@@ -1,89 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
-
require 'open4'
|
3
|
-
require 'parsedate'
|
4
|
-
require 'tmpdir'
|
5
|
-
|
6
|
-
describe Tlb do
|
7
|
-
before do
|
8
|
-
ENV[Tlb::TLB_OUT_FILE] = (@out_file = tmp_file('tlb_out_file').path)
|
9
|
-
ENV[Tlb::TLB_ERR_FILE] = (@err_file = tmp_file('tlb_err_file').path)
|
10
|
-
Tlb::Balancer.stubs(:wait_for_start)
|
11
|
-
end
|
12
|
-
|
13
|
-
MOCK_PROCESS_ID = 33040
|
14
|
-
SIG_TERM = 15
|
15
|
-
|
16
|
-
it "should terminate process when stop called" do
|
17
|
-
Tlb.instance_variable_set('@pid', MOCK_PROCESS_ID)
|
18
|
-
Tlb.instance_variable_set('@out_pumper', Thread.new { })
|
19
|
-
Tlb.instance_variable_set('@err_pumper', Thread.new { })
|
20
|
-
|
21
|
-
Process.expects(:kill).with(SIG_TERM, MOCK_PROCESS_ID)
|
22
|
-
Process.expects(:wait).with()
|
23
|
-
|
24
|
-
Tlb.stop_server
|
25
|
-
end
|
26
|
-
|
27
|
-
def times_of_output content, stream_name
|
28
|
-
content.split("\n").map { |line| line.gsub(stream_name, '') }.map do |line|
|
29
|
-
year, month, day_of_month, hour, minute, second, timezone, day_of_week = ParseDate.parsedate(line)
|
30
|
-
Time.local(year, month, day_of_month, hour, minute, second)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should generate the right command to run tlb balancer server" do
|
35
|
-
tlb_jar = File.expand_path(Dir.glob(File.join(File.join(File.dirname(__FILE__), ".."), "tlb-all*")).first)
|
36
|
-
Tlb.server_command.should == "java -jar #{tlb_jar}"
|
37
|
-
end
|
38
|
-
|
39
|
-
describe :integration_test do
|
40
|
-
it "should pump both error and out to the file" do
|
41
|
-
Tlb.stubs(:wait_for_start)
|
42
|
-
Tlb.expects(:server_command).returns(File.join(File.dirname(__FILE__), "fixtures", "foo.sh"))
|
43
|
-
Tlb.start_server
|
44
|
-
sleep 2
|
45
|
-
Tlb.stop_server
|
46
|
-
File.read(@out_file).should include("hello out\n")
|
47
|
-
File.read(@err_file).should include("hello err\n")
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should fail of server not running" do
|
52
|
-
Tlb.expects(:server_running?).returns(false)
|
53
|
-
lambda { Tlb.ensure_server_running }.should raise_error('Balancer server must be started before tests are run.')
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should not start server if running" do
|
57
|
-
Tlb.expects(:server_running?).returns(true)
|
58
|
-
Tlb.expects(:start_server).never
|
59
|
-
Tlb.ensure_server_running
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "env var" do
|
63
|
-
before do
|
64
|
-
module Open4
|
65
|
-
class << self
|
66
|
-
alias_method :old_popen4, :popen4
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.popen4 command
|
70
|
-
ENV['TLB_APP'].should == "com.github.tlb.balancer.BalancerInitializer"
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
after do
|
76
|
-
module Open4
|
77
|
-
class << self
|
78
|
-
alias_method :popen4, :old_popen4
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should set TLB_APP to point to balancer before starting the server" do
|
84
|
-
ENV['TLB_APP'] = "foo"
|
85
|
-
Tlb.stubs(:server_command).returns("foo bar")
|
86
|
-
Tlb.start_server
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
Binary file
|