Class: Debci::Job
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Debci::Job
- 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.
Class Method Details
.amqp_channel ⇒ Object
91 92 93 94 95 96 |
# File 'lib/debci/job.rb', line 91 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
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/debci/job.rb', line 76 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
33 34 35 36 37 38 39 |
# File 'lib/debci/job.rb', line 33 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
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/debci/job.rb', line 13 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
70 71 72 73 74 |
# File 'lib/debci/job.rb', line 70 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
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/debci/job.rb', line 58 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
41 42 43 44 45 |
# File 'lib/debci/job.rb', line 41 def prefix name = self.package name =~ /^((lib)?.)/ $1 end |
#time ⇒ Object
Returns the amount of time since the date for this status object
48 49 50 51 52 53 54 55 56 |
# File 'lib/debci/job.rb', line 48 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 |