Непрерывная интеграция — выполнение параллельных наборов тестов, для которых требуется xvfb.

У меня возникают проблемы с параллельными сборками, для которых требуется сервер xvfb. Раньше я использовал headless ruby ​​gem, но у меня были спорадические сбои, когда некоторые наборы тестов, требующие capybara-webkit и сервера xvfb, работали параллельно.

Я предполагаю, что они оба пытались использовать один и тот же DISPLAY, поэтому я попытался установить разные значения DISPLAY, а затем запустить их параллельно, но все равно произошел сбой.

Затем я попытался удалить гем headless и запустить свой набор тестов с: DISPLAY=localhost:$display_num.0 xvfb-run bundle exec rake, где $display_num — это ранее установленная переменная bash, которая различается между двумя наборами тестов.

Затем я получаю сообщение об ошибке: xvfb-run: error: Xvfb failed to start, когда они запускались параллельно.

Любая помощь в расшифровке этого была бы здорово!


person MAckerman    schedule 04.04.2013    source источник


Ответы (1)


Вот суть, но в конечном итоге вам нужно запустить один headless для каждого процесса.

Это эффективно делается с помощью файла features/support/javascript.rb, на который ссылается суть, соответствующий раздел:

# Unnecessary on mac
if (!OS.mac? && !$headless_started)

    require 'headless'
    # allow display autopick (by default)
    # allow each headless to destroy_at_exit (by default)
    # allow each process to have their own headless by setting reuse: false
    headless_server = Headless.new(:reuse => false)
    headless_server.start

    $headless_started = true
    puts "Process[#{Process.pid}] started headless server display: #{headless_server.display}"
end
person kross    schedule 21.08.2013