Недавно у нас было несколько проблем в нашем приложении Rails 4, которое можно было бы предотвратить с помощью простой проверки, чтобы убедиться, что как основное приложение, так и рабочий процесс правильно загружают нашу заявление.Как автоматизировать тестирование успешной загрузки Sidekiq Process
Наша PROCFILE для Heroku выглядит так:
web: bundle exec unicorn -p $PORT -c config/heroku/unicorn.rb
sidekiq: bundle exec sidekiq -q high -q medium -q low
Сейчас мы проводим очень большой набор тестов, который занимает 30 минут, чтобы закончить, даже когда рассекает пакет через 10 с лишним контейнеров.
Мы используем CircleCI и рассматриваем возможность добавления теста, подобного следующему, который имитирует процесс загрузки Sidekiq.
require 'spec_helper'
RSpec.describe 'Booting processes' do
context 'Sidekiq server' do
it 'loads successfully' do
boot_sidekiq_sequence = <<-SEQ
require 'sidekiq/cli'
Sidekiq::CLI.instance.environment = '#{ENV['RAILS_ENV']}'
Sidekiq::CLI.instance.send(:boot_system)
SEQ
expect(system(%{echo "#{boot_sidekiq_sequence}" | ruby > /dev/null})).to be_truthy,
"The Sidekiq process could not boot up properly. Run `sidekiq` to troubleshoot"
end
end
end
Проблема с этим состоит в том, что:
- Это не совсем полное испытание нашего процесса загрузки приложений, который потребует чтения из нашего PROCFILE (мы также хотим защитить УБС от принятия критических изменений там)
- Это медленное и добавит приблизительно 30 секунд к нашему испытательному времени выполнения.
- Это немного низкоуровневое по моему вкусу.
Что делает тестирование процесса загрузки Sidekiq, в частности, сложным, заключается в том, что он будет завершен только в случае сбоя при загрузке.
Может ли кто-нибудь рекомендовать лучший, более быстрый и более тщательный подход к автоматизации такого рода испытаний?
Почему downvotes? Человек, это место жестоко. – doremi
Кажется подходящим для SO, но люди часто обсуждают вопросы, которые являются открытыми и не имеют четкого ответа. –
Есть ли способ, чтобы я мог сделать это более конкретным? Даже ваш совет в другой теме «просто требуется UAT» является приемлемым ответом. Это поможет мне разобраться с моими участниками. – doremi