testbot 0.4.2 → 0.4.4

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 CHANGED
@@ -1,3 +1,8 @@
1
+ 0.4.4
2
+
3
+ Changed to using the deamons gem. Seems to fix some problems with old processes
4
+ not closing down when using auto_update.
5
+
1
6
  0.4.2
2
7
 
3
8
  Added support for quick deploys when developing testbot.
data/README.markdown CHANGED
@@ -68,7 +68,7 @@ Using testbot with Rails 3:
68
68
 
69
69
  Using testbot with Rails 2:
70
70
 
71
- ruby script/plugin install git://github.com/joakimk/testbot.git -r 'refs/tags/v0.4.2'
71
+ ruby script/plugin install git://github.com/joakimk/testbot.git -r 'refs/tags/v0.4.4'
72
72
  script/generate testbot --connect 192.168.0.100
73
73
 
74
74
  rake testbot:spec (or :test, :features)
data/lib/runner.rb CHANGED
@@ -8,7 +8,7 @@ require File.dirname(__FILE__) + '/adapters/adapter'
8
8
  TIME_BETWEEN_NORMAL_POLLS = 1
9
9
  TIME_BETWEEN_QUICK_POLLS = 0.1
10
10
  TIME_BETWEEN_PINGS = 5
11
- TIME_BETWEEN_VERSION_CHECKS = 60
11
+ TIME_BETWEEN_VERSION_CHECKS = Testbot.version.include?('.DEV.') ? 5 : 60
12
12
  MAX_CPU_USAGE_WHEN_IDLE = 50
13
13
 
14
14
  class CPU
@@ -192,10 +192,17 @@ class Runner
192
192
  version = Server.get('/version') rescue Testbot.version
193
193
  return unless version != Testbot.version
194
194
 
195
- if version.include?(".DEV.")
196
- successful_install = system "wget #{@config.dev_gem_root}/testbot-#{version}.gem && gem install testbot-#{version}.gem && rm testbot-#{version}.gem"
195
+ # In a PXE cluster with a shared gem folder we only want one of them to do the update
196
+ if @config.wait_for_updated_gem
197
+ # Gem.available? is cached so it won't detect new gems.
198
+ gem = Gem::Dependency.new("testbot", version)
199
+ successful_install = !Gem::SourceIndex.from_installed_gems.search(gem).empty?
197
200
  else
198
- successful_install = system "gem install testbot -v #{version}"
201
+ if version.include?(".DEV.")
202
+ successful_install = system("wget #{@config.dev_gem_root}/testbot-#{version}.gem && gem install testbot-#{version}.gem --no-ri --no-rdoc && rm testbot-#{version}.gem")
203
+ else
204
+ successful_install = system "gem install testbot -v #{version} --no-ri --no-rdoc"
205
+ end
199
206
  end
200
207
 
201
208
  if successful_install
@@ -1,18 +1,24 @@
1
+ require 'rubygems'
2
+ require 'daemons'
3
+
1
4
  class SimpleDaemonize
2
5
 
3
- def self.start(proc, pid_path)
4
- pid = fork {
5
- STDOUT.reopen "/dev/null"
6
- proc.call
7
- }
8
-
9
- File.open(pid_path, 'w') { |file| file.write(pid) }
10
- pid
6
+ def self.start(proc, pid_path, app_name)
7
+ working_dir = Dir.pwd
8
+
9
+ group = Daemons::ApplicationGroup.new(app_name)
10
+ group.new_application(:mode => :none).start
11
+
12
+ File.open(pid_path, 'w') { |file| file.write(Process.pid) }
13
+ Dir.chdir(working_dir)
14
+ proc.call
11
15
  end
12
16
 
13
17
  def self.stop(pid_path)
14
18
  return unless File.exists?(pid_path)
15
- system "kill #{File.read(pid_path)} &> /dev/null"
19
+ pid = File.read(pid_path)
20
+
21
+ system "kill -9 #{pid} &> /dev/null"
16
22
  system "rm #{pid_path} &> /dev/null"
17
23
  end
18
24
 
data/lib/testbot.rb CHANGED
@@ -9,7 +9,7 @@ unless defined?(Testbot)
9
9
 
10
10
  # Don't forget to update readme and changelog
11
11
  def self.version
12
- version = "0.4.2"
12
+ version = "0.4.4"
13
13
  dev_version_file = File.join(File.dirname(__FILE__), '..', 'DEV_VERSION')
14
14
  if File.exists?(dev_version_file)
15
15
  version += File.read(dev_version_file)
@@ -89,6 +89,7 @@ unless defined?(Testbot)
89
89
  :ssh_tunnel => opts[:ssh_tunnel], :server_user => opts[:user],
