最近Rails 4アプリケーションでは、メインアプリケーションとワーカープロセスの両方が正しく起動されていることを確認するだけで問題を回避できました応用。 HerokuのためSidekiqプロセスの成功したブートのテストを自動化する方法
当社Procfileはそうのようになります。今
web: bundle exec unicorn -p $PORT -c config/heroku/unicorn.rb
sidekiq: bundle exec sidekiq -q high -q medium -q low
、我々は10+コンテナ間スイートを二分しても、完了するまでに30分を要し、非常に大きなテストスイートを実行します。
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秒が追加されます
- 私の好みでは少し低レベルです。
サイドキックのブートプロセスをテストするのは、ブート時に例外が発生した場合にのみ終了するということです。
誰もこの種のテストを自動化するために、より良い、より速く、より徹底したアプローチを推奨できますか?
なぜdownvotesですか?この場所は残酷です。 – doremi
SOには適していると思われますが、多くの人が自由に回答できる明確な答えを持っていません。 –
これをもっと具体的にする方法はありますか? 「ただUATが必要です」という別のスレッドのあなたの助言も、受け入れられる回答です。それは私の構成員にその事件をするのを助けるだろう。 – doremi