[go: up one dir, main page]

Skip to content

Investigate N+1 queries permitted by with_threshold in tests

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Problem to solve

We have tests that have underlying N+1s that are still permitted by using with_threshold method. This method sets a number of queries that can be performed above the limit. After !90907 (merged) some of those threshold has been increased. Let's use this issue to investigate whether some of these thresholds can be decreased or removed.

spec/graphql/resolvers/users/participants_resolver_spec.rb
140:          expect { query.call }.not_to exceed_query_limit(control_count).with_threshold(7)

spec/requests/api/graphql/current_user/todos_query_spec.rb
81:      expect { post_graphql(query, current_user: current_user) }.not_to exceed_query_limit(control).with_threshold(2)

spec/requests/api/todos_spec.rb
262:      expect { get api('/todos', john_doe) }.not_to exceed_query_limit(control1).with_threshold(5)
270:      expect { get api('/todos', john_doe) }.not_to exceed_query_limit(control2).with_threshold(1)

spec/requests/api/branches_spec.rb
282:        end.not_to exceed_query_limit(control).with_threshold(1)

spec/requests/projects/merge_requests_discussions_spec.rb
41:        end.not_to exceed_query_limit(control).with_threshold(notes_metadata_threshold)

spec/services/notification_recipients/build_service_spec.rb
30:        expect { service.build_new_note_recipients(note) }.not_to exceed_query_limit(control_count).with_threshold(threshold)
85:        expect { service.build_new_review_recipients(review) }.not_to exceed_query_limit(control_count).with_threshold(threshold)

spec/controllers/groups/children_controller_spec.rb
218:          expect { get_list }.not_to exceed_query_limit(control).with_threshold(expected_queries_per_group)
225:          expect { get_list }.not_to exceed_query_limit(control).with_threshold(expected_queries_per_project + 1)
244:            expect { get_filtered_list }.not_to exceed_query_limit(control).with_threshold(extra_queries_for_hierarchies)
255:            expect { get_filtered_list }.not_to exceed_query_limit(control).with_threshold(extra_queries_for_hierarchies)
265:            expect { get_filtered_list }.not_to exceed_query_limit(control).with_threshold(extra_queries_for_hierarchies)

spec/controllers/explore/projects_controller_spec.rb
234:          expect { get endpoint }.not_to exceed_query_limit(control).with_threshold(8)

spec/controllers/projects/issues_controller_spec.rb
1812:          .not_to exceed_query_limit(control).with_threshold(9)

spec/lib/gitlab/git_access_spec.rb
1072:        expect { access.check('git-receive-pack', changes) }.not_to exceed_query_limit(control_count).with_threshold(2)

spec/support/shared_examples/graphql/n_plus_one_query_examples.rb
18:      exceed_query_limit(control).with_threshold(threshold)

spec/support/shared_examples/requests/api/npm_packages_shared_examples.rb
42:      expect { get(url, headers: headers) }.not_to exceed_query_limit(control).with_threshold(4)

spec/models/project_spec.rb
6558:            .not_to exceed_query_limit(control).with_threshold(2)

spec/features/dashboard/projects_spec.rb
263:    expect { visit dashboard_projects_path }.not_to exceed_query_limit(control).with_threshold(4)

spec/uploaders/workers/object_storage/migrate_uploads_worker_spec.rb
69:        expect { perform(Upload.all) }.not_to exceed_query_limit(query_count).with_threshold(5)

ee/spec/services/epics/epic_links/create_service_spec.rb
434:            end.not_to exceed_query_limit(control).with_threshold(8)

ee/spec/helpers/projects/project_members_helper_spec.rb
37:      expect { call_project_members_app_data_json }.not_to exceed_query_limit(control_count).with_threshold(11) # existing n+1

ee/spec/controllers/projects/feature_flag_issues_controller_spec.rb
147:      expect { get_request(project, feature_flag) }.not_to exceed_query_limit(control_count).with_threshold(4)

ee/spec/graphql/types/pipeline_security_report_finding_type_spec.rb
341:          end.not_to exceed_query_limit(initial_query).with_threshold(1)

ee/spec/serializers/merge_request_widget_entity_spec.rb
51:    expect { serializer.represent(merge_request) }.not_to exceed_query_limit(control).with_threshold(1)

ee/spec/models/preloaders/environments/protected_environment_preloader_spec.rb
35:        expect { staging.protected? }.not_to exceed_query_limit(0).with_threshold(1) # 1 project load is expected

ee/spec/models/epic_spec.rb
1095:        .not_to exceed_query_limit(control).with_threshold(4)

ee/spec/requests/api/search_spec.rb
149:          expect { get api(endpoint, user), params: { scope: 'commits', search: 'folder' } }.not_to exceed_query_limit(control).with_threshold(5)
290:          expect { get api(endpoint, user), params: { scope: 'projects', search: '*' } }.not_to exceed_query_limit(control).with_threshold(4)

ee/spec/requests/api/todos_spec.rb
51:        expect { get api('/todos', personal_access_token: pat) }.not_to exceed_query_limit(control).with_threshold(1)

ee/spec/requests/api/vulnerability_findings_spec.rb
101:          expect { get api(project_vulnerability_findings_path, user) }.not_to exceed_query_limit(control_count).with_threshold(1)

ee/spec/requests/api/graphql/project/branch_rules/approval_project_rules_spec.rb
94:        end.not_to exceed_query_limit(control).with_threshold(number_of_rules * 2) # TODO: https://gitlab.com/gitlab-org/gitlab/-/issues/376723

ee/spec/requests/api/graphql/project/incident_management/oncall_shifts_spec.rb
118:        expect { post_graphql(query, current_user: current_user) }.not_to exceed_query_limit(base_count).with_threshold(2)

ee/spec/requests/api/graphql/project/environments_spec.rb
245:        expect(multi).not_to exceed_query_limit(baseline).with_threshold(1)

ee/spec/requests/api/graphql/group/epic/epic_issues_spec.rb
145:        end.not_to exceed_query_limit(control_count).with_threshold(extra_queries_count)

ee/spec/requests/api/graphql/group/epic/epic_children_spec.rb
153:        end.not_to exceed_query_limit(control_count).with_threshold(extra_queries)

ee/spec/requests/projects/merge_requests_controller_spec.rb
32:        expect { get_edit }.not_to exceed_query_limit(control).with_threshold(3)
Edited by 🤖 GitLab Bot 🤖