Module: Debci::TestHandler

Included in:
API, SelfService
Defined in:
lib/debci/test_handler.rb

Instance Method Summary collapse

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

Returns:

  • (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