Count number of queries
This commit is contained in:
parent
37e7fe2cc9
commit
16a2eba52b
4 changed files with 43 additions and 1 deletions
|
@ -19,6 +19,11 @@ class Projects::BuildsController < Projects::ApplicationController
|
||||||
else
|
else
|
||||||
@builds
|
@builds
|
||||||
end
|
end
|
||||||
|
@builds = @builds.includes([
|
||||||
|
{ pipeline: :project },
|
||||||
|
:project,
|
||||||
|
:tags
|
||||||
|
])
|
||||||
@builds = @builds.page(params[:page]).per(30)
|
@builds = @builds.page(params[:page]).per(30)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ module HasStatus
|
||||||
end
|
end
|
||||||
|
|
||||||
scope :created, -> { where(status: 'created') }
|
scope :created, -> { where(status: 'created') }
|
||||||
scope :relevant, -> { where.not(status: 'created') }
|
scope :relevant, -> { where(status: AVAILABLE_STATUSES - ['created']) }
|
||||||
scope :running, -> { where(status: 'running') }
|
scope :running, -> { where(status: 'running') }
|
||||||
scope :pending, -> { where(status: 'pending') }
|
scope :pending, -> { where(status: 'pending') }
|
||||||
scope :success, -> { where(status: 'success') }
|
scope :success, -> { where(status: 'success') }
|
||||||
|
|
4
changelogs/unreleased/optimise-builds-view.yml
Normal file
4
changelogs/unreleased/optimise-builds-view.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Optimise builds endpoint
|
||||||
|
merge_request:
|
||||||
|
author:
|
|
@ -10,6 +10,39 @@ describe Projects::BuildsController do
|
||||||
sign_in(user)
|
sign_in(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'GET index' do
|
||||||
|
context 'number of queries' do
|
||||||
|
before do
|
||||||
|
Ci::Build::AVAILABLE_STATUSES.each do |status|
|
||||||
|
create_build(status, status)
|
||||||
|
end
|
||||||
|
|
||||||
|
RequestStore.begin!
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
RequestStore.end!
|
||||||
|
RequestStore.clear!
|
||||||
|
end
|
||||||
|
|
||||||
|
def render
|
||||||
|
get :index, namespace_id: project.namespace,
|
||||||
|
project_id: project
|
||||||
|
end
|
||||||
|
|
||||||
|
it "verifies number of queries" do
|
||||||
|
recorded = ActiveRecord::QueryRecorder.new { render }
|
||||||
|
expect(recorded.count).to be_within(5).of(8)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_build(name, status)
|
||||||
|
pipeline = create(:ci_pipeline, project: project)
|
||||||
|
create(:ci_build, :tags, :triggered, :artifacts,
|
||||||
|
pipeline: pipeline, name: name, status: status)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'GET status.json' do
|
describe 'GET status.json' do
|
||||||
let(:pipeline) { create(:ci_pipeline, project: project) }
|
let(:pipeline) { create(:ci_pipeline, project: project) }
|
||||||
let(:build) { create(:ci_build, pipeline: pipeline) }
|
let(:build) { create(:ci_build, pipeline: pipeline) }
|
||||||
|
|
Loading…
Reference in a new issue