Class: Debci::Job
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Debci::Job
- Includes:
- Test::Expired
- Defined in:
- lib/debci/job.rb
Class Method Summary collapse
- .amqp_channel ⇒ Object
- .get_queue(arch) ⇒ Object
- .history(package, suite, arch) ⇒ Object
- .import(status_file, suite, arch) ⇒ Object
- .pending ⇒ Object
Instance Method Summary collapse
- #enqueue(priority = 0) ⇒ Object
- #get_enqueue_parameters ⇒ Object
- #prefix ⇒ Object
-
#time ⇒ Object
Returns the amount of time since the date for this status object.
Methods included from Test::Expired
Class Method Details
.amqp_channel ⇒ Object
94 95 96 97 98 99 |
# File 'lib/debci/job.rb', line 94 def self.amqp_channel @conn ||= Bunny.new(Debci.config.amqp_server).tap do |conn| conn.start end @channel ||= @conn.create_channel end |
.get_queue(arch) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/debci/job.rb', line 79 def self.get_queue(arch) @queues ||= {} @queues[arch] ||= begin opts = { durable: true, arguments: { 'x-max-priority': 10, } } q = ENV['debci_amqp_queue'] || "debci-tests-#{arch}-#{Debci.config.backend}" self.amqp_channel.queue(q, opts) end end |
.history(package, suite, arch) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/debci/job.rb', line 36 def self.history(package, suite, arch) Debci::Job.where( package: package, suite: suite, arch: arch ).where.not(status: nil).where(pin_packages: nil).order('date') end |
.import(status_file, suite, arch) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/debci/job.rb', line 16 def self.import(status_file, suite, arch) status = Debci::Status.from_file(status_file, suite, arch) status.run_id = status.run_id.to_i job = Debci::Job.find(status.run_id) job.duration_seconds = status.duration_seconds job.date = status.date job.last_pass_date = status.last_pass_date job.last_pass_version = status.last_pass_version job. = status. job.previous_status = status.previous_status job.version = status.version job.status = status.status job.save! job end |
Instance Method Details
#enqueue(priority = 0) ⇒ Object
73 74 75 76 77 |
# File 'lib/debci/job.rb', line 73 def enqueue(priority = 0) queue = self.class.get_queue(arch) parameters = get_enqueue_parameters() queue.publish("%s %s %s" % [package, suite, parameters.join(' ')], priority: priority) end |
#get_enqueue_parameters ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/debci/job.rb', line 61 def get_enqueue_parameters parameters = ['run-id:%s' % id] if self.trigger parameters << "trigger:#{CGI.escape(trigger)}" end Array(self.pin_packages).each do |pin| pkg, suite = pin parameters << "pin-packages:#{suite}=#{pkg}" end parameters end |
#prefix ⇒ Object
44 45 46 47 48 |
# File 'lib/debci/job.rb', line 44 def prefix name = self.package name =~ /^((lib)?.)/ $1 end |
#time ⇒ Object
Returns the amount of time since the date for this status object
51 52 53 54 55 56 57 58 59 |
# File 'lib/debci/job.rb', line 51 def time days = (Time.now - self.created_at)/86400 if days >= 1 || days <= -1 "#{days.floor} day(s) ago" else "#{Time.at(Time.now - self.created_at).gmtime.strftime('%H')} hour(s) ago" end end |