testbot 0.5.5 → 0.5.6
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 +4 -0
- data/README.markdown +2 -2
- data/lib/requester/requester.rb +0 -1
- data/lib/runner/runner.rb +0 -12
- data/lib/shared/adapters/adapter.rb +17 -15
- data/lib/shared/adapters/rspec2_adapter.rb +1 -1
- data/lib/shared/adapters/rspec_adapter.rb +1 -1
- data/lib/shared/version.rb +1 -1
- data/test/requester/test_requester.rb +13 -13
- data/test/shared/adapters/test_adapter.rb +7 -7
- data/testbot.gemspec +1 -1
- metadata +5 -5
data/CHANGELOG
CHANGED
data/README.markdown
CHANGED
@@ -60,7 +60,7 @@ Running tests:
|
|
60
60
|
|
61
61
|
Using testbot with Rails 2:
|
62
62
|
|
63
|
-
ruby script/plugin install git://github.com/joakimk/testbot.git -r 'refs/tags/v0.5.
|
63
|
+
ruby script/plugin install git://github.com/joakimk/testbot.git -r 'refs/tags/v0.5.6'
|
64
64
|
script/generate testbot --connect 192.168.0.100
|
65
65
|
|
66
66
|
rake testbot:spec (or :rspec, :test, :features)
|
@@ -122,7 +122,7 @@ You can also contribute by adding to the [wiki](http://github.com/joakimk/testbo
|
|
122
122
|
How to add support for more test frameworks and/or programming languages
|
123
123
|
----
|
124
124
|
|
125
|
-
Add a **lib/adapters/framework_name_adapter.rb** file
|
125
|
+
Add a **lib/adapters/framework_name_adapter.rb** file and update this readme.
|
126
126
|
|
127
127
|
More
|
128
128
|
----
|
data/lib/requester/requester.rb
CHANGED
@@ -3,7 +3,6 @@ require 'httparty'
|
|
3
3
|
require 'macaddr'
|
4
4
|
require 'ostruct'
|
5
5
|
require File.dirname(__FILE__) + '/../shared/ssh_tunnel'
|
6
|
-
require File.dirname(__FILE__) + '/../shared/adapters/adapter'
|
7
6
|
require File.expand_path(File.dirname(__FILE__) + '/../shared/testbot')
|
8
7
|
|
9
8
|
class Hash
|
data/lib/runner/runner.rb
CHANGED
@@ -11,16 +11,9 @@ module Testbot::Runner
|
|
11
11
|
TIME_BETWEEN_QUICK_POLLS = 0.1
|
12
12
|
TIME_BETWEEN_PINGS = 5
|
13
13
|
TIME_BETWEEN_VERSION_CHECKS = Testbot.version.include?('.DEV.') ? 10 : 60
|
14
|
-
MAX_CPU_USAGE_WHEN_IDLE = 50
|
15
14
|
|
16
15
|
class CPU
|
17
16
|
|
18
|
-
def self.current_usage
|
19
|
-
process_usages = `ps -eo pcpu`
|
20
|
-
total_usage = process_usages.split("\n").inject(0) { |sum, usage| sum += usage.strip.to_f }
|
21
|
-
(total_usage / count).to_i
|
22
|
-
end
|
23
|
-
|
24
17
|
def self.count
|
25
18
|
case RUBY_PLATFORM
|
26
19
|
when /darwin/
|
@@ -103,7 +96,6 @@ module Testbot::Runner
|
|
103
96
|
|
104
97
|
# Makes sure all instances are listed as available after a run
|
105
98
|
clear_completed_instances
|
106
|
-
next unless cpu_available?
|
107
99
|
|
108
100
|
next_job = Server.get("/jobs/next", :query => next_params) rescue nil
|
109
101
|
last_check_found_a_job = (next_job != nil)
|
@@ -143,10 +135,6 @@ module Testbot::Runner
|
|
143
135
|
@last_requester_mac == nil
|
144
136
|
end
|
145
137
|
|
146
|
-
def cpu_available?
|
147
|
-
@instances.size > 0 || CPU.current_usage < MAX_CPU_USAGE_WHEN_IDLE
|
148
|
-
end
|
149
|
-
|
150
138
|
def time_for_update?
|
151
139
|
time_for_update = ((Time.now - @last_version_check) >= TIME_BETWEEN_VERSION_CHECKS)
|
152
140
|
@last_version_check = Time.now if time_for_update
|
@@ -1,25 +1,27 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/rspec_adapter'
|
2
|
-
require File.dirname(__FILE__) + '/rspec2_adapter'
|
3
|
-
require File.dirname(__FILE__) + '/cucumber_adapter'
|
4
|
-
require File.dirname(__FILE__) + '/test_unit_adapter'
|
5
|
-
|
6
1
|
class Adapter
|
2
|
+
|
3
|
+
FILES = Dir[File.dirname(__FILE__) + "/*_adapter.rb"]
|
4
|
+
FILES.each { |file| require(file) }
|
5
|
+
|
7
6
|
def self.all
|
8
|
-
|
7
|
+
FILES.map { |file| load_adapter(file) }
|
9
8
|
end
|
10
9
|
|
11
10
|
def self.find(type)
|
12
|
-
|
13
|
-
|
14
|
-
RSpec2Adapter
|
15
|
-
when :spec
|
16
|
-
RSpecAdapter
|
17
|
-
when :features
|
18
|
-
CucumberAdapter
|
19
|
-
when :test
|
20
|
-
TestUnitAdapter
|
11
|
+
if adapter = all.find { |adapter| adapter.type == type.to_s }
|
12
|
+
adapter
|
21
13
|
else
|
22
14
|
raise "Unknown adapter: #{type}"
|
23
15
|
end
|
24
16
|
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def self.load_adapter(file)
|
21
|
+
eval("::" + File.basename(file).
|
22
|
+
gsub(/\.rb/, '').
|
23
|
+
gsub(/(?:^|_)(.)/) { $1.upcase })
|
24
|
+
end
|
25
|
+
|
25
26
|
end
|
27
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path(File.join(File.dirname(__FILE__), "/helpers/ruby_env"))
|
2
2
|
|
3
|
-
class
|
3
|
+
class RspecAdapter
|
4
4
|
|
5
5
|
def self.command(project_path, ruby_interpreter, files)
|
6
6
|
spec_command = RubyEnv.ruby_command(project_path, :script => "script/spec", :bin => "rspec",
|
data/lib/shared/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Testbot
|
2
2
|
# Don't forget to update readme and changelog
|
3
3
|
def self.version
|
4
|
-
version = "0.5.
|
4
|
+
version = "0.5.6"
|
5
5
|
dev_version_file = File.join(File.dirname(__FILE__), '..', '..', 'DEV_VERSION')
|
6
6
|
if File.exists?(dev_version_file)
|
7
7
|
version += File.read(dev_version_file)
|
@@ -27,7 +27,7 @@ module Testbot::Requester
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def build_with_result(results)
|
30
|
-
requester_with_result(results).run_tests(
|
30
|
+
requester_with_result(results).run_tests(RspecAdapter, 'spec')
|
31
31
|
end
|
32
32
|
|
33
33
|
def setup
|
@@ -77,7 +77,7 @@ module Testbot::Requester
|
|
77
77
|
should "should be able to create a build" do
|
78
78
|
flexmock(Mac).should_receive(:addr).and_return('aa:aa:aa:aa:aa:aa')
|
79
79
|
requester = Requester.new(:server_host => "192.168.1.100", :rsync_path => '/path', :available_runner_usage => '60%', :project => 'things', :server_user => "cruise")
|
80
|
-
flexmock(
|
80
|
+
flexmock(RspecAdapter).should_receive(:test_files).with('spec').once.and_return([ 'spec/models/house_spec.rb', 'spec/models/car_spec.rb' ])
|
81
81
|
|
82
82
|
flexmock(File).should_receive(:stat).once.with("spec/models/house_spec.rb").and_return(mock = Object.new); flexmock(mock).should_receive(:size).and_return(10)
|
83
83
|
flexmock(File).should_receive(:stat).once.with("spec/models/car_spec.rb").and_return(mock = Object.new); flexmock(mock).should_receive(:size).and_return(20)
|
@@ -98,7 +98,7 @@ module Testbot::Requester
|
|
98
98
|
flexmock(requester).should_receive(:puts)
|
99
99
|
flexmock(requester).should_receive(:system)
|
100
100
|
|
101
|
-
assert_equal true, requester.run_tests(
|
101
|
+
assert_equal true, requester.run_tests(RspecAdapter, 'spec')
|
102
102
|
end
|
103
103
|
|
104
104
|
should "keep calling the server for results until done" do
|
@@ -118,7 +118,7 @@ module Testbot::Requester
|
|
118
118
|
flexmock(requester).should_receive(:puts).once.with("job 2 done: ....")
|
119
119
|
flexmock(requester).should_receive(:puts).once.with("job 1 done: ....")
|
120
120
|
|
121
|
-
requester.run_tests(
|
121
|
+
requester.run_tests(RspecAdapter, 'spec')
|
122
122
|
end
|
123
123
|
|
124
124
|
should "return false if not successful" do
|
@@ -136,7 +136,7 @@ module Testbot::Requester
|
|
136
136
|
flexmock(requester).should_receive(:puts).once.with("job 2 done: ....job 1 done: ....")
|
137
137
|
mock_file_sizes
|
138
138
|
|
139
|
-
assert_equal false, requester.run_tests(
|
139
|
+
assert_equal false, requester.run_tests(RspecAdapter, 'spec')
|
140
140
|
end
|
141
141
|
|
142
142
|
should "not print empty lines when there is no result" do
|
@@ -155,7 +155,7 @@ module Testbot::Requester
|
|
155
155
|
flexmock(requester).should_receive(:puts).once.with("job 2 done: ....job 1 done: ....")
|
156
156
|
mock_file_sizes
|
157
157
|
|
158
|
-
requester.run_tests(
|
158
|
+
requester.run_tests(RspecAdapter, 'spec')
|
159
159
|
end
|
160
160
|
|
161
161
|
should "sync the files to the server" do
|
@@ -172,7 +172,7 @@ module Testbot::Requester
|
|
172
172
|
flexmock(requester).should_receive('system').with("rsync -az --delete -e ssh --exclude='.git' --exclude='tmp' . testbot@192.168.1.100:/path")
|
173
173
|
mock_file_sizes
|
174
174
|
|
175
|
-
requester.run_tests(
|
175
|
+
requester.run_tests(RspecAdapter, 'spec')
|
176
176
|
end
|
177
177
|
|
178
178
|
should "just try again if the request encounters an error while running and print on the fith time" do
|
@@ -193,7 +193,7 @@ module Testbot::Requester
|
|
193
193
|
flexmock(requester).should_receive(:puts).once.with("job 2 done: ....job 1 done: ....")
|
194
194
|
mock_file_sizes
|
195
195
|
|
196
|
-
requester.run_tests(
|
196
|
+
requester.run_tests(RspecAdapter, 'spec')
|
197
197
|
end
|
198
198
|
|
199
199
|
should "just try again if the status returns as nil" do
|
@@ -212,7 +212,7 @@ module Testbot::Requester
|
|
212
212
|
flexmock(requester).should_receive(:puts).once.with("job 2 done: ....job 1 done: ....")
|
213
213
|
mock_file_sizes
|
214
214
|
|
215
|
-
requester.run_tests(
|
215
|
+
requester.run_tests(RspecAdapter, 'spec')
|
216
216
|
end
|
217
217
|
|
218
218
|
should "remove unnessesary output from rspec when told to do so" do
|
@@ -234,7 +234,7 @@ module Testbot::Requester
|
|
234
234
|
flexmock(requester).should_receive(:puts)
|
235
235
|
mock_file_sizes
|
236
236
|
|
237
|
-
requester.run_tests(
|
237
|
+
requester.run_tests(RspecAdapter, 'spec')
|
238
238
|
end
|
239
239
|
|
240
240
|
should "use SSHTunnel when specified (with a port that does not collide with the runner)" do
|
@@ -251,7 +251,7 @@ module Testbot::Requester
|
|
251
251
|
flexmock(requester).should_receive(:puts)
|
252
252
|
mock_file_sizes
|
253
253
|
|
254
|
-
requester.run_tests(
|
254
|
+
requester.run_tests(RspecAdapter, 'spec')
|
255
255
|
end
|
256
256
|
|
257
257
|
should "use another user for rsync and ssh_tunnel when specified" do
|
@@ -270,7 +270,7 @@ module Testbot::Requester
|
|
270
270
|
flexmock(requester).should_receive('system').with("rsync -az --delete -e ssh . cruise@somewhere:/tmp/testbot/foo")
|
271
271
|
mock_file_sizes
|
272
272
|
|
273
|
-
requester.run_tests(
|
273
|
+
requester.run_tests(RspecAdapter, 'spec')
|
274
274
|
end
|
275
275
|
|
276
276
|
should "use another port for cucumber to be able to run at the same time as rspec" do
|
@@ -335,7 +335,7 @@ module Testbot::Requester
|
|
335
335
|
should "return all lines with results in them" do
|
336
336
|
results = "one\ntwo..\n... 0 failures\nthree"
|
337
337
|
requester = requester_with_result(results)
|
338
|
-
requester.run_tests(
|
338
|
+
requester.run_tests(RspecAdapter, 'spec')
|
339
339
|
assert_equal [ '... 0 failures' ], requester.result_lines
|
340
340
|
end
|
341
341
|
|
@@ -4,19 +4,19 @@ require 'shoulda'
|
|
4
4
|
|
5
5
|
class AdapterTest < Test::Unit::TestCase
|
6
6
|
|
7
|
-
should "be able to find
|
8
|
-
assert_equal
|
9
|
-
assert_equal RSpecAdapter, Adapter.find(:spec)
|
10
|
-
assert_equal CucumberAdapter, Adapter.find(:features)
|
7
|
+
should "be able to find adapters" do
|
8
|
+
assert_equal RspecAdapter, Adapter.find(:spec)
|
11
9
|
assert_equal TestUnitAdapter, Adapter.find(:test)
|
12
10
|
end
|
13
11
|
|
14
12
|
should "find be able to find an adapter by string" do
|
15
|
-
assert_equal
|
13
|
+
assert_equal RspecAdapter, Adapter.find("spec")
|
14
|
+
assert_equal TestUnitAdapter, Adapter.find("test")
|
16
15
|
end
|
17
16
|
|
18
|
-
should "
|
19
|
-
|
17
|
+
should "be able to return a list of adapters" do
|
18
|
+
assert Adapter.all.include?(RspecAdapter)
|
19
|
+
assert Adapter.all.include?(TestUnitAdapter)
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
data/testbot.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.email = ["joakim.kolsjo@gmail.com"]
|
9
9
|
s.homepage = "http://github.com/joakimk/testbot"
|
10
10
|
s.summary = %q{A test distribution tool.}
|
11
|
-
s.description = %q{Testbot is a test distribution tool that works with Rails, RSpec, Test::Unit and Cucumber.}
|
11
|
+
s.description = %q{Testbot is a test distribution tool that works with Rails, RSpec, RSpec2, Test::Unit and Cucumber.}
|
12
12
|
s.bindir = "bin"
|
13
13
|
s.executables = [ "testbot" ]
|
14
14
|
s.files = Dir.glob("lib/**/*") + Dir.glob("test/**/*") + %w(Gemfile .gemtest Rakefile testbot.gemspec CHANGELOG README.markdown bin/testbot) +
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 6
|
10
|
+
version: 0.5.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Joakim Kolsj\xC3\xB6"
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-11 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -226,7 +226,7 @@ dependencies:
|
|
226
226
|
version: "0"
|
227
227
|
type: :development
|
228
228
|
version_requirements: *id014
|
229
|
-
description: Testbot is a test distribution tool that works with Rails, RSpec, Test::Unit and Cucumber.
|
229
|
+
description: Testbot is a test distribution tool that works with Rails, RSpec, RSpec2, Test::Unit and Cucumber.
|
230
230
|
email:
|
231
231
|
- joakim.kolsjo@gmail.com
|
232
232
|
executables:
|