2016-08-29 08:24:48 -04:00
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe Gitlab::Ci::PipelineDuration do
|
|
|
|
let(:calculator) { create_calculator(data) }
|
|
|
|
|
|
|
|
shared_examples 'calculating duration' do
|
|
|
|
it do
|
|
|
|
expect(calculator.duration).to eq(duration)
|
|
|
|
expect(calculator.pending_duration).to eq(pending_duration)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'test sample A' do
|
|
|
|
let(:data) do
|
|
|
|
[[0, 1],
|
|
|
|
[1, 2],
|
|
|
|
[3, 4],
|
|
|
|
[5, 6]]
|
|
|
|
end
|
|
|
|
|
|
|
|
let(:duration) { 4 }
|
|
|
|
let(:pending_duration) { 2 }
|
|
|
|
|
|
|
|
it_behaves_like 'calculating duration'
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'test sample B' do
|
|
|
|
let(:data) do
|
|
|
|
[[0, 1],
|
|
|
|
[1, 2],
|
|
|
|
[2, 3],
|
|
|
|
[3, 4],
|
|
|
|
[0, 4]]
|
|
|
|
end
|
|
|
|
|
|
|
|
let(:duration) { 4 }
|
|
|
|
let(:pending_duration) { 0 }
|
|
|
|
|
|
|
|
it_behaves_like 'calculating duration'
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'test sample C' do
|
|
|
|
let(:data) do
|
|
|
|
[[0, 4],
|
|
|
|
[2, 6],
|
|
|
|
[5, 7],
|
|
|
|
[8, 9]]
|
|
|
|
end
|
|
|
|
|
|
|
|
let(:duration) { 8 }
|
|
|
|
let(:pending_duration) { 1 }
|
|
|
|
|
|
|
|
it_behaves_like 'calculating duration'
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'test sample D' do
|
|
|
|
let(:data) do
|
|
|
|
[[0, 1],
|
|
|
|
[2, 3],
|
|
|
|
[4, 5],
|
|
|
|
[6, 7]]
|
|
|
|
end
|
|
|
|
|
|
|
|
let(:duration) { 4 }
|
|
|
|
let(:pending_duration) { 3 }
|
|
|
|
|
|
|
|
it_behaves_like 'calculating duration'
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'test sample E' do
|
|
|
|
let(:data) do
|
|
|
|
[[0, 1],
|
|
|
|
[3, 9],
|
|
|
|
[3, 4],
|
|
|
|
[3, 5],
|
|
|
|
[3, 8],
|
|
|
|
[4, 5],
|
|
|
|
[4, 7],
|
|
|
|
[5, 8]]
|
|
|
|
end
|
|
|
|
|
|
|
|
let(:duration) { 7 }
|
|
|
|
let(:pending_duration) { 2 }
|
|
|
|
|
|
|
|
it_behaves_like 'calculating duration'
|
|
|
|
end
|
|
|
|
|
|
|
|
def create_calculator(data)
|
|
|
|
segments = data.shuffle.map do |(first, last)|
|
2016-08-30 11:06:29 -04:00
|
|
|
Gitlab::Ci::PipelineDuration::Period.new(first, last)
|
2016-08-29 08:24:48 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
Gitlab::Ci::PipelineDuration.new(segments)
|
|
|
|
end
|
|
|
|
end
|