rspec-pg 16 30
Passed Started
by
@filipa

Filipa Lacerda
1Running with gitlab-runner 10.8.0-rc3 (5470b911)2 on docker-auto-scale-com 1d6b581d3Using Docker executor with image dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.4.4-golang-1.9-git-2.17-chrome-65.0-node-8.x-yarn-1.2-postgresql-9.6 ...4Starting service postgres:9.2 ...5Pulling docker image postgres:9.2 ...6Using docker image sha256:18cdbca56093c841d28e629eb8acd4224afe0aa4c57c839351fc181888b8a470 for postgres:9.2 ...7Starting service redis:alpine ...8Pulling docker image redis:alpine ...9Using docker image sha256:494c839f5bb5d9e4f7b50b096c6b317e0ac9114155858e48acf0dd9bfe93ef7c for redis:alpine ...10Waiting for services to be up and running...11Pulling docker image dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.4.4-golang-1.9-git-2.17-chrome-65.0-node-8.x-yarn-1.2-postgresql-9.6 ...12Using docker image sha256:bae793c0ec4da64ca88d888ab983d2788cc18b5fbe9264b4067daa0a2e89f182 for dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.4.4-golang-1.9-git-2.17-chrome-65.0-node-8.x-yarn-1.2-postgresql-9.6 ... 13 Running on runner-1d6b581d-project-278964-concurrent-0 via runner-1d6b581d-gsrm-1528370547-00f72631...
00:01
15Removing .gitlab_shell_secret16Removing .gitlab_workhorse_secret17Removing .yarn-cache/18Removing config/database.yml19Removing config/database_geo.yml20Removing config/gitlab.yml21Removing config/redis.cache.yml22Removing config/redis.queues.yml23Removing config/redis.shared_state.yml24Removing config/resque.yml25Removing config/secrets.yml26Removing coverage/27Removing knapsack/28Removing log/api_json.log29Removing log/application.log30Removing log/gitaly-test.log31Removing log/githost.log32Removing log/grpc.log33Removing log/test_json.log34Removing node_modules/35Removing public/assets/36Removing rspec_flaky/37Removing tmp/capybara/38Removing tmp/prometheus_multiproc_dir/counter_process_id_92-0.db39Removing tmp/prometheus_multiproc_dir/gauge_livesum_process_id_92-0.db40Removing tmp/prometheus_multiproc_dir/histogram_process_id_92-0.db41Removing tmp/tests/42Removing vendor/gitaly-ruby/43Removing vendor/ruby/44HEAD is now at b0965c78 better way to require Rails46 * [new branch] 11-0-stable-ee-prepare-rc6 -> origin/11-0-stable-ee-prepare-rc647 * [new tag] v11.0.0-rc1-ee -> v11.0.0-rc1-ee48 * [new tag] v11.0.0-rc2-ee -> v11.0.0-rc2-ee49 * [new tag] v11.0.0-rc3-ee -> v11.0.0-rc3-ee50 * [new tag] v11.0.0-rc4-ee -> v11.0.0-rc4-ee51 * [new tag] v11.0.0-rc5-ee -> v11.0.0-rc5-ee52Checking out 629b09ea as 11-0-stable-ee-prepare-rc6...53Skipping Git submodules setup55Downloading cache.zip from http://runners-cache-3-internal.gitlab.com:444/runner/project/278964/ruby-2.4.4-debian-stretch-with-yarn-1 56Successfully extracted cache58Downloading artifacts from coordinator... ok id=73155646 responseStatus=200 OK token=akws8yks59Downloading artifacts for compile-assets (73155647)...60Downloading artifacts from coordinator... ok id=73155647 responseStatus=200 OK token=PcacmAHo61Downloading artifacts for setup-test-env (73155648)...62Downloading artifacts from coordinator... ok id=73155648 responseStatus=200 OK token=UsSGC2PD63WARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats) 65Bundler version 1.16.266$ date67Thu Jun 7 12:37:30 UTC 201868$ source scripts/utils.sh69$ date70Thu Jun 7 12:37:30 UTC 201871$ source scripts/prepare_build.sh72The Gemfile's dependencies are satisfied73Successfully installed knapsack-1.16.0741 gem installed75CREATE ROLE76GRANT77-- enable_extension("plpgsql")78 -> 0.0104s79-- enable_extension("pg_trgm")80 -> 0.0108s81-- create_table("abuse_reports", {:force=>:cascade})82 -> 0.0104s83-- create_table("appearances", {:force=>:cascade})84 -> 0.0074s85-- create_table("application_setting_terms", {:force=>:cascade})86 -> 0.0069s87-- create_table("application_settings", {:force=>:cascade})88 -> 0.0374s89-- create_table("approvals", {:force=>:cascade})90 -> 0.0051s91-- add_index("approvals", ["merge_request_id"], {:name=>"index_approvals_on_merge_request_id", :using=>:btree})92 -> 0.0045s93-- create_table("approver_groups", {:force=>:cascade})94 -> 0.0064s95-- add_index("approver_groups", ["group_id"], {:name=>"index_approver_groups_on_group_id", :using=>:btree})96 -> 0.0043s97-- add_index("approver_groups", ["target_id", "target_type"], {:name=>"index_approver_groups_on_target_id_and_target_type", :using=>:btree})98 -> 0.0082s99-- create_table("approvers", {:force=>:cascade})100 -> 0.0067s101-- add_index("approvers", ["target_id", "target_type"], {:name=>"index_approvers_on_target_id_and_target_type", :using=>:btree})102 -> 0.0055s103-- add_index("approvers", ["user_id"], {:name=>"index_approvers_on_user_id", :using=>:btree})104 -> 0.0045s105-- create_table("audit_events", {:force=>:cascade})106 -> 0.0066s107-- add_index("audit_events", ["entity_id", "entity_type"], {:name=>"index_audit_events_on_entity_id_and_entity_type", :using=>:btree})108 -> 0.0043s109-- create_table("award_emoji", {:force=>:cascade})110 -> 0.0067s111-- add_index("award_emoji", ["awardable_type", "awardable_id"], {:name=>"index_award_emoji_on_awardable_type_and_awardable_id", :using=>:btree})112 -> 0.0041s113-- add_index("award_emoji", ["user_id", "name"], {:name=>"index_award_emoji_on_user_id_and_name", :using=>:btree})114 -> 0.0041s115-- create_table("badges", {:force=>:cascade})116 -> 0.0071s117-- add_index("badges", ["group_id"], {:name=>"index_badges_on_group_id", :using=>:btree})118 -> 0.0044s119-- add_index("badges", ["project_id"], {:name=>"index_badges_on_project_id", :using=>:btree})120 -> 0.0043s121-- create_table("board_assignees", {:force=>:cascade})122 -> 0.0043s123-- add_index("board_assignees", ["board_id", "assignee_id"], {:name=>"index_board_assignees_on_board_id_and_assignee_id", :unique=>true, :using=>:btree})124 -> 0.0041s125-- create_table("board_labels", {:force=>:cascade})126 -> 0.0043s127-- add_index("board_labels", ["board_id", "label_id"], {:name=>"index_board_labels_on_board_id_and_label_id", :unique=>true, :using=>:btree})128 -> 0.0041s129-- create_table("boards", {:force=>:cascade})130 -> 0.0067s131-- add_index("boards", ["group_id"], {:name=>"index_boards_on_group_id", :using=>:btree})132 -> 0.0044s133-- add_index("boards", ["milestone_id"], {:name=>"index_boards_on_milestone_id", :using=>:btree})134 -> 0.0039s135-- add_index("boards", ["project_id"], {:name=>"index_boards_on_project_id", :using=>:btree})136 -> 0.0040s137-- create_table("broadcast_messages", {:force=>:cascade})138 -> 0.0071s139-- add_index("broadcast_messages", ["starts_at", "ends_at", "id"], {:name=>"index_broadcast_messages_on_starts_at_and_ends_at_and_id", :using=>:btree})140 -> 0.0044s141-- create_table("chat_names", {:force=>:cascade})142 -> 0.0070s143-- add_index("chat_names", ["service_id", "team_id", "chat_id"], {:name=>"index_chat_names_on_service_id_and_team_id_and_chat_id", :unique=>true, :using=>:btree})144 -> 0.0042s145-- add_index("chat_names", ["user_id", "service_id"], {:name=>"index_chat_names_on_user_id_and_service_id", :unique=>true, :using=>:btree})146 -> 0.0043s147-- create_table("chat_teams", {:force=>:cascade})148 -> 0.0065s149-- add_index("chat_teams", ["namespace_id"], {:name=>"index_chat_teams_on_namespace_id", :unique=>true, :using=>:btree})150 -> 0.0042s151-- create_table("ci_build_trace_chunks", {:id=>:bigserial, :force=>:cascade})152 -> 0.0064s153-- add_index("ci_build_trace_chunks", ["build_id", "chunk_index"], {:name=>"index_ci_build_trace_chunks_on_build_id_and_chunk_index", :unique=>true, :using=>:btree})154 -> 0.0039s155-- create_table("ci_build_trace_section_names", {:force=>:cascade})156 -> 0.0062s157-- add_index("ci_build_trace_section_names", ["project_id", "name"], {:name=>"index_ci_build_trace_section_names_on_project_id_and_name", :unique=>true, :using=>:btree})158 -> 0.0040s159-- create_table("ci_build_trace_sections", {:force=>:cascade})160 -> 0.0043s161-- add_index("ci_build_trace_sections", ["build_id", "section_name_id"], {:name=>"index_ci_build_trace_sections_on_build_id_and_section_name_id", :unique=>true, :using=>:btree})162 -> 0.0041s163-- add_index("ci_build_trace_sections", ["project_id"], {:name=>"index_ci_build_trace_sections_on_project_id", :using=>:btree})164 -> 0.0049s165-- add_index("ci_build_trace_sections", ["section_name_id"], {:name=>"index_ci_build_trace_sections_on_section_name_id", :using=>:btree})166 -> 0.0044s167-- create_table("ci_builds", {:force=>:cascade})168 -> 0.0081s169-- add_index("ci_builds", ["artifacts_expire_at"], {:name=>"index_ci_builds_on_artifacts_expire_at", :where=>"(artifacts_file <> ''::text)", :using=>:btree})170 -> 0.0044s171-- add_index("ci_builds", ["auto_canceled_by_id"], {:name=>"index_ci_builds_on_auto_canceled_by_id", :using=>:btree})172 -> 0.0040s173-- add_index("ci_builds", ["commit_id", "stage_idx", "created_at"], {:name=>"index_ci_builds_on_commit_id_and_stage_idx_and_created_at", :using=>:btree})174 -> 0.0043s175-- add_index("ci_builds", ["commit_id", "status", "type"], {:name=>"index_ci_builds_on_commit_id_and_status_and_type", :using=>:btree})176 -> 0.0041s177-- add_index("ci_builds", ["commit_id", "type", "name", "ref"], {:name=>"index_ci_builds_on_commit_id_and_type_and_name_and_ref", :using=>:btree})178 -> 0.0044s179-- add_index("ci_builds", ["commit_id", "type", "ref"], {:name=>"index_ci_builds_on_commit_id_and_type_and_ref", :using=>:btree})180 -> 0.0041s181-- add_index("ci_builds", ["project_id", "id"], {:name=>"index_ci_builds_on_project_id_and_id", :using=>:btree})182 -> 0.0045s183-- add_index("ci_builds", ["protected"], {:name=>"index_ci_builds_on_protected", :using=>:btree})184 -> 0.0043s185-- add_index("ci_builds", ["runner_id"], {:name=>"index_ci_builds_on_runner_id", :using=>:btree})186 -> 0.0041s187-- add_index("ci_builds", ["stage_id", "stage_idx"], {:name=>"tmp_build_stage_position_index", :where=>"(stage_idx IS NOT NULL)", :using=>:btree})188 -> 0.0044s189-- add_index("ci_builds", ["stage_id"], {:name=>"index_ci_builds_on_stage_id", :using=>:btree})190 -> 0.0042s191-- add_index("ci_builds", ["status", "type", "runner_id"], {:name=>"index_ci_builds_on_status_and_type_and_runner_id", :using=>:btree})192 -> 0.0045s193-- add_index("ci_builds", ["status"], {:name=>"index_ci_builds_on_status", :using=>:btree})194 -> 0.0042s195-- add_index("ci_builds", ["token"], {:name=>"index_ci_builds_on_token", :unique=>true, :using=>:btree})196 -> 0.0040s197-- add_index("ci_builds", ["updated_at"], {:name=>"index_ci_builds_on_updated_at", :using=>:btree})198 -> 0.0040s199-- add_index("ci_builds", ["user_id"], {:name=>"index_ci_builds_on_user_id", :using=>:btree})200 -> 0.0041s201-- create_table("ci_builds_metadata", {:force=>:cascade})202 -> 0.0050s203-- add_index("ci_builds_metadata", ["build_id"], {:name=>"index_ci_builds_metadata_on_build_id", :unique=>true, :using=>:btree})204 -> 0.0044s205-- add_index("ci_builds_metadata", ["project_id"], {:name=>"index_ci_builds_metadata_on_project_id", :using=>:btree})206 -> 0.0042s207-- create_table("ci_group_variables", {:force=>:cascade})208 -> 0.0070s209-- add_index("ci_group_variables", ["group_id", "key"], {:name=>"index_ci_group_variables_on_group_id_and_key", :unique=>true, :using=>:btree})210 -> 0.0043s211-- create_table("ci_job_artifacts", {:force=>:cascade})212 -> 0.0069s213-- add_index("ci_job_artifacts", ["expire_at", "job_id"], {:name=>"index_ci_job_artifacts_on_expire_at_and_job_id", :using=>:btree})214 -> 0.0045s215-- add_index("ci_job_artifacts", ["file_store"], {:name=>"index_ci_job_artifacts_on_file_store", :using=>:btree})216 -> 0.0041s217-- add_index("ci_job_artifacts", ["job_id", "file_type"], {:name=>"index_ci_job_artifacts_on_job_id_and_file_type", :unique=>true, :using=>:btree})218 -> 0.0048s219-- add_index("ci_job_artifacts", ["project_id"], {:name=>"index_ci_job_artifacts_on_project_id", :using=>:btree})220 -> 0.0054s221-- create_table("ci_pipeline_chat_data", {:id=>:bigserial, :force=>:cascade})222 -> 0.0096s223-- add_index("ci_pipeline_chat_data", ["pipeline_id"], {:name=>"index_ci_pipeline_chat_data_on_pipeline_id", :unique=>true, :using=>:btree})224 -> 0.0063s225-- create_table("ci_pipeline_schedule_variables", {:force=>:cascade})226 -> 0.0068s227-- add_index("ci_pipeline_schedule_variables", ["pipeline_schedule_id", "key"], {:name=>"index_ci_pipeline_schedule_variables_on_schedule_id_and_key", :unique=>true, :using=>:btree})228 -> 0.0044s229-- create_table("ci_pipeline_schedules", {:force=>:cascade})230 -> 0.0075s231-- add_index("ci_pipeline_schedules", ["next_run_at", "active"], {:name=>"index_ci_pipeline_schedules_on_next_run_at_and_active", :using=>:btree})232 -> 0.0046s233-- add_index("ci_pipeline_schedules", ["project_id"], {:name=>"index_ci_pipeline_schedules_on_project_id", :using=>:btree})234 -> 0.0041s235-- create_table("ci_pipeline_variables", {:force=>:cascade})236 -> 0.0067s237-- add_index("ci_pipeline_variables", ["pipeline_id", "key"], {:name=>"index_ci_pipeline_variables_on_pipeline_id_and_key", :unique=>true, :using=>:btree})238 -> 0.0042s239-- create_table("ci_pipelines", {:force=>:cascade})240 -> 0.0073s241-- add_index("ci_pipelines", ["auto_canceled_by_id"], {:name=>"index_ci_pipelines_on_auto_canceled_by_id", :using=>:btree})242 -> 0.0041s243-- add_index("ci_pipelines", ["pipeline_schedule_id"], {:name=>"index_ci_pipelines_on_pipeline_schedule_id", :using=>:btree})244 -> 0.0040s245-- add_index("ci_pipelines", ["project_id", "iid"], {:name=>"index_ci_pipelines_on_project_id_and_iid", :unique=>true, :where=>"(iid IS NOT NULL)", :using=>:btree})246 -> 0.0041s247-- add_index("ci_pipelines", ["project_id", "ref", "status", "id"], {:name=>"index_ci_pipelines_on_project_id_and_ref_and_status_and_id", :using=>:btree})248 -> 0.0045s249-- add_index("ci_pipelines", ["project_id", "sha"], {:name=>"index_ci_pipelines_on_project_id_and_sha", :using=>:btree})250 -> 0.0042s251-- add_index("ci_pipelines", ["project_id"], {:name=>"index_ci_pipelines_on_project_id", :using=>:btree})252 -> 0.0042s253-- add_index("ci_pipelines", ["status"], {:name=>"index_ci_pipelines_on_status", :using=>:btree})254 -> 0.0042s255-- add_index("ci_pipelines", ["user_id"], {:name=>"index_ci_pipelines_on_user_id", :using=>:btree})256 -> 0.0042s257-- create_table("ci_runner_namespaces", {:force=>:cascade})258 -> 0.0042s259-- add_index("ci_runner_namespaces", ["namespace_id"], {:name=>"index_ci_runner_namespaces_on_namespace_id", :using=>:btree})260 -> 0.0039s261-- add_index("ci_runner_namespaces", ["runner_id", "namespace_id"], {:name=>"index_ci_runner_namespaces_on_runner_id_and_namespace_id", :unique=>true, :using=>:btree})262 -> 0.0039s263-- create_table("ci_runner_projects", {:force=>:cascade})264 -> 0.0042s265-- add_index("ci_runner_projects", ["project_id"], {:name=>"index_ci_runner_projects_on_project_id", :using=>:btree})266 -> 0.0040s267-- add_index("ci_runner_projects", ["runner_id"], {:name=>"index_ci_runner_projects_on_runner_id", :using=>:btree})268 -> 0.0040s269-- create_table("ci_runners", {:force=>:cascade})270 -> 0.0119s271-- add_index("ci_runners", ["contacted_at"], {:name=>"index_ci_runners_on_contacted_at", :using=>:btree})272 -> 0.0047s273-- add_index("ci_runners", ["is_shared"], {:name=>"index_ci_runners_on_is_shared", :using=>:btree})274 -> 0.0038s275-- add_index("ci_runners", ["locked"], {:name=>"index_ci_runners_on_locked", :using=>:btree})276 -> 0.0039s277-- add_index("ci_runners", ["runner_type"], {:name=>"index_ci_runners_on_runner_type", :using=>:btree})278 -> 0.0040s279-- add_index("ci_runners", ["token"], {:name=>"index_ci_runners_on_token", :using=>:btree})280 -> 0.0038s281-- create_table("ci_sources_pipelines", {:force=>:cascade})282 -> 0.0042s283-- add_index("ci_sources_pipelines", ["pipeline_id"], {:name=>"index_ci_sources_pipelines_on_pipeline_id", :using=>:btree})284 -> 0.0040s285-- add_index("ci_sources_pipelines", ["project_id"], {:name=>"index_ci_sources_pipelines_on_project_id", :using=>:btree})286 -> 0.0037s287-- add_index("ci_sources_pipelines", ["source_job_id"], {:name=>"index_ci_sources_pipelines_on_source_job_id", :using=>:btree})288 -> 0.0037s289-- add_index("ci_sources_pipelines", ["source_pipeline_id"], {:name=>"index_ci_sources_pipelines_on_source_pipeline_id", :using=>:btree})290 -> 0.0037s291-- add_index("ci_sources_pipelines", ["source_project_id"], {:name=>"index_ci_sources_pipelines_on_source_project_id", :using=>:btree})292 -> 0.0038s293-- create_table("ci_stages", {:force=>:cascade})294 -> 0.0073s295-- add_index("ci_stages", ["pipeline_id", "name"], {:name=>"index_ci_stages_on_pipeline_id_and_name", :unique=>true, :using=>:btree})296 -> 0.0041s297-- add_index("ci_stages", ["pipeline_id", "position"], {:name=>"index_ci_stages_on_pipeline_id_and_position", :using=>:btree})298 -> 0.0040s299-- add_index("ci_stages", ["pipeline_id"], {:name=>"index_ci_stages_on_pipeline_id", :using=>:btree})300 -> 0.0037s301-- add_index("ci_stages", ["project_id"], {:name=>"index_ci_stages_on_project_id", :using=>:btree})302 -> 0.0039s303-- create_table("ci_trigger_requests", {:force=>:cascade})304 -> 0.0059s305-- add_index("ci_trigger_requests", ["commit_id"], {:name=>"index_ci_trigger_requests_on_commit_id", :using=>:btree})306 -> 0.0039s307-- create_table("ci_triggers", {:force=>:cascade})308 -> 0.0064s309-- add_index("ci_triggers", ["project_id"], {:name=>"index_ci_triggers_on_project_id", :using=>:btree})310 -> 0.0040s311-- create_table("ci_variables", {:force=>:cascade})312 -> 0.0066s313-- add_index("ci_variables", ["project_id", "key", "environment_scope"], {:name=>"index_ci_variables_on_project_id_and_key_and_environment_scope", :unique=>true, :using=>:btree})314 -> 0.0040s315-- create_table("cluster_platforms_kubernetes", {:force=>:cascade})316 -> 0.0062s317-- add_index("cluster_platforms_kubernetes", ["cluster_id"], {:name=>"index_cluster_platforms_kubernetes_on_cluster_id", :unique=>true, :using=>:btree})318 -> 0.0040s319-- create_table("cluster_projects", {:force=>:cascade})320 -> 0.0044s321-- add_index("cluster_projects", ["cluster_id"], {:name=>"index_cluster_projects_on_cluster_id", :using=>:btree})322 -> 0.0041s323-- add_index("cluster_projects", ["project_id"], {:name=>"index_cluster_projects_on_project_id", :using=>:btree})324 -> 0.0038s325-- create_table("cluster_providers_gcp", {:force=>:cascade})326 -> 0.0065s327-- add_index("cluster_providers_gcp", ["cluster_id"], {:name=>"index_cluster_providers_gcp_on_cluster_id", :unique=>true, :using=>:btree})328 -> 0.0043s329-- create_table("clusters", {:force=>:cascade})330 -> 0.0069s331-- add_index("clusters", ["enabled"], {:name=>"index_clusters_on_enabled", :using=>:btree})332 -> 0.0040s333-- add_index("clusters", ["user_id"], {:name=>"index_clusters_on_user_id", :using=>:btree})334 -> 0.0040s335-- create_table("clusters_applications_helm", {:force=>:cascade})336 -> 0.0063s337-- create_table("clusters_applications_ingress", {:force=>:cascade})338 -> 0.0069s339-- create_table("clusters_applications_jupyter", {:force=>:cascade})340 -> 0.0066s341-- create_table("clusters_applications_prometheus", {:force=>:cascade})342 -> 0.0064s343-- create_table("clusters_applications_runners", {:force=>:cascade})344 -> 0.0068s345-- add_index("clusters_applications_runners", ["cluster_id"], {:name=>"index_clusters_applications_runners_on_cluster_id", :unique=>true, :using=>:btree})346 -> 0.0039s347-- add_index("clusters_applications_runners", ["runner_id"], {:name=>"index_clusters_applications_runners_on_runner_id", :using=>:btree})348 -> 0.0041s349-- create_table("container_repositories", {:force=>:cascade})350 -> 0.0063s351-- add_index("container_repositories", ["project_id", "name"], {:name=>"index_container_repositories_on_project_id_and_name", :unique=>true, :using=>:btree})352 -> 0.0042s353-- add_index("container_repositories", ["project_id"], {:name=>"index_container_repositories_on_project_id", :using=>:btree})354 -> 0.0044s355-- create_table("conversational_development_index_metrics", {:force=>:cascade})356 -> 0.0091s357-- create_table("deploy_keys_projects", {:force=>:cascade})358 -> 0.0049s359-- add_index("deploy_keys_projects", ["project_id"], {:name=>"index_deploy_keys_projects_on_project_id", :using=>:btree})360 -> 0.0064s361-- create_table("deploy_tokens", {:force=>:cascade})362 -> 0.0077s363-- add_index("deploy_tokens", ["token", "expires_at", "id"], {:name=>"index_deploy_tokens_on_token_and_expires_at_and_id", :where=>"(revoked IS FALSE)", :using=>:btree})364 -> 0.0045s365-- add_index("deploy_tokens", ["token"], {:name=>"index_deploy_tokens_on_token", :unique=>true, :using=>:btree})366 -> 0.0037s367-- create_table("deployments", {:force=>:cascade})368 -> 0.0062s369-- add_index("deployments", ["created_at"], {:name=>"index_deployments_on_created_at", :using=>:btree})370 -> 0.0042s371-- add_index("deployments", ["environment_id", "id"], {:name=>"index_deployments_on_environment_id_and_id", :using=>:btree})372 -> 0.0038s373-- add_index("deployments", ["environment_id", "iid", "project_id"], {:name=>"index_deployments_on_environment_id_and_iid_and_project_id", :using=>:btree})374 -> 0.0037s375-- add_index("deployments", ["project_id", "iid"], {:name=>"index_deployments_on_project_id_and_iid", :unique=>true, :using=>:btree})376 -> 0.0040s377-- create_table("emails", {:force=>:cascade})378 -> 0.0059s379-- add_index("emails", ["confirmation_token"], {:name=>"index_emails_on_confirmation_token", :unique=>true, :using=>:btree})380 -> 0.0038s381-- add_index("emails", ["email"], {:name=>"index_emails_on_email", :unique=>true, :using=>:btree})382 -> 0.0037s383-- add_index("emails", ["user_id"], {:name=>"index_emails_on_user_id", :using=>:btree})384 -> 0.0039s385-- create_table("environments", {:force=>:cascade})386 -> 0.0073s387-- add_index("environments", ["project_id", "name"], {:name=>"index_environments_on_project_id_and_name", :unique=>true, :using=>:btree})388 -> 0.0041s389-- add_index("environments", ["project_id", "slug"], {:name=>"index_environments_on_project_id_and_slug", :unique=>true, :using=>:btree})390 -> 0.0040s391-- create_table("epic_issues", {:force=>:cascade})392 -> 0.0046s393-- add_index("epic_issues", ["epic_id"], {:name=>"index_epic_issues_on_epic_id", :using=>:btree})394 -> 0.0041s395-- add_index("epic_issues", ["issue_id"], {:name=>"index_epic_issues_on_issue_id", :unique=>true, :using=>:btree})396 -> 0.0040s397-- create_table("epic_metrics", {:force=>:cascade})398 -> 0.0043s399-- add_index("epic_metrics", ["epic_id"], {:name=>"index_epic_metrics", :using=>:btree})400 -> 0.0040s401-- create_table("epics", {:force=>:cascade})402 -> 0.0070s403-- add_index("epics", ["assignee_id"], {:name=>"index_epics_on_assignee_id", :using=>:btree})404 -> 0.0038s405-- add_index("epics", ["author_id"], {:name=>"index_epics_on_author_id", :using=>:btree})406 -> 0.0037s407-- add_index("epics", ["end_date"], {:name=>"index_epics_on_end_date", :using=>:btree})408 -> 0.0039s409-- add_index("epics", ["group_id"], {:name=>"index_epics_on_group_id", :using=>:btree})410 -> 0.0041s411-- add_index("epics", ["iid"], {:name=>"index_epics_on_iid", :using=>:btree})412 -> 0.0040s413-- add_index("epics", ["milestone_id"], {:name=>"index_milestone", :using=>:btree})414 -> 0.0038s415-- add_index("epics", ["start_date"], {:name=>"index_epics_on_start_date", :using=>:btree})416 -> 0.0038s417-- create_table("events", {:force=>:cascade})418 -> 0.0072s419-- add_index("events", ["action"], {:name=>"index_events_on_action", :using=>:btree})420 -> 0.0044s421-- add_index("events", ["author_id", "project_id"], {:name=>"index_events_on_author_id_and_project_id", :using=>:btree})422 -> 0.0041s423-- add_index("events", ["project_id", "id"], {:name=>"index_events_on_project_id_and_id", :using=>:btree})424 -> 0.0053s425-- add_index("events", ["target_type", "target_id"], {:name=>"index_events_on_target_type_and_target_id", :using=>:btree})426 -> 0.0038s427-- create_table("feature_gates", {:force=>:cascade})428 -> 0.0060s429-- add_index("feature_gates", ["feature_key", "key", "value"], {:name=>"index_feature_gates_on_feature_key_and_key_and_value", :unique=>true, :using=>:btree})430 -> 0.0039s431-- create_table("features", {:force=>:cascade})432 -> 0.0064s433-- add_index("features", ["key"], {:name=>"index_features_on_key", :unique=>true, :using=>:btree})434 -> 0.0062s435-- create_table("fork_network_members", {:force=>:cascade})436 -> 0.0044s437-- add_index("fork_network_members", ["fork_network_id"], {:name=>"index_fork_network_members_on_fork_network_id", :using=>:btree})438 -> 0.0040s439-- add_index("fork_network_members", ["project_id"], {:name=>"index_fork_network_members_on_project_id", :unique=>true, :using=>:btree})440 -> 0.0038s441-- create_table("fork_networks", {:force=>:cascade})442 -> 0.0061s443-- add_index("fork_networks", ["root_project_id"], {:name=>"index_fork_networks_on_root_project_id", :unique=>true, :using=>:btree})444 -> 0.0041s445-- create_table("forked_project_links", {:force=>:cascade})446 -> 0.0042s447-- add_index("forked_project_links", ["forked_to_project_id"], {:name=>"index_forked_project_links_on_forked_to_project_id", :unique=>true, :using=>:btree})448 -> 0.0039s449-- create_table("gcp_clusters", {:force=>:cascade})450 -> 0.0076s451-- add_index("gcp_clusters", ["project_id"], {:name=>"index_gcp_clusters_on_project_id", :unique=>true, :using=>:btree})452 -> 0.0046s453-- create_table("geo_event_log", {:id=>:bigserial, :force=>:cascade})454 -> 0.0045s455-- add_index("geo_event_log", ["repositories_changed_event_id"], {:name=>"index_geo_event_log_on_repositories_changed_event_id", :using=>:btree})456 -> 0.0042s457-- add_index("geo_event_log", ["repository_created_event_id"], {:name=>"index_geo_event_log_on_repository_created_event_id", :using=>:btree})458 -> 0.0038s459-- add_index("geo_event_log", ["repository_deleted_event_id"], {:name=>"index_geo_event_log_on_repository_deleted_event_id", :using=>:btree})460 -> 0.0039s461-- add_index("geo_event_log", ["repository_renamed_event_id"], {:name=>"index_geo_event_log_on_repository_renamed_event_id", :using=>:btree})462 -> 0.0040s463-- add_index("geo_event_log", ["repository_updated_event_id"], {:name=>"index_geo_event_log_on_repository_updated_event_id", :using=>:btree})464 -> 0.0041s465-- create_table("geo_hashed_storage_attachments_events", {:id=>:bigserial, :force=>:cascade})466 -> 0.0061s467-- add_index("geo_hashed_storage_attachments_events", ["project_id"], {:name=>"index_geo_hashed_storage_attachments_events_on_project_id", :using=>:btree})468 -> 0.0040s469-- create_table("geo_hashed_storage_migrated_events", {:id=>:bigserial, :force=>:cascade})470 -> 0.0061s471-- add_index("geo_hashed_storage_migrated_events", ["project_id"], {:name=>"index_geo_hashed_storage_migrated_events_on_project_id", :using=>:btree})472 -> 0.0039s473-- create_table("geo_job_artifact_deleted_events", {:id=>:bigserial, :force=>:cascade})474 -> 0.0071s475-- add_index("geo_job_artifact_deleted_events", ["job_artifact_id"], {:name=>"index_geo_job_artifact_deleted_events_on_job_artifact_id", :using=>:btree})476 -> 0.0040s477-- create_table("geo_lfs_object_deleted_events", {:id=>:bigserial, :force=>:cascade})478 -> 0.0061s479-- add_index("geo_lfs_object_deleted_events", ["lfs_object_id"], {:name=>"index_geo_lfs_object_deleted_events_on_lfs_object_id", :using=>:btree})480 -> 0.0039s481-- create_table("geo_node_namespace_links", {:force=>:cascade})482 -> 0.0042s483-- add_index("geo_node_namespace_links", ["geo_node_id", "namespace_id"], {:name=>"index_geo_node_namespace_links_on_geo_node_id_and_namespace_id", :unique=>true, :using=>:btree})484 -> 0.0039s485-- add_index("geo_node_namespace_links", ["geo_node_id"], {:name=>"index_geo_node_namespace_links_on_geo_node_id", :using=>:btree})486 -> 0.0038s487-- create_table("geo_node_statuses", {:force=>:cascade})488 -> 0.0075s489-- add_index("geo_node_statuses", ["geo_node_id"], {:name=>"index_geo_node_statuses_on_geo_node_id", :unique=>true, :using=>:btree})490 -> 0.0054s491-- create_table("geo_nodes", {:force=>:cascade})492 -> 0.0076s493-- add_index("geo_nodes", ["access_key"], {:name=>"index_geo_nodes_on_access_key", :using=>:btree})494 -> 0.0041s495-- add_index("geo_nodes", ["primary"], {:name=>"index_geo_nodes_on_primary", :using=>:btree})496 -> 0.0042s497-- add_index("geo_nodes", ["url"], {:name=>"index_geo_nodes_on_url", :unique=>true, :using=>:btree})498 -> 0.0039s499-- create_table("geo_repositories_changed_events", {:id=>:bigserial, :force=>:cascade})500 -> 0.0042s501-- add_index("geo_repositories_changed_events", ["geo_node_id"], {:name=>"index_geo_repositories_changed_events_on_geo_node_id", :using=>:btree})502 -> 0.0055s503-- create_table("geo_repository_created_events", {:id=>:bigserial, :force=>:cascade})504 -> 0.0068s505-- add_index("geo_repository_created_events", ["project_id"], {:name=>"index_geo_repository_created_events_on_project_id", :using=>:btree})506 -> 0.0044s507-- create_table("geo_repository_deleted_events", {:id=>:bigserial, :force=>:cascade})508 -> 0.0069s509-- add_index("geo_repository_deleted_events", ["project_id"], {:name=>"index_geo_repository_deleted_events_on_project_id", :using=>:btree})510 -> 0.0041s511-- create_table("geo_repository_renamed_events", {:id=>:bigserial, :force=>:cascade})512 -> 0.0063s513-- add_index("geo_repository_renamed_events", ["project_id"], {:name=>"index_geo_repository_renamed_events_on_project_id", :using=>:btree})514 -> 0.0043s515-- create_table("geo_repository_updated_events", {:id=>:bigserial, :force=>:cascade})516 -> 0.0073s517-- add_index("geo_repository_updated_events", ["project_id"], {:name=>"index_geo_repository_updated_events_on_project_id", :using=>:btree})518 -> 0.0042s519-- add_index("geo_repository_updated_events", ["source"], {:name=>"index_geo_repository_updated_events_on_source", :using=>:btree})520 -> 0.0040s521-- create_table("geo_upload_deleted_events", {:id=>:bigserial, :force=>:cascade})522 -> 0.0064s523-- add_index("geo_upload_deleted_events", ["upload_id"], {:name=>"index_geo_upload_deleted_events_on_upload_id", :using=>:btree})524 -> 0.0039s525-- create_table("gpg_key_subkeys", {:force=>:cascade})526 -> 0.0059s527-- add_index("gpg_key_subkeys", ["fingerprint"], {:name=>"index_gpg_key_subkeys_on_fingerprint", :unique=>true, :using=>:btree})528 -> 0.0039s529-- add_index("gpg_key_subkeys", ["gpg_key_id"], {:name=>"index_gpg_key_subkeys_on_gpg_key_id", :using=>:btree})530 -> 0.0039s531-- add_index("gpg_key_subkeys", ["keyid"], {:name=>"index_gpg_key_subkeys_on_keyid", :unique=>true, :using=>:btree})532 -> 0.0037s533-- create_table("gpg_keys", {:force=>:cascade})534 -> 0.0059s535-- add_index("gpg_keys", ["fingerprint"], {:name=>"index_gpg_keys_on_fingerprint", :unique=>true, :using=>:btree})536 -> 0.0038s537-- add_index("gpg_keys", ["primary_keyid"], {:name=>"index_gpg_keys_on_primary_keyid", :unique=>true, :using=>:btree})538 -> 0.0038s539-- add_index("gpg_keys", ["user_id"], {:name=>"index_gpg_keys_on_user_id", :using=>:btree})540 -> 0.0037s541-- create_table("gpg_signatures", {:force=>:cascade})542 -> 0.0069s543-- add_index("gpg_signatures", ["commit_sha"], {:name=>"index_gpg_signatures_on_commit_sha", :unique=>true, :using=>:btree})544 -> 0.0039s545-- add_index("gpg_signatures", ["gpg_key_id"], {:name=>"index_gpg_signatures_on_gpg_key_id", :using=>:btree})546 -> 0.0049s547-- add_index("gpg_signatures", ["gpg_key_primary_keyid"], {:name=>"index_gpg_signatures_on_gpg_key_primary_keyid", :using=>:btree})548 -> 0.0041s549-- add_index("gpg_signatures", ["gpg_key_subkey_id"], {:name=>"index_gpg_signatures_on_gpg_key_subkey_id", :using=>:btree})550 -> 0.0040s551-- add_index("gpg_signatures", ["project_id"], {:name=>"index_gpg_signatures_on_project_id", :using=>:btree})552 -> 0.0039s553-- create_table("group_custom_attributes", {:force=>:cascade})554 -> 0.0063s555-- add_index("group_custom_attributes", ["group_id", "key"], {:name=>"index_group_custom_attributes_on_group_id_and_key", :unique=>true, :using=>:btree})556 -> 0.0041s557-- add_index("group_custom_attributes", ["key", "value"], {:name=>"index_group_custom_attributes_on_key_and_value", :using=>:btree})558 -> 0.0040s559-- create_table("historical_data", {:force=>:cascade})560 -> 0.0043s561-- create_table("identities", {:force=>:cascade})562 -> 0.0066s563-- add_index("identities", ["saml_provider_id"], {:name=>"index_identities_on_saml_provider_id", :where=>"(saml_provider_id IS NOT NULL)", :using=>:btree})564 -> 0.0040s565-- add_index("identities", ["user_id"], {:name=>"index_identities_on_user_id", :using=>:btree})566 -> 0.0039s567-- create_table("index_statuses", {:force=>:cascade})568 -> 0.0066s569-- add_index("index_statuses", ["project_id"], {:name=>"index_index_statuses_on_project_id", :unique=>true, :using=>:btree})570 -> 0.0041s571-- create_table("internal_ids", {:id=>:bigserial, :force=>:cascade})572 -> 0.0045s573-- add_index("internal_ids", ["usage", "namespace_id"], {:name=>"index_internal_ids_on_usage_and_namespace_id", :unique=>true, :where=>"(namespace_id IS NOT NULL)", :using=>:btree})574 -> 0.0039s575-- add_index("internal_ids", ["usage", "project_id"], {:name=>"index_internal_ids_on_usage_and_project_id", :unique=>true, :where=>"(project_id IS NOT NULL)", :using=>:btree})576 -> 0.0039s577-- create_table("issue_assignees", {:id=>false, :force=>:cascade})578 -> 0.0017s579-- add_index("issue_assignees", ["issue_id", "user_id"], {:name=>"index_issue_assignees_on_issue_id_and_user_id", :unique=>true, :using=>:btree})580 -> 0.0040s581-- add_index("issue_assignees", ["user_id"], {:name=>"index_issue_assignees_on_user_id", :using=>:btree})582 -> 0.0037s583-- create_table("issue_links", {:force=>:cascade})584 -> 0.0041s585-- add_index("issue_links", ["source_id", "target_id"], {:name=>"index_issue_links_on_source_id_and_target_id", :unique=>true, :using=>:btree})586 -> 0.0041s587-- add_index("issue_links", ["source_id"], {:name=>"index_issue_links_on_source_id", :using=>:btree})588 -> 0.0038s589-- add_index("issue_links", ["target_id"], {:name=>"index_issue_links_on_target_id", :using=>:btree})590 -> 0.0036s591-- create_table("issue_metrics", {:force=>:cascade})592 -> 0.0042s593-- add_index("issue_metrics", ["issue_id"], {:name=>"index_issue_metrics", :using=>:btree})594 -> 0.0039s595-- create_table("issues", {:force=>:cascade})596 -> 0.0071s597-- add_index("issues", ["author_id"], {:name=>"index_issues_on_author_id", :using=>:btree})598 -> 0.0040s599-- add_index("issues", ["confidential"], {:name=>"index_issues_on_confidential", :using=>:btree})600 -> 0.0039s601-- add_index("issues", ["description"], {:name=>"index_issues_on_description_trigram", :using=>:gin, :opclasses=>{"description"=>"gin_trgm_ops"}})602 -> 0.0025s603-- add_index("issues", ["milestone_id"], {:name=>"index_issues_on_milestone_id", :using=>:btree})604 -> 0.0040s605-- add_index("issues", ["moved_to_id"], {:name=>"index_issues_on_moved_to_id", :where=>"(moved_to_id IS NOT NULL)", :using=>:btree})606 -> 0.0041s607-- add_index("issues", ["project_id", "created_at", "id", "state"], {:name=>"index_issues_on_project_id_and_created_at_and_id_and_state", :using=>:btree})608 -> 0.0040s609-- add_index("issues", ["project_id", "due_date", "id", "state"], {:name=>"idx_issues_on_project_id_and_due_date_and_id_and_state_partial", :where=>"(due_date IS NOT NULL)", :using=>:btree})610 -> 0.0042s611-- add_index("issues", ["project_id", "iid"], {:name=>"index_issues_on_project_id_and_iid", :unique=>true, :using=>:btree})612 -> 0.0041s613-- add_index("issues", ["project_id", "updated_at", "id", "state"], {:name=>"index_issues_on_project_id_and_updated_at_and_id_and_state", :using=>:btree})614 -> 0.0041s615-- add_index("issues", ["relative_position"], {:name=>"index_issues_on_relative_position", :using=>:btree})616 -> 0.0039s617-- add_index("issues", ["state"], {:name=>"index_issues_on_state", :using=>:btree})618 -> 0.0037s619-- add_index("issues", ["title"], {:name=>"index_issues_on_title_trigram", :using=>:gin, :opclasses=>{"title"=>"gin_trgm_ops"}})620 -> 0.0023s621-- add_index("issues", ["updated_at"], {:name=>"index_issues_on_updated_at", :using=>:btree})622 -> 0.0036s623-- add_index("issues", ["updated_by_id"], {:name=>"index_issues_on_updated_by_id", :where=>"(updated_by_id IS NOT NULL)", :using=>:btree})624 -> 0.0039s625-- create_table("keys", {:force=>:cascade})626 -> 0.0069s627-- add_index("keys", ["fingerprint"], {:name=>"index_keys_on_fingerprint", :unique=>true, :using=>:btree})628 -> 0.0040s629-- add_index("keys", ["user_id"], {:name=>"index_keys_on_user_id", :using=>:btree})630 -> 0.0038s631-- create_table("label_links", {:force=>:cascade})632 -> 0.0061s633-- add_index("label_links", ["label_id"], {:name=>"index_label_links_on_label_id", :using=>:btree})634 -> 0.0040s635-- add_index("label_links", ["target_id", "target_type"], {:name=>"index_label_links_on_target_id_and_target_type", :using=>:btree})636 -> 0.0039s637-- create_table("label_priorities", {:force=>:cascade})638 -> 0.0043s639-- add_index("label_priorities", ["priority"], {:name=>"index_label_priorities_on_priority", :using=>:btree})640 -> 0.0066s641-- add_index("label_priorities", ["project_id", "label_id"], {:name=>"index_label_priorities_on_project_id_and_label_id", :unique=>true, :using=>:btree})642 -> 0.0045s643-- create_table("labels", {:force=>:cascade})644 -> 0.0070s645-- add_index("labels", ["group_id", "project_id", "title"], {:name=>"index_labels_on_group_id_and_project_id_and_title", :unique=>true, :using=>:btree})646 -> 0.0043s647-- add_index("labels", ["project_id"], {:name=>"index_labels_on_project_id", :using=>:btree})648 -> 0.0040s649-- add_index("labels", ["template"], {:name=>"index_labels_on_template", :where=>"template", :using=>:btree})650 -> 0.0050s651-- add_index("labels", ["title"], {:name=>"index_labels_on_title", :using=>:btree})652 -> 0.0040s653-- add_index("labels", ["type", "project_id"], {:name=>"index_labels_on_type_and_project_id", :using=>:btree})654 -> 0.0050s655-- create_table("ldap_group_links", {:force=>:cascade})656 -> 0.0064s657-- create_table("lfs_file_locks", {:force=>:cascade})658 -> 0.0062s659-- add_index("lfs_file_locks", ["project_id", "path"], {:name=>"index_lfs_file_locks_on_project_id_and_path", :unique=>true, :using=>:btree})660 -> 0.0039s661-- add_index("lfs_file_locks", ["user_id"], {:name=>"index_lfs_file_locks_on_user_id", :using=>:btree})662 -> 0.0038s663-- create_table("lfs_objects", {:force=>:cascade})664 -> 0.0063s665-- add_index("lfs_objects", ["oid"], {:name=>"index_lfs_objects_on_oid", :unique=>true, :using=>:btree})666 -> 0.0041s667-- create_table("lfs_objects_projects", {:force=>:cascade})668 -> 0.0040s669-- add_index("lfs_objects_projects", ["project_id"], {:name=>"index_lfs_objects_projects_on_project_id", :using=>:btree})670 -> 0.0039s671-- create_table("licenses", {:force=>:cascade})672 -> 0.0066s673-- create_table("lists", {:force=>:cascade})674 -> 0.0047s675-- add_index("lists", ["board_id", "label_id"], {:name=>"index_lists_on_board_id_and_label_id", :unique=>true, :using=>:btree})676 -> 0.0044s677-- add_index("lists", ["label_id"], {:name=>"index_lists_on_label_id", :using=>:btree})678 -> 0.0043s679-- create_table("members", {:force=>:cascade})680 -> 0.0074s681-- add_index("members", ["access_level"], {:name=>"index_members_on_access_level", :using=>:btree})682 -> 0.0039s683-- add_index("members", ["invite_token"], {:name=>"index_members_on_invite_token", :unique=>true, :using=>:btree})684 -> 0.0045s685-- add_index("members", ["requested_at"], {:name=>"index_members_on_requested_at", :using=>:btree})686 -> 0.0041s687-- add_index("members", ["source_id", "source_type"], {:name=>"index_members_on_source_id_and_source_type", :using=>:btree})688 -> 0.0042s689-- add_index("members", ["user_id"], {:name=>"index_members_on_user_id", :using=>:btree})690 -> 0.0040s691-- create_table("merge_request_diff_commits", {:id=>false, :force=>:cascade})692 -> 0.0042s693-- add_index("merge_request_diff_commits", ["merge_request_diff_id", "relative_order"], {:name=>"index_merge_request_diff_commits_on_mr_diff_id_and_order", :unique=>true, :using=>:btree})694 -> 0.0039s695-- add_index("merge_request_diff_commits", ["sha"], {:name=>"index_merge_request_diff_commits_on_sha", :using=>:btree})696 -> 0.0039s697-- create_table("merge_request_diff_files", {:id=>false, :force=>:cascade})698 -> 0.0043s699-- add_index("merge_request_diff_files", ["merge_request_diff_id", "relative_order"], {:name=>"index_merge_request_diff_files_on_mr_diff_id_and_order", :unique=>true, :using=>:btree})700 -> 0.0039s701-- create_table("merge_request_diffs", {:force=>:cascade})702 -> 0.0065s703-- add_index("merge_request_diffs", ["merge_request_id", "id"], {:name=>"index_merge_request_diffs_on_merge_request_id_and_id", :using=>:btree})704 -> 0.0041s705-- create_table("merge_request_metrics", {:force=>:cascade})706 -> 0.0045s707-- add_index("merge_request_metrics", ["first_deployed_to_production_at"], {:name=>"index_merge_request_metrics_on_first_deployed_to_production_at", :using=>:btree})708 -> 0.0041s709-- add_index("merge_request_metrics", ["merge_request_id"], {:name=>"index_merge_request_metrics", :using=>:btree})710 -> 0.0038s711-- add_index("merge_request_metrics", ["pipeline_id"], {:name=>"index_merge_request_metrics_on_pipeline_id", :using=>:btree})712 -> 0.0038s713-- create_table("merge_requests", {:force=>:cascade})714 -> 0.0088s715-- add_index("merge_requests", ["assignee_id"], {:name=>"index_merge_requests_on_assignee_id", :using=>:btree})716 -> 0.0042s717-- add_index("merge_requests", ["author_id"], {:name=>"index_merge_requests_on_author_id", :using=>:btree})718 -> 0.0058s719-- add_index("merge_requests", ["created_at"], {:name=>"index_merge_requests_on_created_at", :using=>:btree})720 -> 0.0041s721-- add_index("merge_requests", ["description"], {:name=>"index_merge_requests_on_description_trigram", :using=>:gin, :opclasses=>{"description"=>"gin_trgm_ops"}})722 -> 0.0025s723-- add_index("merge_requests", ["head_pipeline_id"], {:name=>"index_merge_requests_on_head_pipeline_id", :using=>:btree})724 -> 0.0047s725-- add_index("merge_requests", ["latest_merge_request_diff_id"], {:name=>"index_merge_requests_on_latest_merge_request_diff_id", :using=>:btree})726 -> 0.0038s727-- add_index("merge_requests", ["merge_user_id"], {:name=>"index_merge_requests_on_merge_user_id", :where=>"(merge_user_id IS NOT NULL)", :using=>:btree})728 -> 0.0037s729-- add_index("merge_requests", ["milestone_id"], {:name=>"index_merge_requests_on_milestone_id", :using=>:btree})730 -> 0.0039s731-- add_index("merge_requests", ["source_branch"], {:name=>"index_merge_requests_on_source_branch", :using=>:btree})732 -> 0.0051s733-- add_index("merge_requests", ["source_project_id", "source_branch"], {:name=>"index_merge_requests_on_source_project_and_branch_state_opened", :where=>"((state)::text = 'opened'::text)", :using=>:btree})734 -> 0.0043s735-- add_index("merge_requests", ["source_project_id", "source_branch"], {:name=>"index_merge_requests_on_source_project_id_and_source_branch", :using=>:btree})736 -> 0.0041s737-- add_index("merge_requests", ["target_branch"], {:name=>"index_merge_requests_on_target_branch", :using=>:btree})738 -> 0.0040s739-- add_index("merge_requests", ["target_project_id", "iid"], {:name=>"index_merge_requests_on_target_project_id_and_iid", :unique=>true, :using=>:btree})740 -> 0.0042s741-- add_index("merge_requests", ["target_project_id", "iid"], {:name=>"index_merge_requests_on_target_project_id_and_iid_opened", :where=>"((state)::text = 'opened'::text)", :using=>:btree})742 -> 0.0041s743-- add_index("merge_requests", ["target_project_id", "merge_commit_sha", "id"], {:name=>"index_merge_requests_on_tp_id_and_merge_commit_sha_and_id", :using=>:btree})744 -> 0.0041s745-- add_index("merge_requests", ["title"], {:name=>"index_merge_requests_on_title", :using=>:btree})746 -> 0.0039s747-- add_index("merge_requests", ["title"], {:name=>"index_merge_requests_on_title_trigram", :using=>:gin, :opclasses=>{"title"=>"gin_trgm_ops"}})748 -> 0.0024s749-- add_index("merge_requests", ["updated_by_id"], {:name=>"index_merge_requests_on_updated_by_id", :where=>"(updated_by_id IS NOT NULL)", :using=>:btree})750 -> 0.0039s751-- create_table("merge_requests_closing_issues", {:force=>:cascade})752 -> 0.0047s753-- add_index("merge_requests_closing_issues", ["issue_id"], {:name=>"index_merge_requests_closing_issues_on_issue_id", :using=>:btree})754 -> 0.0044s755-- add_index("merge_requests_closing_issues", ["merge_request_id"], {:name=>"index_merge_requests_closing_issues_on_merge_request_id", :using=>:btree})756 -> 0.0046s757-- create_table("milestones", {:force=>:cascade})758 -> 0.0084s759-- add_index("milestones", ["description"], {:name=>"index_milestones_on_description_trigram", :using=>:gin, :opclasses=>{"description"=>"gin_trgm_ops"}})760 -> 0.0026s761-- add_index("milestones", ["due_date"], {:name=>"index_milestones_on_due_date", :using=>:btree})762 -> 0.0040s763-- add_index("milestones", ["group_id"], {:name=>"index_milestones_on_group_id", :using=>:btree})764 -> 0.0040s765-- add_index("milestones", ["project_id", "iid"], {:name=>"index_milestones_on_project_id_and_iid", :unique=>true, :using=>:btree})766 -> 0.0038s767-- add_index("milestones", ["title"], {:name=>"index_milestones_on_title", :using=>:btree})768 -> 0.0051s769-- add_index("milestones", ["title"], {:name=>"index_milestones_on_title_trigram", :using=>:gin, :opclasses=>{"title"=>"gin_trgm_ops"}})770 -> 0.0024s771-- create_table("namespace_statistics", {:force=>:cascade})772 -> 0.0047s773-- add_index("namespace_statistics", ["namespace_id"], {:name=>"index_namespace_statistics_on_namespace_id", :unique=>true, :using=>:btree})774 -> 0.0040s775-- create_table("namespaces", {:force=>:cascade})776 -> 0.0099s777-- add_index("namespaces", ["created_at"], {:name=>"index_namespaces_on_created_at", :using=>:btree})778 -> 0.0045s779-- add_index("namespaces", ["ldap_sync_last_successful_update_at"], {:name=>"index_namespaces_on_ldap_sync_last_successful_update_at", :using=>:btree})780 -> 0.0040s781-- add_index("namespaces", ["ldap_sync_last_update_at"], {:name=>"index_namespaces_on_ldap_sync_last_update_at", :using=>:btree})782 -> 0.0039s783-- add_index("namespaces", ["name", "parent_id"], {:name=>"index_namespaces_on_name_and_parent_id", :unique=>true, :using=>:btree})784 -> 0.0041s785-- add_index("namespaces", ["name"], {:name=>"index_namespaces_on_name_trigram", :using=>:gin, :opclasses=>{"name"=>"gin_trgm_ops"}})786 -> 0.0025s787-- add_index("namespaces", ["owner_id"], {:name=>"index_namespaces_on_owner_id", :using=>:btree})788 -> 0.0040s789-- add_index("namespaces", ["parent_id", "id"], {:name=>"index_namespaces_on_parent_id_and_id", :unique=>true, :using=>:btree})790 -> 0.0040s791-- add_index("namespaces", ["path"], {:name=>"index_namespaces_on_path", :using=>:btree})792 -> 0.0040s793-- add_index("namespaces", ["path"], {:name=>"index_namespaces_on_path_trigram", :using=>:gin, :opclasses=>{"path"=>"gin_trgm_ops"}})794 -> 0.0024s795-- add_index("namespaces", ["plan_id"], {:name=>"index_namespaces_on_plan_id", :using=>:btree})796 -> 0.0040s797-- add_index("namespaces", ["require_two_factor_authentication"], {:name=>"index_namespaces_on_require_two_factor_authentication", :using=>:btree})798 -> 0.0041s799-- add_index("namespaces", ["runners_token"], {:name=>"index_namespaces_on_runners_token", :unique=>true, :using=>:btree})800 -> 0.0039s801-- add_index("namespaces", ["type"], {:name=>"index_namespaces_on_type", :using=>:btree})802 -> 0.0041s803-- create_table("note_diff_files", {:force=>:cascade})804 -> 0.0066s805-- add_index("note_diff_files", ["diff_note_id"], {:name=>"index_note_diff_files_on_diff_note_id", :unique=>true, :using=>:btree})806 -> 0.0039s807-- create_table("notes", {:force=>:cascade})808 -> 0.0073s809-- add_index("notes", ["author_id"], {:name=>"index_notes_on_author_id", :using=>:btree})810 -> 0.0039s811-- add_index("notes", ["commit_id"], {:name=>"index_notes_on_commit_id", :using=>:btree})812 -> 0.0040s813-- add_index("notes", ["created_at"], {:name=>"index_notes_on_created_at", :using=>:btree})814 -> 0.0039s815-- add_index("notes", ["discussion_id"], {:name=>"index_notes_on_discussion_id", :using=>:btree})816 -> 0.0041s817-- add_index("notes", ["line_code"], {:name=>"index_notes_on_line_code", :using=>:btree})818 -> 0.0040s819-- add_index("notes", ["note"], {:name=>"index_notes_on_note_trigram", :using=>:gin, :opclasses=>{"note"=>"gin_trgm_ops"}})820 -> 0.0024s821-- add_index("notes", ["noteable_id", "noteable_type"], {:name=>"index_notes_on_noteable_id_and_noteable_type", :using=>:btree})822 -> 0.0044s823-- add_index("notes", ["noteable_type"], {:name=>"index_notes_on_noteable_type", :using=>:btree})824 -> 0.0039s825-- add_index("notes", ["project_id", "noteable_type"], {:name=>"index_notes_on_project_id_and_noteable_type", :using=>:btree})826 -> 0.0040s827-- add_index("notes", ["updated_at"], {:name=>"index_notes_on_updated_at", :using=>:btree})828 -> 0.0039s829-- create_table("notification_settings", {:force=>:cascade})830 -> 0.0072s831-- add_index("notification_settings", ["source_id", "source_type"], {:name=>"index_notification_settings_on_source_id_and_source_type", :using=>:btree})832 -> 0.0042s833-- add_index("notification_settings", ["user_id", "source_id", "source_type"], {:name=>"index_notifications_on_user_id_and_source_id_and_source_type", :unique=>true, :using=>:btree})834 -> 0.0040s835-- add_index("notification_settings", ["user_id"], {:name=>"index_notification_settings_on_user_id", :using=>:btree})836 -> 0.0040s837-- create_table("oauth_access_grants", {:force=>:cascade})838 -> 0.0066s839-- add_index("oauth_access_grants", ["token"], {:name=>"index_oauth_access_grants_on_token", :unique=>true, :using=>:btree})840 -> 0.0042s841-- create_table("oauth_access_tokens", {:force=>:cascade})842 -> 0.0065s843-- add_index("oauth_access_tokens", ["refresh_token"], {:name=>"index_oauth_access_tokens_on_refresh_token", :unique=>true, :using=>:btree})844 -> 0.0043s845-- add_index("oauth_access_tokens", ["resource_owner_id"], {:name=>"index_oauth_access_tokens_on_resource_owner_id", :using=>:btree})846 -> 0.0042s847-- add_index("oauth_access_tokens", ["token"], {:name=>"index_oauth_access_tokens_on_token", :unique=>true, :using=>:btree})848 -> 0.0041s849-- create_table("oauth_applications", {:force=>:cascade})850 -> 0.0079s851-- add_index("oauth_applications", ["owner_id", "owner_type"], {:name=>"index_oauth_applications_on_owner_id_and_owner_type", :using=>:btree})852 -> 0.0042s853-- add_index("oauth_applications", ["uid"], {:name=>"index_oauth_applications_on_uid", :unique=>true, :using=>:btree})854 -> 0.0040s855-- create_table("oauth_openid_requests", {:force=>:cascade})856 -> 0.0063s857-- create_table("pages_domains", {:force=>:cascade})858 -> 0.0066s859-- add_index("pages_domains", ["domain"], {:name=>"index_pages_domains_on_domain", :unique=>true, :using=>:btree})860 -> 0.0040s861-- add_index("pages_domains", ["project_id", "enabled_until"], {:name=>"index_pages_domains_on_project_id_and_enabled_until", :using=>:btree})862 -> 0.0044s863-- add_index("pages_domains", ["project_id"], {:name=>"index_pages_domains_on_project_id", :using=>:btree})864 -> 0.0040s865-- add_index("pages_domains", ["verified_at", "enabled_until"], {:name=>"index_pages_domains_on_verified_at_and_enabled_until", :using=>:btree})866 -> 0.0041s867-- add_index("pages_domains", ["verified_at"], {:name=>"index_pages_domains_on_verified_at", :using=>:btree})868 -> 0.0063s869-- create_table("path_locks", {:force=>:cascade})870 -> 0.0068s871-- add_index("path_locks", ["path"], {:name=>"index_path_locks_on_path", :using=>:btree})872 -> 0.0040s873-- add_index("path_locks", ["project_id"], {:name=>"index_path_locks_on_project_id", :using=>:btree})874 -> 0.0040s875-- add_index("path_locks", ["user_id"], {:name=>"index_path_locks_on_user_id", :using=>:btree})876 -> 0.0040s877-- create_table("personal_access_tokens", {:force=>:cascade})878 -> 0.0078s879-- add_index("personal_access_tokens", ["token"], {:name=>"index_personal_access_tokens_on_token", :unique=>true, :using=>:btree})880 -> 0.0040s881-- add_index("personal_access_tokens", ["user_id"], {:name=>"index_personal_access_tokens_on_user_id", :using=>:btree})882 -> 0.0040s883-- create_table("plans", {:force=>:cascade})884 -> 0.0069s885-- add_index("plans", ["name"], {:name=>"index_plans_on_name", :using=>:btree})886 -> 0.0044s887-- create_table("project_authorizations", {:id=>false, :force=>:cascade})888 -> 0.0018s889-- add_index("project_authorizations", ["project_id"], {:name=>"index_project_authorizations_on_project_id", :using=>:btree})890 -> 0.0040s891-- add_index("project_authorizations", ["user_id", "project_id", "access_level"], {:name=>"index_project_authorizations_on_user_id_project_id_access_level", :unique=>true, :using=>:btree})892 -> 0.0041s893-- create_table("project_auto_devops", {:force=>:cascade})894 -> 0.0065s895-- add_index("project_auto_devops", ["project_id"], {:name=>"index_project_auto_devops_on_project_id", :unique=>true, :using=>:btree})896 -> 0.0050s897-- create_table("project_ci_cd_settings", {:force=>:cascade})898 -> 0.0049s899-- add_index("project_ci_cd_settings", ["project_id"], {:name=>"index_project_ci_cd_settings_on_project_id", :unique=>true, :using=>:btree})900 -> 0.0040s901-- create_table("project_custom_attributes", {:force=>:cascade})902 -> 0.0064s903-- add_index("project_custom_attributes", ["key", "value"], {:name=>"index_project_custom_attributes_on_key_and_value", :using=>:btree})904 -> 0.0041s905-- add_index("project_custom_attributes", ["project_id", "key"], {:name=>"index_project_custom_attributes_on_project_id_and_key", :unique=>true, :using=>:btree})906 -> 0.0051s907-- create_table("project_deploy_tokens", {:force=>:cascade})908 -> 0.0047s909-- add_index("project_deploy_tokens", ["project_id", "deploy_token_id"], {:name=>"index_project_deploy_tokens_on_project_id_and_deploy_token_id", :unique=>true, :using=>:btree})910 -> 0.0041s911-- create_table("project_features", {:force=>:cascade})912 -> 0.0048s913-- add_index("project_features", ["project_id"], {:name=>"index_project_features_on_project_id", :unique=>true, :using=>:btree})914 -> 0.0041s915-- create_table("project_group_links", {:force=>:cascade})916 -> 0.0056s917-- add_index("project_group_links", ["group_id"], {:name=>"index_project_group_links_on_group_id", :using=>:btree})918 -> 0.0039s919-- add_index("project_group_links", ["project_id"], {:name=>"index_project_group_links_on_project_id", :using=>:btree})920 -> 0.0039s921-- create_table("project_import_data", {:force=>:cascade})922 -> 0.0061s923-- add_index("project_import_data", ["project_id"], {:name=>"index_project_import_data_on_project_id", :using=>:btree})924 -> 0.0040s925-- create_table("project_mirror_data", {:force=>:cascade})926 -> 0.0075s927-- add_index("project_mirror_data", ["jid"], {:name=>"index_project_mirror_data_on_jid", :using=>:btree})928 -> 0.0042s929-- add_index("project_mirror_data", ["last_successful_update_at"], {:name=>"index_project_mirror_data_on_last_successful_update_at", :using=>:btree})930 -> 0.0041s931-- add_index("project_mirror_data", ["next_execution_timestamp", "retry_count"], {:name=>"index_mirror_data_on_next_execution_and_retry_count", :using=>:btree})932 -> 0.0045s933-- add_index("project_mirror_data", ["project_id"], {:name=>"index_project_mirror_data_on_project_id", :unique=>true, :using=>:btree})934 -> 0.0042s935-- add_index("project_mirror_data", ["status"], {:name=>"index_project_mirror_data_on_status", :using=>:btree})936 -> 0.0041s937-- create_table("project_repository_states", {:force=>:cascade})938 -> 0.0062s939-- add_index("project_repository_states", ["last_repository_verification_failure"], {:name=>"idx_repository_states_on_repository_failure_partial", :where=>"(last_repository_verification_failure IS NOT NULL)", :using=>:btree})940 -> 0.0040s941-- add_index("project_repository_states", ["last_wiki_verification_failure"], {:name=>"idx_repository_states_on_wiki_failure_partial", :where=>"(last_wiki_verification_failure IS NOT NULL)", :using=>:btree})942 -> 0.0040s943-- add_index("project_repository_states", ["project_id"], {:name=>"idx_repository_states_outdated_checksums", :where=>"(((repository_verification_checksum IS NULL) AND (last_repository_verification_failure IS NULL)) OR ((wiki_verification_checksum IS NULL) AND (last_wiki_verification_failure IS NULL)))", :using=>:btree})944 -> 0.0042s945-- add_index("project_repository_states", ["project_id"], {:name=>"index_project_repository_states_on_project_id", :unique=>true, :using=>:btree})946 -> 0.0041s947-- create_table("project_statistics", {:force=>:cascade})948 -> 0.0063s949-- add_index("project_statistics", ["namespace_id"], {:name=>"index_project_statistics_on_namespace_id", :using=>:btree})950 -> 0.0041s951-- add_index("project_statistics", ["project_id"], {:name=>"index_project_statistics_on_project_id", :unique=>true, :using=>:btree})952 -> 0.0042s953-- create_table("projects", {:force=>:cascade})954 -> 0.0143s955-- add_index("projects", ["ci_id"], {:name=>"index_projects_on_ci_id", :using=>:btree})956 -> 0.0043s957-- add_index("projects", ["created_at"], {:name=>"index_projects_on_created_at", :using=>:btree})958 -> 0.0041s959-- add_index("projects", ["creator_id"], {:name=>"index_projects_on_creator_id", :using=>:btree})960 -> 0.0040s961-- add_index("projects", ["description"], {:name=>"index_projects_on_description_trigram", :using=>:gin, :opclasses=>{"description"=>"gin_trgm_ops"}})962 -> 0.0025s963-- add_index("projects", ["id"], {:name=>"index_projects_on_id_partial_for_visibility", :unique=>true, :where=>"(visibility_level = ANY (ARRAY[10, 20]))", :using=>:btree})964 -> 0.0041s965-- add_index("projects", ["id"], {:name=>"index_projects_on_mirror_and_mirror_trigger_builds_both_true", :where=>"((mirror IS TRUE) AND (mirror_trigger_builds IS TRUE))", :using=>:btree})966 -> 0.0038s967-- add_index("projects", ["last_activity_at"], {:name=>"index_projects_on_last_activity_at", :using=>:btree})968 -> 0.0040s969-- add_index("projects", ["last_repository_check_failed"], {:name=>"index_projects_on_last_repository_check_failed", :using=>:btree})970 -> 0.0039s971-- add_index("projects", ["last_repository_updated_at"], {:name=>"index_projects_on_last_repository_updated_at", :using=>:btree})972 -> 0.0040s973-- add_index("projects", ["mirror_last_successful_update_at"], {:name=>"index_projects_on_mirror_last_successful_update_at", :using=>:btree})974 -> 0.0039s975-- add_index("projects", ["name"], {:name=>"index_projects_on_name_trigram", :using=>:gin, :opclasses=>{"name"=>"gin_trgm_ops"}})976 -> 0.0024s977-- add_index("projects", ["namespace_id"], {:name=>"index_projects_on_namespace_id", :using=>:btree})978 -> 0.0043s979-- add_index("projects", ["path"], {:name=>"index_projects_on_path", :using=>:btree})980 -> 0.0041s981-- add_index("projects", ["path"], {:name=>"index_projects_on_path_trigram", :using=>:gin, :opclasses=>{"path"=>"gin_trgm_ops"}})982 -> 0.0025s983-- add_index("projects", ["pending_delete"], {:name=>"index_projects_on_pending_delete", :using=>:btree})984 -> 0.0040s985-- add_index("projects", ["repository_storage"], {:name=>"index_projects_on_repository_storage", :using=>:btree})986 -> 0.0048s987-- add_index("projects", ["runners_token"], {:name=>"index_projects_on_runners_token", :using=>:btree})988 -> 0.0041s989-- add_index("projects", ["star_count"], {:name=>"index_projects_on_star_count", :using=>:btree})990 -> 0.0040s991-- add_index("projects", ["visibility_level"], {:name=>"index_projects_on_visibility_level", :using=>:btree})992 -> 0.0039s993-- create_table("prometheus_metrics", {:force=>:cascade})994 -> 0.0069s995-- add_index("prometheus_metrics", ["group"], {:name=>"index_prometheus_metrics_on_group", :using=>:btree})996 -> 0.0039s997-- add_index("prometheus_metrics", ["project_id"], {:name=>"index_prometheus_metrics_on_project_id", :using=>:btree})998 -> 0.0041s999-- create_table("protected_branch_merge_access_levels", {:force=>:cascade})1000 -> 0.0051s1001-- add_index("protected_branch_merge_access_levels", ["protected_branch_id"], {:name=>"index_protected_branch_merge_access", :using=>:btree})1002 -> 0.0039s1003-- add_index("protected_branch_merge_access_levels", ["user_id"], {:name=>"index_protected_branch_merge_access_levels_on_user_id", :using=>:btree})1004 -> 0.0038s1005-- create_table("protected_branch_push_access_levels", {:force=>:cascade})1006 -> 0.0048s1007-- add_index("protected_branch_push_access_levels", ["protected_branch_id"], {:name=>"index_protected_branch_push_access", :using=>:btree})1008 -> 0.0039s1009-- add_index("protected_branch_push_access_levels", ["user_id"], {:name=>"index_protected_branch_push_access_levels_on_user_id", :using=>:btree})1010 -> 0.0039s1011-- create_table("protected_branch_unprotect_access_levels", {:force=>:cascade})1012 -> 0.0048s1013-- add_index("protected_branch_unprotect_access_levels", ["group_id"], {:name=>"index_protected_branch_unprotect_access_levels_on_group_id", :using=>:btree})1014 -> 0.0039s1015-- add_index("protected_branch_unprotect_access_levels", ["protected_branch_id"], {:name=>"index_protected_branch_unprotect_access", :using=>:btree})1016 -> 0.0041s1017-- add_index("protected_branch_unprotect_access_levels", ["user_id"], {:name=>"index_protected_branch_unprotect_access_levels_on_user_id", :using=>:btree})1018 -> 0.0039s1019-- create_table("protected_branches", {:force=>:cascade})1020 -> 0.0062s1021-- add_index("protected_branches", ["project_id"], {:name=>"index_protected_branches_on_project_id", :using=>:btree})1022 -> 0.0040s1023-- create_table("protected_tag_create_access_levels", {:force=>:cascade})1024 -> 0.0046s1025-- add_index("protected_tag_create_access_levels", ["protected_tag_id"], {:name=>"index_protected_tag_create_access", :using=>:btree})1026 -> 0.0042s1027-- add_index("protected_tag_create_access_levels", ["user_id"], {:name=>"index_protected_tag_create_access_levels_on_user_id", :using=>:btree})1028 -> 0.0040s1029-- create_table("protected_tags", {:force=>:cascade})1030 -> 0.0077s1031-- add_index("protected_tags", ["project_id"], {:name=>"index_protected_tags_on_project_id", :using=>:btree})1032 -> 0.0041s1033-- create_table("push_event_payloads", {:id=>false, :force=>:cascade})1034 -> 0.0041s1035-- add_index("push_event_payloads", ["event_id"], {:name=>"index_push_event_payloads_on_event_id", :unique=>true, :using=>:btree})1036 -> 0.0038s1037-- create_table("push_rules", {:force=>:cascade})1038 -> 0.0081s1039-- add_index("push_rules", ["is_sample"], {:name=>"index_push_rules_on_is_sample", :where=>"is_sample", :using=>:btree})1040 -> 0.0040s1041-- add_index("push_rules", ["project_id"], {:name=>"index_push_rules_on_project_id", :using=>:btree})1042 -> 0.0039s1043-- create_table("redirect_routes", {:force=>:cascade})1044 -> 0.0066s1045-- add_index("redirect_routes", ["path"], {:name=>"index_redirect_routes_on_path", :unique=>true, :using=>:btree})1046 -> 0.0041s1047-- add_index("redirect_routes", ["source_type", "source_id"], {:name=>"index_redirect_routes_on_source_type_and_source_id", :using=>:btree})1048 -> 0.0039s1049-- create_table("releases", {:force=>:cascade})1050 -> 0.0067s1051-- add_index("releases", ["project_id", "tag"], {:name=>"index_releases_on_project_id_and_tag", :using=>:btree})1052 -> 0.0039s1053-- add_index("releases", ["project_id"], {:name=>"index_releases_on_project_id", :using=>:btree})1054 -> 0.0038s1055-- create_table("remote_mirrors", {:force=>:cascade})1056 -> 0.0070s1057-- add_index("remote_mirrors", ["last_successful_update_at"], {:name=>"index_remote_mirrors_on_last_successful_update_at", :using=>:btree})1058 -> 0.0040s1059-- add_index("remote_mirrors", ["project_id"], {:name=>"index_remote_mirrors_on_project_id", :using=>:btree})1060 -> 0.0039s1061-- create_table("routes", {:force=>:cascade})1062 -> 0.0065s1063-- add_index("routes", ["path"], {:name=>"index_routes_on_path", :unique=>true, :using=>:btree})1064 -> 0.0041s1065-- add_index("routes", ["path"], {:name=>"index_routes_on_path_text_pattern_ops", :using=>:btree, :opclasses=>{"path"=>"varchar_pattern_ops"}})1066 -> 0.0042s1067-- add_index("routes", ["source_type", "source_id"], {:name=>"index_routes_on_source_type_and_source_id", :unique=>true, :using=>:btree})1068 -> 0.0039s1069-- create_table("saml_providers", {:force=>:cascade})1070 -> 0.0068s1071-- add_index("saml_providers", ["group_id"], {:name=>"index_saml_providers_on_group_id", :using=>:btree})1072 -> 0.0042s1073-- create_table("sent_notifications", {:force=>:cascade})1074 -> 0.0065s1075-- add_index("sent_notifications", ["reply_key"], {:name=>"index_sent_notifications_on_reply_key", :unique=>true, :using=>:btree})1076 -> 0.0044s1077-- create_table("services", {:force=>:cascade})1078 -> 0.0116s1079-- add_index("services", ["project_id"], {:name=>"index_services_on_project_id", :using=>:btree})1080 -> 0.0038s1081-- add_index("services", ["template"], {:name=>"index_services_on_template", :using=>:btree})1082 -> 0.0038s1083-- create_table("slack_integrations", {:force=>:cascade})1084 -> 0.0066s1085-- add_index("slack_integrations", ["service_id"], {:name=>"index_slack_integrations_on_service_id", :using=>:btree})1086 -> 0.0039s1087-- add_index("slack_integrations", ["team_id", "alias"], {:name=>"index_slack_integrations_on_team_id_and_alias", :unique=>true, :using=>:btree})1088 -> 0.0040s1089-- create_table("snippets", {:force=>:cascade})1090 -> 0.0073s1091-- add_index("snippets", ["author_id"], {:name=>"index_snippets_on_author_id", :using=>:btree})1092 -> 0.0043s1093-- add_index("snippets", ["file_name"], {:name=>"index_snippets_on_file_name_trigram", :using=>:gin, :opclasses=>{"file_name"=>"gin_trgm_ops"}})1094 -> 0.0025s1095-- add_index("snippets", ["project_id"], {:name=>"index_snippets_on_project_id", :using=>:btree})1096 -> 0.0041s1097-- add_index("snippets", ["title"], {:name=>"index_snippets_on_title_trigram", :using=>:gin, :opclasses=>{"title"=>"gin_trgm_ops"}})1098 -> 0.0025s1099-- add_index("snippets", ["updated_at"], {:name=>"index_snippets_on_updated_at", :using=>:btree})1100 -> 0.0041s1101-- add_index("snippets", ["visibility_level"], {:name=>"index_snippets_on_visibility_level", :using=>:btree})1102 -> 0.0040s1103-- create_table("spam_logs", {:force=>:cascade})1104 -> 0.0074s1105-- create_table("subscriptions", {:force=>:cascade})1106 -> 0.0068s1107-- add_index("subscriptions", ["subscribable_id", "subscribable_type", "user_id", "project_id"], {:name=>"index_subscriptions_on_subscribable_and_user_id_and_project_id", :unique=>true, :using=>:btree})1108 -> 0.0042s1109-- create_table("system_note_metadata", {:force=>:cascade})1110 -> 0.0063s1111-- add_index("system_note_metadata", ["note_id"], {:name=>"index_system_note_metadata_on_note_id", :unique=>true, :using=>:btree})1112 -> 0.0040s1113-- create_table("taggings", {:force=>:cascade})1114 -> 0.0066s1115-- add_index("taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], {:name=>"taggings_idx", :unique=>true, :using=>:btree})1116 -> 0.0042s1117-- add_index("taggings", ["tag_id"], {:name=>"index_taggings_on_tag_id", :using=>:btree})1118 -> 0.0040s1119-- add_index("taggings", ["taggable_id", "taggable_type", "context"], {:name=>"index_taggings_on_taggable_id_and_taggable_type_and_context", :using=>:btree})1120 -> 0.0042s1121-- add_index("taggings", ["taggable_id", "taggable_type"], {:name=>"index_taggings_on_taggable_id_and_taggable_type", :using=>:btree})1122 -> 0.0040s1123-- create_table("tags", {:force=>:cascade})1124 -> 0.0068s1125-- add_index("tags", ["name"], {:name=>"index_tags_on_name", :unique=>true, :using=>:btree})1126 -> 0.0040s1127-- create_table("term_agreements", {:force=>:cascade})1128 -> 0.0047s1129-- add_index("term_agreements", ["term_id"], {:name=>"index_term_agreements_on_term_id", :using=>:btree})1130 -> 0.0048s1131-- add_index("term_agreements", ["user_id", "term_id"], {:name=>"term_agreements_unique_index", :unique=>true, :using=>:btree})1132 -> 0.0042s1133-- add_index("term_agreements", ["user_id"], {:name=>"index_term_agreements_on_user_id", :using=>:btree})1134 -> 0.0046s1135-- create_table("timelogs", {:force=>:cascade})1136 -> 0.0043s1137-- add_index("timelogs", ["issue_id"], {:name=>"index_timelogs_on_issue_id", :using=>:btree})1138 -> 0.0040s1139-- add_index("timelogs", ["merge_request_id"], {:name=>"index_timelogs_on_merge_request_id", :using=>:btree})1140 -> 0.0039s1141-- add_index("timelogs", ["user_id"], {:name=>"index_timelogs_on_user_id", :using=>:btree})1142 -> 0.0042s1143-- create_table("todos", {:force=>:cascade})1144 -> 0.0068s1145-- add_index("todos", ["author_id"], {:name=>"index_todos_on_author_id", :using=>:btree})1146 -> 0.0042s1147-- add_index("todos", ["commit_id"], {:name=>"index_todos_on_commit_id", :using=>:btree})1148 -> 0.0123s1149-- add_index("todos", ["note_id"], {:name=>"index_todos_on_note_id", :using=>:btree})1150 -> 0.0053s1151-- add_index("todos", ["project_id"], {:name=>"index_todos_on_project_id", :using=>:btree})1152 -> 0.0046s1153-- add_index("todos", ["target_type", "target_id"], {:name=>"index_todos_on_target_type_and_target_id", :using=>:btree})1154 -> 0.0045s1155-- add_index("todos", ["user_id", "id"], {:name=>"index_todos_on_user_id_and_id_done", :where=>"((state)::text = 'done'::text)", :using=>:btree})1156 -> 0.0046s1157-- add_index("todos", ["user_id", "id"], {:name=>"index_todos_on_user_id_and_id_pending", :where=>"((state)::text = 'pending'::text)", :using=>:btree})1158 -> 0.0044s1159-- add_index("todos", ["user_id"], {:name=>"index_todos_on_user_id", :using=>:btree})1160 -> 0.0040s1161-- create_table("trending_projects", {:force=>:cascade})1162 -> 0.0043s1163-- add_index("trending_projects", ["project_id"], {:name=>"index_trending_projects_on_project_id", :unique=>true, :using=>:btree})1164 -> 0.0039s1165-- create_table("u2f_registrations", {:force=>:cascade})1166 -> 0.0065s1167-- add_index("u2f_registrations", ["key_handle"], {:name=>"index_u2f_registrations_on_key_handle", :using=>:btree})1168 -> 0.0042s1169-- add_index("u2f_registrations", ["user_id"], {:name=>"index_u2f_registrations_on_user_id", :using=>:btree})1170 -> 0.0041s1171-- create_table("uploads", {:force=>:cascade})1172 -> 0.0067s1173-- add_index("uploads", ["checksum"], {:name=>"index_uploads_on_checksum", :using=>:btree})1174 -> 0.0041s1175-- add_index("uploads", ["model_id", "model_type"], {:name=>"index_uploads_on_model_id_and_model_type", :using=>:btree})1176 -> 0.0051s1177-- add_index("uploads", ["uploader", "path"], {:name=>"index_uploads_on_uploader_and_path", :using=>:btree})1178 -> 0.0040s1179-- create_table("user_agent_details", {:force=>:cascade})1180 -> 0.0074s1181-- add_index("user_agent_details", ["subject_id", "subject_type"], {:name=>"index_user_agent_details_on_subject_id_and_subject_type", :using=>:btree})1182 -> 0.0040s1183-- create_table("user_callouts", {:force=>:cascade})1184 -> 0.0043s1185-- add_index("user_callouts", ["user_id", "feature_name"], {:name=>"index_user_callouts_on_user_id_and_feature_name", :unique=>true, :using=>:btree})1186 -> 0.0046s1187-- add_index("user_callouts", ["user_id"], {:name=>"index_user_callouts_on_user_id", :using=>:btree})1188 -> 0.0041s1189-- create_table("user_custom_attributes", {:force=>:cascade})1190 -> 0.0078s1191-- add_index("user_custom_attributes", ["key", "value"], {:name=>"index_user_custom_attributes_on_key_and_value", :using=>:btree})1192 -> 0.0040s1193-- add_index("user_custom_attributes", ["user_id", "key"], {:name=>"index_user_custom_attributes_on_user_id_and_key", :unique=>true, :using=>:btree})1194 -> 0.0039s1195-- create_table("user_interacted_projects", {:id=>false, :force=>:cascade})1196 -> 0.0017s1197-- add_index("user_interacted_projects", ["project_id", "user_id"], {:name=>"index_user_interacted_projects_on_project_id_and_user_id", :unique=>true, :using=>:btree})1198 -> 0.0040s1199-- add_index("user_interacted_projects", ["user_id"], {:name=>"index_user_interacted_projects_on_user_id", :using=>:btree})1200 -> 0.0040s1201-- create_table("user_synced_attributes_metadata", {:force=>:cascade})1202 -> 0.0076s1203-- add_index("user_synced_attributes_metadata", ["user_id"], {:name=>"index_user_synced_attributes_metadata_on_user_id", :unique=>true, :using=>:btree})1204 -> 0.0041s1205-- create_table("users", {:force=>:cascade})1206 -> 0.0164s1207-- add_index("users", ["admin"], {:name=>"index_users_on_admin", :using=>:btree})1208 -> 0.0046s1209-- add_index("users", ["confirmation_token"], {:name=>"index_users_on_confirmation_token", :unique=>true, :using=>:btree})1210 -> 0.0040s1211-- add_index("users", ["created_at"], {:name=>"index_users_on_created_at", :using=>:btree})1212 -> 0.0040s1213-- add_index("users", ["email"], {:name=>"index_users_on_email", :unique=>true, :using=>:btree})1214 -> 0.0040s1215-- add_index("users", ["email"], {:name=>"index_users_on_email_trigram", :using=>:gin, :opclasses=>{"email"=>"gin_trgm_ops"}})1216 -> 0.0026s1217-- add_index("users", ["feed_token"], {:name=>"index_users_on_feed_token", :using=>:btree})1218 -> 0.0044s1219-- add_index("users", ["ghost"], {:name=>"index_users_on_ghost", :using=>:btree})1220 -> 0.0040s1221-- add_index("users", ["incoming_email_token"], {:name=>"index_users_on_incoming_email_token", :using=>:btree})1222 -> 0.0040s1223-- add_index("users", ["name"], {:name=>"index_users_on_name", :using=>:btree})1224 -> 0.0041s1225-- add_index("users", ["name"], {:name=>"index_users_on_name_trigram", :using=>:gin, :opclasses=>{"name"=>"gin_trgm_ops"}})1226 -> 0.0024s1227-- add_index("users", ["reset_password_token"], {:name=>"index_users_on_reset_password_token", :unique=>true, :using=>:btree})1228 -> 0.0043s1229-- add_index("users", ["state"], {:name=>"index_users_on_state", :using=>:btree})1230 -> 0.0041s1231-- add_index("users", ["state"], {:name=>"index_users_on_state_and_internal_attrs", :where=>"((ghost <> true) AND (support_bot <> true))", :using=>:btree})1232 -> 0.0043s1233-- add_index("users", ["support_bot"], {:name=>"index_users_on_support_bot", :using=>:btree})1234 -> 0.0040s1235-- add_index("users", ["username"], {:name=>"index_users_on_username", :using=>:btree})1236 -> 0.0051s1237-- add_index("users", ["username"], {:name=>"index_users_on_username_trigram", :using=>:gin, :opclasses=>{"username"=>"gin_trgm_ops"}})1238 -> 0.0027s1239-- create_table("users_star_projects", {:force=>:cascade})1240 -> 0.0044s1241-- add_index("users_star_projects", ["project_id"], {:name=>"index_users_star_projects_on_project_id", :using=>:btree})1242 -> 0.0041s1243-- add_index("users_star_projects", ["user_id", "project_id"], {:name=>"index_users_star_projects_on_user_id_and_project_id", :unique=>true, :using=>:btree})1244 -> 0.0040s1245-- create_table("vulnerability_feedback", {:force=>:cascade})1246 -> 0.0045s1247-- add_index("vulnerability_feedback", ["author_id"], {:name=>"index_vulnerability_feedback_on_author_id", :using=>:btree})1248 -> 0.0040s1249-- add_index("vulnerability_feedback", ["issue_id"], {:name=>"index_vulnerability_feedback_on_issue_id", :using=>:btree})1250 -> 0.0038s1251-- add_index("vulnerability_feedback", ["pipeline_id"], {:name=>"index_vulnerability_feedback_on_pipeline_id", :using=>:btree})1252 -> 0.0040s1253-- add_index("vulnerability_feedback", ["project_id", "category", "feedback_type", "project_fingerprint"], {:name=>"vulnerability_feedback_unique_idx", :unique=>true, :using=>:btree})1254 -> 0.0041s1255-- create_table("web_hook_logs", {:force=>:cascade})1256 -> 0.0072s1257-- add_index("web_hook_logs", ["web_hook_id"], {:name=>"index_web_hook_logs_on_web_hook_id", :using=>:btree})1258 -> 0.0043s1259-- create_table("web_hooks", {:force=>:cascade})1260 -> 0.0116s1261-- add_index("web_hooks", ["project_id"], {:name=>"index_web_hooks_on_project_id", :using=>:btree})1262 -> 0.0051s1263-- add_index("web_hooks", ["type"], {:name=>"index_web_hooks_on_type", :using=>:btree})1264 -> 0.0042s1265-- add_foreign_key("approvals", "merge_requests", {:name=>"fk_310d714958", :on_delete=>:cascade})1266 -> 0.0027s1267-- add_foreign_key("approver_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1268 -> 0.0020s1269-- add_foreign_key("badges", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1270 -> 0.0017s1271-- add_foreign_key("badges", "projects", {:on_delete=>:cascade})1272 -> 0.0030s1273-- add_foreign_key("board_assignees", "boards", {:on_delete=>:cascade})1274 -> 0.0018s1275-- add_foreign_key("board_assignees", "users", {:column=>"assignee_id", :on_delete=>:cascade})1276 -> 0.0022s1277-- add_foreign_key("board_labels", "boards", {:on_delete=>:cascade})1278 -> 0.0016s1279-- add_foreign_key("board_labels", "labels", {:on_delete=>:cascade})1280 -> 0.0017s1281-- add_foreign_key("boards", "namespaces", {:column=>"group_id", :name=>"fk_1e9a074a35", :on_delete=>:cascade})1282 -> 0.0017s1283-- add_foreign_key("boards", "projects", {:name=>"fk_f15266b5f9", :on_delete=>:cascade})1284 -> 0.0017s1285-- add_foreign_key("chat_teams", "namespaces", {:on_delete=>:cascade})1286 -> 0.0017s1287-- add_foreign_key("ci_build_trace_chunks", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})1288 -> 0.0020s1289-- add_foreign_key("ci_build_trace_section_names", "projects", {:on_delete=>:cascade})1290 -> 0.0017s1291-- add_foreign_key("ci_build_trace_sections", "ci_build_trace_section_names", {:column=>"section_name_id", :name=>"fk_264e112c66", :on_delete=>:cascade})1292 -> 0.0017s1293-- add_foreign_key("ci_build_trace_sections", "ci_builds", {:column=>"build_id", :name=>"fk_4ebe41f502", :on_delete=>:cascade})1294 -> 0.0015s1295-- add_foreign_key("ci_build_trace_sections", "projects", {:on_delete=>:cascade})1296 -> 0.0017s1297-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_a2141b1522", :on_delete=>:nullify})1298 -> 0.0020s1299-- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"commit_id", :name=>"fk_d3130c9a7f", :on_delete=>:cascade})1300 -> 0.0016s1301-- add_foreign_key("ci_builds", "ci_stages", {:column=>"stage_id", :name=>"fk_3a9eaa254d", :on_delete=>:cascade})1302 -> 0.0017s1303-- add_foreign_key("ci_builds", "projects", {:name=>"fk_befce0568a", :on_delete=>:cascade})1304 -> 0.0019s1305-- add_foreign_key("ci_builds_metadata", "ci_builds", {:column=>"build_id", :on_delete=>:cascade})1306 -> 0.0017s1307-- add_foreign_key("ci_builds_metadata", "projects", {:on_delete=>:cascade})1308 -> 0.0027s1309-- add_foreign_key("ci_group_variables", "namespaces", {:column=>"group_id", :name=>"fk_33ae4d58d8", :on_delete=>:cascade})1310 -> 0.0018s1311-- add_foreign_key("ci_job_artifacts", "ci_builds", {:column=>"job_id", :on_delete=>:cascade})1312 -> 0.0018s1313-- add_foreign_key("ci_job_artifacts", "projects", {:on_delete=>:cascade})1314 -> 0.0019s1315-- add_foreign_key("ci_pipeline_chat_data", "chat_names", {:on_delete=>:cascade})1316 -> 0.0016s1317-- add_foreign_key("ci_pipeline_chat_data", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})1318 -> 0.0021s1319-- add_foreign_key("ci_pipeline_schedule_variables", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_41c35fda51", :on_delete=>:cascade})1320 -> 0.0021s1321-- add_foreign_key("ci_pipeline_schedules", "projects", {:name=>"fk_8ead60fcc4", :on_delete=>:cascade})1322 -> 0.0023s1323-- add_foreign_key("ci_pipeline_schedules", "users", {:column=>"owner_id", :name=>"fk_9ea99f58d2", :on_delete=>:nullify})1324 -> 0.0036s1325-- add_foreign_key("ci_pipeline_variables", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_f29c5f4380", :on_delete=>:cascade})1326 -> 0.0035s1327-- add_foreign_key("ci_pipelines", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_3d34ab2e06", :on_delete=>:nullify})1328 -> 0.0024s1329-- add_foreign_key("ci_pipelines", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_262d4c2d19", :on_delete=>:nullify})1330 -> 0.0017s1331-- add_foreign_key("ci_pipelines", "projects", {:name=>"fk_86635dbd80", :on_delete=>:cascade})1332 -> 0.0020s1333-- add_foreign_key("ci_runner_namespaces", "ci_runners", {:column=>"runner_id", :on_delete=>:cascade})1334 -> 0.0017s1335-- add_foreign_key("ci_runner_namespaces", "namespaces", {:on_delete=>:cascade})1336 -> 0.0017s1337-- add_foreign_key("ci_runner_projects", "projects", {:name=>"fk_4478a6f1e4", :on_delete=>:cascade})1338 -> 0.0018s1339-- add_foreign_key("ci_sources_pipelines", "ci_builds", {:column=>"source_job_id", :name=>"fk_be5624bf37", :on_delete=>:cascade})1340 -> 0.0017s1341-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_e1bad85861", :on_delete=>:cascade})1342 -> 0.0016s1343-- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"source_pipeline_id", :name=>"fk_d4e29af7d7", :on_delete=>:cascade})1344 -> 0.0016s1345-- add_foreign_key("ci_sources_pipelines", "projects", {:column=>"source_project_id", :name=>"fk_acd9737679", :on_delete=>:cascade})1346 -> 0.0018s1347-- add_foreign_key("ci_sources_pipelines", "projects", {:name=>"fk_1e53c97c0a", :on_delete=>:cascade})1348 -> 0.0018s1349-- add_foreign_key("ci_stages", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_fb57e6cc56", :on_delete=>:cascade})1350 -> 0.0016s1351-- add_foreign_key("ci_stages", "projects", {:name=>"fk_2360681d1d", :on_delete=>:cascade})1352 -> 0.0019s1353-- add_foreign_key("ci_trigger_requests", "ci_triggers", {:column=>"trigger_id", :name=>"fk_b8ec8b7245", :on_delete=>:cascade})1354 -> 0.0017s1355-- add_foreign_key("ci_triggers", "projects", {:name=>"fk_e3e63f966e", :on_delete=>:cascade})1356 -> 0.0018s1357-- add_foreign_key("ci_triggers", "users", {:column=>"owner_id", :name=>"fk_e8e10d1964", :on_delete=>:cascade})1358 -> 0.0018s1359-- add_foreign_key("ci_variables", "projects", {:name=>"fk_ada5eb64b3", :on_delete=>:cascade})1360 -> 0.0019s1361-- add_foreign_key("cluster_platforms_kubernetes", "clusters", {:on_delete=>:cascade})1362 -> 0.0017s1363-- add_foreign_key("cluster_projects", "clusters", {:on_delete=>:cascade})1364 -> 0.0016s1365-- add_foreign_key("cluster_projects", "projects", {:on_delete=>:cascade})1366 -> 0.0018s1367-- add_foreign_key("cluster_providers_gcp", "clusters", {:on_delete=>:cascade})1368 -> 0.0018s1369-- add_foreign_key("clusters", "users", {:on_delete=>:nullify})1370 -> 0.0019s1371-- add_foreign_key("clusters_applications_helm", "clusters", {:on_delete=>:cascade})1372 -> 0.0017s1373-- add_foreign_key("clusters_applications_ingress", "clusters", {:name=>"fk_753a7b41c1", :on_delete=>:cascade})1374 -> 0.0016s1375-- add_foreign_key("clusters_applications_jupyter", "clusters", {:on_delete=>:cascade})1376 -> 0.0016s1377-- add_foreign_key("clusters_applications_jupyter", "oauth_applications", {:on_delete=>:nullify})1378 -> 0.0020s1379-- add_foreign_key("clusters_applications_prometheus", "clusters", {:name=>"fk_557e773639", :on_delete=>:cascade})1380 -> 0.0016s1381-- add_foreign_key("clusters_applications_runners", "ci_runners", {:column=>"runner_id", :name=>"fk_02de2ded36", :on_delete=>:nullify})1382 -> 0.0017s1383-- add_foreign_key("clusters_applications_runners", "clusters", {:on_delete=>:cascade})1384 -> 0.0015s1385-- add_foreign_key("container_repositories", "projects")1386 -> 0.0026s1387-- add_foreign_key("deploy_keys_projects", "projects", {:name=>"fk_58a901ca7e", :on_delete=>:cascade})1388 -> 0.0019s1389-- add_foreign_key("deployments", "projects", {:name=>"fk_b9a3851b82", :on_delete=>:cascade})1390 -> 0.0020s1391-- add_foreign_key("environments", "projects", {:name=>"fk_d1c8c1da6a", :on_delete=>:cascade})1392 -> 0.0018s1393-- add_foreign_key("epic_issues", "epics", {:on_delete=>:cascade})1394 -> 0.0018s1395-- add_foreign_key("epic_issues", "issues", {:on_delete=>:cascade})1396 -> 0.0019s1397-- add_foreign_key("epic_metrics", "epics", {:on_delete=>:cascade})1398 -> 0.0015s1399-- add_foreign_key("epics", "milestones", {:on_delete=>:nullify})1400 -> 0.0018s1401-- add_foreign_key("epics", "namespaces", {:column=>"group_id", :name=>"fk_f081aa4489", :on_delete=>:cascade})1402 -> 0.0017s1403-- add_foreign_key("epics", "users", {:column=>"assignee_id", :name=>"fk_dccd3f98fc", :on_delete=>:nullify})1404 -> 0.0019s1405-- add_foreign_key("epics", "users", {:column=>"author_id", :name=>"fk_3654b61b03", :on_delete=>:cascade})1406 -> 0.0017s1407-- add_foreign_key("events", "projects", {:on_delete=>:cascade})1408 -> 0.0019s1409-- add_foreign_key("events", "users", {:column=>"author_id", :name=>"fk_edfd187b6f", :on_delete=>:cascade})1410 -> 0.0017s1411-- add_foreign_key("fork_network_members", "fork_networks", {:on_delete=>:cascade})1412 -> 0.0016s1413-- add_foreign_key("fork_network_members", "projects", {:column=>"forked_from_project_id", :name=>"fk_b01280dae4", :on_delete=>:nullify})1414 -> 0.0019s1415-- add_foreign_key("fork_network_members", "projects", {:on_delete=>:cascade})1416 -> 0.0018s1417-- add_foreign_key("fork_networks", "projects", {:column=>"root_project_id", :name=>"fk_e7b436b2b5", :on_delete=>:nullify})1418 -> 0.0018s1419-- add_foreign_key("forked_project_links", "projects", {:column=>"forked_to_project_id", :name=>"fk_434510edb0", :on_delete=>:cascade})1420 -> 0.0018s1421-- add_foreign_key("gcp_clusters", "projects", {:on_delete=>:cascade})1422 -> 0.0020s1423-- add_foreign_key("gcp_clusters", "services", {:on_delete=>:nullify})1424 -> 0.0017s1425-- add_foreign_key("gcp_clusters", "users", {:on_delete=>:nullify})1426 -> 0.0019s1427-- add_foreign_key("geo_event_log", "geo_hashed_storage_migrated_events", {:column=>"hashed_storage_migrated_event_id", :name=>"fk_27548c6db3", :on_delete=>:cascade})1428 -> 0.0019s1429-- add_foreign_key("geo_event_log", "geo_job_artifact_deleted_events", {:column=>"job_artifact_deleted_event_id", :name=>"fk_176d3fbb5d", :on_delete=>:cascade})1430 -> 0.0023s1431-- add_foreign_key("geo_event_log", "geo_lfs_object_deleted_events", {:column=>"lfs_object_deleted_event_id", :name=>"fk_d5af95fcd9", :on_delete=>:cascade})1432 -> 0.0023s1433-- add_foreign_key("geo_event_log", "geo_repositories_changed_events", {:column=>"repositories_changed_event_id", :name=>"fk_4a99ebfd60", :on_delete=>:cascade})1434 -> 0.0018s1435-- add_foreign_key("geo_event_log", "geo_repository_created_events", {:column=>"repository_created_event_id", :name=>"fk_9b9afb1916", :on_delete=>:cascade})1436 -> 0.0017s1437-- add_foreign_key("geo_event_log", "geo_repository_deleted_events", {:column=>"repository_deleted_event_id", :name=>"fk_c4b1c1f66e", :on_delete=>:cascade})1438 -> 0.0016s1439-- add_foreign_key("geo_event_log", "geo_repository_renamed_events", {:column=>"repository_renamed_event_id", :name=>"fk_86c84214ec", :on_delete=>:cascade})1440 -> 0.0015s1441-- add_foreign_key("geo_event_log", "geo_repository_updated_events", {:column=>"repository_updated_event_id", :on_delete=>:cascade})1442 -> 0.0015s1443-- add_foreign_key("geo_event_log", "geo_upload_deleted_events", {:column=>"upload_deleted_event_id", :name=>"fk_c1f241c70d", :on_delete=>:cascade})1444 -> 0.0016s1445-- add_foreign_key("geo_hashed_storage_attachments_events", "projects", {:on_delete=>:cascade})1446 -> 0.0021s1447-- add_foreign_key("geo_hashed_storage_migrated_events", "projects", {:on_delete=>:cascade})1448 -> 0.0019s1449-- add_foreign_key("geo_node_namespace_links", "geo_nodes", {:on_delete=>:cascade})1450 -> 0.0018s1451-- add_foreign_key("geo_node_namespace_links", "namespaces", {:on_delete=>:cascade})1452 -> 0.0018s1453-- add_foreign_key("geo_node_statuses", "geo_nodes", {:on_delete=>:cascade})1454 -> 0.0031s1455-- add_foreign_key("geo_repositories_changed_events", "geo_nodes", {:on_delete=>:cascade})1456 -> 0.0018s1457-- add_foreign_key("geo_repository_created_events", "projects", {:on_delete=>:cascade})1458 -> 0.0019s1459-- add_foreign_key("geo_repository_renamed_events", "projects", {:on_delete=>:cascade})1460 -> 0.0018s1461-- add_foreign_key("geo_repository_updated_events", "projects", {:on_delete=>:cascade})1462 -> 0.0024s1463-- add_foreign_key("gpg_key_subkeys", "gpg_keys", {:on_delete=>:cascade})1464 -> 0.0015s1465-- add_foreign_key("gpg_keys", "users", {:on_delete=>:cascade})1466 -> 0.0018s1467-- add_foreign_key("gpg_signatures", "gpg_key_subkeys", {:on_delete=>:nullify})1468 -> 0.0021s1469-- add_foreign_key("gpg_signatures", "gpg_keys", {:on_delete=>:nullify})1470 -> 0.0016s1471-- add_foreign_key("gpg_signatures", "projects", {:on_delete=>:cascade})1472 -> 0.0019s1473-- add_foreign_key("group_custom_attributes", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1474 -> 0.0017s1475-- add_foreign_key("identities", "saml_providers", {:name=>"fk_aade90f0fc", :on_delete=>:cascade})1476 -> 0.0016s1477-- add_foreign_key("index_statuses", "projects", {:name=>"fk_74b2492545", :on_delete=>:cascade})1478 -> 0.0018s1479-- add_foreign_key("internal_ids", "namespaces", {:name=>"fk_162941d509", :on_delete=>:cascade})1480 -> 0.0017s1481-- add_foreign_key("internal_ids", "projects", {:on_delete=>:cascade})1482 -> 0.0019s1483-- add_foreign_key("issue_assignees", "issues", {:name=>"fk_b7d881734a", :on_delete=>:cascade})1484 -> 0.0017s1485-- add_foreign_key("issue_assignees", "users", {:name=>"fk_5e0c8d9154", :on_delete=>:cascade})1486 -> 0.0018s1487-- add_foreign_key("issue_links", "issues", {:column=>"source_id", :name=>"fk_c900194ff2", :on_delete=>:cascade})1488 -> 0.0016s1489-- add_foreign_key("issue_links", "issues", {:column=>"target_id", :name=>"fk_e71bb44f1f", :on_delete=>:cascade})1490 -> 0.0016s1491-- add_foreign_key("issue_metrics", "issues", {:on_delete=>:cascade})1492 -> 0.0017s1493-- add_foreign_key("issues", "issues", {:column=>"moved_to_id", :name=>"fk_a194299be1", :on_delete=>:nullify})1494 -> 0.0017s1495-- add_foreign_key("issues", "milestones", {:name=>"fk_96b1dd429c", :on_delete=>:nullify})1496 -> 0.0018s1497-- add_foreign_key("issues", "projects", {:name=>"fk_899c8f3231", :on_delete=>:cascade})1498 -> 0.0021s1499-- add_foreign_key("issues", "users", {:column=>"author_id", :name=>"fk_05f1e72feb", :on_delete=>:nullify})1500 -> 0.0020s1501-- add_foreign_key("issues", "users", {:column=>"closed_by_id", :name=>"fk_c63cbf6c25", :on_delete=>:nullify})1502 -> 0.0019s1503-- add_foreign_key("issues", "users", {:column=>"updated_by_id", :name=>"fk_ffed080f01", :on_delete=>:nullify})1504 -> 0.0018s1505-- add_foreign_key("label_priorities", "labels", {:on_delete=>:cascade})1506 -> 0.0017s1507-- add_foreign_key("label_priorities", "projects", {:on_delete=>:cascade})1508 -> 0.0020s1509-- add_foreign_key("labels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1510 -> 0.0020s1511-- add_foreign_key("labels", "projects", {:name=>"fk_7de4989a69", :on_delete=>:cascade})1512 -> 0.0023s1513-- add_foreign_key("lfs_file_locks", "projects", {:on_delete=>:cascade})1514 -> 0.0020s1515-- add_foreign_key("lfs_file_locks", "users", {:on_delete=>:cascade})1516 -> 0.0019s1517-- add_foreign_key("lists", "boards", {:name=>"fk_0d3f677137", :on_delete=>:cascade})1518 -> 0.0015s1519-- add_foreign_key("lists", "labels", {:name=>"fk_7a5553d60f", :on_delete=>:cascade})1520 -> 0.0016s1521-- add_foreign_key("members", "users", {:name=>"fk_2e88fb7ce9", :on_delete=>:cascade})1522 -> 0.0020s1523-- add_foreign_key("merge_request_diff_commits", "merge_request_diffs", {:on_delete=>:cascade})1524 -> 0.0016s1525-- add_foreign_key("merge_request_diff_files", "merge_request_diffs", {:on_delete=>:cascade})1526 -> 0.0016s1527-- add_foreign_key("merge_request_diffs", "merge_requests", {:name=>"fk_8483f3258f", :on_delete=>:cascade})1528 -> 0.0018s1529-- add_foreign_key("merge_request_metrics", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade})1530 -> 0.0017s1531-- add_foreign_key("merge_request_metrics", "merge_requests", {:on_delete=>:cascade})1532 -> 0.0017s1533-- add_foreign_key("merge_request_metrics", "users", {:column=>"latest_closed_by_id", :name=>"fk_ae440388cc", :on_delete=>:nullify})1534 -> 0.0019s1535-- add_foreign_key("merge_request_metrics", "users", {:column=>"merged_by_id", :name=>"fk_7f28d925f3", :on_delete=>:nullify})1536 -> 0.0019s1537-- add_foreign_key("merge_requests", "ci_pipelines", {:column=>"head_pipeline_id", :name=>"fk_fd82eae0b9", :on_delete=>:nullify})1538 -> 0.0018s1539-- add_foreign_key("merge_requests", "merge_request_diffs", {:column=>"latest_merge_request_diff_id", :name=>"fk_06067f5644", :on_delete=>:nullify})1540 -> 0.0016s1541-- add_foreign_key("merge_requests", "milestones", {:name=>"fk_6a5165a692", :on_delete=>:nullify})1542 -> 0.0017s1543-- add_foreign_key("merge_requests", "projects", {:column=>"source_project_id", :name=>"fk_3308fe130c", :on_delete=>:nullify})1544 -> 0.0019s1545-- add_foreign_key("merge_requests", "projects", {:column=>"target_project_id", :name=>"fk_a6963e8447", :on_delete=>:cascade})1546 -> 0.0020s1547-- add_foreign_key("merge_requests", "users", {:column=>"assignee_id", :name=>"fk_6149611a04", :on_delete=>:nullify})1548 -> 0.0018s1549-- add_foreign_key("merge_requests", "users", {:column=>"author_id", :name=>"fk_e719a85f8a", :on_delete=>:nullify})1550 -> 0.0028s1551-- add_foreign_key("merge_requests", "users", {:column=>"merge_user_id", :name=>"fk_ad525e1f87", :on_delete=>:nullify})1552 -> 0.0020s1553-- add_foreign_key("merge_requests", "users", {:column=>"updated_by_id", :name=>"fk_641731faff", :on_delete=>:nullify})1554 -> 0.0021s1555-- add_foreign_key("merge_requests_closing_issues", "issues", {:on_delete=>:cascade})1556 -> 0.0019s1557-- add_foreign_key("merge_requests_closing_issues", "merge_requests", {:on_delete=>:cascade})1558 -> 0.0017s1559-- add_foreign_key("milestones", "namespaces", {:column=>"group_id", :name=>"fk_95650a40d4", :on_delete=>:cascade})1560 -> 0.0017s1561-- add_foreign_key("milestones", "projects", {:name=>"fk_9bd0a0c791", :on_delete=>:cascade})1562 -> 0.0019s1563-- add_foreign_key("namespace_statistics", "namespaces", {:on_delete=>:cascade})1564 -> 0.0018s1565-- add_foreign_key("namespaces", "plans", {:name=>"fk_fdd12e5b80", :on_delete=>:nullify})1566 -> 0.0018s1567-- add_foreign_key("note_diff_files", "notes", {:column=>"diff_note_id", :on_delete=>:cascade})1568 -> 0.0019s1569-- add_foreign_key("notes", "projects", {:name=>"fk_99e097b079", :on_delete=>:cascade})1570 -> 0.0019s1571-- add_foreign_key("oauth_openid_requests", "oauth_access_grants", {:column=>"access_grant_id", :name=>"fk_oauth_openid_requests_oauth_access_grants_access_grant_id"})1572 -> 0.0016s1573-- add_foreign_key("pages_domains", "projects", {:name=>"fk_ea2f6dfc6f", :on_delete=>:cascade})1574 -> 0.0019s1575-- add_foreign_key("path_locks", "projects", {:name=>"fk_5265c98f24", :on_delete=>:cascade})1576 -> 0.0020s1577-- add_foreign_key("path_locks", "users")1578 -> 0.0020s1579-- add_foreign_key("personal_access_tokens", "users")1580 -> 0.0018s1581-- add_foreign_key("project_authorizations", "projects", {:on_delete=>:cascade})1582 -> 0.0019s1583-- add_foreign_key("project_authorizations", "users", {:on_delete=>:cascade})1584 -> 0.0019s1585-- add_foreign_key("project_auto_devops", "projects", {:on_delete=>:cascade})1586 -> 0.0019s1587-- add_foreign_key("project_ci_cd_settings", "projects", {:name=>"fk_24c15d2f2e", :on_delete=>:cascade})1588 -> 0.0018s1589-- add_foreign_key("project_custom_attributes", "projects", {:on_delete=>:cascade})1590 -> 0.0019s1591-- add_foreign_key("project_deploy_tokens", "deploy_tokens", {:on_delete=>:cascade})1592 -> 0.0016s1593-- add_foreign_key("project_deploy_tokens", "projects", {:on_delete=>:cascade})1594 -> 0.0019s1595-- add_foreign_key("project_features", "projects", {:name=>"fk_18513d9b92", :on_delete=>:cascade})1596 -> 0.0019s1597-- add_foreign_key("project_group_links", "projects", {:name=>"fk_daa8cee94c", :on_delete=>:cascade})1598 -> 0.0023s1599-- add_foreign_key("project_import_data", "projects", {:name=>"fk_ffb9ee3a10", :on_delete=>:cascade})1600 -> 0.0023s1601-- add_foreign_key("project_mirror_data", "projects", {:name=>"fk_d1aad367d7", :on_delete=>:cascade})1602 -> 0.0025s1603-- add_foreign_key("project_repository_states", "projects", {:on_delete=>:cascade})1604 -> 0.0031s1605-- add_foreign_key("project_statistics", "projects", {:on_delete=>:cascade})1606 -> 0.0024s1607-- add_foreign_key("prometheus_metrics", "projects", {:on_delete=>:cascade})1608 -> 0.0021s1609-- add_foreign_key("protected_branch_merge_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_98f3d044fe", :on_delete=>:cascade})1610 -> 0.0018s1611-- add_foreign_key("protected_branch_merge_access_levels", "protected_branches", {:name=>"fk_8a3072ccb3", :on_delete=>:cascade})1612 -> 0.0017s1613-- add_foreign_key("protected_branch_merge_access_levels", "users")1614 -> 0.0019s1615-- add_foreign_key("protected_branch_push_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_7111b68cdb", :on_delete=>:cascade})1616 -> 0.0018s1617-- add_foreign_key("protected_branch_push_access_levels", "protected_branches", {:name=>"fk_9ffc86a3d9", :on_delete=>:cascade})1618 -> 0.0017s1619-- add_foreign_key("protected_branch_push_access_levels", "users")1620 -> 0.0018s1621-- add_foreign_key("protected_branch_unprotect_access_levels", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1622 -> 0.0018s1623-- add_foreign_key("protected_branch_unprotect_access_levels", "protected_branches", {:on_delete=>:cascade})1624 -> 0.0015s1625-- add_foreign_key("protected_branch_unprotect_access_levels", "users", {:on_delete=>:cascade})1626 -> 0.0018s1627-- add_foreign_key("protected_branches", "projects", {:name=>"fk_7a9c6d93e7", :on_delete=>:cascade})1628 -> 0.0019s1629-- add_foreign_key("protected_tag_create_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_b4eb82fe3c", :on_delete=>:cascade})1630 -> 0.0018s1631-- add_foreign_key("protected_tag_create_access_levels", "protected_tags", {:name=>"fk_f7dfda8c51", :on_delete=>:cascade})1632 -> 0.0016s1633-- add_foreign_key("protected_tag_create_access_levels", "users")1634 -> 0.0018s1635-- add_foreign_key("protected_tags", "projects", {:name=>"fk_8e4af87648", :on_delete=>:cascade})1636 -> 0.0019s1637-- add_foreign_key("push_event_payloads", "events", {:name=>"fk_36c74129da", :on_delete=>:cascade})1638 -> 0.0016s1639-- add_foreign_key("push_rules", "projects", {:name=>"fk_83b29894de", :on_delete=>:cascade})1640 -> 0.0021s1641-- add_foreign_key("releases", "projects", {:name=>"fk_47fe2a0596", :on_delete=>:cascade})1642 -> 0.0018s1643-- add_foreign_key("remote_mirrors", "projects", {:name=>"fk_43a9aa4ca8", :on_delete=>:cascade})1644 -> 0.0020s1645-- add_foreign_key("saml_providers", "namespaces", {:column=>"group_id", :on_delete=>:cascade})1646 -> 0.0017s1647-- add_foreign_key("services", "projects", {:name=>"fk_71cce407f9", :on_delete=>:cascade})1648 -> 0.0019s1649-- add_foreign_key("slack_integrations", "services", {:on_delete=>:cascade})1650 -> 0.0018s1651-- add_foreign_key("snippets", "projects", {:name=>"fk_be41fd4bb7", :on_delete=>:cascade})1652 -> 0.0022s1653-- add_foreign_key("subscriptions", "projects", {:on_delete=>:cascade})1654 -> 0.0020s1655-- add_foreign_key("system_note_metadata", "notes", {:name=>"fk_d83a918cb1", :on_delete=>:cascade})1656 -> 0.0017s1657-- add_foreign_key("term_agreements", "application_setting_terms", {:column=>"term_id"})1658 -> 0.0017s1659-- add_foreign_key("term_agreements", "users", {:on_delete=>:cascade})1660 -> 0.0018s1661-- add_foreign_key("timelogs", "issues", {:name=>"fk_timelogs_issues_issue_id", :on_delete=>:cascade})1662 -> 0.0017s1663-- add_foreign_key("timelogs", "merge_requests", {:name=>"fk_timelogs_merge_requests_merge_request_id", :on_delete=>:cascade})1664 -> 0.0018s1665-- add_foreign_key("todos", "notes", {:name=>"fk_91d1f47b13", :on_delete=>:cascade})1666 -> 0.0018s1667-- add_foreign_key("todos", "projects", {:name=>"fk_45054f9c45", :on_delete=>:cascade})1668 -> 0.0020s1669-- add_foreign_key("todos", "users", {:column=>"author_id", :name=>"fk_ccf0373936", :on_delete=>:cascade})1670 -> 0.0019s1671-- add_foreign_key("todos", "users", {:name=>"fk_d94154aa95", :on_delete=>:cascade})1672 -> 0.0017s1673-- add_foreign_key("trending_projects", "projects", {:on_delete=>:cascade})1674 -> 0.0019s1675-- add_foreign_key("u2f_registrations", "users")1676 -> 0.0017s1677-- add_foreign_key("user_callouts", "users", {:on_delete=>:cascade})1678 -> 0.0019s1679-- add_foreign_key("user_custom_attributes", "users", {:on_delete=>:cascade})1680 -> 0.0019s1681-- add_foreign_key("user_interacted_projects", "projects", {:name=>"fk_722ceba4f7", :on_delete=>:cascade})1682 -> 0.0019s1683-- add_foreign_key("user_interacted_projects", "users", {:name=>"fk_0894651f08", :on_delete=>:cascade})1684 -> 0.0018s1685-- add_foreign_key("user_synced_attributes_metadata", "users", {:on_delete=>:cascade})1686 -> 0.0018s1687-- add_foreign_key("users", "application_setting_terms", {:column=>"accepted_term_id", :name=>"fk_789cd90b35", :on_delete=>:cascade})1688 -> 0.0018s1689-- add_foreign_key("users_star_projects", "projects", {:name=>"fk_22cd27ddfc", :on_delete=>:cascade})1690 -> 0.0020s1691-- add_foreign_key("vulnerability_feedback", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:nullify})1692 -> 0.0018s1693-- add_foreign_key("vulnerability_feedback", "issues", {:on_delete=>:nullify})1694 -> 0.0017s1695-- add_foreign_key("vulnerability_feedback", "projects", {:on_delete=>:cascade})1696 -> 0.0019s1697-- add_foreign_key("vulnerability_feedback", "users", {:column=>"author_id", :on_delete=>:cascade})1698 -> 0.0018s1699-- add_foreign_key("web_hook_logs", "web_hooks", {:on_delete=>:cascade})1700 -> 0.0017s1701-- add_foreign_key("web_hooks", "projects", {:name=>"fk_0c8ca6d9d1", :on_delete=>:cascade})1702 -> 0.0019s1703-- initialize_schema_migrations_table()1704 -> 0.0149s1705-- enable_extension("plpgsql")1706 -> 0.0123s1707-- create_table("event_log_states", {:primary_key=>"event_id", :force=>:cascade})1708 -> 0.0071s1709-- create_table("file_registry", {:force=>:cascade})1710 -> 0.0074s1711-- add_index("file_registry", ["file_type", "file_id"], {:name=>"index_file_registry_on_file_type_and_file_id", :unique=>true, :using=>:btree})1712 -> 0.0075s1713-- add_index("file_registry", ["file_type"], {:name=>"index_file_registry_on_file_type", :using=>:btree})1714 -> 0.0045s1715-- add_index("file_registry", ["retry_at"], {:name=>"index_file_registry_on_retry_at", :using=>:btree})1716 -> 0.0044s1717-- add_index("file_registry", ["success"], {:name=>"index_file_registry_on_success", :using=>:btree})1718 -> 0.0042s1719-- create_table("job_artifact_registry", {:force=>:cascade})1720 -> 0.0070s1721-- add_index("job_artifact_registry", ["artifact_id"], {:name=>"index_job_artifact_registry_on_artifact_id", :using=>:btree})1722 -> 0.0039s1723-- add_index("job_artifact_registry", ["retry_at"], {:name=>"index_job_artifact_registry_on_retry_at", :using=>:btree})1724 -> 0.0043s1725-- add_index("job_artifact_registry", ["success"], {:name=>"index_job_artifact_registry_on_success", :using=>:btree})1726 -> 0.0040s1727-- create_table("project_registry", {:force=>:cascade})1728 -> 0.0077s1729-- add_index("project_registry", ["last_repository_successful_sync_at"], {:name=>"index_project_registry_on_last_repository_successful_sync_at", :using=>:btree})1730 -> 0.0042s1731-- add_index("project_registry", ["last_repository_synced_at"], {:name=>"index_project_registry_on_last_repository_synced_at", :using=>:btree})1732 -> 0.0040s1733-- add_index("project_registry", ["project_id"], {:name=>"idx_project_registry_on_repo_checksums_and_failure_partial", :where=>"((repository_verification_checksum_sha IS NULL) AND (last_repository_verification_failure IS NULL))", :using=>:btree})1734 -> 0.0042s1735-- add_index("project_registry", ["project_id"], {:name=>"idx_project_registry_on_repository_failure_partial", :where=>"(last_repository_verification_failure IS NOT NULL)", :using=>:btree})1736 -> 0.0039s1737-- add_index("project_registry", ["project_id"], {:name=>"idx_project_registry_on_wiki_checksums_and_failure_partial", :where=>"((wiki_verification_checksum_sha IS NULL) AND (last_wiki_verification_failure IS NULL))", :using=>:btree})1738 -> 0.0038s1739-- add_index("project_registry", ["project_id"], {:name=>"idx_project_registry_on_wiki_failure_partial", :where=>"(last_wiki_verification_failure IS NOT NULL)", :using=>:btree})1740 -> 0.0038s1741-- add_index("project_registry", ["project_id"], {:name=>"idx_repository_checksum_mismatch", :where=>"(repository_checksum_mismatch = true)", :using=>:btree})1742 -> 0.0040s1743-- add_index("project_registry", ["project_id"], {:name=>"idx_wiki_checksum_mismatch", :where=>"(wiki_checksum_mismatch = true)", :using=>:btree})1744 -> 0.0044s1745-- add_index("project_registry", ["project_id"], {:name=>"index_project_registry_on_project_id", :unique=>true, :using=>:btree})1746 -> 0.0039s1747-- add_index("project_registry", ["repository_retry_at"], {:name=>"index_project_registry_on_repository_retry_at", :using=>:btree})1748 -> 0.0039s1749-- add_index("project_registry", ["repository_verification_checksum_sha"], {:name=>"idx_project_registry_on_repository_checksum_sha_partial", :where=>"(repository_verification_checksum_sha IS NULL)", :using=>:btree})1750 -> 0.0039s1751-- add_index("project_registry", ["resync_repository"], {:name=>"index_project_registry_on_resync_repository", :using=>:btree})1752 -> 0.0037s1753-- add_index("project_registry", ["resync_wiki"], {:name=>"index_project_registry_on_resync_wiki", :using=>:btree})1754 -> 0.0038s1755-- add_index("project_registry", ["wiki_retry_at"], {:name=>"index_project_registry_on_wiki_retry_at", :using=>:btree})1756 -> 0.0038s1757-- add_index("project_registry", ["wiki_verification_checksum_sha"], {:name=>"idx_project_registry_on_wiki_checksum_sha_partial", :where=>"(wiki_verification_checksum_sha IS NULL)", :using=>:btree})1758 -> 0.0039s1759-- initialize_schema_migrations_table()1760 -> 0.0087s1761$ date1762Thu Jun 7 12:38:20 UTC 20181763$ JOB_NAME=( $CI_JOB_NAME )1764$ export CI_NODE_INDEX=${JOB_NAME[-2]}1765$ export CI_NODE_TOTAL=${JOB_NAME[-1]}1766$ export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/${JOB_NAME[0]}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json1767$ export KNAPSACK_GENERATE_REPORT=true1768$ export SUITE_FLAKY_RSPEC_REPORT_PATH=${FLAKY_RSPEC_SUITE_REPORT_PATH}1769$ export FLAKY_RSPEC_REPORT_PATH=rspec_flaky/all_${JOB_NAME[0]}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json1770$ export NEW_FLAKY_RSPEC_REPORT_PATH=rspec_flaky/new_${JOB_NAME[0]}_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json1771$ export FLAKY_RSPEC_GENERATE_REPORT=true1772$ export CACHE_CLASSES=true1773$ cp ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} ${KNAPSACK_REPORT_PATH}1774$ [[ -f $FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_REPORT_PATH}1775$ [[ -f $NEW_FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${NEW_FLAKY_RSPEC_REPORT_PATH}1776$ scripts/gitaly-test-spawn1777Checking gitaly-ruby bundle...1778The Gemfile's dependencies are satisfied1779Trying to connect to gitaly: ..... OK1780$ knapsack rspec "--color --format documentation --tag ~geo"1781Report specs:1782spec/requests/api/projects_spec.rb1783spec/services/auth/container_registry_authentication_service_spec.rb1784spec/models/cycle_analytics/staging_spec.rb1785spec/requests/api/members_spec.rb1786spec/features/projects/files/user_creates_files_spec.rb1787spec/services/merge_requests/create_service_spec.rb1788spec/features/markdown/copy_as_gfm_spec.rb1789spec/lib/gitlab/background_migration/migrate_events_to_push_event_payloads_spec.rb1790spec/features/projects/merge_request_button_spec.rb1791spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb1792spec/features/projects/members/list_spec.rb1793spec/features/tags/master_creates_tag_spec.rb1794spec/finders/projects_finder_spec.rb1795spec/features/projects/tree/create_file_spec.rb1796spec/lib/banzai/filter/external_issue_reference_filter_spec.rb1797spec/features/projects/files/template_selector_menu_spec.rb1798spec/features/projects/commit/diff_notes_spec.rb1799spec/features/participants_autocomplete_spec.rb1800spec/lib/gitlab/email/message/repository_push_spec.rb1801spec/lib/gitlab/bare_repository_import/importer_spec.rb1802spec/lib/gitlab/git/gitlab_projects_spec.rb1803spec/features/admin/admin_deploy_keys_spec.rb1804spec/policies/global_policy_spec.rb1805spec/services/projects/autocomplete_service_spec.rb1806spec/services/labels/transfer_service_spec.rb1807spec/lib/gitlab/database/count_spec.rb1808spec/features/projects/services/user_activates_slack_slash_command_spec.rb1809spec/models/diff_viewer/base_spec.rb1810spec/features/profiles/oauth_applications_spec.rb1811spec/lib/banzai/reference_parser/commit_range_parser_spec.rb1812spec/controllers/projects/repositories_controller_spec.rb1813spec/features/atom/dashboard_issues_spec.rb1814spec/finders/concerns/finder_with_cross_project_access_spec.rb1815spec/lib/gitlab/data_builder/build_spec.rb1816spec/migrations/migrate_old_artifacts_spec.rb1817spec/finders/concerns/finder_methods_spec.rb1818spec/lib/banzai/redactor_spec.rb1819spec/features/projects/wiki/user_deletes_wiki_page_spec.rb1820spec/services/groups/nested_create_service_spec.rb1821spec/lib/container_registry/path_spec.rb1822spec/finders/personal_projects_finder_spec.rb1823spec/controllers/profiles/notifications_controller_spec.rb1824spec/services/projects/create_from_template_service_spec.rb1825spec/lib/api/helpers_spec.rb1826spec/lib/gitlab/auth/saml/user_spec.rb1827spec/lib/gitlab/slash_commands/issue_new_spec.rb1828spec/services/test_hooks/system_service_spec.rb1829spec/controllers/projects/find_file_controller_spec.rb1830spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb1831spec/lib/gitlab/ci/status/external/common_spec.rb1832spec/controllers/projects/registry/tags_controller_spec.rb1833spec/workers/stuck_import_jobs_worker_spec.rb1834spec/services/note_summary_spec.rb1835spec/services/clusters/gcp/verify_provision_status_service_spec.rb1836spec/services/labels/find_or_create_service_spec.rb1837spec/services/notes/resolve_service_spec.rb1838spec/controllers/groups/runners_controller_spec.rb1839spec/services/labels/update_service_spec.rb1840spec/helpers/award_emoji_helper_spec.rb1841spec/workers/storage_migrator_worker_spec.rb1842spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb1843spec/workers/gitlab/github_import/advance_stage_worker_spec.rb1844spec/lib/gitlab/gitaly_client/wiki_service_spec.rb1845spec/controllers/abuse_reports_controller_spec.rb1846spec/finders/group_members_finder_spec.rb1847spec/models/list_spec.rb1848spec/lib/banzai/issuable_extractor_spec.rb1849spec/services/update_release_service_spec.rb1850spec/lib/gitlab/import_export/uploads_restorer_spec.rb1851spec/services/clusters/applications/check_ingress_ip_address_service_spec.rb1852spec/tasks/gitlab/cleanup_rake_spec.rb1853spec/features/dashboard/help_spec.rb1854spec/services/milestones/create_service_spec.rb1855spec/controllers/admin/applications_controller_spec.rb1856spec/lib/banzai/filter/commit_trailers_filter_spec.rb1857spec/models/concerns/cache_markdown_field_spec.rb1858spec/models/project_import_state_spec.rb1859spec/lib/gitlab/bitbucket_import/project_creator_spec.rb1860spec/lib/gitlab/allowable_spec.rb1861spec/tasks/gitlab/db_rake_spec.rb1862spec/lib/gitlab/background_migration/migrate_system_uploads_to_new_folder_spec.rb1863spec/controllers/admin/identities_controller_spec.rb1864spec/tasks/cache/clear/redis_spec.rb1865spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb1866spec/serializers/analytics_issue_serializer_spec.rb1867spec/rubocop/cop/avoid_return_from_blocks_spec.rb1868spec/lib/gitlab/git/hook_env_spec.rb1869spec/lib/gitlab/auth/ldap/config_spec.rb1870spec/serializers/variable_entity_spec.rb1871spec/lib/gitlab/regex_spec.rb1872spec/services/users/build_service_spec.rb1873spec/models/concerns/reactive_caching_spec.rb1874spec/lib/system_check/simple_executor_spec.rb1875spec/lib/gitlab/etag_caching/middleware_spec.rb1876spec/workers/concerns/gitlab/github_import/notify_upon_death_spec.rb1877spec/lib/gitlab/visibility_level_spec.rb1878spec/lib/gitlab/incoming_email_spec.rb1879spec/lib/gitlab/badge/coverage/template_spec.rb1880spec/lib/gitlab/query_limiting/transaction_spec.rb1881spec/validators/namespace_path_validator_spec.rb1882spec/lib/gitlab/ci/status/success_warning_spec.rb1883spec/lib/gitlab/import_export/model_configuration_spec.rb1884spec/graphql/types/query_type_spec.rb1885spec/lib/json_web_token/rsa_token_spec.rb1886spec/lib/gitlab/cycle_analytics/test_stage_spec.rb1887spec/lib/gitlab/ci/build/policy_spec.rb1888spec/lib/gitlab/import_export/version_checker_spec.rb1889spec/lib/gitlab/ci/status/canceled_spec.rb1890spec/models/merge_request/metrics_spec.rb1891spec/lib/gitlab/git/util_spec.rb1892spec/rubocop/cop/sidekiq_options_queue_spec.rb1893spec/rubocop/cop/include_sidekiq_worker_spec.rb1894spec/lib/gitlab/database/grant_spec.rb1895spec/workers/propagate_service_template_worker_spec.rb1896spec/lib/gitlab/health_checks/prometheus_text_format_spec.rb1897spec/lib/bitbucket/paginator_spec.rb1898spec/lib/gitlab/git/gitmodules_parser_spec.rb1899Leftover specs:1900Knapsack report generator started!1901Run options: exclude {:geo=>true}1902==> Setting up GitLab Shell...1903 GitLab Shell setup in 0.062524316 seconds...1904==> Setting up Gitaly...1905 Gitaly setup in 0.000171742 seconds...1906API::Projects1907 GET /projects1908 when unauthenticated1909 behaves like projects response1910 returns an array of projects1911 returns the proper security headers1912 behaves like projects response without N + 1 queries1913 avoids N + 1 queries1914 when authenticated as regular user1915 includes the project labels as the tag_list1916 includes open_issues_count1917 does not include open_issues_count if issues are disabled1918 does not include statistics by default1919 includes statistics if requested1920 behaves like projects response1921 returns an array of projects1922 returns the proper security headers1923 behaves like projects response without N + 1 queries1924 avoids N + 1 queries1925 when some projects are in a group1926 behaves like projects response without N + 1 queries1927 avoids N + 1 queries1928 and with_issues_enabled=true1929 only returns projects with issues enabled1930 when external issue tracker is enabled1931 includes open_issues_count1932 does not include open_issues_count if issues are disabled1933 and with simple=true1934 returns a simplified version of all the projects1935 and using search1936 behaves like projects response1937 returns an array of projects1938 returns the proper security headers1939 and membership=true1940 behaves like projects response1941 returns an array of projects1942 returns the proper security headers1943 and using the visibility filter1944 filters based on private visibility param1945 filters based on internal visibility param1946 filters based on public visibility param1947 and using sorting1948 returns the correct order when sorted by id1949 and with owned=true1950 returns an array of projects the user owns1951 and with starred=true1952 returns the starred projects viewable by the user1953 and with all query parameters1954 including owned filter1955 returns only projects that satisfy all query parameters1956 including membership filter1957 returns only projects that satisfy all query parameters1958 when authenticated as a different user1959 behaves like projects response1960 returns an array of projects1961 returns the proper security headers1962 and with_issues_enabled=true1963 does not return private issue projects1964 when authenticated as admin1965 behaves like projects response1966 returns an array of projects1967 returns the proper security headers1968 POST /projects1969 creates new project without path but with name and returns 2011970 creates new project without name but with path and returns 2011971 creates new project with name and path and returns 2011972 creates last project before reaching project limit1973 does not create new project without name or path and returns 4001974 assigns attributes to project1975 sets a project as public1976 sets a project as internal1977 sets a project as private1978 sets tag list to a project1979 uploads avatar for project a project1980 sets a project as allowing outdated diff discussions to automatically resolve1981 sets a project as allowing outdated diff discussions to automatically resolve if resolve_outdated_diff_discussions1982 sets a project as allowing merge even if build fails1983 sets a project as allowing merge only if merge_when_pipeline_succeeds1984 sets a project as allowing merge even if discussions are unresolved1985 sets a project as allowing merge if only_allow_merge_if_all_discussions_are_resolved is nil1986 sets a project as allowing merge only if all discussions are resolved1987 sets the merge method of a project to rebase merge1988 rejects invalid values for merge_method1989 ignores import_url when it is nil1990 maximum number of projects reached1991 does not create new project and respond with 4031992 when a visibility level is restricted1993 does not allow a non-admin to use a restricted visibility level1994 allows an admin to override restricted visibility settings1995 GET /users/:user_id/projects/1996 returns error when user not found1997 returns projects filtered by user1998 POST /projects/user/:id1999 creates new project without path but with name and return 2012000 creates new project with name and path and returns 2012001 responds with 400 on failure and not project2002 assigns attributes to project2003 sets a project as public2004 sets a project as internal2005 sets a project as private2006 sets a project as allowing outdated diff discussions to automatically resolve2007 sets a project as allowing outdated diff discussions to automatically resolve2008 sets a project as allowing merge even if build fails2009 sets a project as allowing merge only if pipeline succeeds2010 sets a project as allowing merge even if discussions are unresolved2011 sets a project as allowing merge only if all discussions are resolved2012 POST /projects/:id/uploads2013 uploads the file and returns its info2014 GET /projects/:id2015 when unauthenticated2016 returns the public projects2017 when authenticated as an admin2018 returns a project by id including repository_storage2019 when authenticated as a regular user2020 returns a project by id2021 returns a project by path name2022 returns a 404 error if not found2023 returns a 404 error if user is not a member2024 handles users with dots2025 exposes namespace fields2026 does not include statistics by default2027 includes statistics if requested2028 includes import_error if user can admin project2029 does not include import_error if user cannot admin project2030 links exposure2031 exposes related resources full URIs2032 filters related URIs when their feature is not enabled2033 permissions2034 all projects2035 contains permission information2036 personal project2037 sets project access and returns 2002038 group project2039 sets the owner and return 2002040 GET /projects/:id/users2041 when unauthenticated2042 behaves like project users response2043 returns the project users2044 when authenticated2045 returns a 404 error if not found2046 returns a 404 error if user is not a member2047 valid request2048 behaves like project users response2049 returns the project users2050 GET /projects/:id/snippets2051 returns an array of project snippets2052 GET /projects/:id/snippets/:snippet_id2053 returns a project snippet2054 returns a 404 error if snippet id not found2055 POST /projects/:id/snippets2056 creates a new project snippet2057 returns a 400 error if invalid snippet is given2058 PUT /projects/:id/snippets/:snippet_id2059 updates an existing project snippet2060 updates an existing project snippet with new title2061 DELETE /projects/:id/snippets/:snippet_id2062 deletes existing project snippet2063 returns 404 when deleting unknown snippet id2064 behaves like 412 response2065 for a modified ressource2066 returns 4122067 for an unmodified ressource2068 returns accepted2069 GET /projects/:id/snippets/:snippet_id/raw2070 gets a raw project snippet2071 returns a 404 error if raw project snippet not found2072 fork management2073 POST /projects/:id/fork/:forked_from_id2074 is not available for non admin users2075 allows project to be forked from an existing project2076 refreshes the forks count cachce2077 fails if forked_from project which does not exist2078 fails with 409 if already forked2079 DELETE /projects/:id/fork2080 is not visible to users outside group2081 when users belong to project group2082 is forbidden to non-owner users2083 is idempotent if not forked2084 for a forked project2085 makes forked project unforked2086 behaves like 412 response2087 for a modified ressource2088 returns 4122089 for an unmodified ressource2090 returns accepted2091 GET /projects/:id/forks2092 for a forked project2093 for a user that can access the forks2094 returns the forks2095 for a user that cannot access the forks2096 returns an empty array2097 for a non-forked project2098 returns an empty array2099 POST /projects/:id/share2100 shares project with group2101 returns a 400 error when group id is not given2102 returns a 400 error when access level is not given2103 returns a 400 error when sharing is disabled2104 returns a 404 error when user cannot read group2105 returns a 404 error when group does not exist2106 returns a 400 error when wrong params passed2107 DELETE /projects/:id/share/:group_id2108 returns a 400 when group id is not an integer2109 returns a 404 error when group link does not exist2110 returns a 404 error when project does not exist2111 for a valid group2112 returns 204 when deleting a group share2113 returns 204 when deleting a group share2114 behaves like 412 response2115 for a modified ressource2116 returns 4122117 for an unmodified ressource2118 returns accepted2119 PUT /projects/:id2120 returns 400 when nothing sent2121 when unauthenticated2122 returns authentication error2123 when authenticated as project owner2124 updates name2125 updates visibility_level2126 updates visibility_level from public to private2127 does not update name to existing name2128 updates request_access_enabled2129 updates approvals_before_merge2130 updates path & name to existing path & name in different namespace2131 updates jobs_enabled2132 updates merge_method2133 rejects to update merge_method when merge_method is invalid2134 when authenticated as project master2135 updates path2136 updates other attributes2137 does not update path to existing path2138 does not update name2139 does not update visibility_level2140 when authenticated as project developer2141 does not update other attributes2142 POST /projects/:id/archive2143 on an unarchived project2144 archives the project2145 on an archived project2146 remains archived2147 user without archiving rights to the project2148 rejects the action2149 POST /projects/:id/unarchive2150 on an unarchived project2151 remains unarchived2152 on an archived project2153 unarchives the project2154 user without archiving rights to the project2155 rejects the action2156 POST /projects/:id/star2157 on an unstarred project2158 stars the project2159 on a starred project2160 does not modify the star count2161 POST /projects/:id/unstar2162 on a starred project2163 unstars the project2164 on an unstarred project2165 does not modify the star count2166 GET /projects/:id/languages2167 with an authorized user2168 returns not_found(404) for not existing project2169 behaves like languages and percentages JSON response2170 returns expected language values2171 with not authorized user2172 returns not_found for existing but unauthorized project2173 without user2174 returns not_found for existing but unauthorized project2175 behaves like languages and percentages JSON response2176 returns expected language values2177 DELETE /projects/:id2178 when authenticated as user2179 removes project2180 does not remove a project if not an owner2181 does not remove a non existing project2182 does not remove a project not attached to user2183 behaves like 412 response2184 for a modified ressource2185 returns 4122186 for an unmodified ressource2187 returns accepted2188 when authenticated as admin2189 removes any existing project2190 does not remove a non existing project2191 behaves like 412 response2192 for a modified ressource2193 returns 4122194 for an unmodified ressource2195 returns accepted2196 POST /projects/:id/fork2197 when authenticated2198 forks if user has sufficient access to project2199 forks if user is admin2200 fails on missing project access for the project to fork2201 fails if forked project exists in the user namespace2202 fails if project to fork from does not exist2203 forks with explicit own user namespace id2204 forks with explicit own user name as namespace2205 forks to another user when admin2206 fails if trying to fork to another user when not admin2207 fails if trying to fork to non-existent namespace2208 forks to owned group2209 forks to owned subgroup2210 fails to fork to not owned group2211 forks to not owned group when admin2212 when unauthenticated2213 returns authentication error2214 POST /projects/:id/housekeeping2215 when authenticated as owner2216 starts the housekeeping process2217 when housekeeping lease is taken2218 returns conflict2219 when authenticated as developer2220 returns forbidden error2221 when unauthenticated2222 returns authentication error2223 behaves like custom attributes endpoints2224 GET /projects with custom attributes filter2225 with an unauthorized user2226 does not filter by custom attributes2227 with an authorized user2228 filters by custom attributes2229 GET /projects with custom attributes2230 with an unauthorized user2231 does not include custom attributes2232 with an authorized user2233 does not include custom attributes by default2234 includes custom attributes if requested2235 GET /projects/:id with custom attributes2236 with an unauthorized user2237 does not include custom attributes2238 with an authorized user2239 does not include custom attributes by default2240 includes custom attributes if requested2241 GET /projects/:id/custom_attributes2242 with an unauthorized user2243 behaves like an unauthorized API user2244 should eq 4032245 with an authorized user2246 returns all custom attributes2247 GET /projects/:id/custom_attributes/:key2248 with an unauthorized user2249 behaves like an unauthorized API user2250 should eq 4032251 with an authorized user2252 returns a single custom attribute2253 PUT /projects/:id/custom_attributes/:key2254 with an unauthorized user2255 behaves like an unauthorized API user2256 should eq 4032257 with an authorized user2258 creates a new custom attribute2259 updates an existing custom attribute2260 DELETE /projects/:id/custom_attributes/:key2261 with an unauthorized user2262 behaves like an unauthorized API user2263 should eq 4032264 with an authorized user2265 deletes an existing custom attribute2266Auth::ContainerRegistryAuthenticationService2267 #full_access_token2268 behaves like an accessible2269 has the correct scope2270 behaves like a valid token2271 should include :token2272 should include "access"2273 a expirable2274 for default configuration2275 should not be within 2 of 2018-06-07 12:50:49 +00002276 for changed configuration2277 should be within 2 of 2018-06-07 12:50:49 +00002278 behaves like not a container repository factory2279 does not create a new container repository resource2280 user authorization2281 for registry catalog2282 disallow browsing for users without Gitlab admin rights2283 behaves like an inaccessible2284 should include {"access" => []}2285 behaves like a valid token2286 should include :token2287 should include "access"2288 a expirable2289 for default configuration2290 should not be within 2 of 2018-06-07 12:50:50 +00002291 for changed configuration2292 should be within 2 of 2018-06-07 12:50:50 +00002293 behaves like not a container repository factory2294 does not create a new container repository resource2295 for private project2296 allow to use scope-less authentication2297 behaves like a valid token2298 should include :token2299 should include "access"2300 a expirable2301 for default configuration2302 should not be within 2 of 2018-06-07 12:50:50 +00002303 for changed configuration2304 should be within 2 of 2018-06-07 12:50:50 +00002305 allow developer to push images2306 behaves like a pushable2307 behaves like an accessible2308 has the correct scope2309 behaves like a valid token2310 should include :token2311 should include "access"2312 a expirable2313 for default configuration2314 should not be within 2 of 2018-06-07 12:50:51 +00002315 for changed configuration2316 should be within 2 of 2018-06-07 12:50:51 +00002317 behaves like container repository factory2318 creates a new container repository resource2319 disallow developer to delete images2320 behaves like an inaccessible2321 should include {"access" => []}2322 behaves like a valid token2323 should include :token2324 should include "access"2325 a expirable2326 for default configuration2327 should not be within 2 of 2018-06-07 12:50:52 +00002328 for changed configuration2329 should be within 2 of 2018-06-07 12:50:53 +00002330 behaves like not a container repository factory2331 does not create a new container repository resource2332 allow reporter to pull images2333 when pulling from root level repository2334 behaves like a pullable2335 behaves like an accessible2336 has the correct scope2337 behaves like a valid token2338 should include :token2339 should include "access"2340 a expirable2341 for default configuration2342 should not be within 2 of 2018-06-07 12:50:54 +00002343 for changed configuration2344 should be within 2 of 2018-06-07 12:50:54 +00002345 behaves like not a container repository factory2346 does not create a new container repository resource2347 disallow reporter to delete images2348 behaves like an inaccessible2349 should include {"access" => []}2350 behaves like a valid token2351 should include :token2352 should include "access"2353 a expirable2354 for default configuration2355 should not be within 2 of 2018-06-07 12:50:55 +00002356 for changed configuration2357 should be within 2 of 2018-06-07 12:50:55 +00002358 behaves like not a container repository factory2359 does not create a new container repository resource2360 return a least of privileges2361 behaves like a pullable2362 behaves like an accessible2363 has the correct scope2364 behaves like a valid token2365 should include :token2366 should include "access"2367 a expirable2368 for default configuration2369 should not be within 2 of 2018-06-07 12:50:57 +00002370 for changed configuration2371 should be within 2 of 2018-06-07 12:50:57 +00002372 behaves like not a container repository factory2373 does not create a new container repository resource2374 disallow guest to pull or push images2375 behaves like an inaccessible2376 should include {"access" => []}2377 behaves like a valid token2378 should include :token2379 should include "access"2380 a expirable2381 for default configuration2382 should not be within 2 of 2018-06-07 12:50:58 +00002383 for changed configuration2384 should be within 2 of 2018-06-07 12:50:58 +00002385 behaves like not a container repository factory2386 does not create a new container repository resource2387 disallow guest to delete images2388 behaves like an inaccessible2389 should include {"access" => []}2390 behaves like a valid token2391 should include :token2392 should include "access"2393 a expirable2394 for default configuration2395 should not be within 2 of 2018-06-07 12:50:59 +00002396 for changed configuration2397 should be within 2 of 2018-06-07 12:51:00 +00002398 behaves like not a container repository factory2399 does not create a new container repository resource2400 for public project2401 allow anyone to pull images2402 behaves like a pullable2403 behaves like an accessible2404 has the correct scope2405 behaves like a valid token2406 should include :token2407 should include "access"2408 a expirable2409 for default configuration2410 should not be within 2 of 2018-06-07 12:51:01 +00002411 for changed configuration2412 should be within 2 of 2018-06-07 12:51:01 +00002413 behaves like not a container repository factory2414 does not create a new container repository resource2415 disallow anyone to push images2416 behaves like an inaccessible2417 should include {"access" => []}2418 behaves like a valid token2419 should include :token2420 should include "access"2421 a expirable2422 for default configuration2423 should not be within 2 of 2018-06-07 12:51:02 +00002424 for changed configuration2425 should be within 2 of 2018-06-07 12:51:02 +00002426 behaves like not a container repository factory2427 does not create a new container repository resource2428 disallow anyone to delete images2429 behaves like an inaccessible2430 should include {"access" => []}2431 behaves like a valid token2432 should include :token2433 should include "access"2434 a expirable2435 for default configuration2436 should not be within 2 of 2018-06-07 12:51:03 +00002437 for changed configuration2438 should be within 2 of 2018-06-07 12:51:03 +00002439 behaves like not a container repository factory2440 does not create a new container repository resource2441 when repository name is invalid2442 behaves like an inaccessible2443 should include {"access" => []}2444 behaves like a valid token2445 should include :token2446 should include "access"2447 a expirable2448 for default configuration2449 should not be within 2 of 2018-06-07 12:51:03 +00002450 for changed configuration2451 should be within 2 of 2018-06-07 12:51:03 +00002452 behaves like not a container repository factory2453 does not create a new container repository resource2454 for internal project2455 for internal user2456 allow anyone to pull images2457 behaves like a pullable2458 behaves like an accessible2459 has the correct scope2460 behaves like a valid token2461 should include :token2462 should include "access"2463 a expirable2464 for default configuration2465 should not be within 2 of 2018-06-07 12:51:04 +00002466 for changed configuration2467 should be within 2 of 2018-06-07 12:51:04 +00002468 behaves like not a container repository factory2469 does not create a new container repository resource2470 disallow anyone to push images2471 behaves like an inaccessible2472 should include {"access" => []}2473 behaves like a valid token2474 should include :token2475 should include "access"2476 a expirable2477 for default configuration2478 should not be within 2 of 2018-06-07 12:51:05 +00002479 for changed configuration2480 should be within 2 of 2018-06-07 12:51:05 +00002481 behaves like not a container repository factory2482 does not create a new container repository resource2483 disallow anyone to delete images2484 behaves like an inaccessible2485 should include {"access" => []}2486 behaves like a valid token2487 should include :token2488 should include "access"2489 a expirable2490 for default configuration2491 should not be within 2 of 2018-06-07 12:51:06 +00002492 for changed configuration2493 should be within 2 of 2018-06-07 12:51:06 +00002494 behaves like not a container repository factory2495 does not create a new container repository resource2496 for external user2497 disallow anyone to pull or push images2498 behaves like an inaccessible2499 should include {"access" => []}2500 behaves like a valid token2501 should include :token2502 should include "access"2503 a expirable2504 for default configuration2505 should not be within 2 of 2018-06-07 12:51:07 +00002506 for changed configuration2507 should be within 2 of 2018-06-07 12:51:08 +00002508 behaves like not a container repository factory2509 does not create a new container repository resource2510 disallow anyone to delete images2511 behaves like an inaccessible2512 should include {"access" => []}2513 behaves like a valid token2514 should include :token2515 should include "access"2516 a expirable2517 for default configuration2518 should not be within 2 of 2018-06-07 12:51:09 +00002519 for changed configuration2520 should be within 2 of 2018-06-07 12:51:09 +00002521 behaves like not a container repository factory2522 does not create a new container repository resource2523 delete authorized as master2524 behaves like a valid token2525 should include :token2526 should include "access"2527 a expirable2528 for default configuration2529 should not be within 2 of 2018-06-07 12:51:10 +00002530 for changed configuration2531 should be within 2 of 2018-06-07 12:51:10 +00002532 allow to delete images2533 behaves like a deletable2534 behaves like an accessible2535 has the correct scope2536 behaves like a valid token2537 should include :token2538 should include "access"2539 a expirable2540 for default configuration2541 should not be within 2 of 2018-06-07 12:51:11 +00002542 for changed configuration2543 should be within 2 of 2018-06-07 12:51:11 +00002544 build authorized as user2545 allow to use offline_token2546 behaves like an authenticated2547 should include :token2548 should include "access"2549 behaves like a valid token2550 should include :token2551 should include "access"2552 a expirable2553 for default configuration2554 should not be within 2 of 2018-06-07 12:51:12 +00002555 for changed configuration2556 should be within 2 of 2018-06-07 12:51:12 +00002557 allow to pull and push images2558 behaves like a pullable and pushable2559 behaves like an accessible2560 has the correct scope2561 behaves like a valid token2562 should include :token2563 should include "access"2564 a expirable2565 for default configuration2566 should not be within 2 of 2018-06-07 12:51:13 +00002567 for changed configuration2568 should be within 2 of 2018-06-07 12:51:13 +00002569 behaves like container repository factory2570 creates a new container repository resource2571 disallow to delete images2572 behaves like an inaccessible2573 should include {"access" => []}2574 behaves like a valid token2575 should include :token2576 should include "access"2577 a expirable2578 for default configuration2579 should not be within 2 of 2018-06-07 12:51:15 +00002580 for changed configuration2581 should be within 2 of 2018-06-07 12:51:15 +00002582 for other projects2583 when pulling2584 allow for public2585 behaves like a pullable2586 behaves like an accessible2587 has the correct scope2588 behaves like a valid token2589 should include :token2590 should include "access"2591 a expirable2592 for default configuration2593 should not be within 2 of 2018-06-07 12:51:16 +00002594 for changed configuration2595 should be within 2 of 2018-06-07 12:51:16 +00002596 behaves like not a container repository factory2597 does not create a new container repository resource2598 for private2599 behaves like pullable for being team member2600 when you are not member2601 behaves like an inaccessible2602 should include {"access" => []}2603 behaves like a valid token2604 should include :token2605 should include "access"2606 a expirable2607 for default configuration2608 should not be within 2 of 2018-06-07 12:51:18 +00002609 for changed configuration2610 should be within 2 of 2018-06-07 12:51:19 +00002611 behaves like not a container repository factory2612 does not create a new container repository resource2613 when you are member2614 behaves like a pullable2615 behaves like an accessible2616 has the correct scope2617 behaves like a valid token2618 should include :token2619 should include "access"2620 a expirable2621 for default configuration2622 should not be within 2 of 2018-06-07 12:51:21 +00002623 for changed configuration2624 should be within 2 of 2018-06-07 12:51:21 +00002625 behaves like not a container repository factory2626 does not create a new container repository resource2627 when you are owner2628 behaves like a pullable2629 behaves like an accessible2630 has the correct scope2631 behaves like a valid token2632 should include :token2633 should include "access"2634 a expirable2635 for default configuration2636 should not be within 2 of 2018-06-07 12:51:23 +00002637 for changed configuration2638 should be within 2 of 2018-06-07 12:51:23 +00002639 behaves like not a container repository factory2640 does not create a new container repository resource2641 when you are admin2642 when you are not member2643 behaves like an inaccessible2644 should include {"access" => []}2645 behaves like a valid token2646 should include :token2647 should include "access"2648 a expirable2649 for default configuration2650 should not be within 2 of 2018-06-07 12:51:25 +00002651 for changed configuration2652 should be within 2 of 2018-06-07 12:51:25 +00002653 behaves like not a container repository factory2654 does not create a new container repository resource2655 when you are member2656 behaves like a pullable2657 behaves like an accessible2658 has the correct scope2659 behaves like a valid token2660 should include :token2661 should include "access"2662 a expirable2663 for default configuration2664 should not be within 2 of 2018-06-07 12:51:27 +00002665 for changed configuration2666 should be within 2 of 2018-06-07 12:51:28 +00002667 behaves like not a container repository factory2668 does not create a new container repository resource2669 when you are owner2670 behaves like a pullable2671 behaves like an accessible2672 has the correct scope2673 behaves like a valid token2674 should include :token2675 should include "access"2676 a expirable2677 for default configuration2678 should not be within 2 of 2018-06-07 12:51:29 +00002679 for changed configuration2680 should be within 2 of 2018-06-07 12:51:30 +00002681 behaves like not a container repository factory2682 does not create a new container repository resource2683 when pushing2684 disallow for all2685 when you are member2686 behaves like an inaccessible2687 should include {"access" => []}2688 behaves like a valid token2689 should include :token2690 should include "access"2691 a expirable2692 for default configuration2693 should not be within 2 of 2018-06-07 12:51:32 +00002694 for changed configuration2695 should be within 2 of 2018-06-07 12:51:32 +00002696 behaves like not a container repository factory2697 does not create a new container repository resource2698 when you are owner2699 behaves like an inaccessible2700 should include {"access" => []}2701 behaves like a valid token2702 should include :token2703 should include "access"2704 a expirable2705 for default configuration2706 should not be within 2 of 2018-06-07 12:51:34 +00002707 for changed configuration2708 should be within 2 of 2018-06-07 12:51:34 +00002709 behaves like not a container repository factory2710 does not create a new container repository resource2711 for project without container registry2712 disallow when pulling2713 behaves like an inaccessible2714 should include {"access" => []}2715 behaves like a valid token2716 should include :token2717 should include "access"2718 a expirable2719 for default configuration2720 should not be within 2 of 2018-06-07 12:51:36 +00002721 for changed configuration2722 should be within 2 of 2018-06-07 12:51:37 +00002723 behaves like not a container repository factory2724 does not create a new container repository resource2725 registry catalog browsing authorized as admin2726 behaves like a browsable2727 has the correct scope2728 behaves like a valid token2729 should include :token2730 should include "access"2731 a expirable2732 for default configuration2733 should not be within 2 of 2018-06-07 12:51:37 +00002734 for changed configuration2735 should be within 2 of 2018-06-07 12:51:37 +00002736 behaves like not a container repository factory2737 does not create a new container repository resource2738 unauthorized2739 disallow to use scope-less authentication2740 behaves like a forbidden2741 should include {:http_status => 403}2742 should not include :token2743 behaves like not a container repository factory2744 does not create a new container repository resource2745 for invalid scope2746 behaves like a forbidden2747 should include {:http_status => 403}2748 should not include :token2749 behaves like not a container repository factory2750 does not create a new container repository resource2751 for private project2752 behaves like a forbidden2753 should include {:http_status => 403}2754 should not include :token2755 for public project2756 when pulling and pushing2757 behaves like a pullable2758 behaves like an accessible2759 has the correct scope2760 behaves like a valid token2761 should include :token2762 should include "access"2763 a expirable2764 for default configuration2765 should not be within 2 of 2018-06-07 12:51:38 +00002766 for changed configuration2767 should be within 2 of 2018-06-07 12:51:38 +00002768 behaves like not a container repository factory2769 does not create a new container repository resource2770 when pushing2771 behaves like a forbidden2772 should include {:http_status => 403}2773 should not include :token2774 behaves like not a container repository factory2775 does not create a new container repository resource2776 for registry catalog2777 behaves like a forbidden2778 should include {:http_status => 403}2779 should not include :token2780 behaves like not a container repository factory2781 does not create a new container repository resource2782 for deploy tokens2783 when deploy token has read_registry as a scope2784 for public project2785 when pulling2786 behaves like a pullable2787 behaves like an accessible2788 has the correct scope2789 behaves like a valid token2790 should include :token2791 should include "access"2792 a expirable2793 for default configuration2794 should not be within 2 of 2018-06-07 12:51:40 +00002795 for changed configuration2796 should be within 2 of 2018-06-07 12:51:40 +00002797 when pushing2798 behaves like an inaccessible2799 should include {"access" => []}2800 behaves like a valid token2801 should include :token2802 should include "access"2803 a expirable2804 for default configuration2805 should not be within 2 of 2018-06-07 12:51:40 +00002806 for changed configuration2807 should be within 2 of 2018-06-07 12:51:41 +00002808 for internal project2809 when pulling2810 behaves like a pullable2811 behaves like an accessible2812 has the correct scope2813 behaves like a valid token2814 should include :token2815 should include "access"2816 a expirable2817 for default configuration2818 should not be within 2 of 2018-06-07 12:51:41 +00002819 for changed configuration2820 should be within 2 of 2018-06-07 12:51:41 +00002821 when pushing2822 behaves like an inaccessible2823 should include {"access" => []}2824 behaves like a valid token2825 should include :token2826 should include "access"2827 a expirable2828 for default configuration2829 should not be within 2 of 2018-06-07 12:51:42 +00002830 for changed configuration2831 should be within 2 of 2018-06-07 12:51:42 +00002832 for private project2833 when pulling2834 behaves like a pullable2835 behaves like an accessible2836 has the correct scope2837 behaves like a valid token2838 should include :token2839 should include "access"2840 a expirable2841 for default configuration2842 should not be within 2 of 2018-06-07 12:51:43 +00002843 for changed configuration2844 should be within 2 of 2018-06-07 12:51:43 +00002845 when pushing2846 behaves like an inaccessible2847 should include {"access" => []}2848 behaves like a valid token2849 should include :token2850 should include "access"2851 a expirable2852 for default configuration2853 should not be within 2 of 2018-06-07 12:51:44 +00002854 for changed configuration2855 should be within 2 of 2018-06-07 12:51:44 +00002856 when deploy token does not have read_registry scope2857 for public project2858 when pulling2859 behaves like a pullable2860 behaves like an accessible2861 has the correct scope2862 behaves like a valid token2863 should include :token2864 should include "access"2865 a expirable2866 for default configuration2867 should not be within 2 of 2018-06-07 12:51:45 +00002868 for changed configuration2869 should be within 2 of 2018-06-07 12:51:45 +00002870 for internal project2871 when pulling2872 behaves like an inaccessible2873 should include {"access" => []}2874 behaves like a valid token2875 should include :token2876 should include "access"2877 a expirable2878 for default configuration2879 should not be within 2 of 2018-06-07 12:51:46 +00002880 for changed configuration2881 should be within 2 of 2018-06-07 12:51:46 +00002882 for private project2883 when pulling2884 behaves like an inaccessible2885 should include {"access" => []}2886 behaves like a valid token2887 should include :token2888 should include "access"2889 a expirable2890 for default configuration2891 should not be within 2 of 2018-06-07 12:51:47 +00002892 for changed configuration2893 should be within 2 of 2018-06-07 12:51:47 +00002894 when deploy token is not related to the project2895 for public project2896 when pulling2897 behaves like a pullable2898 behaves like an accessible2899 has the correct scope2900 behaves like a valid token2901 should include :token2902 should include "access"2903 a expirable2904 for default configuration2905 should not be within 2 of 2018-06-07 12:51:48 +00002906 for changed configuration2907 should be within 2 of 2018-06-07 12:51:48 +00002908 for internal project2909 when pulling2910 behaves like an inaccessible2911 should include {"access" => []}2912 behaves like a valid token2913 should include :token2914 should include "access"2915 a expirable2916 for default configuration2917 should not be within 2 of 2018-06-07 12:51:48 +00002918 for changed configuration2919 should be within 2 of 2018-06-07 12:51:48 +00002920 for private project2921 when pulling2922 behaves like an inaccessible2923 should include {"access" => []}2924 behaves like a valid token2925 should include :token2926 should include "access"2927 a expirable2928 for default configuration2929 should not be within 2 of 2018-06-07 12:51:49 +00002930 for changed configuration2931 should be within 2 of 2018-06-07 12:51:49 +00002932 when deploy token has been revoked2933 for public project2934 behaves like a pullable2935 behaves like an accessible2936 has the correct scope2937 behaves like a valid token2938 should include :token2939 should include "access"2940 a expirable2941 for default configuration2942 should not be within 2 of 2018-06-07 12:51:50 +00002943 for changed configuration2944 should be within 2 of 2018-06-07 12:51:50 +00002945 for internal project2946 behaves like an inaccessible2947 should include {"access" => []}2948 behaves like a valid token2949 should include :token2950 should include "access"2951 a expirable2952 for default configuration2953 should not be within 2 of 2018-06-07 12:51:51 +00002954 for changed configuration2955 should be within 2 of 2018-06-07 12:51:51 +00002956 for private project2957 behaves like an inaccessible2958 should include {"access" => []}2959 behaves like a valid token2960 should include :token2961 should include "access"2962 a expirable2963 for default configuration2964 should not be within 2 of 2018-06-07 12:51:51 +00002965 for changed configuration2966 should be within 2 of 2018-06-07 12:51:52 +00002967CycleAnalytics#staging2968 start condition: merge request that closes issue is merged2969 end condition: merge request that closes issue is deployed to production2970 finds the median of available durations between the two conditions2971 when the data belongs to another project2972 returns nil2973 when the end condition happens before the start condition2974 returns nil2975 start condition NOT PRESENT: merge request that closes issue is merged2976 end condition: merge request that closes issue is deployed to production2977 returns nil2978 start condition: merge request that closes issue is merged2979 end condition NOT PRESENT: merge request that closes issue is deployed to production2980 returns nil2981 start condition: merge request that closes issue is merged2982 end condition: production deploy happens after merge request is merged (along with other changes)2983 finds the median of available durations between the two conditions2984 when the data belongs to another project2985 returns nil2986 when the end condition happens before the start condition2987 returns nil2988 start condition NOT PRESENT: merge request that closes issue is merged2989 end condition: production deploy happens after merge request is merged (along with other changes)2990 returns nil2991 start condition: merge request that closes issue is merged2992 end condition NOT PRESENT: production deploy happens after merge request is merged (along with other changes)2993 returns nil2994 start condition: merge request that closes issue is merged2995 end condition: merge request that closes issue is deployed to production and production deploy happens after merge request is merged (along with other changes)2996 finds the median of available durations between the two conditions2997 when the data belongs to another project2998 returns nil2999 when the end condition happens before the start condition3000 returns nil3001 start condition NOT PRESENT: merge request that closes issue is merged3002 end condition: merge request that closes issue is deployed to production and production deploy happens after merge request is merged (along with other changes)3003 returns nil3004 start condition: merge request that closes issue is merged3005 end condition NOT PRESENT: merge request that closes issue is deployed to production and production deploy happens after merge request is merged (along with other changes)3006 returns nil3007 when none of the start / end conditions are matched3008 returns nil3009 when a regular merge request (that doesn't close the issue) is merged and deployed3010 returns nil3011 when the deployment happens to a non-production environment3012 returns nil3013API::Members3014 behaves like GET /:sources/:id/members3015 with :sources == projects3016 avoids N+1 queries3017 does not return invitees3018 finds members with query string3019 finds all members with no query specified3020 behaves like a 404 response when source is private3021 returns 4043022 when authenticated as a master3023 returns 2003024 when authenticated as a developer3025 returns 2003026 when authenticated as a access_requester3027 returns 2003028 when authenticated as a stranger3029 returns 2003030 behaves like GET /:sources/:id/members3031 with :sources == groups3032 avoids N+1 queries3033 does not return invitees3034 finds members with query string3035 finds all members with no query specified3036 behaves like a 404 response when source is private3037 returns 4043038 when authenticated as a master3039 returns 2003040 when authenticated as a developer3041 returns 2003042 when authenticated as a access_requester3043 returns 2003044 when authenticated as a stranger3045 returns 2003046 behaves like GET /:sources/:id/members/:user_id3047 with :sources == projects3048 behaves like a 404 response when source is private3049 returns 4043050 when authenticated as a non-member3051 as a access_requester3052 returns 2003053 as a stranger3054 returns 2003055 behaves like GET /:sources/:id/members/:user_id3056 with :sources == groups3057 behaves like a 404 response when source is private3058 returns 4043059 when authenticated as a non-member3060 as a access_requester3061 returns 2003062 as a stranger3063 returns 2003064 behaves like POST /:sources/:id/members3065 with :sources == projects3066 returns 409 if member already exists3067 returns 400 when user_id is not given3068 returns 400 when access_level is not given3069 returns 400 when access_level is not valid3070 behaves like a 404 response when source is private3071 returns 4043072 when authenticated as a non-member or member with insufficient rights3073 as a access_requester3074 returns 4033075 as a stranger3076 returns 4033077 as a developer3078 returns 4033079 when authenticated as a master/owner3080 creates a new member3081 and new member is already a requester3082 transforms the requester into a proper member3083 behaves like POST /projects/:id/members with the project group membership locked3084 project in a group3085 returns a 405 method not allowed error when group membership lock is enabled3086 behaves like POST /:sources/:id/members3087 with :sources == groups3088 returns 409 if member already exists3089 returns 400 when user_id is not given3090 returns 400 when access_level is not given3091 returns 400 when access_level is not valid3092 behaves like a 404 response when source is private3093 returns 4043094 when authenticated as a non-member or member with insufficient rights3095 as a access_requester3096 returns 4033097 as a stranger3098 returns 4033099 as a developer3100 returns 4033101 when authenticated as a master/owner3102 creates a new member3103 and new member is already a requester3104 transforms the requester into a proper member3105 behaves like PUT /:sources/:id/members/:user_id3106 with :sources == projects3107 returns 409 if member does not exist3108 returns 400 when access_level is not given3109 returns 400 when access level is not valid3110 behaves like a 404 response when source is private3111 returns 4043112 when authenticated as a non-member or member with insufficient rights3113 as a access_requester3114 returns 4033115 as a stranger3116 returns 4033117 as a developer3118 returns 4033119 when authenticated as a master/owner3120 updates the member3121 behaves like PUT /:sources/:id/members/:user_id3122 with :sources == groups3123 returns 409 if member does not exist3124 returns 400 when access_level is not given3125 returns 400 when access level is not valid3126 behaves like a 404 response when source is private3127 returns 4043128 when authenticated as a non-member or member with insufficient rights3129 as a access_requester3130 returns 4033131 as a stranger3132 returns 4033133 as a developer3134 returns 4033135 when authenticated as a master/owner3136 updates the member3137 behaves like DELETE /:sources/:id/members/:user_id3138 with :sources == projects3139 returns 404 if member does not exist3140 behaves like a 404 response when source is private3141 returns 4043142 when authenticated as a non-member or member with insufficient rights3143 as a access_requester3144 returns 4033145 as a stranger3146 returns 4033147 when authenticated as a member and deleting themself3148 deletes the member3149 when authenticated as a master/owner3150 deletes the member3151 and member is a requester3152 returns 4043153 behaves like 412 response3154 for a modified ressource3155 returns 4123156 for an unmodified ressource3157 returns accepted3158 behaves like DELETE /:sources/:id/members/:user_id3159 with :sources == groups3160 returns 404 if member does not exist3161 behaves like a 404 response when source is private3162 returns 4043163 when authenticated as a non-member or member with insufficient rights3164 as a access_requester3165 returns 4033166 as a stranger3167 returns 4033168 when authenticated as a member and deleting themself3169 deletes the member3170 when authenticated as a master/owner3171 deletes the member3172 and member is a requester3173 returns 4043174 behaves like 412 response3175 for a modified ressource3176 returns 4123177 for an unmodified ressource3178 returns accepted3179 Adding owner to project3180 returns 4033181Projects > Files > User creates files3182 without commiting a new file3183 when an user has write access3184 opens new file page3185 when an user does not have write access3186 opens new file page on a forked project3187 with commiting a new file3188 when an user has write access3189 allows Chinese characters in file name3190 allows Chinese characters in directory name3191 does not allow directory traversal in file name3192 creates and commit a new file3193 creates and commit a new file with new lines at the end of file3194 creates and commit a new file with a directory name3195 creates and commit a new file specifying a new branch3196 when an user does not have write access3197 shows a message saying the file will be committed in a fork3198 creates and commit new file in forked project3199MergeRequests::CreateService3200 #execute3201 valid params3202 creates an MR3203 executes hooks with default action3204 refreshes the number of open merge requests3205 does not creates todos3206 creates exactly 1 create MR event3207 when marked with /wip3208 in title and in description3209 sets MR to WIP3210 in description only3211 sets MR to WIP3212 when merge request is assigned to someone3213 should eq #<User id:1318 @user1237>3214 creates a todo for new assignee3215 when head pipelines already exist for merge request source branch3216 sets head pipeline3217 when merge request head commit sha does not match pipeline sha3218 sets the head pipeline correctly3219 behaves like new issuable record that supports quick actions3220 with labels in command only3221 attaches labels to issuable3222 with labels in params and command3223 attaches all labels to issuable3224 with assignee and milestone in command only3225 assigns and sets milestone to issuable3226 /close3227 returns an open issue3228 Quick actions3229 with assignee and milestone in params and command3230 assigns and sets milestone to issuable from command3231 merge request create service3232 asssignee_id3233 removes assignee_id when user id is invalid3234 removes assignee_id when user id is 03235 saves assignee when user id is valid3236 when assignee is set3237 invalidates open merge request counter for assignees when merge request is assigned3238 when issuable feature is private3239 removes not authorized assignee when project is Internal3240 removes not authorized assignee when project is Public3241 while saving references to issues that the created merge request closes3242 creates a `MergeRequestsClosingIssues` record for each issue3243 when source and target projects are different3244 when user can not access source project3245 raises an error3246 when user can not access target project3247 raises an error3248 when the user has access to both projects3249 creates the merge request3250 does not create the merge request when the target project is archived3251 when user sets source project id3252 ignores source_project_id3253Copy as GFM3254 Copying rendered GFM3255 works3256 Copying code3257 from a diff3258 inline diff3259 behaves like copying code from a diff3260 selecting one word of text3261 copies as inline code3262 selecting one line of text3263 copies as inline code3264 selecting multiple lines of text3265 copies as a code block3266 parallel diff3267 behaves like copying code from a diff3268 selecting one word of text3269 copies as inline code3270 selecting one line of text3271 copies as inline code3272 selecting multiple lines of text3273 copies as a code block3274 selecting code on the left3275 copies as a code block3276 selecting code on the right3277 copies as a code block3278 from a blob3279 selecting one word of text3280 copies as inline code3281 selecting one line of text3282 copies as inline code3283 selecting multiple lines of text3284 copies as a code block3285 from a GFM code block3286 selecting one word of text3287 copies as inline code3288 selecting one line of text3289 copies as inline code3290 selecting multiple lines of text3291 copies as a code block with the correct language3292Gitlab::BackgroundMigration::MigrateEventsToPushEventPayloads::Event3293 #commit_title3294 returns nil when there are no commits3295 returns nil when there are commits without commit messages3296 returns the commit message when it is less than 70 characters long3297 returns the first line of a commit message if multiple lines are present3298 truncates the commit to 70 characters when it is too long3299 #commit_from_sha3300 returns nil when pushing to a new ref3301 returns the ID of the first commit when pushing to an existing ref3302 #commit_to_sha3303 returns nil when removing an existing ref3304 returns the ID of the last commit when pushing to an existing ref3305 #data3306 returns the deserialized data3307 returns an empty hash when no data is present3308 #commits3309 returns an Array of commits3310 returns an empty array when no data is present3311 #commit_count3312 returns the number of commits3313 returns 0 when no data is present3314 #ref3315 returns the name of the ref3316 #trimmed_ref_name3317 returns the trimmed ref name for a branch3318 returns the trimmed ref name for a tag3319 #create?3320 returns true when creating a new ref3321 returns false when pushing to an existing ref3322 #remove?3323 returns true when removing an existing ref3324 returns false when pushing to an existing ref3325 #push_action3326 returns :created when creating a new ref3327 returns :removed when removing an existing ref3328 returns :pushed when pushing to an existing ref3329 #ref_type3330 returns :tag for a tag3331 returns :branch for a branch3332Gitlab::BackgroundMigration::MigrateEventsToPushEventPayloads3333 #perform3334 returns if data should not be migrated3335 migrates the range of events if data is to be migrated3336 #process_event3337 processes a regular event3338 processes a push event3339 handles an error gracefully3340 #replicate_event3341 replicates the event to the "events_for_migration" table3342 #create_push_event_payload3343 creates a push event payload for an event3344 does not create push event payloads for removed events3345 encodes and decodes the commit IDs from and to binary data3346 #find_events3347 returns the events for the given ID range3348 #migrate?3349 returns true when data should be migrated3350 returns false if the "events" table does not exist3351 returns false if the "push_event_payloads" table does not exist3352 returns false when the "events_for_migration" table does not exist3353 #pack3354 packs a SHA1 into a 20 byte binary string3355 returns nil if the input value is nil3356Merge Request button3357 on branches page3358 behaves like Merge request button only shown when allowed3359 not logged in3360 does not show Create merge request button3361 logged in as developer3362 shows Create merge request button3363 merge requests are disabled3364 does not show Create merge request button3365 when the project is archived3366 hides the link3367 logged in as non-member3368 does not show Create merge request button3369 on own fork of project3370 shows Create merge request button3371 on compare page3372 behaves like Merge request button only shown when allowed3373 not logged in3374 does not show Create merge request button3375 logged in as developer3376 shows Create merge request button3377 merge requests are disabled3378 does not show Create merge request button3379 when the project is archived3380 hides the link3381 logged in as non-member3382 does not show Create merge request button3383 on own fork of project3384 shows Create merge request button3385 on commits page3386 behaves like Merge request button only shown when allowed3387 not logged in3388 does not show Create merge request button3389 logged in as developer3390 shows Create merge request button3391 merge requests are disabled3392 does not show Create merge request button3393 when the project is archived3394 hides the link3395 logged in as non-member3396 does not show Create merge request button3397 on own fork of project3398 shows Create merge request button3399Gitlab::CycleAnalytics::StageSummary3400 #new_issues3401 finds the number of issues created after the 'from date'3402 doesn't find issues from other projects3403 #commits3404 finds the number of commits created after the 'from date'3405 doesn't find commits from other projects3406 finds a large (> 100) snumber of commits if present3407 #deploys3408 finds the number of deploys made created after the 'from date'3409 doesn't find commits from other projects3410Project members list3411 show members from project and group3412 show user once if member of both group and project3413 update user acess level3414 add user to project3415 remove user from project3416 invite user to project3417Master creates tag3418 from tag list3419 with an invalid name displays an error3420 with an invalid reference displays an error3421 that already exists displays an error3422 with multiline message displays the message in a <pre> block3423 with multiline release notes parses the release note as Markdown3424 opens dropdown for ref3425 from new tag page3426 description has autocomplete3427ProjectsFinder3428 #execute3429 without a user3430 should eq [#<Project id:931 group115/C>]3431 with a user3432 without private projects3433 should contain exactly #<Project id:935 group116/C> and #<Project id:934 group116/B>3434 with private projects3435 should contain exactly #<Project id:939 group117/C>, #<Project id:938 group117/B>, and #<Project id:937 namespace515/A>3436 with project_ids_relation3437 should eq [#<Project id:942 group118/B>]3438 filter by visibility_level3439 private3440 should eq [#<Project id:945 namespace523/A>]3441 internal3442 should eq [#<Project id:950 group120/B>]3443 public3444 should eq [#<Project id:955 group121/C>]3445 filter by tags3446 should eq [#<Project id:959 group122/C>]3447 filter by personal3448 should eq [#<Project id:965 user1479/project750>]3449 filter by search3450 should eq [#<Project id:968 group124/C>]3451 filter by name for backward compatibility3452 should eq [#<Project id:972 group125/C>]3453 filter by archived3454 non_archived=true3455 should contain exactly #<Project id:976 group126/C> and #<Project id:975 group126/B>3456 non_archived=false3457 should contain exactly #<Project id:981 group127/C>, #<Project id:980 group127/B>, and #<Project id:983 namespace560/E>3458 filter by archived only3459 should eq [#<Project id:988 namespace565/E>]3460 filter by archived for backward compatibility3461 should contain exactly #<Project id:991 group129/C> and #<Project id:990 group129/B>3462 filter by trending3463 should eq [#<Project id:996 group130/C>]3464 filter by owned3465 should eq [#<Project id:1002 user1539/project751>]3466 filter by non_public3467 should eq [#<Project id:1003 namespace579/A>]3468 filter by starred3469 should eq [#<Project id:1009 group133/C>]3470 returns only projects the user has access to3471 sorting3472 should eq [#<Project id:1016 group135/B>, #<Project id:1017 group135/C>]3473Multi-file editor new file3474 creates file in current directory3475Banzai::Filter::ExternalIssueReferenceFilter3476 redmine project3477 behaves like external issue tracker3478 requires project context3479 ignores valid references contained inside 'pre' element3480 ignores valid references contained inside 'code' element3481 ignores valid references contained inside 'a' element3482 ignores valid references contained inside 'style' element3483 ignores valid references when using default tracker3484 links to a valid reference3485 links to the external tracker3486 links with adjacent text3487 includes a title attribute3488 escapes the title attribute3489 includes default classes3490 supports an :only_path context3491 behaves like a reference containing an element node3492 does not escape inner html3493 with RequestStore enabled3494 queries the collection on the first call3495 jira project3496 with right markdown3497 behaves like external issue tracker3498 requires project context3499 ignores valid references contained inside 'pre' element3500 ignores valid references contained inside 'code' element3501 ignores valid references contained inside 'a' element3502 ignores valid references contained inside 'style' element3503 ignores valid references when using default tracker3504 links to a valid reference3505 links to the external tracker3506 links with adjacent text3507 includes a title attribute3508 escapes the title attribute3509 includes default classes3510 supports an :only_path context3511 behaves like a reference containing an element node3512 does not escape inner html3513 with RequestStore enabled3514 queries the collection on the first call3515 with wrong markdown3516 ignores reference3517Template selector menu3518 editing a non-matching file3519 is not displayed3520 user toggles preview3521 template selector menu is not displayed3522 editing a matching file3523 is displayed3524 user toggles preview3525 template selector menu is hidden and shown correctly3526Commit diff3527 inline view3528 adds comment to diff3529 parallel view3530 adds comment to diff3531Member autocomplete3532 adding a new note on a Issue3533 suggests noteable author and note author3534 adding a new note on a Merge Request3535 suggests noteable author and note author3536 adding a new note on a Commit3537 suggests noteable author and note author3538Gitlab::Email::Message::RepositoryPush3539 new commits have been pushed to repository3540 #project3541 should eq #<Project id:1074 my_group/project807>3542 should be an instance of Project3543 #project_namespace3544 should eq #<Group id:1863 @my_group>3545 should be a kind of Namespace(id: integer, name: string, path: string, owner_id: integer, created_at: datetime, updated_a...markdown_version: integer, plan_id: integer, runners_token: string, project_creation_level: integer)3546 #project_name_with_namespace3547 should eq "my_group / project811"3548 #author3549 should eq #<User id:1730 @user1647>3550 should be an instance of User3551 #author_name3552 should eq "Author"3553 #commits3554 should be a kind of Array3555 should all be an instance of Commit3556 #diffs3557 should all be an instance of Gitlab::Diff::File3558 #diffs_count3559 should eq 93560 #compare3561 should be an instance of Compare3562 #compare_timeout3563 should eq false3564 #reverse_compare?3565 should eq false3566 #disable_diffs?3567 should eq false3568 #send_from_committer_email?3569 should eq true3570 #action_name3571 should eq "pushed to"3572 #ref_name3573 should eq "master"3574 #ref_type3575 should eq "branch"3576 #target_url3577 should include "compare"3578 should include "2f63565e7aac07bcdadb654e253078b727143ec4"3579 should include "570e7b2abdd848b95f2f578043fc23bd6f6fd24d"3580 #subject3581 should include "[Git][my_group/project830]"3582 should include "6 commits"3583 should include "Ruby files modified"3584Gitlab::BareRepositoryImport::Importer3585 with subgroups3586 behaves like importing a repository3587 .execute3588 creates a project for a repository in storage3589 skips wiki repos3590 without admin users3591 raises an error3592 #create_project_if_needed3593 starts an import for a project that did not exist3594 skips importing when the project already exists3595 creates a project with the correct path in the database3596 does not schedule an import3597 creates the Git repo on disk with the proper symlink for hooks3598 hashed storage enabled3599 creates a project with the correct path in the database3600 without subgroups3601 behaves like importing a repository3602 .execute3603 creates a project for a repository in storage3604 skips wiki repos3605 without admin users3606 raises an error3607 #create_project_if_needed3608 starts an import for a project that did not exist3609 skips importing when the project already exists3610 creates a project with the correct path in the database3611 does not schedule an import3612 creates the Git repo on disk with the proper symlink for hooks3613 hashed storage enabled3614 creates a project with the correct path in the database3615 without groups3616 starts an import for a project that did not exist3617 creates a project with the correct path in the database3618 creates the Git repo in disk3619 moves an existing project to the correct path3620 with Wiki3621 creates the Wiki git repo in disk3622 behaves like importing a repository3623 .execute3624 creates a project for a repository in storage3625 skips wiki repos3626 without admin users3627 raises an error3628 #create_project_if_needed3629 starts an import for a project that did not exist3630 skips importing when the project already exists3631 creates a project with the correct path in the database3632 does not schedule an import3633 creates the Git repo on disk with the proper symlink for hooks3634 hashed storage enabled3635 creates a project with the correct path in the database3636 when subgroups are not available3637 #create_project_if_needed3638 raises an error3639Gitlab::Git::GitlabProjects3640 #initialize3641 should eq "/builds/gitlab-org/gitlab-ee/tmp/tests/repositories/"3642 should eq "@hashed/82/9f/829f00a11ddfdebb51b67a913981eddb7937c3f8f01f4140415a24ff1cc29609.git"3643 should eq "/builds/gitlab-org/gitlab-ee/tmp/tests/repositories/@hashed/39/58/3958de59a1ae60b4330e99d6a5b791897717cdd2347260d0f71df22d60b01062.git"3644 should eq #<Double "logger">3645 #push_branches3646 executes the command3647 fails3648 with --force3649 executes the command3650 #fetch_remote3651 with default args3652 executes the command3653 fails3654 with --force3655 executes the command with forced option3656 with --no-tags3657 executes the command3658 with no prune3659 executes the command3660 with an SSH key3661 sets GIT_SSH to a custom script3662 with known_hosts data3663 sets GIT_SSH to a custom script3664 #import_project3665 when Gitaly import_repository feature is enabled3666 behaves like importing repository3667 success import3668 imports a repo3669 already exists3670 doesn't import3671 when Gitaly import_repository feature is disabled3672 logging3673 imports a repo3674 timeout3675 does not import a repo3676 behaves like importing repository3677 success import3678 imports a repo3679 already exists3680 doesn't import3681 #fork_repository3682 when Gitaly fork_repository feature is enabled3683 behaves like forking a repository3684 forks the repository3685 does not fork if a project of the same name already exists3686 when Gitaly fork_repository feature is disabled3687 behaves like forking a repository3688 forks the repository3689 does not fork if a project of the same name already exists3690 different storages3691 forks the repo3692 log messages3693 successful fork3694 should receive info("Forking repository from </builds/gitlab-org/gitlab-ee/tmp/tests/repositories/@hashed/28/fd/28fdc24c9...903450bbe641a5.git> to </builds/gitlab-org/gitlab-ee/tmp/tests/repositories/@hashed/aa/bb/xyz.git>.") 1 time3695 failed fork due existing destination3696 should receive error("fork-repository failed: destination repository </builds/gitlab-org/gitlab-ee/tmp/tests/repositories/@hashed/aa/bb/xyz.git> already exists.") 1 time3697admin deploy keys3698 show all public deploy keys3699 shows all the projects the deploy key has write access3700 create a new deploy key3701 creates a new deploy key3702 update an existing deploy key3703 updates an existing deploy key3704 remove an existing deploy key3705 removes an existing deploy key3706GlobalPolicy3707 reading the list of users3708 for a logged in user3709 should be allowed :read_users_list3710 for an anonymous user3711 when the public level is restricted3712 should not be allowed :read_users_list3713 when the public level is not restricted3714 should be allowed :read_users_list3715 for an admin3716 when the public level is restricted3717 should be allowed :read_users_list3718 when the public level is not restricted3719 should be allowed :read_users_list3720 create fork3721 when user has not exceeded project limit3722 should be allowed :create_fork3723 when user has exceeded project limit3724 should not be allowed :create_fork3725 when user is a master in a group3726 should be allowed :create_fork3727 custom attributes3728 regular user3729 should not be allowed :read_custom_attribute3730 should not be allowed :update_custom_attribute3731 admin3732 should be allowed :read_custom_attribute3733 should be allowed :update_custom_attribute3734 API access3735 regular user3736 should be allowed :access_api3737 admin3738 should be allowed :access_api3739 anonymous3740 should be allowed :access_api3741 when terms are enforced3742 regular user3743 behaves like access allowed when terms accepted3744 should not be allowed :access_api3745 allows access_api when the user accepted the terms3746 admin3747 behaves like access allowed when terms accepted3748 should not be allowed :access_api3749 allows access_api when the user accepted the terms3750 anonymous3751 should be allowed :access_api3752 git access3753 regular user3754 should be allowed :access_git3755 admin3756 should be allowed :access_git3757 anonymous3758 should be allowed :access_git3759 when terms are enforced3760 regular user3761 behaves like access allowed when terms accepted3762 should not be allowed :access_git3763 allows access_git when the user accepted the terms3764 admin3765 behaves like access allowed when terms accepted3766 should not be allowed :access_git3767 allows access_git when the user accepted the terms3768 anonymous3769 should be allowed :access_git3770Projects::AutocompleteService3771 #issues3772 confidential issues3773 does not list project confidential issues for guests3774 does not list project confidential issues for non project members3775 does not list project confidential issues for project members with guest role3776 lists project confidential issues for author3777 lists project confidential issues for assignee3778 lists project confidential issues for project members3779 lists all project issues for admin3780 #milestones3781 includes project and group milestones and sorts them correctly3782 does not include closed milestones3783 does not include milestones from other projects in the group3784 with nested groups3785 includes project milestones and all acestors milestones3786Labels::TransferService3787 #execute3788 recreates the missing group labels at project level3789 recreates label priorities related to the missing group labels3790 does not recreate missing group labels that are not applied to issues or merge requests3791 does not recreate missing group labels that already exist in the project group3792 updates only label links in the given project3793Gitlab::Database::Count3794 .approximate_counts3795 with MySQL3796 when reltuples have not been updated3797 counts all models the normal way3798 with PostgreSQL3799 when reltuples have not been updated3800 counts all models the normal way3801 no permission3802 falls back to standard query3803 when some reltuples have been updated3804 counts projects in the fast way3805 when all reltuples have been updated3806 counts models with the standard way3807Slack slash commands3808 shows a token placeholder3809 shows a help message3810 redirects to the integrations page after saving but not activating3811 redirects to the integrations page after activating3812 shows the correct trigger url3813DiffViewer::Base3814 .can_render?3815 when the extension is supported3816 when the binaryness matches3817 returns true3818 when the binaryness does not match3819 returns false3820 when the file type is supported3821 when the binaryness matches3822 returns true3823 when the binaryness does not match3824 returns false3825 when the extension and file type are not supported3826 returns false3827 when the file was renamed and only the old blob is supported3828 returns false3829 #collapsed?3830 when the combined blob size is larger than the collapse limit3831 returns true3832 when the combined blob size is smaller than the collapse limit3833 returns false3834 #too_large?3835 when the combined blob size is larger than the size limit3836 returns true3837 when the blob size is smaller than the size limit3838 returns false3839 #render_error3840 when the combined blob size is larger than the size limit3841 returns :too_large3842 when the combined blob size is smaller than the size limit3843 returns nil3844Profile > Applications3845 User manages applications3846 views an application3847 deletes an application3848 deletes an authorized application3849Banzai::ReferenceParser::CommitRangeParser3850 #nodes_visible_to_user3851 when the link has a data-issue attribute3852 behaves like referenced feature visibility3853 when feature is disabled3854 does not create reference3855 when feature is enabled only for team members3856 does not create reference for non member3857 creates reference for member3858 when feature is enabled3859 creates reference3860 #referenced_by3861 when the link has a data-project attribute3862 when the link as a data-commit-range attribute3863 returns an Array of commit ranges3864 returns an empty Array when the commit range could not be found3865 when the link does not have a data-commit-range attribute3866 returns an empty Array3867 when the link does not have a data-project attribute3868 returns an empty Array3869 #commit_range_ids_per_project3870 returns a Hash containing range IDs per project3871 does not add a project when the data-commit-range attribute is empty3872 #find_ranges3873 returns an Array of range objects3874 skips ranges that could not be found3875 #find_object3876 when the range has valid commits3877 returns the commit range3878 when the range does not have any valid commits3879 returns nil3880 group context3881 returns nil3882Projects::RepositoriesController3883 GET archive3884 as a guest3885 responds with redirect in correct format3886 as a user3887 uses Gitlab::Workhorse3888 responds with redirect to the short name archive if fully qualified3889 handles legacy queries with no ref3890 handles legacy queries with the ref specified as ref in params3891 handles legacy queries with the ref specified as id in params3892 prioritizes the id param over the ref param when both are specified3893 when the service raises an error3894 renders Not Found3895Dashboard Issues Feed3896 GET /issues3897 atom feed3898 returns 400 if no filter is used3899 renders atom feed via personal access token3900 renders atom feed via feed token3901 renders atom feed with url parameters3902 issue with basic fields3903 renders issue fields3904 issue with label and milestone3905 renders issue label and milestone info3906FinderWithCrossProjectAccess3907 when the user cannot read cross project3908 #execute3909 returns a issue if the check is disabled3910 returns an empty relation when the check is enabled3911 only queries once when check is enabled3912 only queries once when check is disabled3913 #find3914 checks the accessibility of the subject directly3915 returns the issue3916 #find_by3917 checks the accessibility of the subject directly3918 #find_by!3919 checks the accessibility of the subject directly3920 re-enables the check after the find failed3921 when the user can read cross project3922 returns the result3923Gitlab::DataBuilder::Build3924 .build3925 should be a kind of Hash3926 should eq "master"3927 should eq "97de212e80737a608d939f648d959671fb0a0142"3928 should eq false3929 should eq 423930 should eq "pending"3931 should eq false3932 should eq 12583933 should eq "John Doe2085 / project977"3934 commit author_url3935 when no commit present3936 sets to mailing address of git_author_email3937 when commit present but has no author3938 sets to mailing address of git_author_email3939 when commit and author are present3940 sets to GitLab user url3941MigrateOldArtifacts3942 with migratable data3943 legacy artifacts are not accessible3944 legacy artifacts are set3945 #min_id3946 returns the newest build for which ci_id is not defined3947 #builds_with_artifacts3948 returns a list of builds that has artifacts and could be migrated3949 #up3950 when migrating artifacts3951 all files do have artifacts3952 artifacts are no longer present on legacy path3953 when there are aritfacts in old and new directory3954 does not move old files3955FinderMethods3956 #find_by!3957 returns the project if the user has access3958 raises not found when the project is not found3959 raises not found the user does not have access3960 #find3961 returns the project if the user has access3962 raises not found when the project is not found3963 raises not found the user does not have access3964 #find_by3965 returns the project if the user has access3966 returns nil when the project is not found3967 returns nil when the user does not have access3968Banzai::Redactor3969 #redact3970 when reference not visible to user3971 redacts an array of documents3972 replaces redacted reference with inner HTML3973 returns <a> tag with original href if it is originally a link reference3974 when data-original attribute provided3975 replaces redacted reference with original content3976 when project is in pending delete3977 redacts an issue attached3978 redacts an external issue3979 when reference visible to user3980 does not redact an array of documents3981 when the user cannot read cross project3982 skips links to issues within the same project3983 removes info from a cross project reference3984 #redact_nodes3985 redacts an Array of nodes3986 #nodes_visible_to_user3987 returns a Set containing the visible nodes3988User deletes wiki page3989 deletes a page3990Groups::NestedCreateService3991 without subgroups3992 creates the group3993 returns the group if it already existed3994 raises an error when tring to create a subgroup3995 behaves like with a visibility level3996 creates the group with correct visibility level3997 adding a visibility level3998 overwrites the visibility level3999 with subgroups4000 #execute4001 returns the group if it already existed4002 reuses a parent if it already existed4003 creates group and subgroup in the database4004 behaves like with a visibility level4005 creates the group with correct visibility level4006 adding a visibility level4007 overwrites the visibility level4008ContainerRegistry::Path4009 #components4010 splits components by a forward slash4011 #nodes4012 when repository path is valid4013 return all project path like node in reverse order4014 when repository path is invalid4015 rasises en error4016 #to_s4017 when path does not have uppercase characters4018 return a string with a repository path4019 when path has uppercase characters4020 return a string with a repository path4021 #valid?4022 when path has less than two components4023 should not be valid4024 when path has more than allowed number of components4025 should not be valid4026 when path has invalid characters4027 should not be valid4028 when path has two or more components4029 should be valid4030 when path is related to multi-level image4031 should be valid4032 when path contains uppercase letters4033 should be valid4034 when path contains double underscore4035 should be valid4036 when path contains invalid separator with dot4037 should not be valid4038 when path contains invalid separator with underscore4039 should not be valid4040 #has_repository?4041 when project exists4042 when path already has matching repository4043 should have repository4044 should have project4045 when path does not have matching repository4046 should not have repository4047 should have project4048 when project does not exist4049 should not have repository4050 should not have project4051 #repository_project4052 when project for given path exists4053 returns a correct project4054 when project for given path does not exist4055 returns nil4056 when matching multi-level path4057 when using the zero-level path4058 supports zero-level path4059 when using first-level path4060 supports first-level path4061 when using second-level path4062 supports second-level path4063 when using too deep nesting in the path4064 does not support three-levels of nesting4065 #repository_name4066 when project does not exist4067 returns nil4068 when project exists4069 when project path equal repository path4070 returns an empty string4071 when repository path has one additional level4072 returns a correct repository name4073 when repository path has two additional levels4074 returns a correct repository name4075 #project_path4076 when project does not exist4077 returns nil4078 when project with uppercase characters in path exists4079 returns downcased project path4080PersonalProjectsFinder4081 without a current user4082 should eq [#<Project id:1300 user2093/project1015>]4083 with a current user4084 normal user4085 should eq [#<Project id:1303 user2095/project1018>, #<Project id:1305 user2095/C>, #<Project id:1304 user2095/mepmep>]4086 external4087 should eq [#<Project id:1306 user2097/project1021>, #<Project id:1307 user2097/mepmep>]4088Profiles::NotificationsController4089 GET show4090 renders4091 POST update4092 updates only permitted attributes4093 shows an error message if the params are invalid4094Projects::CreateFromTemplateService4095 calls the importer service4096 returns the project thats created4097 the result project4098 overrides template description4099 overrides template visibility_level4100API::Helpers4101 #find_project4102 when ID is used as an argument4103 behaves like project finder4104 when project exists4105 returns requested project4106 returns nil4107 when PATH is used as an argument4108 behaves like project finder4109 when project exists4110 returns requested project4111 returns nil4112 with an invalid PATH4113 does not hit the database4114 behaves like project finder4115 when project exists4116 returns requested project4117 returns nil4118 #find_namespace4119 when ID is used as an argument4120 behaves like namespace finder4121 when namespace exists4122 returns requested namespace4123 when namespace doesn't exists4124 returns nil4125 when PATH is used as an argument4126 behaves like namespace finder4127 when namespace exists4128 returns requested namespace4129 when namespace doesn't exists4130 returns nil4131 #find_namespace!4132 behaves like user namespace finder4133 when namespace is group4134 when user has access to group4135 returns requested namespace4136 when user doesn't have access to group4137 raises not found error4138 when namespace is user's personal namespace4139 when user owns the namespace4140 returns requested namespace4141 when user doesn't own the namespace4142 raises not found error4143 #user_namespace4144 behaves like user namespace finder4145 when namespace is group4146 when user has access to group4147 returns requested namespace4148 when user doesn't have access to group4149 raises not found error4150 when namespace is user's personal namespace4151 when user owns the namespace4152 returns requested namespace4153 when user doesn't own the namespace4154 raises not found error4155Gitlab::Auth::Saml::User4156 #save4157 account exists on server4158 and should bind with SAML4159 adds the SAML identity to the existing user4160 external groups4161 are defined4162 marks the user as external4163 are defined but the user does not belong there4164 does not mark the user as external4165 user was external, now should not be4166 makes user internal4167 no account exists on server4168 external groups4169 are defined4170 marks the user as external4171 are defined but the user does not belong there4172 does not mark the user as external4173 with auto_link_ldap_user disabled (default)4174 with allow_single_sign_on enabled4175 creates a user from SAML4176 with allow_single_sign_on default (["saml"])4177 does not throw an error4178 with allow_single_sign_on disabled4179 throws an error4180 with auto_link_ldap_user enabled4181 and at least one LDAP provider is defined4182 and a corresponding LDAP person4183 and no account for the LDAP user4184 creates a user with dual LDAP and SAML identities4185 and LDAP user has an account already4186 adds the omniauth identity to the LDAP account4187 saves successfully on subsequent tries, when both identities are present4188 when uid is an uid4189 behaves like find LDAP person4190 adds the omniauth identity to the LDAP account4191 when uid is a dn4192 behaves like find LDAP person4193 adds the omniauth identity to the LDAP account4194 when uid is an email4195 behaves like find LDAP person4196 adds the omniauth identity to the LDAP account4197 user has SAML user, and wants to add their LDAP identity4198 adds the LDAP identity to the existing SAML user4199 when signup is disabled4200 creates the user4201 when user confirmation email is enabled4202 creates and confirms the user anyway4203 blocking4204 signup with SAML only4205 dont block on create4206 does not block the user4207 block on create4208 blocks user4209 sign-in4210 dont block on create4211 should not be blocked4212 block on create4213 should not be blocked4214 #find_user4215 raw info hash attributes empty4216 does not mark user as external4217Gitlab::SlashCommands::IssueNew4218 #execute4219 without description4220 creates the issue4221 with description4222 creates the issue with description4223 with more newlines between the title and the description4224 creates the issue4225 issue cannot be created4226 displays the errors4227 .match4228 matches the title without description4229 matches the title with description4230 matches the alias new4231TestHooks::SystemService4232 #execute4233 hook with not implemented test4234 returns error message4235 push_events4236 executes hook4237 tag_push_events4238 executes hook4239 repository_update_events4240 executes hook4241 merge_requests_events4242 returns error message if the user does not have any repository with a merge request4243 executes hook4244Projects::FindFileController4245 GET #show4246 valid branch4247 should respond with 2004248 invalid branch4249 should respond with 4044250 GET #list4251 valid branch4252 returns an array of file path list4253 invalid branch4254 responds with status 4044255UpdateHeadPipelineForMergeRequestWorker4256 #perform4257 when pipeline exists for the source project and branch4258 updates the head_pipeline_id of the merge_request4259 when merge request sha does not equal pipeline sha4260 does not update head_pipeline_id4261 when pipeline does not exist for the source project and branch4262 does not update the head_pipeline_id of the merge_request4263Gitlab::Ci::Status::External::Common4264 #label4265 returns description4266 #has_action?4267 should not have action4268 #has_details?4269 when user has access to read commit status4270 should have details4271 when user does not have access to read commit status4272 should not have details4273 #details_path4274 links to the external target URL4275Projects::Registry::TagsController4276 GET index4277 when user can control the registry4278 receive a list of tags4279 when user can read the registry4280 receive a list of tags4281 when user does not have access to registry4282 does not receive a list of tags4283 POST destroy4284 when user has access to registry4285 when there is matching tag present4286 makes it possible to delete regular tag4287 makes it possible to delete a tag that ends with a dot4288StuckImportJobsWorker4289 with scheduled import_status4290 behaves like project import job detection4291 when the job has completed4292 when the import status was already updated4293 does not mark the project as failed4294 when the import status was not updated4295 marks the project as failed4296 when the job is still in Sidekiq4297 does not mark the project as failed4298 with started import_status4299 behaves like project import job detection4300 when the job has completed4301 when the import status was already updated4302 does not mark the project as failed4303 when the import status was not updated4304 marks the project as failed4305 when the job is still in Sidekiq4306 does not mark the project as failed4307NoteSummary4308 #metadata?4309 returns true when metadata present4310 returns false when metadata not present4311 #note4312 returns note hash4313 when noteable is a commit4314 returns note hash specific to commit4315 #metadata4316 returns metadata hash4317Clusters::Gcp::VerifyProvisionStatusService4318 #execute4319 when operation status is RUNNING4320 behaves like continue_creation4321 schedules a worker for status minitoring4322 when cluster creation time exceeds timeout4323 behaves like error4324 sets an error to provider object4325 when operation status is PENDING4326 behaves like continue_creation4327 schedules a worker for status minitoring4328 when operation status is DONE4329 behaves like finalize_creation4330 schedules a worker for status minitoring4331 when operation status is unexpected4332 behaves like error4333 sets an error to provider object4334 when failed to get operation status4335 behaves like error4336 sets an error to provider object4337Labels::FindOrCreateService4338 #execute4339 when acting on behalf of a specific user4340 when finding labels on project level4341 when label does not exist at group level4342 creates a new label at project level4343 when label exists at group level4344 returns the group label4345 when label exists at project level4346 returns the project label4347 when finding labels on group level4348 when label does not exist at group level4349 creates a new label at group level4350 when label exists at group level4351 returns the group label4352 when authorization is not required4353 when finding labels on project level4354 returns the project label4355 when finding labels on group level4356 returns the group label4357Notes::ResolveService4358 #execute4359 resolves the note4360 sends notifications if all discussions are resolved4361Groups::RunnersController4362 #update4363 updates the runner and ticks the queue4364 #destroy4365 destroys the runner4366 #resume4367 marks the runner as active and ticks the queue4368 #pause4369 marks the runner as inactive and ticks the queue4370Labels::UpdateService4371 #execute4372 with color in hex-code4373 updates the label4374 with color in allowed name4375 updates the label4376 with color in up-case allowed name4377 updates the label4378 with color surrounded by spaces4379 updates the label4380 with unknown color4381 doesn't update the label4382 with no color4383 doesn't update the label4384AwardEmojiHelper4385 .toggle_award_url4386 note on personal snippet4387 returns correct url4388 note on project item4389 returns correct url4390 personal snippet4391 returns correct url4392 merge request4393 returns correct url4394 issue4395 returns correct url4396StorageMigratorWorker4397 #perform4398 enqueue jobs to ProjectMigrateHashedStorageWorker4399 sets projects as read only4400 rescues and log exceptions4401Gitlab::LegacyGithubImport::MilestoneFormatter4402 when importing a GitHub project4403 behaves like Gitlab::LegacyGithubImport::MilestoneFormatter#attributes4404 when milestone is open4405 returns formatted attributes4406 when milestone is closed4407 returns formatted attributes4408 when milestone has a due date4409 returns formatted attributes4410 when importing a Gitea project4411 behaves like Gitlab::LegacyGithubImport::MilestoneFormatter#attributes4412 when milestone is open4413 returns formatted attributes4414 when milestone is closed4415 returns formatted attributes4416 when milestone has a due date4417 returns formatted attributes4418Gitlab::GithubImport::AdvanceStageWorker4419 #perform4420 when the project no longer exists4421 does not perform any work4422 when there are remaining jobs4423 reschedules itself4424 when there are no remaining jobs4425 schedules the next stage4426 raises KeyError when the stage name is invalid4427 #wait_for_jobs4428 waits for jobs to complete and returns a new pair of keys to wait for4429 #find_project4430 returns a Project4431 returns nil if the project import is not running4432Gitlab::GitalyClient::WikiService4433 #find_page4434 sends a wiki_find_page message4435 concatenates the raw data and returns a pair of WikiPage and WikiPageVersion4436 #get_all_pages4437 sends a wiki_get_all_pages message4438 concatenates the raw data and returns a pair of WikiPage and WikiPageVersion for each page4439AbuseReportsController4440 GET new4441 when the user has already been deleted4442 redirects the reporter to root_path4443 when the user has already been blocked4444 redirects the reporter to the user's profile4445 POST create4446 with valid attributes4447 saves the abuse report4448 calls notify4449 redirects back to the reported user4450 with invalid attributes4451 renders new4452GroupMembersFinder#execute4453 returns members for top-level group4454 returns members for nested group4455List4456 relationships4457 should belong to board4458 should belong to label4459 validations4460 should validate that :board cannot be empty/falsy4461 should validate that :label cannot be empty/falsy4462 should validate that :list_type cannot be empty/falsy4463 should validate that :position cannot be empty/falsy4464 should validate that :position looks like an integer greater than or equal to 04465 when list_type is set to closed4466 should not validate that :label cannot be empty/falsy4467 should not validate that :position cannot be empty/falsy4468 #destroy4469 can be destroyed when when list_type is set to label4470 can not be destroyed when when list_type is set to closed4471 #destroyable?4472 returns true when list_type is set to label4473 returns false when list_type is set to closed4474 #movable?4475 returns true when list_type is set to label4476 returns false when list_type is set to closed4477 #title4478 returns label name when list_type is set to label4479 returns Closed when list_type is set to closed4480Banzai::IssuableExtractor4481 returns instances of issuables for nodes with references4482 caching4483 saves records to cache4484UpdateReleaseService4485 raises an error if the tag does not exist4486 raises an error if the release does not exist4487 with an existing release4488 successfully updates an existing release4489Gitlab::ImportExport::UploadsRestorer4490 bundle a project Git repo4491 legacy storage4492 saves the uploads successfully4493 copies the uploads to the project path4494 hashed storage4495 saves the uploads successfully4496 copies the uploads to the project path4497Clusters::Applications::CheckIngressIpAddressService4498 #execute4499 when the ingress ip address is available4500 updates the external_ip for the app4501 when the ingress ip address is not available4502 does not error4503 when the exclusive lease cannot be obtained4504 does not call kubeclient4505 when there is already an external_ip4506 does not call kubeclient4507gitlab:cleanup rake tasks4508 cleanup4509 cleanup:repos4510 moves it to an orphaned path4511 ignores @hashed repos4512 cleanup:dirs4513 removes missing namespaces4514 ignores @hashed directory4515Dashboard Help4516 renders correctly markdown4517Milestones::CreateService4518 #execute4519 valid params4520 should be valid4521 should eq "v2.1.9"4522Admin::ApplicationsController4523 GET #new4524 renders the application form4525 GET #edit4526 renders the application form4527 POST #create4528 creates the application4529 renders the application form on errors4530 PATCH #update4531 updates the application4532 renders the application form on errors4533Banzai::Filter::CommitTrailersFilter4534 detects4535 trailers in the form of *-by and replace users with links4536 trailers prefixed with whitespaces4537 GitLab users via a secondary email4538 multiple trailers in the same message4539 non GitLab users4540 when Gravatar is disabled4541 behaves like mailto links4542 replaces them with mailto links4543 when Gravatar is enabled4544 behaves like mailto links4545 replaces them with mailto links4546 special names4547 name: "John S. Doe"4548 should match "enim\\-by:\\ John\\ S\\.\\ Doe\\ <frankie@brakusmuller\\.com>"4549 name: "L33t H@x0r"4550 should match "dolore\\-by:\\ L33t\\ H@x0r\\ <antonetta@sipes\\.name>"4551 ignores4552 commit messages without trailers4553 trailers that are inline the commit message body4554 structure4555 preserves the commit trailer structure4556 preserves the original name used in the commit message4557 preserves the original email used in the commit message4558 only replaces trailer lines not the full commit message4559CacheMarkdownField4560 .attributes4561 excludes cache attributes4562 an unchanged markdown field4563 should eq "`Foo`"4564 should eq "<p dir=\"auto\"><code>Foo</code></p>"4565 should not be truthy4566 should eq 114567 a changed markdown field4568 behaves like with cache version4569 should eq "<p dir=\"auto\"><code>Bar</code></p>"4570 should eq 34571 behaves like with cache version4572 should eq "<p dir=\"auto\"><code>Bar</code></p>"4573 should eq 114574 when a markdown field is set repeatedly to an empty string4575 should receive refresh_markdown_cache(*(any args)) 1 time4576 when a markdown field is set repeatedly to a string which renders as empty html4577 should receive refresh_markdown_cache(*(any args)) 1 time4578 a non-markdown field changed4579 behaves like with cache version4580 should eq "OK"4581 should eq "`Foo`"4582 should eq "<p dir=\"auto\"><code>Foo</code></p>"4583 should eq 34584 behaves like with cache version4585 should eq "OK"4586 should eq "`Foo`"4587 should eq "<p dir=\"auto\"><code>Foo</code></p>"4588 should eq 114589 version is out of date4590 should eq "<p dir=\"auto\"><code>Bar</code></p>"4591 should eq 34592 #cached_html_up_to_date?4593 behaves like with cache version4594 returns false when the version is absent4595 returns false when the version is too early4596 returns false when the version is too late4597 returns true when the version is just right4598 returns false if markdown has been changed but html has not4599 returns true if markdown has not been changed but html has4600 returns true if markdown and html have both been changed4601 returns false if the markdown field is set but the html is not4602 behaves like with cache version4603 returns false when the version is absent4604 returns false when the version is too early4605 returns false when the version is too late4606 returns true when the version is just right4607 returns false if markdown has been changed but html has not4608 returns true if markdown has not been changed but html has4609 returns true if markdown and html have both been changed4610 returns false if the markdown field is set but the html is not4611 #latest_cached_markdown_version4612 returns redcarpet version4613 returns commonmark version4614 returns default version when version is nil4615 #refresh_markdown_cache4616 fills all html fields4617 does not save the result4618 updates the markdown cache version4619 #refresh_markdown_cache!4620 behaves like with cache version4621 fills all html fields4622 skips saving if not persisted4623 saves the changes using #update_columns4624 behaves like with cache version4625 fills all html fields4626 skips saving if not persisted4627 saves the changes using #update_columns4628 #banzai_render_context4629 sets project to nil if the object lacks a project4630 excludes author if the object lacks an author4631 raises if the context for an unrecognised field is requested4632 includes the pipeline4633 returns copies of the context template4634 with a project4635 sets the project in the context4636 invalidates the cache when project changes4637 with an author4638 sets the author in the context4639 invalidates the cache when author changes4640ProjectImportState4641 associations4642 should belong to project4643 validations4644 should validate that :project cannot be empty/falsy4645Gitlab::BitbucketImport::ProjectCreator4646 creates project4647Gitlab::Allowable4648 #can?4649 when user is allowed to do something4650 reports correct ability to perform action4651 when user is not allowed to do something4652 reports correct ability to perform action4653gitlab:db namespace rake task4654 configure4655 invokes db:migrate when schema has already been loaded4656 invokes db:shema:load and db:seed_fu when schema is not loaded4657 does not invoke any other rake tasks during an error4658 does not invoke seed after a failed schema_load4659Gitlab::BackgroundMigration::MigrateSystemUploadsToNewFolder4660 #perform4661 renames the path of system-uploads4662Admin::IdentitiesController4663 UPDATE identity4664 repairs ldap blocks4665 DELETE identity4666 repairs ldap blocks4667clearing redis cache4668 clearing pipeline status cache4669 clears pipeline status cache4670Gitlab::Ci::Pipeline::Chain::Skip4671 when pipeline has been skipped by a user4672 should break the chain4673 skips the pipeline4674 when pipeline has not been skipped4675 should not break the chain4676 should not skip a pipeline chain4677 when [ci skip] should be ignored4678 does not break the chain4679 when pipeline should be skipped but not persisted4680 breaks the chain4681 does not skip pipeline4682AnalyticsIssueSerializer4683 when there is a single object provided4684 contains important elements of the issue4685RuboCop::Cop::AvoidReturnFromBlocks4686 flags violation for return inside a block4687 doesn't call add_offense twice for nested blocks4688 flags violation for return inside included > def > block4689 doesn't flag violation for return inside a lambda4690 doesn't flag violation for return used inside a method definition4691 doesn't flag violation for next inside a block4692 doesn't flag violation for break inside a block4693 doesn't check when block is empty4694 behaves like examples with whitelisted method4695 doesn't flag violation for return inside each4696 behaves like examples with whitelisted method4697 doesn't flag violation for return inside each_filename4698 behaves like examples with whitelisted method4699 doesn't flag violation for return inside times4700 behaves like examples with whitelisted method4701 doesn't flag violation for return inside loop4702 behaves like examples with def methods4703 doesn't flag violation for return inside define_method4704 behaves like examples with def methods4705 doesn't flag violation for return inside lambda4706Gitlab::Git::HookEnv4707 .set4708 with RequestStore.store disabled4709 does not store anything4710 with RequestStore.store enabled4711 whitelist some `GIT_*` variables and stores them using RequestStore4712 .all4713 with RequestStore.store enabled4714 returns an env hash4715 .to_env_hash4716 with RequestStore.store enabled4717 input: nil, output: nil4718 puts the right value in the hash4719 input: "foo", output: "foo"4720 puts the right value in the hash4721 input: [], output: ""4722 puts the right value in the hash4723 input: ["foo"], output: "foo"4724 puts the right value in the hash4725 input: ["foo", "bar"], output: "foo:bar"4726 puts the right value in the hash4727 thread-safety4728 with RequestStore.store enabled4729 is thread-safe4730Gitlab::Auth::LDAP::Config4731 .servers4732 returns empty array if no server information is available4733 #initialize4734 requires a provider4735 works4736 raises an error if a unknown provider is used4737 #adapter_options4738 constructs basic options4739 includes authentication options when auth is configured4740 sets encryption method to simple_tls when configured as simple_tls4741 sets encryption method to start_tls when configured as start_tls4742 when verify_certificates is enabled4743 sets tls_options to OpenSSL defaults4744 when verify_certificates is disabled4745 sets verify_mode to OpenSSL VERIFY_NONE4746 when ca_file is specified4747 passes it through in tls_options4748 when ca_file is a blank string4749 does not add the ca_file key to tls_options4750 when ssl_version is specified4751 passes it through in tls_options4752 when ssl_version is a blank string4753 does not add the ssl_version key to tls_options4754 #omniauth_options4755 constructs basic options4756 includes authentication options when auth is configured4757 when verify_certificates is enabled4758 specifies disable_verify_certificates as false4759 when verify_certificates is disabled4760 specifies disable_verify_certificates as true4761 when ca_file is present4762 passes it through4763 when ca_file is blank4764 does not include the ca_file option4765 when ssl_version is present4766 passes it through4767 when ssl_version is blank4768 does not include the ssl_version option4769 #has_auth?4770 is true when password is set4771 is true when bind_dn is set and password is empty4772 is false when password and bind_dn are not set4773 #attributes4774 uses default attributes when no custom attributes are configured4775 merges the configuration attributes with default attributes4776 #base4777 when the configured base is not normalized4778 returns the normalized base4779 when the configured base is normalized4780 returns the base unaltered4781 when the configured base is malformed4782 returns the base unaltered4783 when the configured base is blank4784 returns the base unaltered4785VariableEntity4786 #as_json4787 contains required fields4788Gitlab::Regex4789 .project_name_regex4790 should match "gitlab-ce"4791 should match "GitLab CE"4792 should match "100 lines"4793 should match "gitlab.git"4794 should match "Český název"4795 should match "Dash – is this"4796 should not match "?gitlab"4797 .environment_name_regex4798 should match "foo"4799 should match "a"4800 should match "foo-1"4801 should match "FOO"4802 should match "foo/1"4803 should match "foo.1"4804 should not match "9&foo"4805 should not match "foo-^"4806 should not match "!!()()"4807 should not match "/foo"4808 should not match "foo/"4809 should not match "/foo/"4810 should not match "/"4811 .environment_slug_regex4812 should match "foo"4813 should match "foo-1"4814 should not match "FOO"4815 should not match "foo/1"4816 should not match "foo.1"4817 should not match "foo*1"4818 should not match "9foo"4819 should not match "foo-"4820 .container_repository_name_regex4821 should match "image"4822 should match "my/image"4823 should match "my/awesome/image-1"4824 should match "my/awesome/image.test"4825 should not match ".my/image"4826 should not match "my/image."4827Users::BuildService4828 #execute4829 with an admin user4830 returns a valid user4831 with non admin user4832 raises AccessDeniedError exception4833 with nil user4834 returns a valid user4835 when "send_user_confirmation_email" application setting is true4836 does not confirm the user4837 when "send_user_confirmation_email" application setting is false4838 confirms the user4839ReactiveCaching4840 #with_reactive_cache4841 when cache is empty4842 should be nil4843 enqueues a background worker to bootstrap the cache4844 updates the cache lifespan4845 when the cache is full4846 should eq 24847 does not enqueue a background worker4848 updates the cache lifespan4849 and expired4850 should be nil4851 #clear_reactive_cache!4852 should be nil4853 should be falsy4854 #exclusively_update_reactive_cache!4855 when the lease is free and lifetime is not exceeded4856 takes and releases the lease4857 caches the result of #calculate_reactive_cache4858 enqueues a repeat worker4859 calls a reactive_cache_updated only once if content did not change on subsequent update4860 and #calculate_reactive_cache raises an exception4861 leaves the cache untouched4862 enqueues a repeat worker4863 when lifetime is exceeded4864 skips the calculation4865 when the lease is already taken4866 skips the calculation4867SystemCheck::SimpleExecutor4868 #component4869 returns stored component name4870 #checks4871 returns a set of classes4872 #<<4873 appends a new check to the Set4874 inserts unique itens only4875 errors out when passing multiple items4876 #execute4877 runs included checks4878 #run_check4879 prints check name4880 when check pass4881 prints yes4882 when check fails4883 prints no4884 displays error message from #show_error4885 when check implements #repair!4886 executes #repair!4887 when repair succeeds4888 does not execute #show_error4889 when repair fails4890 does not execute #show_error4891 when check implements skip?4892 executes #skip? method4893 displays .skip_reason4894 displays #skip_reason4895 does not execute #check when #skip? is true4896 when implements a #multi_check4897 executes #multi_check method4898 does not execute #check method4899 when check implements #skip?4900 executes #skip? method4901 when there is an exception4902 rescues the exception4903Gitlab::EtagCaching::Middleware4904 when ETag caching is not enabled for current route4905 does not add ETag header4906 passes status code from app4907 when there is no ETag in store for given resource4908 generates ETag4909 when If-None-Match header was specified4910 tracks "etag_caching_key_not_found" event4911 when there is ETag in store for given resource4912 returns this value as header4913 when If-None-Match header matches ETag in store4914 does not call app4915 returns status code 3044916 returns empty body4917 tracks "etag_caching_cache_hit" event4918 when polling is disabled4919 returns status code 4294920 when If-None-Match header does not match ETag in store4921 calls app4922 tracks "etag_caching_resource_changed" event4923 when If-None-Match header is not specified4924 tracks "etag_caching_header_missing" event4925 when GitLab instance is using a relative URL4926 uses full path as cache key4927Gitlab::GithubImport::NotifyUponDeath4928 .sidekiq_retries_exhausted4929 notifies the JobWaiter when 3 arguments are given and the last is a String4930 does not notify the JobWaiter when only 2 arguments are given4931 does not notify the JobWaiter when only 1 argument is given4932 does not notify the JobWaiter when the last argument is not a String4933Gitlab::VisibilityLevel4934 .level_value4935 converts "public" to integer value4936 converts string integer to integer value4937 defaults to PRIVATE when string value is not valid4938 defaults to PRIVATE when integer value is not valid4939 .levels_for_user4940 returns all levels for an admin4941 returns INTERNAL and PUBLIC for internal users4942 returns PUBLIC for external users4943 returns PUBLIC when no user is given4944 .allowed_levels4945 only includes the levels that arent restricted4946 returns all levels when no visibility level was set4947 .closest_allowed_level4948 picks INTERNAL instead of PUBLIC if public is restricted4949 picks PRIVATE if nothing is available4950Gitlab::IncomingEmail4951 self.enabled?4952 when reply by email is enabled4953 returns true4954 when reply by email is disabled4955 returns false4956 self.supports_wildcard?4957 address contains the wildcard placeholder4958 confirms that wildcard is supported4959 address doesn't contain the wildcard placeholder4960 returns that wildcard is not supported4961 address is not set4962 returns that wildcard is not supported4963 self.unsubscribe_address4964 returns the address with interpolated reply key and unsubscribe suffix4965 self.reply_address4966 returns the address with an interpolated reply key4967 self.key_from_address4968 returns reply key4969 does not match emails with extra bits4970 self.key_from_fallback_message_id4971 returns reply key4972 self.scan_fallback_references4973 returns reply key4974Gitlab::Badge::Coverage::Template4975 #key_text4976 is always says coverage4977 #value_text4978 when coverage is known4979 returns coverage percentage4980 when coverage is known to many digits4981 returns rounded coverage percentage4982 when coverage is unknown4983 returns string that says coverage is unknown4984 #key_width4985 has a fixed key width4986 #value_width4987 when coverage is known4988 is narrower when coverage is known4989 when coverage is unknown4990 is wider when coverage is unknown to fit text4991 #key_color4992 always has the same color4993 #value_color4994 when coverage is good4995 is green4996 when coverage is acceptable4997 is green-orange4998 when coverage is medium4999 is orange-yellow5000 when coverage is low5001 is red5002 when coverage is unknown5003 is grey5004 #width5005 when coverage is known5006 returns the key width plus value width5007 when coverage is unknown5008 returns key width plus wider value width5009Gitlab::QueryLimiting::Transaction5010 .current5011 returns nil when there is no transaction5012 returns the transaction when present5013 .run5014 runs a transaction and returns it and its return value5015 removes the transaction from the current thread upon completion5016 #act_upon_results5017 when the query threshold is not exceeded5018 does nothing5019 when the query threshold is exceeded5020 raises an error when this is enabled5021 #increment5022 increments the number of executed queries5023 #raise_error?5024 returns true in a test environment5025 returns false in a production environment5026 #threshold_exceeded?5027 returns false when the threshold is not exceeded5028 returns true when the threshold is exceeded5029 #error_message5030 returns the error message to display when the threshold is exceeded5031 includes the action name in the error message when present5032NamespacePathValidator5033 .valid_path?5034 handles invalid utf85035 #validates_each5036 adds a message when the path is not in the correct format5037 adds a message when the path is reserved when creating5038 adds a message when the path is reserved when updating5039Gitlab::Ci::Status::SuccessWarning5040 #test5041 should eq "passed"5042 #label5043 should eq "passed with warnings"5044 #icon5045 should eq "status_warning"5046 #group5047 should eq "success_with_warnings"5048 .matches?5049 when matchable subject is successful5050 when matchable subject has warnings5051 is a correct match5052 when matchable subject does not have warnings5053 does not match5054 when matchable subject is not successful5055 when matchable subject has warnings5056 does not match5057 when matchable subject does not have warnings5058 does not match5059Import/Export model configuration5060 has no new models5061Query5062 is called Query5063 should have graphql fields :project, :merge_request, and :echo5064 project field5065 finds projects by full path5066 authorizes with read_project5067 merge_request field5068 finds MRs by project and IID5069 authorizes with read_merge_request5070JSONWebToken::RSAToken5071 token5072 for valid key to be validated5073 should not raise Exception5074 should include {"key" => "value"}5075 should eq {"typ"=>"JWT", "alg"=>"RS256", "kid"=>"OGXY:4TR7:FAVO:WEM2:XXEW:E4FP:TKL7:7ACK:TZAF:D54P:SUIA:P3B2"}5076 for invalid key to raise an exception5077 should raise JWT::DecodeError5078Gitlab::CycleAnalytics::TestStage5079 behaves like base stage5080 has the median data value5081 has the median data stage5082 has the median data description5083 has the title5084 has the events5085Gitlab::Ci::Build::Policy5086 .fabricate5087 when policy exists5088 fabricates and initializes relevant policy5089 when some policies are not defined5090 gracefully skips unknown policies5091 when passing a nil value as specs5092 returns an empty array5093Gitlab::ImportExport::VersionChecker5094 bundle a project Git repo5095 returns true if Import/Export have the same version5096 newer version5097 returns false if export version is newer5098 shows the correct error message5099 version file access check5100 does not read a symlink5101Gitlab::Ci::Status::Canceled5102 #text5103 should eq "canceled"5104 #label5105 should eq "canceled"5106 #icon5107 should eq "status_canceled"5108 #favicon5109 should eq "favicon_status_canceled"5110 #group5111 should eq "canceled"5112MergeRequest::Metrics5113 associations5114 should belong to merge_request5115 should belong to latest_closed_by class_name => User5116 should belong to merged_by class_name => User5117Gitlab::Git::Util5118 #count_lines5119 counts 0 lines in ""5120 counts 1 lines in "foo"5121 counts 1 lines in "foo\n"5122 counts 2 lines in "foo\n\n"5123RuboCop::Cop::SidekiqOptionsQueue5124 registers an offense when `sidekiq_options` is used with the `queue` option5125 does not register an offense when `sidekiq_options` is used with another option5126RuboCop::Cop::IncludeSidekiqWorker5127 when `Sidekiq::Worker` is included5128 registers an offense5129Parser::Source::Rewriter is deprecated.5130Please update your code to use Parser::Source::TreeRewriter instead5131 autocorrects to the right version5132Gitlab::Database::Grant5133 .create_and_execute_trigger5134 returns true when the user can create and execute a trigger5135 returns false when the user can not create and/or execute a trigger5136PropagateServiceTemplateWorker5137 #perform5138 calls the propagate service with the template5139Gitlab::HealthChecks::PrometheusTextFormat5140 #marshal5141 marshal to text with non repeating type definition5142 metrics where name repeats5143 marshal to text with non repeating type definition5144Bitbucket::Paginator5145 items5146 return items and raises StopIteration in the end5147Gitlab::Git::GitmodulesParser5148 should parse a .gitmodules file correctly5149Knapsack report was generated. Preview:5150{5151 "spec/requests/api/projects_spec.rb": 118.97545957565308,5152 "spec/services/auth/container_registry_authentication_service_spec.rb": 61.95859742164612,5153 "spec/models/cycle_analytics/staging_spec.rb": 46.515997648239136,5154 "spec/requests/api/members_spec.rb": 36.335692405700684,5155 "spec/features/projects/files/user_creates_files_spec.rb": 30.612855672836304,5156 "spec/services/merge_requests/create_service_spec.rb": 20.91416049003601,5157 "spec/features/markdown/copy_as_gfm_spec.rb": 28.750479221343994,5158 "spec/lib/gitlab/background_migration/migrate_events_to_push_event_payloads_spec.rb": 15.0890531539917,5159 "spec/features/projects/merge_request_button_spec.rb": 12.426502227783203,5160 "spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb": 9.206793069839478,5161 "spec/features/projects/members/list_spec.rb": 8.913437128067017,5162 "spec/features/tags/master_creates_tag_spec.rb": 8.082833051681519,5163 "spec/finders/projects_finder_spec.rb": 12.554734706878662,5164 "spec/features/projects/tree/create_file_spec.rb": 6.099707841873169,5165 "spec/lib/banzai/filter/external_issue_reference_filter_spec.rb": 7.176806211471558,5166 "spec/features/projects/files/template_selector_menu_spec.rb": 6.993469953536987,5167 "spec/features/projects/commit/diff_notes_spec.rb": 7.682464361190796,5168 "spec/features/participants_autocomplete_spec.rb": 6.0605149269104,5169 "spec/lib/gitlab/email/message/repository_push_spec.rb": 5.198172569274902,5170 "spec/lib/gitlab/bare_repository_import/importer_spec.rb": 5.625791788101196,5171 "spec/lib/gitlab/git/gitlab_projects_spec.rb": 5.59145975112915,5172 "spec/features/admin/admin_deploy_keys_spec.rb": 3.902190923690796,5173 "spec/policies/global_policy_spec.rb": 5.09077525138855,5174 "spec/services/projects/autocomplete_service_spec.rb": 3.338569402694702,5175 "spec/services/labels/transfer_service_spec.rb": 3.5243566036224365,5176 "spec/lib/gitlab/database/count_spec.rb": 1.964834213256836,5177 "spec/features/projects/services/user_activates_slack_slash_command_spec.rb": 4.362571716308594,5178 "spec/models/diff_viewer/base_spec.rb": 2.5622856616973877,5179 "spec/features/profiles/oauth_applications_spec.rb": 4.406352758407593,5180 "spec/lib/banzai/reference_parser/commit_range_parser_spec.rb": 2.64251708984375,5181 "spec/controllers/projects/repositories_controller_spec.rb": 2.5994346141815186,5182 "spec/features/atom/dashboard_issues_spec.rb": 3.2452890872955322,5183 "spec/finders/concerns/finder_with_cross_project_access_spec.rb": 2.474250555038452,5184 "spec/lib/gitlab/data_builder/build_spec.rb": 2.7458081245422363,5185 "spec/migrations/migrate_old_artifacts_spec.rb": 2.5368363857269287,5186 "spec/finders/concerns/finder_methods_spec.rb": 2.5028650760650635,5187 "spec/lib/banzai/redactor_spec.rb": 1.5952143669128418,5188 "spec/features/projects/wiki/user_deletes_wiki_page_spec.rb": 2.386509418487549,5189 "spec/services/groups/nested_create_service_spec.rb": 1.417325735092163,5190 "spec/lib/container_registry/path_spec.rb": 1.988269329071045,5191 "spec/finders/personal_projects_finder_spec.rb": 1.208691120147705,5192 "spec/controllers/profiles/notifications_controller_spec.rb": 1.1785142421722412,5193 "spec/services/projects/create_from_template_service_spec.rb": 1.813978672027588,5194 "spec/lib/api/helpers_spec.rb": 1.1250462532043457,5195 "spec/lib/gitlab/auth/saml/user_spec.rb": 1.4468119144439697,5196 "spec/lib/gitlab/slash_commands/issue_new_spec.rb": 1.5306999683380127,5197 "spec/services/test_hooks/system_service_spec.rb": 1.6967699527740479,5198 "spec/controllers/projects/find_file_controller_spec.rb": 1.6203641891479492,5199 "spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb": 1.1492478847503662,5200 "spec/lib/gitlab/ci/status/external/common_spec.rb": 1.2074165344238281,5201 "spec/controllers/projects/registry/tags_controller_spec.rb": 1.4160597324371338,5202 "spec/workers/stuck_import_jobs_worker_spec.rb": 1.0773236751556396,5203 "spec/services/note_summary_spec.rb": 0.8542404174804688,5204 "spec/services/clusters/gcp/verify_provision_status_service_spec.rb": 1.1446921825408936,5205 "spec/services/labels/find_or_create_service_spec.rb": 1.0935194492340088,5206 "spec/services/notes/resolve_service_spec.rb": 1.15240478515625,5207 "spec/controllers/groups/runners_controller_spec.rb": 0.7792870998382568,5208 "spec/services/labels/update_service_spec.rb": 0.9091572761535645,5209 "spec/helpers/award_emoji_helper_spec.rb": 0.8742644786834717,5210 "spec/workers/storage_migrator_worker_spec.rb": 1.0111982822418213,5211 "spec/lib/gitlab/legacy_github_import/milestone_formatter_spec.rb": 0.8894472122192383,5212 "spec/workers/gitlab/github_import/advance_stage_worker_spec.rb": 0.6727142333984375,5213 "spec/lib/gitlab/gitaly_client/wiki_service_spec.rb": 0.54888916015625,5214 "spec/controllers/abuse_reports_controller_spec.rb": 0.7326381206512451,5215 "spec/finders/group_members_finder_spec.rb": 0.8071994781494141,5216 "spec/models/list_spec.rb": 0.5455677509307861,5217 "spec/lib/banzai/issuable_extractor_spec.rb": 0.5248205661773682,5218 "spec/services/update_release_service_spec.rb": 0.7313938140869141,5219 "spec/lib/gitlab/import_export/uploads_restorer_spec.rb": 0.5561823844909668,5220 "spec/services/clusters/applications/check_ingress_ip_address_service_spec.rb": 0.5741367340087891,5221 "spec/tasks/gitlab/cleanup_rake_spec.rb": 0.5389633178710938,5222 "spec/features/dashboard/help_spec.rb": 0.49945902824401855,5223 "spec/services/milestones/create_service_spec.rb": 0.4727940559387207,5224 "spec/controllers/admin/applications_controller_spec.rb": 0.44094133377075195,5225 "spec/lib/banzai/filter/commit_trailers_filter_spec.rb": 0.4352574348449707,5226 "spec/models/concerns/cache_markdown_field_spec.rb": 0.31348562240600586,5227 "spec/models/project_import_state_spec.rb": 0.42539501190185547,5228 "spec/lib/gitlab/bitbucket_import/project_creator_spec.rb": 0.4832477569580078,5229 "spec/lib/gitlab/allowable_spec.rb": 0.38831329345703125,5230 "spec/tasks/gitlab/db_rake_spec.rb": 0.3061552047729492,5231 "spec/lib/gitlab/background_migration/migrate_system_uploads_to_new_folder_spec.rb": 0.1643373966217041,5232 "spec/controllers/admin/identities_controller_spec.rb": 0.21906709671020508,5233 "spec/tasks/cache/clear/redis_spec.rb": 0.49411773681640625,5234 "spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb": 0.21064066886901855,5235 "spec/serializers/analytics_issue_serializer_spec.rb": 0.16321659088134766,5236 "spec/rubocop/cop/avoid_return_from_blocks_spec.rb": 0.3094208240509033,5237 "spec/lib/gitlab/git/hook_env_spec.rb": 0.1275179386138916,5238 "spec/lib/gitlab/auth/ldap/config_spec.rb": 0.11163949966430664,5239 "spec/serializers/variable_entity_spec.rb": 0.15247726440429688,5240 "spec/lib/gitlab/regex_spec.rb": 0.09247684478759766,5241 "spec/services/users/build_service_spec.rb": 0.13135242462158203,5242 "spec/models/concerns/reactive_caching_spec.rb": 0.06296372413635254,5243 "spec/lib/system_check/simple_executor_spec.rb": 0.07195425033569336,5244 "spec/lib/gitlab/etag_caching/middleware_spec.rb": 0.049204349517822266,5245 "spec/workers/concerns/gitlab/github_import/notify_upon_death_spec.rb": 0.07203364372253418,5246 "spec/lib/gitlab/visibility_level_spec.rb": 0.06202101707458496,5247 "spec/lib/gitlab/incoming_email_spec.rb": 0.061335086822509766,5248 "spec/lib/gitlab/badge/coverage/template_spec.rb": 0.042780160903930664,5249 "spec/lib/gitlab/query_limiting/transaction_spec.rb": 0.03489542007446289,5250 "spec/validators/namespace_path_validator_spec.rb": 0.029845476150512695,5251 "spec/lib/gitlab/ci/status/success_warning_spec.rb": 0.025554656982421875,5252 "spec/lib/gitlab/import_export/model_configuration_spec.rb": 0.0183408260345459,5253 "spec/graphql/types/query_type_spec.rb": 0.018890857696533203,5254 "spec/lib/json_web_token/rsa_token_spec.rb": 0.01983809471130371,5255 "spec/lib/gitlab/cycle_analytics/test_stage_spec.rb": 0.03625798225402832,5256 "spec/lib/gitlab/ci/build/policy_spec.rb": 0.0160980224609375,5257 "spec/lib/gitlab/import_export/version_checker_spec.rb": 0.019867897033691406,5258 "spec/lib/gitlab/ci/status/canceled_spec.rb": 0.016370773315429688,5259 "spec/models/merge_request/metrics_spec.rb": 0.015147686004638672,5260 "spec/lib/gitlab/git/util_spec.rb": 0.012416839599609375,5261 "spec/rubocop/cop/sidekiq_options_queue_spec.rb": 0.014738798141479492,5262 "spec/rubocop/cop/include_sidekiq_worker_spec.rb": 0.014427423477172852,5263 "spec/lib/gitlab/database/grant_spec.rb": 0.01032567024230957,5264 "spec/workers/propagate_service_template_worker_spec.rb": 0.01420140266418457,5265 "spec/lib/gitlab/health_checks/prometheus_text_format_spec.rb": 0.008430957794189453,5266 "spec/lib/bitbucket/paginator_spec.rb": 0.004374027252197266,5267 "spec/lib/gitlab/git/gitmodules_parser_spec.rb": 0.00319766998291015625268}5269Knapsack global time execution for tests: 09m 14s5270Finished in 10 minutes 23 seconds (files took 23.89 seconds to load)52711635 examples, 0 failures5273$ date5274Thu Jun 7 12:49:22 UTC 20185277coverage/: found 5 matching files 5278knapsack/: found 5 matching files 5279rspec_flaky/: found 4 matching files 5280WARNING: tmp/capybara/: no matching files 5281Uploading artifacts to coordinator... ok id=73155671 responseStatus=201 Created token=NaxKKjbR5282Job succeeded