Sha256: 0b35901f9e16da922e537988cb038c7a7d9d44296eae278e8012fa62103b0275

Contents?: true

Size: 889 Bytes

Versions: 17

Compression:

Stored size: 889 Bytes

Contents

require File.join(File.dirname(__FILE__), 'db.rb') unless defined?(DB)

class Runner < Sequel::Model

  def self.record!(hash)
    create_or_update_by_mac!(hash)
  end
  
  def self.create_or_update_by_mac!(hash)
    if (runner = find(:uid => hash[:uid]))
      runner.update hash
    else
      Runner.create hash
    end
  end
  
  def self.timeout
    10
  end
  
  def self.find_all_outdated
    DB[:runners].filter("version != ? OR version IS NULL", Testbot::VERSION)
  end
  
  def self.find_all_available
    DB[:runners].filter("version = ? AND last_seen_at > ?", Testbot::VERSION, Time.now - Runner.timeout)
  end  
  
  def self.available_instances
    find_all_available.inject(0) { |sum, r| r[:idle_instances] + sum }
  end
  
  def self.total_instances
    return 1 if ENV['INTEGRATION_TEST']
    find_all_available.inject(0) { |sum, r| r[:max_instances] + sum }
  end
  
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
testbot-0.4.0 lib/server/runner.rb
testbot-0.3.9 lib/server/runner.rb
testbot-0.3.9.pre lib/server/runner.rb
testbot-0.3.8 lib/server/runner.rb
testbot-0.3.8.pre lib/server/runner.rb
testbot-0.3.7 lib/server/runner.rb
testbot-0.3.6 lib/server/runner.rb
testbot-0.3.5 lib/server/runner.rb
testbot-0.3.4 lib/server/runner.rb
testbot-0.3.3 lib/server/runner.rb
testbot-0.3.2 lib/server/runner.rb
testbot-0.3.1 lib/server/runner.rb
testbot-0.3.0 lib/server/runner.rb
testbot-0.2.9 lib/server/runner.rb
testbot-0.2.8 lib/server/runner.rb
testbot-0.2.7 lib/server/runner.rb
testbot-0.2.6 lib/server/runner.rb