90
90
  :max_jruby_instances => opts[:max_jruby_instances],
91
91
  :dev_gem_root => opts[:dev_gem_root],
92
+ :wait_for_updated_gem => opts[:wait_for_updated_gem],
92
93
  :jruby_opts => opts[:jruby_opts])
93
94
  runner.run!
94
95
  }
@@ -96,8 +97,8 @@ unless defined?(Testbot)
96
97
  if opts[:runner] == 'run'
97
98
  proc.call
98
99
  else
99
- pid = SimpleDaemonize.start(proc, Testbot::RUNNER_PID)
100
- puts "Testbot runner started (pid: #{pid})"
100
+ puts "Testbot runner started (pid: #{Process.pid})"
101
+ SimpleDaemonize.start(proc, Testbot::RUNNER_PID, "testbot (runner)")
101
102
  end
102
103
  end
103
104
 
@@ -108,12 +109,12 @@ unless defined?(Testbot)
108
109
  require File.join(File.dirname(__FILE__), '/server')
109
110
  Sinatra::Application.run! :environment => "production"
110
111
  else
111
- pid = SimpleDaemonize.start(lambda {
112
+ puts "Testbot server started (pid: #{Process.pid})"
113
+ SimpleDaemonize.start(lambda {
112
114
  ENV['DISABLE_LOGGING'] = "true"
113
115
  require File.join(File.dirname(__FILE__), '/server')
114
116
  Sinatra::Application.run! :environment => "production"
115
- }, Testbot::SERVER_PID)
116
- puts "Testbot server started (pid: #{pid})"
117
+ }, Testbot::SERVER_PID, "testbot (server)")
117
118
  end
118
119
  end
119
120
 
data/testbot.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_dependency('net-ssh', '>= 2.0.23')
21
21
  s.add_dependency('sequel', '>= 3.16.0')
22
22
  s.add_dependency('json', '>= 1.4.6')
23
+ s.add_dependency('daemons', '=1.0.10') # Because mongrel uses this version
23
24
  s.add_dependency('acts_as_rails3_generator')
24
25
 
25
26
  # Could work with older versions, but not newer (when deploying on debian)
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: 11
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 2
10
- version: 0.4.2
9
+ - 4
10
+ version: 0.4.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Joakim Kolsj\xC3\xB6"
@@ -115,9 +115,25 @@ dependencies:
115
115
  type: :runtime
116
116
  version_requirements: *id006
117
117
  - !ruby/object:Gem::Dependency
118
- name: acts_as_rails3_generator
118
+ name: daemons
119
119
  prerelease: false
120
120
  requirement: &id007 !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - "="
124
+ - !ruby/object:Gem::Version
125
+ hash: 3
126
+ segments:
127
+ - 1
128
+ - 0
129
+ - 10
130
+ version: 1.0.10
131
+ type: :runtime
132
+ version_requirements: *id007
133
+ - !ruby/object:Gem::Dependency
134
+ name: acts_as_rails3_generator
135
+ prerelease: false
136
+ requirement: &id008 !ruby/object:Gem::Requirement
121
137
  none: false
122
138
  requirements:
123
139
  - - ">="
@@ -127,11 +143,11 @@ dependencies:
127
143
  - 0
128
144
  version: "0"
129
145
  type: :runtime
130
- version_requirements: *id007
146
+ version_requirements: *id008
131
147
  - !ruby/object:Gem::Dependency
132
148
  name: sqlite3-ruby
133
149
  prerelease: false
134
- requirement: &id008 !ruby/object:Gem::Requirement
150
+ requirement: &id009 !ruby/object:Gem::Requirement
135
151
  none: false
136
152
  requirements:
137
153
  - - "="
@@ -143,11 +159,11 @@ dependencies:
143
159
  - 5
144
160
  version: 1.2.5
145
161
  type: :runtime
146
- version_requirements: *id008
162
+ version_requirements: *id009
147
163
  - !ruby/object:Gem::Dependency
148
164
  name: mongrel
149
165
  prerelease: false
150
- requirement: &id009 !ruby/object:Gem::Requirement
166
+ requirement: &id010 !ruby/object:Gem::Requirement
151
167
  none: false
152
168
  requirements:
153
169
  - - "="
@@ -160,7 +176,7 @@ dependencies:
160
176
  - pre2
161
177
  version: 1.2.0.pre2
162
178
  type: :runtime
163
- version_requirements: *id009
179
+ version_requirements: *id010
164
180
  description: Testbot is a test distribution tool that works with Rails, RSpec, Test::Unit and Cucumber.
165
181
  email:
166
182
  - joakim.kolsjo@gmail.com