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) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/debci/test_handler.rb', line 13

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



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/debci/test_handler.rb', line 38

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)


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



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/debci/test_handler.rb', line 21

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