diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2019-07-08 16:07:21 +0300 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2019-07-08 16:07:21 +0300 |
commit | 886521c7e563e04574fd803a22476f1158961fad (patch) | |
tree | 642291847190298979eff5e3e4a06ca43039b8d7 /spec/controllers/projects/merge_requests_controller_spec.rb | |
parent | d14d1340c6d26a132e8db1f9b883aa87276b457c (diff) | |
parent | 56c129293578cb620daf1c19b1bc61cd18d9fa83 (diff) |
Merge branch '63475-fix-n-1' into 'master'
Reduce N+1 queries in MergeRequestsController#ci_environment_status
See merge request gitlab-org/gitlab-ce!30224
Diffstat (limited to 'spec/controllers/projects/merge_requests_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/merge_requests_controller_spec.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb index 0eca663a683..9878f88a395 100644 --- a/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/spec/controllers/projects/merge_requests_controller_spec.rb @@ -878,6 +878,22 @@ describe Projects::MergeRequestsController do expect(control_count).to be <= 137 end + it 'has no N+1 issues for environments', :request_store, retry: 0 do + # First run to insert test data from lets, which does take up some 30 queries + get_ci_environments_status + + control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) { get_ci_environments_status }.count + + environment2 = create(:environment, project: forked) + create(:deployment, :succeed, environment: environment2, sha: sha, ref: 'master', deployable: build) + + # TODO address the last 11 queries + # See https://gitlab.com/gitlab-org/gitlab-ce/issues/63952 (5 queries) + # And https://gitlab.com/gitlab-org/gitlab-ce/issues/64105 (6 queries) + leeway = 11 + expect { get_ci_environments_status }.not_to exceed_all_query_limit(control_count + leeway) + end + def get_ci_environments_status(extra_params = {}) params = { namespace_id: merge_request.project.namespace.to_param, |