Module: Debci::TestHandler
- Included in:
- API, SelfService
- Defined in:
- lib/debci/test_handler.rb
Instance Method Summary collapse
- #enqueue(job) ⇒ Object
- #request_batch_tests(test_requests, requestor) ⇒ Object
- #request_tests(tests, suite, arch, requestor) ⇒ Object
- #valid_package_name?(pkg) ⇒ Boolean
- #validate_batch_test(test_requests) ⇒ Object
Instance Method Details
#enqueue(job) ⇒ Object
5 6 7 8 |
# File 'lib/debci/test_handler.rb', line 5 def enqueue(job) priority = 1 job.enqueue(priority) end |
#request_batch_tests(test_requests, requestor) ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/debci/test_handler.rb', line 14 def request_batch_tests(test_requests, requestor) test_requests.each do |request| request['arch'].each do |arch| request_tests(request['tests'], request['suite'], arch, requestor) end end end |
#request_tests(tests, suite, arch, requestor) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/debci/test_handler.rb', line 39 def request_tests(tests, suite, arch, requestor) tests.each do |test| pkg = test['package'] enqueue = true status = nil if Debci.blacklist.include?(pkg) || !valid_package_name?(pkg) enqueue = false status = 'fail' end job = Debci::Job.create!( package: test['package'], suite: suite, arch: arch, requestor: requestor, status: status, trigger: test['trigger'], pin_packages: test['pin-packages'] ) self.enqueue(job) if enqueue end end |
#valid_package_name?(pkg) ⇒ Boolean
10 11 12 |
# File 'lib/debci/test_handler.rb', line 10 def valid_package_name?(pkg) pkg =~ /^[a-z0-9][a-z0-9+.-]+$/ end |
#validate_batch_test(test_requests) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/debci/test_handler.rb', line 22 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 |