Commit 2605a0a8 authored by Josh Frye's avatar Josh Frye

Refactor. Add tests.

parent 4d9622e7
...@@ -28,6 +28,7 @@ v 8.9.0 (unreleased) ...@@ -28,6 +28,7 @@ v 8.9.0 (unreleased)
- Make authentication service for Container Registry to be compatible with < Docker 1.11 - Make authentication service for Container Registry to be compatible with < Docker 1.11
- Add Application Setting to configure Container Registry token expire delay (default 5min) - Add Application Setting to configure Container Registry token expire delay (default 5min)
- Cache assigned issue and merge request counts in sidebar nav - Cache assigned issue and merge request counts in sidebar nav
- Cache project build count in sidebar nav
v 8.8.3 v 8.8.3
- Fix incorrect links on pipeline page when merge request created from fork - Fix incorrect links on pipeline page when merge request created from fork
......
...@@ -313,7 +313,7 @@ module Ci ...@@ -313,7 +313,7 @@ module Ci
build_data = Gitlab::BuildDataBuilder.build(self) build_data = Gitlab::BuildDataBuilder.build(self)
project.execute_hooks(build_data.dup, :build_hooks) project.execute_hooks(build_data.dup, :build_hooks)
project.execute_services(build_data.dup, :build_hooks) project.execute_services(build_data.dup, :build_hooks)
project.expire_running_or_pending_build_count project.running_or_pending_build_count(force: true)
end end
def artifacts? def artifacts?
......
...@@ -1012,13 +1012,9 @@ class Project < ActiveRecord::Base ...@@ -1012,13 +1012,9 @@ class Project < ActiveRecord::Base
update_attribute(:pending_delete, true) update_attribute(:pending_delete, true)
end end
def running_or_pending_build_count def running_or_pending_build_count(force: false)
Rails.cache.fetch(['projects', id, 'running_or_pending_build_count']) do Rails.cache.fetch(['projects', id, 'running_or_pending_build_count'], force: force) do
builds.running_or_pending.count(:all) builds.running_or_pending.count(:all)
end end
end end
def expire_running_or_pending_build_count
Rails.cache.delete(['projects', id, 'running_or_pending_build_count'])
end
end end
...@@ -52,15 +52,6 @@ ...@@ -52,15 +52,6 @@
= icon('ship fw') = icon('ship fw')
%span %span
Pipelines Pipelines
%span.badge.count.ci_counter= number_with_delimiter(@project.ci_commits.running_or_pending.count)
- if project_nav_tab? :builds
= nav_link(controller: %w(builds)) do
= link_to project_builds_path(@project), title: 'Builds', class: 'shortcuts-builds' do
= icon('cubes fw')
%span
Builds
%span.badge.count.builds_counter= number_with_delimiter(@project.running_or_pending_build_count)
- if project_nav_tab? :container_registry - if project_nav_tab? :container_registry
= nav_link(controller: %w(container_registry)) do = nav_link(controller: %w(container_registry)) do
......
...@@ -11,4 +11,4 @@ ...@@ -11,4 +11,4 @@
= link_to project_builds_path(@project), title: 'Builds', class: 'shortcuts-builds' do = link_to project_builds_path(@project), title: 'Builds', class: 'shortcuts-builds' do
%span %span
Builds Builds
%span.badge.count.builds_counter= number_with_delimiter(@project.builds.running_or_pending.count(:all)) %span.badge.count.builds_counter= number_with_delimiter(@project.running_or_pending_build_count)
...@@ -24,3 +24,4 @@ Feature: Project Builds Summary ...@@ -24,3 +24,4 @@ Feature: Project Builds Summary
Then recent build has been erased Then recent build has been erased
And recent build summary does not have artifacts widget And recent build summary does not have artifacts widget
And recent build summary contains information saying that build has been erased And recent build summary contains information saying that build has been erased
And the build count cache is updated
...@@ -36,4 +36,8 @@ class Spinach::Features::ProjectBuildsSummary < Spinach::FeatureSteps ...@@ -36,4 +36,8 @@ class Spinach::Features::ProjectBuildsSummary < Spinach::FeatureSteps
expect(page).to have_content 'Build has been erased' expect(page).to have_content 'Build has been erased'
end end
end end
step 'the build count cache is updated' do
expect(@build.project.running_or_pending_build_count).to eq @build.project.builds.running_or_pending.count(:all)
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment