summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Reigel <alexis.reigel.ext@siemens.com>2018-02-26 16:20:29 +0100
committerAlexis Reigel <alexis.reigel.ext@siemens.com>2018-02-28 09:53:29 +0100
commit76b77d95f9eebe5938bece9568697ac26931e51e (patch)
tree42a00abc8d577f1bbeee6bebe351c9cce3f69f34
parent84ae08a16241c46ed7ef4a11116483e7342cd7cb (diff)
downloadgitlab-ce-76b77d95f9eebe5938bece9568697ac26931e51e.tar.gz
extract method to adhere to "tell, don't ask"
-rw-r--r--app/models/ci/runner.rb6
-rw-r--r--app/services/ci/update_build_queue_service.rb2
-rw-r--r--spec/models/ci/runner_spec.rb26
3 files changed, 33 insertions, 1 deletions
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index fb2f3c56b51..9568c09cdab 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -211,6 +211,12 @@ module Ci
end
end
+ def invalidate_build_cache!(build)
+ if can_pick?(build)
+ tick_runner_queue
+ end
+ end
+
private
def cleanup_runner_queue
diff --git a/app/services/ci/update_build_queue_service.rb b/app/services/ci/update_build_queue_service.rb
index ab81766abf3..05dbebc4f8d 100644
--- a/app/services/ci/update_build_queue_service.rb
+++ b/app/services/ci/update_build_queue_service.rb
@@ -16,7 +16,7 @@ module Ci
def tick_for(build, runners)
runners.each do |runner|
- runner.tick_runner_queue if runner.can_pick?(build)
+ runner.invalidate_build_cache!(build)
end
end
end
diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb
index 3e85e3c92e3..23e18efea70 100644
--- a/spec/models/ci/runner_spec.rb
+++ b/spec/models/ci/runner_spec.rb
@@ -858,4 +858,30 @@ describe Ci::Runner do
end
end
end
+
+ describe '#invalidate_build_cache!' do
+ context 'runner can pick the build' do
+ it 'calls #tick_runner_queue' do
+ ci_build = build :ci_build
+ runner = build :ci_runner
+ allow(runner).to receive(:can_pick?).with(ci_build).and_return(true)
+
+ expect(runner).to receive(:tick_runner_queue)
+
+ runner.invalidate_build_cache!(ci_build)
+ end
+ end
+
+ context 'runner cannot pick the build' do
+ it 'does not call #tick_runner_queue' do
+ ci_build = build :ci_build
+ runner = build :ci_runner
+ allow(runner).to receive(:can_pick?).with(ci_build).and_return(false)
+
+ expect(runner).not_to receive(:tick_runner_queue)
+
+ runner.invalidate_build_cache!(ci_build)
+ end
+ end
+ end
end