2016-03-30 12:57:24 +03:00
|
|
|
require 'lib/helpers/job_waiter'
|
2018-04-04 22:44:39 +03:00
|
|
|
require "db/mongo/models/job_task"
|
2016-03-30 12:57:24 +03:00
|
|
|
|
|
|
|
|
module Devops::Helpers
|
2018-04-04 22:44:39 +03:00
|
|
|
RSpec.describe JobWaiter do
|
2016-03-30 12:57:24 +03:00
|
|
|
let(:job_waiter) { described_class.new('job_id') }
|
2018-04-04 22:44:39 +03:00
|
|
|
let(:task) { build(:task) }
|
2016-03-30 12:57:24 +03:00
|
|
|
|
|
|
|
|
before do
|
2018-04-04 22:44:39 +03:00
|
|
|
allow(Devops::Model::JobTask).to receive(:find) { task }
|
2016-03-30 12:57:24 +03:00
|
|
|
allow(job_waiter).to receive(:sleep)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'it returns 0 when job become completed' do
|
2018-04-04 22:44:39 +03:00
|
|
|
allow(task).to receive(:status) { 'completed' }
|
2016-03-30 12:57:24 +03:00
|
|
|
expect(job_waiter.wait).to eq 0
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'returns error code when job failes' do
|
2018-04-04 22:44:39 +03:00
|
|
|
allow(task).to receive(:status) { 'failed' }
|
|
|
|
|
allow(task).to receive(:job_result_code) { 1 }
|
2016-03-30 12:57:24 +03:00
|
|
|
expect(job_waiter.wait).to eq 1
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'sleeps until something happens' do
|
2018-04-04 22:44:39 +03:00
|
|
|
allow(task).to receive(:status).and_return('running', 'running', 'running', 'completed')
|
2016-03-30 12:57:24 +03:00
|
|
|
expect(job_waiter).to receive(:sleep).exactly(4).times
|
|
|
|
|
job_waiter.wait
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'raises JobWaiter::TimeoutReached if nothing happens for too long' do
|
2018-04-04 22:44:39 +03:00
|
|
|
allow(task).to receive(:status) { 'running' }
|
2016-03-30 12:57:24 +03:00
|
|
|
expect { job_waiter.wait }.to raise_error(JobWaiter::TimeoutReached)
|
|
|
|
|
end
|
|
|
|
|
end
|
2018-04-04 22:44:39 +03:00
|
|
|
end
|