Module: Debci::TestHandler

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

Instance Method Summary collapse

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

Returns:

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