diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-11-25 13:07:19 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-01-02 13:49:09 +0100 |
commit | b2d3a653350704c9c851c575c241f3bc20d07071 (patch) | |
tree | 4c2bdf4854113b1449139fab910959d11fad204d | |
parent | 190d73c3c942ba5614d60bba4e47ffd9634cedd3 (diff) | |
download | gitlab-ce-b2d3a653350704c9c851c575c241f3bc20d07071.tar.gz |
Add timing synchronization method to ci pipeline
-rw-r--r-- | app/models/ci/pipeline.rb | 6 | ||||
-rw-r--r-- | spec/models/ci/pipeline_spec.rb | 24 |
2 files changed, 30 insertions, 0 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index e4de223e0f7..c9cab3d13f0 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -331,6 +331,12 @@ module Ci end end + def update_timing + Gitlab::OptimisticLocking.retry_lock(self) do + touch if updated_at < 5.minutes.ago + end + end + def update_duration return unless started_at diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index ea5602ca84f..ba40e28a6cb 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -982,6 +982,30 @@ describe Ci::Pipeline, :models do end end + describe '#update_timing' do + before do + pipeline.touch + end + + context 'pipeline updated less than 5 minutes ago' do + it 'does not update pipeline timing' do + travel_to(2.minutes.from_now) do + expect { pipeline.update_timing } + .not_to change { pipeline.updated_at } + end + end + end + + context 'pipeline not updated less than 5 minutes ago' do + it 'updates pipeline timing' do + travel_to(8.minutes.from_now) do + expect { pipeline.update_timing } + .to change { pipeline.updated_at } + end + end + end + end + describe 'scopes' do before do create(:ci_empty_pipeline, status: :created) |