Module: Debci::TestHandler
- Included in:
- API, SelfService
- Defined in:
- lib/debci/test_handler.rb
Instance Method Summary collapse
- #enqueue(job, priority = 1) ⇒ Object
- #request_batch_tests(test_requests, requestor, priority = 1) ⇒ Object
- #request_tests(tests, suite, arch, requestor, priority = 1) ⇒ Object
- #valid_package_name?(pkg) ⇒ Boolean
- #validate_batch_test(test_requests) ⇒ Object
- #validate_priority(priority) ⇒ Object
Instance Method Details
#enqueue(job, priority = 1) ⇒ Object
5 6 7 |
# File 'lib/debci/test_handler.rb', line 5 def enqueue(job, priority = 1) job.enqueue(priority) end |
#request_batch_tests(test_requests, requestor, priority = 1) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/debci/test_handler.rb', line 17 def request_batch_tests(test_requests, requestor, priority = 1) test_requests.each do |request| request['arch'].each do |arch| request_tests(request['tests'], request['suite'], arch, requestor, priority) end end end |
#request_tests(tests, suite, arch, requestor, priority = 1) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/debci/test_handler.rb', line 42 def request_tests(tests, suite, arch, requestor, priority = 1) jobs = [] tests.each do |test| pkg = test['package'] enqueue = true status = nil date = nil if Debci.blacklist.include?(pkg, suite: suite, arch: arch) || !valid_package_name?(pkg) enqueue = false status = 'fail' date = Time.now end job = Debci::Job.create!( package: test['package'], suite: suite, arch: arch, requestor: requestor, status: status, date: date, trigger: test['trigger'], pin_packages: test['pin-packages'] ) jobs << job if enqueue end jobs.each do |job| self.enqueue(job, priority) end end |
#valid_package_name?(pkg) ⇒ Boolean
9 10 11 |
# File 'lib/debci/test_handler.rb', line 9 def valid_package_name?(pkg) pkg =~ /^[a-z0-9][a-z0-9+.-]+$/ end |
#validate_batch_test(test_requests) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/debci/test_handler.rb', line 25 def validate_batch_test(test_requests) errors = [] errors.push("Not an array") unless test_requests.is_a?(Array) test_requests.each_with_index do |request, index| request_suite = request['suite'] errors.push("No suite at request index #{index}") if request_suite == '' errors.push("Wrong suite (#{request_suite}) at request index #{index}, available suites: #{Debci.config.suite_list.join(', ')}") unless Debci.config.suite_list.include?(request_suite) archs = request['arch'].reject(&:empty?) errors.push("No archs are specified at request index #{index}") if archs.empty? errors.push("Wrong archs (#{archs.join(', ')}) at request index #{index}, available archs: #{Debci.config.arch_list.join(', ')}") if (Debci.config.arch_list & archs).length != archs.length request['tests'].each_with_index do |t, i| errors.push("Invalid package name at request index #{index} and test index #{i}") unless valid_package_name?(t['package']) end end errors end |
#validate_priority(priority) ⇒ Object
13 14 15 |
# File 'lib/debci/test_handler.rb', line 13 def validate_priority(priority) priority >= 1 && priority <= 10 end |