BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
ef37de8a
Commit
ef37de8a
authored
Sep 14, 2017
by
Rémy Coutable
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'bvl-extend-query-recorder' into 'master'
Extend the QueryRecorder matcher See merge request gitlab-org/gitlab-ce!14267
parents
0cf694fb
9c300fd9
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
7 deletions
+39
-7
show_spec.rb
spec/features/milestones/show_spec.rb
+2
-2
projects_spec.rb
spec/requests/api/projects_spec.rb
+3
-3
query_recorder.rb
spec/support/query_recorder.rb
+34
-2
No files found.
spec/features/milestones/show_spec.rb
View file @
ef37de8a
...
...
@@ -18,9 +18,9 @@ describe 'Milestone show' do
it
'avoids N+1 database queries'
do
create
(
:labeled_issue
,
issue_params
)
control
_count
=
ActiveRecord
::
QueryRecorder
.
new
{
visit_milestone
}.
count
control
=
ActiveRecord
::
QueryRecorder
.
new
{
visit_milestone
}
create_list
(
:labeled_issue
,
10
,
issue_params
)
expect
{
visit_milestone
}.
not_to
exceed_query_limit
(
control
_count
)
expect
{
visit_milestone
}.
not_to
exceed_query_limit
(
control
)
end
end
spec/requests/api/projects_spec.rb
View file @
ef37de8a
...
...
@@ -54,9 +54,9 @@ describe API::Projects do
shared_examples_for
'projects response without N + 1 queries'
do
it
'avoids N + 1 queries'
do
control
_count
=
ActiveRecord
::
QueryRecorder
.
new
do
control
=
ActiveRecord
::
QueryRecorder
.
new
do
get
api
(
'/projects'
,
current_user
)
end
.
count
end
if
defined?
(
additional_project
)
additional_project
...
...
@@ -66,7 +66,7 @@ describe API::Projects do
expect
do
get
api
(
'/projects'
,
current_user
)
end
.
not_to
exceed_query_limit
(
control
_count
+
8
)
end
.
not_to
exceed_query_limit
(
control
).
with_threshold
(
8
)
end
end
...
...
spec/support/query_recorder.rb
View file @
ef37de8a
...
...
@@ -34,15 +34,47 @@ RSpec::Matchers.define :exceed_query_limit do |expected|
supports_block_expectations
match
do
|
block
|
query_count
(
&
block
)
>
expected
query_count
(
&
block
)
>
expected
_count
+
threshold
end
failure_message_when_negated
do
|
actual
|
"Expected a maximum of
#{
expected
}
queries, got
#{
@recorder
.
count
}
:
\n\n
#{
@recorder
.
log_message
}
"
threshold_message
=
threshold
>
0
?
" (+
#{
@threshold
}
)"
:
''
counts
=
"
#{
expected_count
}#{
threshold_message
}
"
"Expected a maximum of
#{
counts
}
queries, got
#{
actual_count
}
:
\n\n
#{
log_message
}
"
end
def
with_threshold
(
threshold
)
@threshold
=
threshold
self
end
def
threshold
@threshold
.
to_i
end
def
expected_count
if
expected
.
is_a?
(
ActiveRecord
::
QueryRecorder
)
expected
.
count
else
expected
end
end
def
actual_count
@recorder
.
count
end
def
query_count
(
&
block
)
@recorder
=
ActiveRecord
::
QueryRecorder
.
new
(
&
block
)
@recorder
.
count
end
def
log_message
if
expected
.
is_a?
(
ActiveRecord
::
QueryRecorder
)
extra_queries
=
(
expected
.
log
-
@recorder
.
log
).
join
(
"
\n\n
"
)
"Extra queries:
\n\n
#{
extra_queries
}
"
else
@recorder
.
log_message
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment