[0KRunning with gitlab-runner 12.3.0 (a8a019e0) [0;m[0K on docker-auto-scale-com 8a6210b8 [0;msection_start:1571128561:prepare_executor [0K[0KUsing Docker executor with image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33 ... [0;m[0KStarting service postgres:9.6 ... [0;m[0KPulling docker image postgres:9.6 ... [0;m[0KUsing docker image sha256:61c59b9a763f02dd11635b20ef117812dad973b95a68bd125f3a1767f9159cf9 for postgres:9.6 ... [0;m[0KStarting service redis:alpine ... [0;m[0KPulling docker image redis:alpine ... [0;m[0KUsing docker image sha256:f9d774eafe0d9aa813860e94490efffec6041d63a786133749974c15c055663e for redis:alpine ... [0;m[0KWaiting for services to be up and running... [0;m[0KAuthenticating with credentials from job payload (GitLab Registry) [0;m[0KPulling docker image registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33 ... [0;m[0KUsing docker image sha256:3689b07c936dec3fdafc5ec40ed80a6cfdba089394a505d60f2a6926b0b982a3 for registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.22-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.33 ... [0;msection_end:1571128582:prepare_executor [0Ksection_start:1571128582:prepare_script [0KRunning on runner-8a6210b8-project-278964-concurrent-0 via runner-8a6210b8-gsrm-1571120258-efe5d780... section_end:1571128587:prepare_script [0Ksection_start:1571128589:get_sources [0K[32;1mFetching changes with git depth set to 50...[0;m Reinitialized existing Git repository in /builds/gitlab-org/gitlab/.git/ From https://gitlab.com/gitlab-org/gitlab * [new ref] refs/pipelines/88859459 -> refs/pipelines/88859459 * [new branch] master -> origin/master [32;1mChecking out f5bf17c9 as master...[0;m [32;1mSkipping Git submodules setup[0;m section_end:1571128613:get_sources [0Ksection_start:1571128613:restore_cache [0K[32;1mChecking cache for debian-stretch-ruby-2.6.3-node-12.x-2...[0;m Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/278964/debian-stretch-ruby-2.6.3-node-12.x-2[0;m [32;1mSuccessfully extracted cache[0;m section_end:1571128662:restore_cache [0Ksection_start:1571128662:download_artifacts [0K[32;1mDownloading artifacts for compile-assets (321109103)...[0;m Downloading artifacts from coordinator... ok [0;m id[0;m=321109103 responseStatus[0;m=200 OK token[0;m=XMSy3Ehb [32;1mDownloading artifacts for setup-test-env (321109105)...[0;m Downloading artifacts from coordinator... ok [0;m id[0;m=321109105 responseStatus[0;m=200 OK token[0;m=wfkozyzh [0;33mWARNING: tmp/tests/gitlab-shell/.gitlab_shell_secret: chmod tmp/tests/gitlab-shell/.gitlab_shell_secret: no such file or directory (suppressing repeats)[0;m [32;1mDownloading artifacts for retrieve-tests-metadata (321109113)...[0;m Downloading artifacts from coordinator... ok [0;m id[0;m=321109113 responseStatus[0;m=200 OK token[0;m=rMBaZ9wv section_end:1571128771:download_artifacts [0Ksection_start:1571128771:build_script [0K[0KAuthenticating with credentials from job payload (GitLab Registry) [0;m[32;1m$ date[0;m Tue Oct 15 08:39:42 UTC 2019 [32;1m$ export GOPATH=$CI_PROJECT_DIR/.go[0;m [32;1m$ mkdir -p $GOPATH[0;m [32;1m$ source scripts/utils.sh[0;m [32;1m$ source scripts/prepare_build.sh[0;m Bundler version 1.17.2 Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`. The Gemfile's dependencies are satisfied Successfully installed knapsack-1.18.0 1 gem installed CREATE ROLE GRANT Dropped database 'gitlabhq_test' Created database 'gitlabhq_test' -- enable_extension("pg_trgm") -> 0.0293s -- enable_extension("plpgsql") -> 0.0028s -- create_table("abuse_reports", {:id=>:serial, :force=>:cascade}) -> 0.0041s -- create_table("alerts_service_data", {:force=>:cascade}) -> 0.0060s -- create_table("allowed_email_domains", {:force=>:cascade}) -> 0.0043s -- create_table("analytics_cycle_analytics_group_stages", {:force=>:cascade}) -> 0.0138s -- create_table("analytics_cycle_analytics_project_stages", {:force=>:cascade}) -> 0.0131s -- create_table("analytics_language_trend_repository_languages", {:id=>false, :force=>:cascade}) -> 0.0072s -- create_table("analytics_repository_file_commits", {:force=>:cascade}) -> 0.0061s -- create_table("analytics_repository_files", {:force=>:cascade}) -> 0.0046s -- create_table("appearances", {:id=>:serial, :force=>:cascade}) -> 0.0034s -- create_table("application_setting_terms", {:id=>:serial, :force=>:cascade}) -> 0.0024s -- create_table("application_settings", {:id=>:serial, :force=>:cascade}) -> 0.0960s -- create_table("approval_merge_request_rule_sources", {:force=>:cascade}) -> 0.0062s -- create_table("approval_merge_request_rules", {:force=>:cascade}) -> 0.0154s -- create_table("approval_merge_request_rules_approved_approvers", {:force=>:cascade}) -> 0.0061s -- create_table("approval_merge_request_rules_groups", {:force=>:cascade}) -> 0.0061s -- create_table("approval_merge_request_rules_users", {:force=>:cascade}) -> 0.0061s -- create_table("approval_project_rules", {:force=>:cascade}) -> 0.0099s -- create_table("approval_project_rules_groups", {:force=>:cascade}) -> 0.0061s -- create_table("approval_project_rules_users", {:force=>:cascade}) -> 0.0061s -- create_table("approvals", {:id=>:serial, :force=>:cascade}) -> 0.0062s -- create_table("approver_groups", {:id=>:serial, :force=>:cascade}) -> 0.0067s -- create_table("approvers", {:id=>:serial, :force=>:cascade}) -> 0.0064s -- create_table("audit_events", {:id=>:serial, :force=>:cascade}) -> 0.0068s -- create_table("award_emoji", {:id=>:serial, :force=>:cascade}) -> 0.0066s -- create_table("badges", {:id=>:serial, :force=>:cascade}) -> 0.0068s -- create_table("board_assignees", {:id=>:serial, :force=>:cascade}) -> 0.0061s -- create_table("board_group_recent_visits", {:force=>:cascade}) -> 0.0102s -- create_table("board_labels", {:id=>:serial, :force=>:cascade}) -> 0.0059s -- create_table("board_project_recent_visits", {:force=>:cascade}) -> 0.0102s -- create_table("boards", {:id=>:serial, :force=>:cascade}) -> 0.0090s -- create_table("broadcast_messages", {:id=>:serial, :force=>:cascade}) -> 0.0049s -- create_table("chat_names", {:id=>:serial, :force=>:cascade}) -> 0.0071s -- create_table("chat_teams", {:id=>:serial, :force=>:cascade}) -> 0.0046s -- create_table("ci_build_needs", {:id=>:serial, :force=>:cascade}) -> 0.0045s -- create_table("ci_build_trace_chunks", {:force=>:cascade}) -> 0.0045s -- create_table("ci_build_trace_section_names", {:id=>:serial, :force=>:cascade}) -> 0.0045s -- create_table("ci_build_trace_sections", {:id=>:serial, :force=>:cascade}) -> 0.0084s -- create_table("ci_builds", {:id=>:serial, :force=>:cascade}) -> 0.0552s -- create_table("ci_builds_metadata", {:id=>:serial, :force=>:cascade}) -> 0.0093s -- create_table("ci_builds_runner_session", {:force=>:cascade}) -> 0.0046s -- create_table("ci_group_variables", {:id=>:serial, :force=>:cascade}) -> 0.0062s -- create_table("ci_job_artifacts", {:id=>:serial, :force=>:cascade}) -> 0.0899s -- create_table("ci_job_variables", {:force=>:cascade}) -> 0.0077s -- create_table("ci_pipeline_chat_data", {:force=>:cascade}) -> 0.0069s -- create_table("ci_pipeline_schedule_variables", {:id=>:serial, :force=>:cascade}) -> 0.0056s -- create_table("ci_pipeline_schedules", {:id=>:serial, :force=>:cascade}) -> 0.0099s -- create_table("ci_pipeline_variables", {:id=>:serial, :force=>:cascade}) -> 0.0055s -- create_table("ci_pipelines", {:id=>:serial, :force=>:cascade}) -> 0.0316s -- create_table("ci_runner_namespaces", {:id=>:serial, :force=>:cascade}) -> 0.0064s -- create_table("ci_runner_projects", {:id=>:serial, :force=>:cascade}) -> 0.0064s -- create_table("ci_runners", {:id=>:serial, :force=>:cascade}) -> 0.0180s -- create_table("ci_sources_pipelines", {:id=>:serial, :force=>:cascade}) -> 0.0126s -- create_table("ci_stages", {:id=>:serial, :force=>:cascade}) -> 0.0113s -- create_table("ci_trigger_requests", {:id=>:serial, :force=>:cascade}) -> 0.0069s -- create_table("ci_triggers", {:id=>:serial, :force=>:cascade}) -> 0.0069s -- create_table("ci_variables", {:id=>:serial, :force=>:cascade}) -> 0.0069s -- create_table("cluster_groups", {:id=>:serial, :force=>:cascade}) -> 0.0066s -- create_table("cluster_platforms_kubernetes", {:id=>:serial, :force=>:cascade}) -> 0.0051s -- create_table("cluster_projects", {:id=>:serial, :force=>:cascade}) -> 0.0065s -- create_table("cluster_providers_gcp", {:id=>:serial, :force=>:cascade}) -> 0.0084s -- create_table("clusters", {:id=>:serial, :force=>:cascade}) -> 0.0112s -- create_table("clusters_applications_cert_managers", {:id=>:serial, :force=>:cascade}) -> 0.0050s -- create_table("clusters_applications_helm", {:id=>:serial, :force=>:cascade}) -> 0.0049s -- create_table("clusters_applications_ingress", {:id=>:serial, :force=>:cascade}) -> 0.0052s -- create_table("clusters_applications_jupyter", {:id=>:serial, :force=>:cascade}) -> 0.0073s -- create_table("clusters_applications_knative", {:id=>:serial, :force=>:cascade}) -> 0.0050s -- create_table("clusters_applications_prometheus", {:id=>:serial, :force=>:cascade}) -> 0.0049s -- create_table("clusters_applications_runners", {:id=>:serial, :force=>:cascade}) -> 0.0079s -- create_table("clusters_kubernetes_namespaces", {:force=>:cascade}) -> 0.0158s -- create_table("container_repositories", {:id=>:serial, :force=>:cascade}) -> 0.0068s -- create_table("conversational_development_index_metrics", {:id=>:serial, :force=>:cascade}) -> 0.0074s -- create_table("dependency_proxy_blobs", {:id=>:serial, :force=>:cascade}) -> 0.0049s -- create_table("dependency_proxy_group_settings", {:id=>:serial, :force=>:cascade}) -> 0.0048s -- create_table("deploy_keys_projects", {:id=>:serial, :force=>:cascade}) -> 0.0046s -- create_table("deploy_tokens", {:id=>:serial, :force=>:cascade}) -> 0.0112s -- create_table("deployments", {:id=>:serial, :force=>:cascade}) -> 0.0243s -- create_table("design_management_designs", {:force=>:cascade}) -> 0.0068s -- create_table("design_management_designs_versions", {:id=>false, :force=>:cascade}) -> 0.0098s -- create_table("design_management_versions", {:force=>:cascade}) -> 0.0146s -- create_table("draft_notes", {:force=>:cascade}) -> 0.0099s -- create_table("elasticsearch_indexed_namespaces", {:id=>false, :force=>:cascade}) -> 0.0036s -- create_table("elasticsearch_indexed_projects", {:id=>false, :force=>:cascade}) -> 0.0033s -- create_table("emails", {:id=>:serial, :force=>:cascade}) -> 0.0089s -- create_table("environments", {:id=>:serial, :force=>:cascade}) -> 0.0113s -- create_table("epic_issues", {:id=>:serial, :force=>:cascade}) -> 0.0061s -- create_table("epic_metrics", {:id=>:serial, :force=>:cascade}) -> 0.0043s -- create_table("epics", {:id=>:serial, :force=>:cascade}) -> 0.0217s -- create_table("events", {:id=>:serial, :force=>:cascade}) -> 0.0167s -- create_table("external_pull_requests", {:force=>:cascade}) -> 0.0052s -- create_table("feature_gates", {:id=>:serial, :force=>:cascade}) -> 0.0049s -- create_table("features", {:id=>:serial, :force=>:cascade}) -> 0.0046s -- create_table("fork_network_members", {:id=>:serial, :force=>:cascade}) -> 0.0081s -- create_table("fork_networks", {:id=>:serial, :force=>:cascade}) -> 0.0046s -- create_table("forked_project_links", {:id=>:serial, :force=>:cascade}) -> 0.0041s -- create_table("geo_cache_invalidation_events", {:force=>:cascade}) -> 0.0035s -- create_table("geo_container_repository_updated_events", {:force=>:cascade}) -> 0.0041s -- create_table("geo_event_log", {:force=>:cascade}) -> 0.0288s -- create_table("geo_hashed_storage_attachments_events", {:force=>:cascade}) -> 0.0046s -- create_table("geo_hashed_storage_migrated_events", {:force=>:cascade}) -> 0.0048s -- create_table("geo_job_artifact_deleted_events", {:force=>:cascade}) -> 0.0045s -- create_table("geo_lfs_object_deleted_events", {:force=>:cascade}) -> 0.0046s -- create_table("geo_node_namespace_links", {:id=>:serial, :force=>:cascade}) -> 0.0082s -- create_table("geo_node_statuses", {:id=>:serial, :force=>:cascade}) -> 0.0061s -- create_table("geo_nodes", {:id=>:serial, :force=>:cascade}) -> 0.0127s -- create_table("geo_repositories_changed_events", {:force=>:cascade}) -> 0.0041s -- create_table("geo_repository_created_events", {:force=>:cascade}) -> 0.0048s -- create_table("geo_repository_deleted_events", {:force=>:cascade}) -> 0.0046s -- create_table("geo_repository_renamed_events", {:force=>:cascade}) -> 0.0048s -- create_table("geo_repository_updated_events", {:force=>:cascade}) -> 0.0074s -- create_table("geo_reset_checksum_events", {:force=>:cascade}) -> 0.0041s -- create_table("geo_upload_deleted_events", {:force=>:cascade}) -> 0.0047s -- create_table("gitlab_subscriptions", {:force=>:cascade}) -> 0.0077s -- create_table("gpg_key_subkeys", {:id=>:serial, :force=>:cascade}) -> 0.0085s -- create_table("gpg_keys", {:id=>:serial, :force=>:cascade}) -> 0.0085s -- create_table("gpg_signatures", {:id=>:serial, :force=>:cascade}) -> 0.0138s -- create_table("grafana_integrations", {:force=>:cascade}) -> 0.0048s -- create_table("group_custom_attributes", {:id=>:serial, :force=>:cascade}) -> 0.0069s -- create_table("historical_data", {:id=>:serial, :force=>:cascade}) -> 0.0022s -- create_table("identities", {:id=>:serial, :force=>:cascade}) -> 0.0093s -- create_table("import_export_uploads", {:id=>:serial, :force=>:cascade}) -> 0.0069s -- create_table("index_statuses", {:id=>:serial, :force=>:cascade}) -> 0.0050s -- create_table("insights", {:id=>:serial, :force=>:cascade}) -> 0.0063s -- create_table("internal_ids", {:force=>:cascade}) -> 0.0113s -- create_table("ip_restrictions", {:force=>:cascade}) -> 0.0051s -- create_table("issue_assignees", {:id=>false, :force=>:cascade}) -> 0.0073s -- create_table("issue_links", {:id=>:serial, :force=>:cascade}) -> 0.0089s -- create_table("issue_metrics", {:id=>:serial, :force=>:cascade}) -> 0.0069s -- create_table("issue_tracker_data", {:force=>:cascade}) -> 0.0054s -- create_table("issues", {:id=>:serial, :force=>:cascade}) -> 0.0452s -- create_table("issues_prometheus_alert_events", {:id=>false, :force=>:cascade}) -> 0.0057s -- create_table("jira_connect_installations", {:force=>:cascade}) -> 0.0052s -- create_table("jira_connect_subscriptions", {:force=>:cascade}) -> 0.0086s -- create_table("jira_tracker_data", {:force=>:cascade}) -> 0.0050s -- create_table("keys", {:id=>:serial, :force=>:cascade}) -> 0.0092s -- create_table("label_links", {:id=>:serial, :force=>:cascade}) -> 0.0067s -- create_table("label_priorities", {:id=>:serial, :force=>:cascade}) -> 0.0085s -- create_table("labels", {:id=>:serial, :force=>:cascade}) -> 0.0135s -- create_table("ldap_group_links", {:id=>:serial, :force=>:cascade}) -> 0.0027s -- create_table("lfs_file_locks", {:id=>:serial, :force=>:cascade}) -> 0.0067s -- create_table("lfs_objects", {:id=>:serial, :force=>:cascade}) -> 0.0068s -- create_table("lfs_objects_projects", {:id=>:serial, :force=>:cascade}) -> 0.0062s -- create_table("licenses", {:id=>:serial, :force=>:cascade}) -> 0.0025s -- create_table("list_user_preferences", {:force=>:cascade}) -> 0.0087s -- create_table("lists", {:id=>:serial, :force=>:cascade}) -> 0.0139s -- create_table("members", {:id=>:serial, :force=>:cascade}) -> 0.0181s -- create_table("merge_request_assignees", {:force=>:cascade}) -> 0.0082s -- create_table("merge_request_blocks", {:force=>:cascade}) -> 0.0063s -- create_table("merge_request_diff_commits", {:id=>false, :force=>:cascade}) -> 0.0061s -- create_table("merge_request_diff_files", {:id=>false, :force=>:cascade}) -> 0.0043s -- create_table("merge_request_diffs", {:id=>:serial, :force=>:cascade}) -> 0.0073s -- create_table("merge_request_metrics", {:id=>:serial, :force=>:cascade}) -> 0.0193s -- create_table("merge_requests", {:id=>:serial, :force=>:cascade}) -> 0.0500s -- create_table("merge_requests_closing_issues", {:id=>:serial, :force=>:cascade}) -> 0.0067s -- create_table("merge_trains", {:force=>:cascade}) -> 0.0111s -- create_table("milestone_releases", {:id=>false, :force=>:cascade}) -> 0.0052s -- create_table("milestones", {:id=>:serial, :force=>:cascade}) -> 0.0154s -- create_table("namespace_aggregation_schedules", {:primary_key=>"namespace_id", :id=>:integer, :default=>nil, :force=>:cascade}) -> 0.0035s -- create_table("namespace_root_storage_statistics", {:primary_key=>"namespace_id", :id=>:integer, :default=>nil, :force=>:cascade}) -> 0.0062s -- create_table("namespace_statistics", {:id=>:serial, :force=>:cascade}) -> 0.0049s -- create_table("namespaces", {:id=>:serial, :force=>:cascade}) -> 0.0464s -- create_table("note_diff_files", {:id=>:serial, :force=>:cascade}) -> 0.0051s -- create_table("notes", {:id=>:serial, :force=>:cascade}) -> 0.0253s -- create_table("notification_settings", {:id=>:serial, :force=>:cascade}) -> 0.0105s -- create_table("oauth_access_grants", {:id=>:serial, :force=>:cascade}) -> 0.0050s -- create_table("oauth_access_tokens", {:id=>:serial, :force=>:cascade}) -> 0.0112s -- create_table("oauth_applications", {:id=>:serial, :force=>:cascade}) -> 0.0079s -- create_table("oauth_openid_requests", {:id=>:serial, :force=>:cascade}) -> 0.0048s -- create_table("operations_feature_flag_scopes", {:force=>:cascade}) -> 0.0061s -- create_table("operations_feature_flags", {:force=>:cascade}) -> 0.0050s -- create_table("operations_feature_flags_clients", {:force=>:cascade}) -> 0.0068s -- create_table("packages_maven_metadata", {:force=>:cascade}) -> 0.0050s -- create_table("packages_package_files", {:force=>:cascade}) -> 0.0050s -- create_table("packages_package_metadata", {:force=>:cascade}) -> 0.0047s -- create_table("packages_package_tags", {:force=>:cascade}) -> 0.0042s -- create_table("packages_packages", {:force=>:cascade}) -> 0.0070s -- create_table("pages_domain_acme_orders", {:force=>:cascade}) -> 0.0072s -- create_table("pages_domains", {:id=>:serial, :force=>:cascade}) -> 0.0190s -- create_table("path_locks", {:id=>:serial, :force=>:cascade}) -> 0.0088s -- create_table("personal_access_tokens", {:id=>:serial, :force=>:cascade}) -> 0.0084s -- create_table("plans", {:id=>:serial, :force=>:cascade}) -> 0.0053s -- create_table("pool_repositories", {:force=>:cascade}) -> 0.0089s -- create_table("programming_languages", {:id=>:serial, :force=>:cascade}) -> 0.0048s -- create_table("project_alerting_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade}) -> 0.0019s -- create_table("project_aliases", {:force=>:cascade}) -> 0.0068s -- create_table("project_authorizations", {:id=>false, :force=>:cascade}) -> 0.0054s -- create_table("project_auto_devops", {:id=>:serial, :force=>:cascade}) -> 0.0047s -- create_table("project_ci_cd_settings", {:id=>:serial, :force=>:cascade}) -> 0.0052s -- create_table("project_custom_attributes", {:id=>:serial, :force=>:cascade}) -> 0.0068s -- create_table("project_daily_statistics", {:force=>:cascade}) -> 0.0051s -- create_table("project_deploy_tokens", {:id=>:serial, :force=>:cascade}) -> 0.0063s -- create_table("project_error_tracking_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade}) -> 0.0027s -- create_table("project_feature_usages", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade}) -> 0.0084s -- create_table("project_features", {:id=>:serial, :force=>:cascade}) -> 0.0067s -- create_table("project_group_links", {:id=>:serial, :force=>:cascade}) -> 0.0067s -- create_table("project_import_data", {:id=>:serial, :force=>:cascade}) -> 0.0048s -- create_table("project_incident_management_settings", {:primary_key=>"project_id", :id=>:serial, :force=>:cascade}) -> 0.0034s -- create_table("project_metrics_settings", {:primary_key=>"project_id", :id=>:integer, :default=>nil, :force=>:cascade}) -> 0.0019s -- create_table("project_mirror_data", {:id=>:serial, :force=>:cascade}) -> 0.0161s -- create_table("project_pages_metadata", {:id=>false, :force=>:cascade}) -> 0.0057s -- create_table("project_repositories", {:force=>:cascade}) -> 0.0087s -- create_table("project_repository_states", {:id=>:serial, :force=>:cascade}) -> 0.0152s -- create_table("project_statistics", {:id=>:serial, :force=>:cascade}) -> 0.0091s -- create_table("project_tracing_settings", {:force=>:cascade}) -> 0.0048s -- create_table("projects", {:id=>:serial, :force=>:cascade}) -> 0.0707s -- create_table("prometheus_alert_events", {:force=>:cascade}) -> 0.0070s -- create_table("prometheus_alerts", {:id=>:serial, :force=>:cascade}) -> 0.0086s -- create_table("prometheus_metrics", {:id=>:serial, :force=>:cascade}) -> 0.0117s -- create_table("protected_branch_merge_access_levels", {:id=>:serial, :force=>:cascade}) -> 0.0089s -- create_table("protected_branch_push_access_levels", {:id=>:serial, :force=>:cascade}) -> 0.0088s -- create_table("protected_branch_unprotect_access_levels", {:id=>:serial, :force=>:cascade}) -> 0.0089s -- create_table("protected_branches", {:id=>:serial, :force=>:cascade}) -> 0.0075s -- create_table("protected_environment_deploy_access_levels", {:id=>:serial, :force=>:cascade}) -> 0.0089s -- create_table("protected_environments", {:id=>:serial, :force=>:cascade}) -> 0.0067s -- create_table("protected_tag_create_access_levels", {:id=>:serial, :force=>:cascade}) -> 0.0089s -- create_table("protected_tags", {:id=>:serial, :force=>:cascade}) -> 0.0070s -- create_table("push_event_payloads", {:id=>false, :force=>:cascade}) -> 0.0040s -- create_table("push_rules", {:id=>:serial, :force=>:cascade}) -> 0.0096s -- create_table("redirect_routes", {:id=>:serial, :force=>:cascade}) -> 0.0089s -- create_table("release_links", {:force=>:cascade}) -> 0.0071s -- create_table("releases", {:id=>:serial, :force=>:cascade}) -> 0.0073s -- create_table("remote_mirrors", {:id=>:serial, :force=>:cascade}) -> 0.0081s -- create_table("repository_languages", {:id=>false, :force=>:cascade}) -> 0.0033s -- create_table("resource_label_events", {:force=>:cascade}) -> 0.0129s -- create_table("reviews", {:force=>:cascade}) -> 0.0082s -- create_table("routes", {:id=>:serial, :force=>:cascade}) -> 0.0089s -- create_table("saml_providers", {:id=>:serial, :force=>:cascade}) -> 0.0057s -- create_table("scim_oauth_access_tokens", {:id=>:serial, :force=>:cascade}) -> 0.0048s -- create_table("sent_notifications", {:id=>:serial, :force=>:cascade}) -> 0.0048s -- create_table("services", {:id=>:serial, :force=>:cascade}) -> 0.0157s -- create_table("shards", {:id=>:serial, :force=>:cascade}) -> 0.0050s -- create_table("slack_integrations", {:id=>:serial, :force=>:cascade}) -> 0.0099s -- create_table("smartcard_identities", {:force=>:cascade}) -> 0.0071s -- create_table("snippets", {:id=>:serial, :force=>:cascade}) -> 0.0185s -- create_table("software_license_policies", {:id=>:serial, :force=>:cascade}) -> 0.0074s -- create_table("software_licenses", {:id=>:serial, :force=>:cascade}) -> 0.0069s -- create_table("spam_logs", {:id=>:serial, :force=>:cascade}) -> 0.0037s -- create_table("subscriptions", {:id=>:serial, :force=>:cascade}) -> 0.0071s -- create_table("suggestions", {:force=>:cascade}) -> 0.0067s -- create_table("system_note_metadata", {:id=>:serial, :force=>:cascade}) -> 0.0047s -- create_table("taggings", {:id=>:serial, :force=>:cascade}) -> 0.0112s -- create_table("tags", {:id=>:serial, :force=>:cascade}) -> 0.0073s -- create_table("term_agreements", {:id=>:serial, :force=>:cascade}) -> 0.0089s -- create_table("timelogs", {:id=>:serial, :force=>:cascade}) -> 0.0085s -- create_table("todos", {:id=>:serial, :force=>:cascade}) -> 0.0218s -- create_table("trending_projects", {:id=>:serial, :force=>:cascade}) -> 0.0043s -- create_table("u2f_registrations", {:id=>:serial, :force=>:cascade}) -> 0.0075s -- create_table("uploads", {:id=>:serial, :force=>:cascade}) -> 0.0111s -- create_table("user_agent_details", {:id=>:serial, :force=>:cascade}) -> 0.0055s -- create_table("user_callouts", {:id=>:serial, :force=>:cascade}) -> 0.0065s -- create_table("user_custom_attributes", {:id=>:serial, :force=>:cascade}) -> 0.0070s -- create_table("user_interacted_projects", {:id=>false, :force=>:cascade}) -> 0.0054s -- create_table("user_preferences", {:id=>:serial, :force=>:cascade}) -> 0.0069s -- create_table("user_statuses", {:primary_key=>"user_id", :id=>:serial, :force=>:cascade}) -> 0.0052s -- create_table("user_synced_attributes_metadata", {:id=>:serial, :force=>:cascade}) -> 0.0058s -- create_table("users", {:id=>:serial, :force=>:cascade}) -> 0.0699s -- create_table("users_ops_dashboard_projects", {:force=>:cascade}) -> 0.0065s -- create_table("users_star_projects", {:id=>:serial, :force=>:cascade}) -> 0.0062s -- create_table("vulnerabilities", {:force=>:cascade}) -> 0.0230s -- create_table("vulnerability_feedback", {:id=>:serial, :force=>:cascade}) -> 0.0156s -- create_table("vulnerability_identifiers", {:force=>:cascade}) -> 0.0051s -- create_table("vulnerability_occurrence_identifiers", {:force=>:cascade}) -> 0.0063s -- create_table("vulnerability_occurrence_pipelines", {:force=>:cascade}) -> 0.0064s -- create_table("vulnerability_occurrences", {:force=>:cascade}) -> 0.0135s -- create_table("vulnerability_scanners", {:force=>:cascade}) -> 0.0048s -- create_table("web_hook_logs", {:id=>:serial, :force=>:cascade}) -> 0.0072s -- create_table("web_hooks", {:id=>:serial, :force=>:cascade}) -> 0.0123s -- add_foreign_key("alerts_service_data", "services", {:on_delete=>:cascade}) -> 0.0024s -- add_foreign_key("allowed_email_domains", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0023s -- add_foreign_key("analytics_cycle_analytics_group_stages", "labels", {:column=>"end_event_label_id", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("analytics_cycle_analytics_group_stages", "labels", {:column=>"start_event_label_id", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("analytics_cycle_analytics_group_stages", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("analytics_cycle_analytics_project_stages", "labels", {:column=>"end_event_label_id", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("analytics_cycle_analytics_project_stages", "labels", {:column=>"start_event_label_id", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("analytics_cycle_analytics_project_stages", "projects", {:on_delete=>:cascade}) -> 0.0028s -- add_foreign_key("analytics_language_trend_repository_languages", "programming_languages", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("analytics_language_trend_repository_languages", "projects", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("analytics_repository_file_commits", "analytics_repository_files", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("analytics_repository_file_commits", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("analytics_repository_files", "projects", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("application_settings", "namespaces", {:column=>"custom_project_templates_group_id", :on_delete=>:nullify}) -> 0.0036s -- add_foreign_key("application_settings", "projects", {:column=>"file_template_project_id", :name=>"fk_ec757bd087", :on_delete=>:nullify}) -> 0.0024s -- add_foreign_key("application_settings", "projects", {:column=>"instance_administration_project_id", :on_delete=>:nullify}) -> 0.0034s -- add_foreign_key("application_settings", "users", {:column=>"usage_stats_set_by_user_id", :name=>"fk_964370041d", :on_delete=>:nullify}) -> 0.0034s -- add_foreign_key("approval_merge_request_rule_sources", "approval_merge_request_rules", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("approval_merge_request_rule_sources", "approval_project_rules", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("approval_merge_request_rules", "merge_requests", {:on_delete=>:cascade}) -> 0.0023s -- add_foreign_key("approval_merge_request_rules_approved_approvers", "approval_merge_request_rules", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("approval_merge_request_rules_approved_approvers", "users", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("approval_merge_request_rules_groups", "approval_merge_request_rules", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("approval_merge_request_rules_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("approval_merge_request_rules_users", "approval_merge_request_rules", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("approval_merge_request_rules_users", "users", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("approval_project_rules", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("approval_project_rules_groups", "approval_project_rules", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("approval_project_rules_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("approval_project_rules_users", "approval_project_rules", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("approval_project_rules_users", "users", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("approvals", "merge_requests", {:name=>"fk_310d714958", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("approver_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("badges", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("badges", "projects", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("board_assignees", "boards", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("board_assignees", "users", {:column=>"assignee_id", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("board_group_recent_visits", "boards", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("board_group_recent_visits", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("board_group_recent_visits", "users", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("board_labels", "boards", {:on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("board_labels", "labels", {:on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("board_project_recent_visits", "boards", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("board_project_recent_visits", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("board_project_recent_visits", "users", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("boards", "namespaces", {:column=>"group_id", :name=>"fk_1e9a074a35", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("boards", "projects", {:name=>"fk_f15266b5f9", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("chat_teams", "namespaces", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("ci_build_needs", "ci_builds", {:column=>"build_id", :on_delete=>:cascade}) -> 0.0026s -- add_foreign_key("ci_build_trace_chunks", "ci_builds", {:column=>"build_id", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("ci_build_trace_section_names", "projects", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_build_trace_sections", "ci_build_trace_section_names", {:column=>"section_name_id", :name=>"fk_264e112c66", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("ci_build_trace_sections", "ci_builds", {:column=>"build_id", :name=>"fk_4ebe41f502", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("ci_build_trace_sections", "projects", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_a2141b1522", :on_delete=>:nullify}) -> 0.0021s -- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"commit_id", :name=>"fk_d3130c9a7f", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("ci_builds", "ci_pipelines", {:column=>"upstream_pipeline_id", :name=>"fk_87f4cefcda", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_builds", "ci_stages", {:column=>"stage_id", :name=>"fk_3a9eaa254d", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_builds", "projects", {:name=>"fk_befce0568a", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("ci_builds_metadata", "ci_builds", {:column=>"build_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_builds_metadata", "projects", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_builds_runner_session", "ci_builds", {:column=>"build_id", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("ci_group_variables", "namespaces", {:column=>"group_id", :name=>"fk_33ae4d58d8", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("ci_job_artifacts", "ci_builds", {:column=>"job_id", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ci_job_artifacts", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ci_job_variables", "ci_builds", {:column=>"job_id", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ci_pipeline_chat_data", "chat_names", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_pipeline_chat_data", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("ci_pipeline_schedule_variables", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_41c35fda51", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("ci_pipeline_schedules", "projects", {:name=>"fk_8ead60fcc4", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ci_pipeline_schedules", "users", {:column=>"owner_id", :name=>"fk_9ea99f58d2", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("ci_pipeline_variables", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_f29c5f4380", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("ci_pipelines", "ci_pipeline_schedules", {:column=>"pipeline_schedule_id", :name=>"fk_3d34ab2e06", :on_delete=>:nullify}) -> 0.0013s -- add_foreign_key("ci_pipelines", "ci_pipelines", {:column=>"auto_canceled_by_id", :name=>"fk_262d4c2d19", :on_delete=>:nullify}) -> 0.0013s -- add_foreign_key("ci_pipelines", "external_pull_requests", {:name=>"fk_190998ef09", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("ci_pipelines", "merge_requests", {:name=>"fk_a23be95014", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_pipelines", "projects", {:name=>"fk_86635dbd80", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("ci_runner_namespaces", "ci_runners", {:column=>"runner_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_runner_namespaces", "namespaces", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("ci_runner_projects", "projects", {:name=>"fk_4478a6f1e4", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ci_sources_pipelines", "ci_builds", {:column=>"source_job_id", :name=>"fk_be5624bf37", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_e1bad85861", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("ci_sources_pipelines", "ci_pipelines", {:column=>"source_pipeline_id", :name=>"fk_d4e29af7d7", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("ci_sources_pipelines", "projects", {:column=>"source_project_id", :name=>"fk_acd9737679", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ci_sources_pipelines", "projects", {:name=>"fk_1e53c97c0a", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ci_stages", "ci_pipelines", {:column=>"pipeline_id", :name=>"fk_fb57e6cc56", :on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("ci_stages", "projects", {:name=>"fk_2360681d1d", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_trigger_requests", "ci_triggers", {:column=>"trigger_id", :name=>"fk_b8ec8b7245", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("ci_triggers", "projects", {:name=>"fk_e3e63f966e", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ci_triggers", "users", {:column=>"owner_id", :name=>"fk_e8e10d1964", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("ci_variables", "projects", {:name=>"fk_ada5eb64b3", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("cluster_groups", "clusters", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("cluster_groups", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("cluster_platforms_kubernetes", "clusters", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("cluster_projects", "clusters", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("cluster_projects", "projects", {:on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("cluster_providers_gcp", "clusters", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("clusters", "projects", {:column=>"management_project_id", :name=>"fk_f05c5e5a42", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("clusters", "users", {:on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("clusters_applications_cert_managers", "clusters", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("clusters_applications_helm", "clusters", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("clusters_applications_ingress", "clusters", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("clusters_applications_jupyter", "clusters", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("clusters_applications_jupyter", "oauth_applications", {:on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("clusters_applications_knative", "clusters", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("clusters_applications_prometheus", "clusters", {:name=>"fk_557e773639", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("clusters_applications_runners", "ci_runners", {:column=>"runner_id", :name=>"fk_02de2ded36", :on_delete=>:nullify}) -> 0.0014s -- add_foreign_key("clusters_applications_runners", "clusters", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("clusters_kubernetes_namespaces", "cluster_projects", {:on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("clusters_kubernetes_namespaces", "clusters", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("clusters_kubernetes_namespaces", "environments", {:on_delete=>:nullify}) -> 0.0018s -- add_foreign_key("clusters_kubernetes_namespaces", "projects", {:on_delete=>:nullify}) -> 0.0019s -- add_foreign_key("container_repositories", "projects") -> 0.0019s -- add_foreign_key("dependency_proxy_blobs", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("dependency_proxy_group_settings", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("deploy_keys_projects", "projects", {:name=>"fk_58a901ca7e", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("deployments", "clusters", {:name=>"fk_289bba3222", :on_delete=>:nullify}) -> 0.0020s -- add_foreign_key("deployments", "projects", {:name=>"fk_b9a3851b82", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("design_management_designs", "issues", {:on_delete=>:cascade}) -> 0.0023s -- add_foreign_key("design_management_designs", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("design_management_designs_versions", "design_management_designs", {:column=>"design_id", :name=>"fk_03c671965c", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("design_management_designs_versions", "design_management_versions", {:column=>"version_id", :name=>"fk_f4d25ba00c", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("design_management_versions", "issues", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("design_management_versions", "users", {:name=>"fk_ee16b939e5", :on_delete=>:nullify}) -> 0.0019s -- add_foreign_key("draft_notes", "merge_requests", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("draft_notes", "users", {:column=>"author_id", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("elasticsearch_indexed_namespaces", "namespaces", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("elasticsearch_indexed_projects", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("environments", "projects", {:name=>"fk_d1c8c1da6a", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("epic_issues", "epics", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("epic_issues", "issues", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("epic_metrics", "epics", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("epics", "epics", {:column=>"parent_id", :name=>"fk_25b99c1be3", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("epics", "milestones", {:on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("epics", "namespaces", {:column=>"group_id", :name=>"fk_f081aa4489", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("epics", "users", {:column=>"assignee_id", :name=>"fk_dccd3f98fc", :on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("epics", "users", {:column=>"author_id", :name=>"fk_3654b61b03", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("epics", "users", {:column=>"closed_by_id", :name=>"fk_aa5798e761", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("events", "namespaces", {:column=>"group_id", :name=>"fk_61fbf6ca48", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("events", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("events", "users", {:column=>"author_id", :name=>"fk_edfd187b6f", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("external_pull_requests", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("fork_network_members", "fork_networks", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("fork_network_members", "projects", {:column=>"forked_from_project_id", :name=>"fk_b01280dae4", :on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("fork_network_members", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("fork_networks", "projects", {:column=>"root_project_id", :name=>"fk_e7b436b2b5", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("forked_project_links", "projects", {:column=>"forked_to_project_id", :name=>"fk_434510edb0", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("geo_container_repository_updated_events", "container_repositories", {:name=>"fk_212c89c706", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("geo_event_log", "geo_cache_invalidation_events", {:column=>"cache_invalidation_event_id", :name=>"fk_42c3b54bed", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("geo_event_log", "geo_container_repository_updated_events", {:column=>"container_repository_updated_event_id", :name=>"fk_6ada82d42a", :on_delete=>:cascade}) -> 0.0012s -- add_foreign_key("geo_event_log", "geo_hashed_storage_migrated_events", {:column=>"hashed_storage_migrated_event_id", :name=>"fk_27548c6db3", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("geo_event_log", "geo_job_artifact_deleted_events", {:column=>"job_artifact_deleted_event_id", :name=>"fk_176d3fbb5d", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("geo_event_log", "geo_lfs_object_deleted_events", {:column=>"lfs_object_deleted_event_id", :name=>"fk_d5af95fcd9", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("geo_event_log", "geo_repositories_changed_events", {:column=>"repositories_changed_event_id", :name=>"fk_4a99ebfd60", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("geo_event_log", "geo_repository_created_events", {:column=>"repository_created_event_id", :name=>"fk_9b9afb1916", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("geo_event_log", "geo_repository_deleted_events", {:column=>"repository_deleted_event_id", :name=>"fk_c4b1c1f66e", :on_delete=>:cascade}) -> 0.0021s -- add_foreign_key("geo_event_log", "geo_repository_renamed_events", {:column=>"repository_renamed_event_id", :name=>"fk_86c84214ec", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("geo_event_log", "geo_repository_updated_events", {:column=>"repository_updated_event_id", :name=>"fk_78a6492f68", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("geo_event_log", "geo_reset_checksum_events", {:column=>"reset_checksum_event_id", :name=>"fk_cff7185ad2", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("geo_event_log", "geo_upload_deleted_events", {:column=>"upload_deleted_event_id", :name=>"fk_c1f241c70d", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("geo_hashed_storage_attachments_events", "projects", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("geo_hashed_storage_migrated_events", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("geo_node_namespace_links", "geo_nodes", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("geo_node_namespace_links", "namespaces", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("geo_node_statuses", "geo_nodes", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("geo_repositories_changed_events", "geo_nodes", {:on_delete=>:cascade}) -> 0.0012s -- add_foreign_key("geo_repository_created_events", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("geo_repository_renamed_events", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("geo_repository_updated_events", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("geo_reset_checksum_events", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("gitlab_subscriptions", "namespaces", {:name=>"fk_e2595d00a1", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("gitlab_subscriptions", "plans", {:column=>"hosted_plan_id", :name=>"fk_bd0c4019c3", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("gpg_key_subkeys", "gpg_keys", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("gpg_keys", "users", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("gpg_signatures", "gpg_key_subkeys", {:on_delete=>:nullify}) -> 0.0015s -- add_foreign_key("gpg_signatures", "gpg_keys", {:on_delete=>:nullify}) -> 0.0013s -- add_foreign_key("gpg_signatures", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("grafana_integrations", "projects", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("group_custom_attributes", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("identities", "saml_providers", {:name=>"fk_aade90f0fc", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("import_export_uploads", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("index_statuses", "projects", {:name=>"fk_74b2492545", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("insights", "namespaces", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("insights", "projects", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("internal_ids", "namespaces", {:name=>"fk_162941d509", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("internal_ids", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("ip_restrictions", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("issue_assignees", "issues", {:name=>"fk_b7d881734a", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("issue_assignees", "users", {:name=>"fk_5e0c8d9154", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("issue_links", "issues", {:column=>"source_id", :name=>"fk_c900194ff2", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("issue_links", "issues", {:column=>"target_id", :name=>"fk_e71bb44f1f", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("issue_metrics", "issues", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("issue_tracker_data", "services", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("issues", "issues", {:column=>"duplicated_to_id", :name=>"fk_9c4516d665", :on_delete=>:nullify}) -> 0.0015s -- add_foreign_key("issues", "issues", {:column=>"moved_to_id", :name=>"fk_a194299be1", :on_delete=>:nullify}) -> 0.0014s -- add_foreign_key("issues", "milestones", {:name=>"fk_96b1dd429c", :on_delete=>:nullify}) -> 0.0015s -- add_foreign_key("issues", "projects", {:name=>"fk_899c8f3231", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("issues", "users", {:column=>"author_id", :name=>"fk_05f1e72feb", :on_delete=>:nullify}) -> 0.0018s -- add_foreign_key("issues", "users", {:column=>"closed_by_id", :name=>"fk_c63cbf6c25", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("issues", "users", {:column=>"updated_by_id", :name=>"fk_ffed080f01", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("issues_prometheus_alert_events", "issues", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("issues_prometheus_alert_events", "prometheus_alert_events", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("jira_connect_subscriptions", "jira_connect_installations", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("jira_connect_subscriptions", "namespaces", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("jira_tracker_data", "services", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("label_links", "labels", {:name=>"fk_d97dd08678", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("label_priorities", "labels", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("label_priorities", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("labels", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("labels", "projects", {:name=>"fk_7de4989a69", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("lfs_file_locks", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("lfs_file_locks", "users", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("list_user_preferences", "lists", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("list_user_preferences", "users", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("lists", "boards", {:name=>"fk_0d3f677137", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("lists", "labels", {:name=>"fk_7a5553d60f", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("lists", "milestones", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("lists", "users", {:name=>"fk_d6cf4279f7", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("members", "users", {:name=>"fk_2e88fb7ce9", :on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("merge_request_assignees", "merge_requests", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("merge_request_assignees", "users", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("merge_request_blocks", "merge_requests", {:column=>"blocked_merge_request_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("merge_request_blocks", "merge_requests", {:column=>"blocking_merge_request_id", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("merge_request_diff_commits", "merge_request_diffs", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("merge_request_diff_files", "merge_request_diffs", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("merge_request_diffs", "merge_requests", {:name=>"fk_8483f3258f", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("merge_request_metrics", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("merge_request_metrics", "merge_requests", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("merge_request_metrics", "users", {:column=>"latest_closed_by_id", :name=>"fk_ae440388cc", :on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("merge_request_metrics", "users", {:column=>"merged_by_id", :name=>"fk_7f28d925f3", :on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("merge_requests", "ci_pipelines", {:column=>"head_pipeline_id", :name=>"fk_fd82eae0b9", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("merge_requests", "merge_request_diffs", {:column=>"latest_merge_request_diff_id", :name=>"fk_06067f5644", :on_delete=>:nullify}) -> 0.0021s -- add_foreign_key("merge_requests", "milestones", {:name=>"fk_6a5165a692", :on_delete=>:nullify}) -> 0.0015s -- add_foreign_key("merge_requests", "projects", {:column=>"source_project_id", :name=>"fk_3308fe130c", :on_delete=>:nullify}) -> 0.0020s -- add_foreign_key("merge_requests", "projects", {:column=>"target_project_id", :name=>"fk_a6963e8447", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("merge_requests", "users", {:column=>"assignee_id", :name=>"fk_6149611a04", :on_delete=>:nullify}) -> 0.0018s -- add_foreign_key("merge_requests", "users", {:column=>"author_id", :name=>"fk_e719a85f8a", :on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("merge_requests", "users", {:column=>"merge_user_id", :name=>"fk_ad525e1f87", :on_delete=>:nullify}) -> 0.0018s -- add_foreign_key("merge_requests", "users", {:column=>"updated_by_id", :name=>"fk_641731faff", :on_delete=>:nullify}) -> 0.0018s -- add_foreign_key("merge_requests_closing_issues", "issues", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("merge_requests_closing_issues", "merge_requests", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("merge_trains", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("merge_trains", "merge_requests", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("merge_trains", "projects", {:column=>"target_project_id", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("merge_trains", "users", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("milestone_releases", "milestones", {:on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("milestone_releases", "releases", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("milestones", "namespaces", {:column=>"group_id", :name=>"fk_95650a40d4", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("milestones", "projects", {:name=>"fk_9bd0a0c791", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("namespace_aggregation_schedules", "namespaces", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("namespace_root_storage_statistics", "namespaces", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("namespace_statistics", "namespaces", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("namespaces", "namespaces", {:column=>"custom_project_templates_group_id", :name=>"fk_e7a0b20a6b", :on_delete=>:nullify}) -> 0.0015s -- add_foreign_key("namespaces", "plans", {:name=>"fk_fdd12e5b80", :on_delete=>:nullify}) -> 0.0015s -- add_foreign_key("namespaces", "projects", {:column=>"file_template_project_id", :name=>"fk_319256d87a", :on_delete=>:nullify}) -> 0.0020s -- add_foreign_key("note_diff_files", "notes", {:column=>"diff_note_id", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("notes", "projects", {:name=>"fk_99e097b079", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("notes", "reviews", {:name=>"fk_2e82291620", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("notification_settings", "users", {:name=>"fk_0c95e91db7", :on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("oauth_openid_requests", "oauth_access_grants", {:column=>"access_grant_id", :name=>"fk_oauth_openid_requests_oauth_access_grants_access_grant_id"}) -> 0.0019s -- add_foreign_key("operations_feature_flag_scopes", "operations_feature_flags", {:column=>"feature_flag_id", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("operations_feature_flags", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("operations_feature_flags_clients", "projects", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("packages_maven_metadata", "packages_packages", {:column=>"package_id", :name=>"fk_be88aed360", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("packages_package_files", "packages_packages", {:column=>"package_id", :name=>"fk_86f0f182f8", :on_delete=>:cascade}) -> 0.0012s -- add_foreign_key("packages_package_metadata", "packages_packages", {:column=>"package_id", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("packages_package_tags", "packages_packages", {:column=>"package_id", :on_delete=>:cascade}) -> 0.0012s -- add_foreign_key("packages_packages", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("pages_domain_acme_orders", "pages_domains", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("pages_domains", "projects", {:name=>"fk_ea2f6dfc6f", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("path_locks", "projects", {:name=>"fk_5265c98f24", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("path_locks", "users") -> 0.0018s -- add_foreign_key("personal_access_tokens", "users") -> 0.0018s -- add_foreign_key("pool_repositories", "projects", {:column=>"source_project_id", :on_delete=>:nullify}) -> 0.0018s -- add_foreign_key("pool_repositories", "shards", {:on_delete=>:restrict}) -> 0.0013s -- add_foreign_key("project_alerting_settings", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("project_aliases", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_authorizations", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_authorizations", "users", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_auto_devops", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("project_ci_cd_settings", "projects", {:name=>"fk_24c15d2f2e", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_custom_attributes", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("project_daily_statistics", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_deploy_tokens", "deploy_tokens", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("project_deploy_tokens", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_error_tracking_settings", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("project_feature_usages", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("project_features", "projects", {:name=>"fk_18513d9b92", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_group_links", "projects", {:name=>"fk_daa8cee94c", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("project_import_data", "projects", {:name=>"fk_ffb9ee3a10", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_incident_management_settings", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_metrics_settings", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_mirror_data", "projects", {:name=>"fk_d1aad367d7", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("project_pages_metadata", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_repositories", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("project_repositories", "shards", {:on_delete=>:restrict}) -> 0.0013s -- add_foreign_key("project_repository_states", "projects", {:on_delete=>:cascade}) -> 0.0023s -- add_foreign_key("project_statistics", "projects", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("project_tracing_settings", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("projects", "pool_repositories", {:name=>"fk_6e5c14658a", :on_delete=>:nullify}) -> 0.0019s -- add_foreign_key("prometheus_alert_events", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("prometheus_alert_events", "prometheus_alerts", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("prometheus_alerts", "environments", {:on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("prometheus_alerts", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("prometheus_alerts", "prometheus_metrics", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("prometheus_metrics", "projects", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("protected_branch_merge_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_98f3d044fe", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("protected_branch_merge_access_levels", "protected_branches", {:name=>"fk_8a3072ccb3", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("protected_branch_merge_access_levels", "users") -> 0.0017s -- add_foreign_key("protected_branch_push_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_7111b68cdb", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("protected_branch_push_access_levels", "protected_branches", {:name=>"fk_9ffc86a3d9", :on_delete=>:cascade}) -> 0.0012s -- add_foreign_key("protected_branch_push_access_levels", "users") -> 0.0016s -- add_foreign_key("protected_branch_unprotect_access_levels", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("protected_branch_unprotect_access_levels", "protected_branches", {:on_delete=>:cascade}) -> 0.0012s -- add_foreign_key("protected_branch_unprotect_access_levels", "users", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("protected_branches", "projects", {:name=>"fk_7a9c6d93e7", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("protected_environment_deploy_access_levels", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("protected_environment_deploy_access_levels", "protected_environments", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("protected_environment_deploy_access_levels", "users", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("protected_environments", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("protected_tag_create_access_levels", "namespaces", {:column=>"group_id", :name=>"fk_b4eb82fe3c", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("protected_tag_create_access_levels", "protected_tags", {:name=>"fk_f7dfda8c51", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("protected_tag_create_access_levels", "users") -> 0.0016s -- add_foreign_key("protected_tags", "projects", {:name=>"fk_8e4af87648", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("push_event_payloads", "events", {:name=>"fk_36c74129da", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("push_rules", "projects", {:name=>"fk_83b29894de", :on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("release_links", "releases", {:on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("releases", "projects", {:name=>"fk_47fe2a0596", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("releases", "users", {:column=>"author_id", :name=>"fk_8e4456f90f", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("remote_mirrors", "projects", {:name=>"fk_43a9aa4ca8", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("repository_languages", "projects", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("resource_label_events", "epics", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("resource_label_events", "issues", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("resource_label_events", "labels", {:on_delete=>:nullify}) -> 0.0014s -- add_foreign_key("resource_label_events", "merge_requests", {:on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("resource_label_events", "users", {:on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("reviews", "merge_requests", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("reviews", "projects", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("reviews", "users", {:column=>"author_id", :on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("saml_providers", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("scim_oauth_access_tokens", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("services", "projects", {:name=>"fk_71cce407f9", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("slack_integrations", "services", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("smartcard_identities", "users", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("snippets", "projects", {:name=>"fk_be41fd4bb7", :on_delete=>:cascade}) -> 0.0021s -- add_foreign_key("software_license_policies", "projects", {:on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("software_license_policies", "software_licenses", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("subscriptions", "projects", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("suggestions", "notes", {:on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("system_note_metadata", "notes", {:name=>"fk_d83a918cb1", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("term_agreements", "application_setting_terms", {:column=>"term_id"}) -> 0.0014s -- add_foreign_key("term_agreements", "users", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("timelogs", "issues", {:name=>"fk_timelogs_issues_issue_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("timelogs", "merge_requests", {:name=>"fk_timelogs_merge_requests_merge_request_id", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("todos", "namespaces", {:column=>"group_id", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("todos", "notes", {:name=>"fk_91d1f47b13", :on_delete=>:cascade}) -> 0.0014s -- add_foreign_key("todos", "projects", {:name=>"fk_45054f9c45", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("todos", "users", {:column=>"author_id", :name=>"fk_ccf0373936", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("todos", "users", {:name=>"fk_d94154aa95", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("trending_projects", "projects", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("u2f_registrations", "users") -> 0.0018s -- add_foreign_key("user_callouts", "users", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("user_custom_attributes", "users", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("user_interacted_projects", "projects", {:name=>"fk_722ceba4f7", :on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("user_interacted_projects", "users", {:name=>"fk_0894651f08", :on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("user_preferences", "users", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("user_statuses", "users", {:on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("user_synced_attributes_metadata", "users", {:on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("users", "application_setting_terms", {:column=>"accepted_term_id", :name=>"fk_789cd90b35", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("users", "namespaces", {:column=>"managing_group_id", :name=>"fk_a4b8fefe3e", :on_delete=>:nullify}) -> 0.0022s -- add_foreign_key("users_ops_dashboard_projects", "projects", {:on_delete=>:cascade}) -> 0.0051s -- add_foreign_key("users_ops_dashboard_projects", "users", {:on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("users_star_projects", "projects", {:name=>"fk_22cd27ddfc", :on_delete=>:cascade}) -> 0.0022s -- add_foreign_key("vulnerabilities", "epics", {:name=>"fk_1d37cddf91", :on_delete=>:nullify}) -> 0.0020s -- add_foreign_key("vulnerabilities", "milestones", {:column=>"due_date_sourcing_milestone_id", :name=>"fk_7c5bb22a22", :on_delete=>:nullify}) -> 0.0014s -- add_foreign_key("vulnerabilities", "milestones", {:column=>"start_date_sourcing_milestone_id", :name=>"fk_88b4d546ef", :on_delete=>:nullify}) -> 0.0013s -- add_foreign_key("vulnerabilities", "milestones", {:name=>"fk_131d289c65", :on_delete=>:nullify}) -> 0.0015s -- add_foreign_key("vulnerabilities", "projects", {:name=>"fk_efb96ab1e2", :on_delete=>:cascade}) -> 0.0021s -- add_foreign_key("vulnerabilities", "users", {:column=>"author_id", :name=>"fk_b1de915a15", :on_delete=>:nullify}) -> 0.0018s -- add_foreign_key("vulnerabilities", "users", {:column=>"closed_by_id", :name=>"fk_cf5c60acbf", :on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("vulnerabilities", "users", {:column=>"last_edited_by_id", :name=>"fk_1302949740", :on_delete=>:nullify}) -> 0.0017s -- add_foreign_key("vulnerabilities", "users", {:column=>"updated_by_id", :name=>"fk_7ac31eacb9", :on_delete=>:nullify}) -> 0.0025s -- add_foreign_key("vulnerability_feedback", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:nullify}) -> 0.0018s -- add_foreign_key("vulnerability_feedback", "issues", {:on_delete=>:nullify}) -> 0.0015s -- add_foreign_key("vulnerability_feedback", "merge_requests", {:name=>"fk_563ff1912e", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("vulnerability_feedback", "projects", {:on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("vulnerability_feedback", "users", {:column=>"author_id", :on_delete=>:cascade}) -> 0.0017s -- add_foreign_key("vulnerability_feedback", "users", {:column=>"comment_author_id", :name=>"fk_94f7c8a81e", :on_delete=>:nullify}) -> 0.0016s -- add_foreign_key("vulnerability_identifiers", "projects", {:on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("vulnerability_occurrence_identifiers", "vulnerability_identifiers", {:column=>"identifier_id", :on_delete=>:cascade}) -> 0.0018s -- add_foreign_key("vulnerability_occurrence_identifiers", "vulnerability_occurrences", {:column=>"occurrence_id", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("vulnerability_occurrence_pipelines", "ci_pipelines", {:column=>"pipeline_id", :on_delete=>:cascade}) -> 0.0015s -- add_foreign_key("vulnerability_occurrence_pipelines", "vulnerability_occurrences", {:column=>"occurrence_id", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("vulnerability_occurrences", "projects", {:on_delete=>:cascade}) -> 0.0020s -- add_foreign_key("vulnerability_occurrences", "vulnerabilities", {:name=>"fk_97ffe77653", :on_delete=>:nullify}) -> 0.0015s -- add_foreign_key("vulnerability_occurrences", "vulnerability_identifiers", {:column=>"primary_identifier_id", :on_delete=>:cascade}) -> 0.0012s -- add_foreign_key("vulnerability_occurrences", "vulnerability_scanners", {:column=>"scanner_id", :on_delete=>:cascade}) -> 0.0013s -- add_foreign_key("vulnerability_scanners", "projects", {:on_delete=>:cascade}) -> 0.0019s -- add_foreign_key("web_hook_logs", "web_hooks", {:on_delete=>:cascade}) -> 0.0016s -- add_foreign_key("web_hooks", "projects", {:name=>"fk_0c8ca6d9d1", :on_delete=>:cascade}) -> 0.0020s [32;1m$ date[0;m Tue Oct 15 08:40:16 UTC 2019 [32;1m$ source scripts/rspec_helpers.sh[0;m [32;1m$ rspec_paralellized_job "--tag ~quarantine --tag ~geo"[0;m KNAPSACK_TEST_FILE_PATTERN: spec/{bin,config,db,dependencies,factories,finders,frontend,graphql,haml_lint,helpers,initializers,javascripts,lib,migrations,models,policies,presenters,rack_servers,routing,rubocop,serializers,services,sidekiq,tasks,uploaders,validators,views,workers,elastic_integration}{,/**/}*_spec.rb Checking gitaly-ruby bundle... Warning: the running version of Bundler (1.17.2) is older than the version that created the lockfile (1.17.3). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`. The Gemfile's dependencies are satisfied Trying to connect to gitaly: ...... OK Report specs: spec/services/merge_requests/update_service_spec.rb spec/services/projects/import_service_spec.rb spec/models/concerns/resolvable_discussion_spec.rb spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb spec/models/commit_spec.rb spec/lib/gitlab/search_results_spec.rb spec/models/namespace_spec.rb spec/finders/notes_finder_spec.rb spec/models/environment_status_spec.rb spec/serializers/pipeline_entity_spec.rb spec/migrations/migrate_auto_dev_ops_domain_to_cluster_domain_spec.rb spec/services/issuable/clone/content_rewriter_spec.rb spec/presenters/ci/pipeline_presenter_spec.rb spec/models/snippet_spec.rb spec/finders/projects/serverless/functions_finder_spec.rb spec/models/prometheus_metric_spec.rb spec/lib/gitlab/data_builder/note_spec.rb spec/lib/gitlab/data_builder/push_spec.rb spec/services/clusters/applications/upgrade_service_spec.rb spec/presenters/ci/build_presenter_spec.rb spec/services/issuable/clone/attributes_rewriter_spec.rb spec/models/cycle_analytics/group_level_spec.rb spec/models/commit_collection_spec.rb spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb spec/workers/invalid_gpg_signature_update_worker_spec.rb spec/finders/cluster_ancestors_finder_spec.rb spec/services/award_emojis/destroy_service_spec.rb spec/models/project_services/gitlab_issue_tracker_service_spec.rb spec/workers/namespaceless_project_destroy_worker_spec.rb spec/lib/gitlab/diff/highlight_spec.rb spec/services/discussions/resolve_service_spec.rb spec/helpers/search_helper_spec.rb spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb spec/lib/banzai/reference_parser/commit_range_parser_spec.rb spec/services/projects/open_issues_count_service_spec.rb spec/services/wiki_pages/update_service_spec.rb spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb spec/services/issues/import_csv_service_spec.rb spec/presenters/issue_presenter_spec.rb spec/services/projects/hashed_storage/migrate_repository_service_spec.rb spec/workers/ci/archive_traces_cron_worker_spec.rb spec/graphql/features/authorization_spec.rb spec/models/project_import_state_spec.rb spec/services/lfs/locks_finder_service_spec.rb spec/helpers/gitlab_routing_helper_spec.rb spec/lib/gitlab/kubernetes/helm/init_command_spec.rb spec/lib/gitlab/exclusive_lease_spec.rb spec/services/members/create_service_spec.rb spec/lib/gitlab/sanitizers/exif_spec.rb spec/models/concerns/project_features_compatibility_spec.rb spec/models/label_note_spec.rb spec/lib/gitlab/kubernetes/default_namespace_spec.rb spec/helpers/award_emoji_helper_spec.rb spec/workers/repository_import_worker_spec.rb spec/views/projects/diffs/_stats.html.haml_spec.rb spec/initializers/secret_token_spec.rb spec/models/project_services/issue_tracker_service_spec.rb spec/models/user_agent_detail_spec.rb spec/services/boards/list_service_spec.rb spec/services/wiki_pages/destroy_service_spec.rb spec/lib/gitlab/visibility_level_checker_spec.rb spec/services/merge_requests/migrate_external_diffs_service_spec.rb spec/models/hooks/web_hook_log_spec.rb spec/lib/gitlab/background_migration/add_merge_request_diff_commits_count_spec.rb spec/workers/concerns/gitlab/github_import/stage_methods_spec.rb spec/serializers/paginated_diff_entity_spec.rb spec/migrations/migrate_managed_clusters_with_no_token_to_unmanaged_spec.rb spec/lib/gitlab/ci/status/build/preparing_spec.rb spec/uploaders/namespace_file_uploader_spec.rb spec/lib/gitlab/ci/build/prerequisite/factory_spec.rb spec/workers/concerns/project_import_options_spec.rb spec/lib/gitlab/legacy_github_import/wiki_formatter_spec.rb spec/lib/gitlab/metrics/instrumentation_spec.rb spec/lib/gitlab/graphql/loaders/pipeline_for_sha_loader_spec.rb spec/services/prometheus/adapter_service_spec.rb spec/models/blob_viewer/base_spec.rb spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb spec/lib/gitlab/cycle_analytics/production_event_fetcher_spec.rb spec/lib/gitlab/ci/status/build/erased_spec.rb spec/lib/gitlab/checks/project_created_spec.rb spec/migrations/set_issue_id_for_all_versions_spec.rb spec/migrations/enqueue_reset_merge_status_spec.rb spec/workers/mail_scheduler/issue_due_worker_spec.rb spec/workers/hashed_storage/migrator_worker_spec.rb spec/services/projects/container_repository/cleanup_tags_service_spec.rb spec/migrations/remove_empty_extern_uid_auth0_identities_spec.rb spec/workers/import_issues_csv_worker_spec.rb spec/models/project_services/pivotaltracker_service_spec.rb spec/helpers/boards_helper_spec.rb spec/lib/gitlab/phabricator_import/project_creator_spec.rb spec/migrations/assure_commits_count_for_merge_request_diff_spec.rb spec/services/projects/container_repository/delete_tags_service_spec.rb spec/lib/gitlab/graphql/representation/tree_entry_spec.rb spec/services/protected_branches/destroy_service_spec.rb spec/lib/gitlab/import/database_helpers_spec.rb spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb spec/validators/public_url_validator_spec.rb spec/rubocop/cop/graphql/authorize_types_spec.rb spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb spec/lib/gitlab/graphql/representation/submodule_tree_entry_spec.rb spec/lib/gitlab/sidekiq_middleware/memory_killer_spec.rb spec/lib/omni_auth/strategies/jwt_spec.rb spec/helpers/commits_helper_spec.rb spec/services/projects/forks_count_service_spec.rb spec/services/protected_tags/create_service_spec.rb spec/lib/gitlab/ci/config/entry/job_spec.rb spec/lib/gitlab/legacy_github_import/user_formatter_spec.rb spec/workers/gitlab/github_import/stage/import_pull_requests_worker_spec.rb spec/tasks/gitlab/task_helpers_spec.rb spec/lib/gitlab/fake_application_settings_spec.rb spec/lib/banzai/filter/external_link_filter_spec.rb spec/initializers/zz_metrics_spec.rb spec/rubocop/cop/gitlab/rails_logger_spec.rb spec/db/development/import_common_metrics_spec.rb spec/finders/user_finder_spec.rb spec/lib/gitlab/http_connection_adapter_spec.rb spec/views/dashboard/projects/_blank_state_admin_welcome.haml_spec.rb spec/lib/mattermost/team_spec.rb spec/lib/gitlab/favicon_spec.rb spec/services/deploy_keys/create_service_spec.rb spec/lib/gitlab/sql/pattern_spec.rb spec/db/production/import_common_metrics_spec.rb spec/workers/every_sidekiq_worker_spec.rb spec/models/concerns/feature_gate_spec.rb spec/lib/gitlab/ci/config/entry/reports_spec.rb spec/serializers/move_to_project_serializer_spec.rb spec/lib/gitlab/redis/shared_state_spec.rb spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb spec/models/shard_spec.rb spec/lib/gitlab/dependency_linker/godeps_json_linker_spec.rb spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb spec/finders/license_template_finder_spec.rb spec/lib/banzai/filter/inline_diff_filter_spec.rb spec/lib/gitlab/ci/config/entry/cache_spec.rb spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb spec/models/merge_request/metrics_spec.rb spec/lib/gitlab/kubernetes_spec.rb spec/helpers/tab_helper_spec.rb spec/lib/gitlab/sidekiq_status_spec.rb spec/lib/gitlab/usage_data_counters/productivity_analytics_counter_spec.rb spec/lib/gitlab/usage_data_counters/merge_request_counter_spec.rb spec/lib/gitlab/git/changes_spec.rb spec/lib/prometheus/pid_provider_spec.rb spec/lib/gitlab/ci/pipeline/expression/lexeme/string_spec.rb spec/lib/gitlab/dependency_linker_spec.rb spec/models/clusters/project_spec.rb spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb spec/lib/gitlab/sherlock/collection_spec.rb spec/lib/gitlab/ci/config/entry/hidden_spec.rb spec/lib/gitlab/diff/suggestion_diff_spec.rb spec/models/project_services/chat_message/note_message_spec.rb spec/lib/gitlab/ci/build/artifacts/adapters/raw_stream_spec.rb spec/rubocop/cop/qa/element_with_pattern_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb spec/lib/gitlab/git/raw_diff_change_spec.rb spec/lib/gitlab/github_import/page_counter_spec.rb spec/lib/gitlab/ci/status/group/common_spec.rb spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end_spec.rb spec/lib/gitlab/github_import/bulk_importing_spec.rb spec/lib/rspec_flaky/flaky_examples_collection_spec.rb spec/lib/gitlab/ci/config/entry/paths_spec.rb spec/lib/gitlab/diff/inline_diff_spec.rb Knapsack report generator started! Run options: include {:focus=>true} exclude {:quarantine=>true, :geo=>true} All examples were filtered out; ignoring {:focus=>true} ==> Setting up GitLab Shell... GitLab Shell set up in 0.169309262 seconds... ==> Setting up Gitaly... Gitaly set up in 0.000128791 seconds... MergeRequests::UpdateService execute valid params matches base expectations executes hooks with update action sends email to user2 about assign of new merge request and email to user3 about merge request unassignment creates system note about merge_request reassign creates a resource label event creates system note about title change creates system note about description change creates system note about branch change creates system note about discussion lock when not including source branch removal options maintains the original options merge without pipeline merges the MR with finished pipeline merges the MR with active pipeline should receive execute(#<MergeRequest id:13 group13/project13!1>) 1 time with a non-authorised user does not merge the MR MR can not be merged when note sha != MR sha should eq "opened" todos when the title change marks pending todos as done does not create any new todos when the description change marks pending todos as done creates only 1 new todo when is reassigned marks previous assignee pending todos as done creates a pending todo for new assignee when the milestone is removed sends notifications for subscribers of changed milestone behaves like system notes for milestones group milestones creates a system note project milestones creates a system note when the milestone is changed marks pending todos as done sends notifications for subscribers of changed milestone behaves like system notes for milestones group milestones creates a system note project milestones creates a system note when the labels change marks pending todos as done updates updated_at when the assignee changes updates open merge request counter for assignees when merge request is reassigned when the target branch change marks pending todos as done when auto merge is enabled and target branch changed marks pending todos as done when the merge request is relabeled sends notifications for subscribers of newly added labels when issue has the `label` label does not send notifications for existing labels does not send notifications for removed labels updating mentions when mentioning a different user in title emails only the newly-mentioned user in description emails only the newly-mentioned user when mentioning a user and a group with access to when group is public behaves like updating attribute with allowed mentions emails group members behaves like updating attribute with allowed mentions emails group members when the group is private behaves like updating attribute with allowed mentions emails group members behaves like updating attribute with allowed mentions emails group members when mentioning a user and a group without access to when the group is private behaves like updating attribute with not allowed mentions emails mentioned user behaves like updating attribute with not allowed mentions emails mentioned user when MergeRequest has tasks should eq true behaves like updating a single task when a task is marked as completed creates system note about task status change when a task is marked as incomplete creates system note about task status change when the task position has been modified raises an exception when the content changes but not task line number creates system note about task status change when tasks are marked as completed creates system note about task status change when tasks are marked as incomplete creates system note about task status change while saving references to issues that the updated merge request closes creates a `MergeRequestsClosingIssues` record for each issue removes `MergeRequestsClosingIssues` records when issues are not closed anymore updating asssignee_ids does not update assignee when assignee_id is invalid unassigns assignee when user id is 0 saves assignee when user id is valid does not update assignee_id when user cannot read issue when issuable feature is private does not update with unauthorized assignee when project is Internal does not update with unauthorized assignee when project is Public changing state to reopened executes hooks only once to closed executes hooks only once setting `allow_collaboration` does not allow a maintainer of the target project to set `allow_collaboration` is allowed by a user that can push to the source and can update the merge request Projects::ImportService #async? returns true for an asynchronous importer returns false for a regular importer returns false when the importer does not define #async? returns false when the importer does not exist #execute with unknown url succeeds if repository is created successfully fails if repository creation fails when repository creation succeeds does not download lfs files with known url with a Github repository succeeds if repository import was scheduled fails if repository import was not scheduled when repository import scheduled does not download lfs objects with a non Github repository succeeds if repository import is successful fails if repository import fails when lfs import fails logs the error when repository import scheduled downloads lfs objects if lfs_enabled is enabled for project does not download lfs objects if lfs_enabled is not enabled for project with valid importer succeeds if importer succeeds fails if importer fails when importer has a custom repository importer it does not download lfs objects does not have a custom repository importer downloads lfs objects when lfs import fails logs the error with blocked import_URL fails with localhost fails with port 25 Discussion ResolvableDiscussion #resolvable? when potentially resolvable when all notes are unresolvable returns false when some notes are unresolvable and some notes are resolvable returns true when all notes are resolvable returns true when not potentially resolvable returns false #resolved? when not resolvable returns false when resolvable when all resolvable notes are resolved returns true when some resolvable notes are not resolved returns false #to_be_resolved? when not resolvable returns false when resolvable when all resolvable notes are resolved returns false when some resolvable notes are not resolved returns true #can_resolve? when not resolvable returns false when resolvable when not signed in returns false when signed in when the signed in user is the noteable author returns true when the signed in user can push to the project returns true when the signed in user is a random user returns false #resolve! when not resolvable returns nil doesn't set resolved_at doesn't set resolved_by doesn't mark as resolved when resolvable when all resolvable notes are resolved doesn't change resolved_at on the resolved notes doesn't change resolved_by on the resolved notes doesn't change the resolved state on the resolved notes doesn't change resolved_at doesn't change resolved_by doesn't change resolved state when some resolvable notes are resolved doesn't change resolved_at on the resolved note doesn't change resolved_by on the resolved note doesn't change the resolved state on the resolved note sets resolved_at on the unresolved note sets resolved_by on the unresolved note marks the unresolved note as resolved sets resolved_at sets resolved_by marks as resolved when no resolvable notes are resolved sets resolved_at on the unresolved notes sets resolved_by on the unresolved notes marks the unresolved notes as resolved sets resolved_at sets resolved_by marks as resolved #unresolve! when not resolvable returns nil when resolvable when all resolvable notes are resolved unsets resolved_at on the resolved notes unsets resolved_by on the resolved notes unmarks the resolved notes as resolved unsets resolved_at unsets resolved_by unmarks as resolved when some resolvable notes are resolved unsets resolved_at on the resolved note unsets resolved_by on the resolved note unmarks the resolved note as resolved #first_note_to_resolve returns the first note that still needs to be resolved #last_resolved_note returns the last note that was resolved Gitlab::SidekiqDaemon::MemoryKiller #start_working not invoke restart_sidekiq when rss in range invoke restart_sidekiq when rss not in range when structured logging is used logs start message once logs StandardError message twice WARNING: Using the `raise_error` matcher without providing a specific error or message risks false positives, since `raise_error` will match when Ruby raises a `NoMethodError`, `NameError` or `ArgumentError`, potentially allowing the expectation to pass without even executing the method you are intending to call. Actual error raised was #<Exception: My Exception>. Instead consider providing a specific error class or message. This message can be suppressed by setting: `RSpec::Expectations.configuration.on_potential_false_positives = :nothing`. Called from /builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb:65:in `block (4 levels) in <top (required)>'. logs exception message once and raise execption and log stop message logs stop message once #stop_working changed enable? to false #rss_within_range? return true when everything is within limit return false when rss exceeds hard_limit_rss return false when rss exceed hard_limit_rss after a while return true when rss below soft_limit_rss after a while within GRACE_BALLOON_SECONDS return false when rss exceed soft_limit_rss longer than GRACE_BALLOON_SECONDS #restart_sidekiq send signal #signal_and_wait send signal and return when all jobs finished send signal and wait till deadline if any job not finished #signal_pgroup send signal to this proces if it is not group leader send signal to whole process group as group leader #log_rss_out_of_range invoke sidekiq logger warn #out_of_range_description when rss > hard_limit tells reason when rss <= hard_limit tells reason #rss_increase_by_jobs adds up individual rss_increase_by_job return 0 if no job #rss_increase_by_job return 0 if memory_growth_kb return 0 return time factored growth value when it does not exceed max growth limit for whilited job return max growth limit when time factored growth value exceed max growth limit for whilited job #get_job_options return default if key is not defined return default if get StandardError when retrieve sidekiq_options return right value if sidekiq_options has the key Commit modules should includes the Mentionable module should includes the Participable module should includes the Referable module should includes the StaticModel module should includes the Presentable module .lazy when the commits are found batches requests for commits maintains ordering does not attempt to replace methods via BatchLoader when not found returns nil as commit #author looks up the author in a case-insensitive way caches the author using eager loading executes only two SQL queries preloads the authors for Commits matching a user's primary Email preloads the authors for Commits using a User's alternative Email preloads the authors for Commits using a User's private commit Email preloads the authors for Commits using a User's outdated private commit Email sets the author to Nil if an author could not be found for a Commit does not execute SQL queries once the authors are preloaded #to_reference returns a String reference to the object supports a cross-project reference .reference_valid? ref: "1234567", result: true should eq true ref: "123456", result: false should eq false ref: "1", result: false should eq false ref: "0000000000000000000000000000000000000000", result: true should eq true ref: "c1acaa58bbcbc3eafe538cb8274ba387047b69f8", result: true should eq true ref: "H1acaa58bbcbc3eafe538cb8274ba387047b69f8", result: false should eq false ref: nil, result: false should eq false #reference_link_text returns a String reference to the object supports a cross-project reference #title returns no_commit_message when safe_message is blank truncates a message without a newline at natural break to 80 characters truncates a message with a newline before 80 characters at the newline does not truncates a message with a newline after 80 but less 100 characters #full_title returns no_commit_message when safe_message is blank returns entire message if there is no newline returns first line of message if there is a newLine description returns no_commit_message when safe_message is blank returns description of commit message if title less than 100 characters returns full commit message if commit title more than 100 characters delegation should respond to #message should respond to #authored_date should respond to #committed_date should respond to #committer_email should respond to #author_email should respond to #parents should respond to #date should respond to #diffs should respond to #id #closes_issues detects issues that this commit is marked as closing behaves like a mentionable generates a descriptive back-reference extracts references from its reference property creates cross-reference notes when there are cached markdown fields sends in cached markdown fields when appropriate #hook_attrs should be a kind of Hash should include "adds bar folder and branch-test text file to check Repository merged_to_root_ref method" should eq "2016-09-27T14:37:46Z" should contain exactly "bar/branch-test.txt" should eq [] should eq [] #cherry_pick_message of a regular commit should include "\n\n(cherry picked from commit 88790590ed1337ab189bccaa355f068481c90bec)" of a merge commit that is found should include "\n(cherry picked from commit 91257535bb6d962d8855971c6614c1e8dc0101fc)\n\n467dc98f Add new 'videos' directory\n88790590 Upload new video file" that is existing but not found does not include details of the merged commits #reverts_commit? should be falsy commit has no description should be falsy another_commit's description does not revert commit should be falsy another_commit's description reverts commit should be truthy another_commit's description reverts merged merge request should be truthy #participants includes the commit author includes the committer includes the authors of the commit notes #uri_type with Gitaly enabled behaves like #uri_type returns the URI type at the given path returns nil if the path doesn't exists is nil if the path is nil or empty #uri_type with Rugged enabled calls out to the Rugged implementation behaves like #uri_type returns the URI type at the given path returns nil if the path doesn't exists is nil if the path is nil or empty .from_hash returns a Commit wraps a Gitlab::Git::Commit stores the correct commit fields #work_in_progress? detects the 'squash! ' prefix detects the 'fixup! ' prefix detects the 'wip: ' prefix detects the 'WIP: ' prefix detects the '[WIP] ' prefix detects WIP for a commit just saying 'wip' doesn't detect WIP for a commit that begins with 'FIXUP! ' doesn't detect WIP for words starting with WIP .valid_hash? checks hash contents checks hash length #merge_requests returns merge_requests that introduced that commit Gitlab::SearchResults does not list issues on private projects does not list merge requests on projects with limited access as a user with access includes merge requests from source and target projects #objects returns without_counts collection by default returns with counts collection when requested #formatted_count scope: "projects", count_method: :limited_projects_count, expected: "99+" returns the expected formatted count scope: "issues", count_method: :limited_issues_count, expected: "99+" returns the expected formatted count scope: "merge_requests", count_method: :limited_merge_requests_count, expected: "99+" returns the expected formatted count scope: "milestones", count_method: :limited_milestones_count, expected: "99+" returns the expected formatted count scope: "users", count_method: :limited_users_count, expected: "99+" returns the expected formatted count scope: "unknown", count_method: nil, expected: nil returns the expected formatted count #formatted_limited_count count: 23, expected: "23" returns the expected formatted limited count count: 99, expected: "99" returns the expected formatted limited count count: 100, expected: "99+" returns the expected formatted limited count count: 1234, expected: "99+" returns the expected formatted limited count when count_limit is lower than total amount #limited_projects_count returns the limited amount of projects #limited_merge_requests_count returns the limited amount of merge requests #limited_milestones_count returns the limited amount of milestones #limited_issues_count runs single SQL query to get the limited amount of issues when count_limit is higher than total amount #limited_issues_count runs multiple queries to get the limited amount of issues #merge_requests includes project filter by default skips project filter if default project context is used #issues includes project filter by default skips project filter if default project context is used #users does not call the UsersFinder when the current_user is not allowed to read users list calls the UsersFinder confidential issues does not list confidential issues for non project members does not list confidential issues for project members with guest role lists confidential issues for author lists confidential issues for assignee lists confidential issues for project members lists all issues for admin milestones returns correct set of milestones Namespace associations should have many projects should have many project_statistics should belong to parent required: should have many children should have one root_storage_statistics should have one aggregation_schedule validations should validate that :name cannot be empty/falsy should validate that the length of :name is at most 255 should validate that the length of :description is at most 255 should validate that :path cannot be empty/falsy should validate that the length of :path is at most 255 should validate that :owner cannot be empty/falsy does not allow too deep nesting reserved path validation nested group should not be valid rejects nested paths is case insensitive should not be valid top-level group should be valid delegate should delegate #owner_name to the #owner object passing arguments [{:allow_nil=>true}] as #name should delegate #avatar_url to the #owner object passing arguments [{:allow_nil=>true}] Respond to should respond to #human_name should respond to #to_param should respond to #has_parent? inclusions should includes the Gitlab::VisibilityLevel module #visibility_level_field should eq :visibility_level #to_param should eq "namespace331" #human_name should eq "John Doe827" #first_project_with_container_registry_tags returns the project returns no project .search returns namespaces with a matching name returns namespaces with a partially matching name returns namespaces with a matching name regardless of the casing returns namespaces with a matching path returns namespaces with a partially matching path returns namespaces with a matching path regardless of the casing .with_statistics sums all project storage counters in the namespace correctly handles namespaces without projects .find_by_pages_host finds namespace by GitLab Pages host and is case-insensitive #ancestors_upto returns all ancestors when no namespace is given includes ancestors upto but excluding the given ancestor #move_dir legacy storage raises error when directory exists moves dir if path changed behaves like namespace restrictions when any project has container images raises an error about not movable project when #write_projects_repository_config raises an error in test environment raises an exception in production environment does not cancel later callbacks with subgroups renaming child correctly moves the repository, uploads and pages renaming parent correctly moves the repository, uploads and pages moving from one parent to another correctly moves the repository, uploads and pages moving from having a parent to root correctly moves the repository, uploads and pages moving from root to having a parent correctly moves the repository, uploads and pages hashed storage repository directory remains unchanged if path changed behaves like namespace restrictions when any project has container images raises an error about not movable project for each project inside the namespace updates project full path in .git/config updates the project storage location #rm_dir callback legacy storage renames its dirs when deleted schedules the namespace for deletion in sub-groups renames its dirs when deleted schedules the namespace for deletion hashed storage has no repositories base directories to remove .find_by_path_or_name should eq #<Namespace id: 972, name: "John Doe882", path: "woW", owner_id: 875, created_at: "2019-10-15 08:45:0...nil, subgroup_creation_level: 1, emails_disabled: nil, max_pages_size: nil, max_artifacts_size: nil> should eq #<Namespace id: 974, name: "John Doe884", path: "woW", owner_id: 877, created_at: "2019-10-15 08:45:0...nil, subgroup_creation_level: 1, emails_disabled: nil, max_pages_size: nil, max_artifacts_size: nil> should eq nil .clean_path cleans the path and makes sure it's available #self_and_hierarchy returns the correct tree #ancestors returns the correct ancestors #self_and_ancestors returns the correct ancestors #descendants returns the correct descendants #self_and_descendants returns the correct descendants #users_with_descendants returns member users on every nest level without duplication #user_ids_for_project_authorizations returns the user IDs for which to refresh authorizations #all_projects should contain exactly #<Project id:345 group115/group116/project302> and #<Project id:344 group115/project301> should contain exactly #<Project id:347 group117/group118/project304> #all_pipelines should contain exactly #<Ci::Pipeline id: 3, ref: "master", sha: "97de212e80737a608d939f648d959671fb0a0142", before_sha: nil...nil, iid: 1, merge_request_id: nil, source_sha: nil, target_sha: nil, external_pull_request_id: nil> and #<Ci::Pipeline id: 4, ref: "master", sha: "97de212e80737a608d939f648d959671fb0a0142", before_sha: nil...nil, iid: 1, merge_request_id: nil, source_sha: nil, target_sha: nil, external_pull_request_id: nil> #share_with_group_lock with subgroups when creating a subgroup under a parent with "Share with group lock" enabled enables "Share with group lock" on the subgroup under a parent with "Share with group lock" disabled does not enable "Share with group lock" on the subgroup when enabling the parent group "Share with group lock" the subgroup "Share with group lock" becomes enabled when disabling the parent group "Share with group lock" (which was already enabled) and the subgroup "Share with group lock" is enabled the subgroup "Share with group lock" does not change but the subgroup "Share with group lock" is disabled the subgroup "Share with group lock" does not change when a group is transferred into a root group when the root group "Share with group lock" is enabled when the subgroup "Share with group lock" is enabled the subgroup "Share with group lock" does not change when the subgroup "Share with group lock" is disabled the subgroup "Share with group lock" becomes enabled when the root group "Share with group lock" is disabled when the subgroup "Share with group lock" is enabled the subgroup "Share with group lock" does not change when the subgroup "Share with group lock" is disabled the subgroup "Share with group lock" does not change #find_fork_of? knows if there is a direct fork in the namespace knows when there is as fork-of-fork in the namespace with request store enabled only queries once #root_ancestor returns the top most ancestor #full_path_before_last_save when the group has no parent returns the path before last save when a parent is assigned to a group with no previous parent returns the path before last save when a parent is removed from the group returns the parent full path when changing parents returns the previous parent full path #auto_devops_enabled with users when auto devops is explicitly enabled should eq true when auto devops is explicitly disabled should eq false #user? when type is a user should be truthy when type is a group should be falsy #aggregation_scheduled? with an aggregation scheduled association should be truthy without an aggregation scheduled association should be falsy #emails_disabled? when not a subgroup returns false returns true when a subgroup returns false when ancestor emails are disabled returns true #pages_virtual_domain when there are pages deployed for the project but pages metadata is not migrated migrates pages metadata and returns the virual domain and pages metadata is migrated returns the virual domain #has_parent? returns true when the group has a parent returns true when the group has an unsaved parent returns false when the group has no parent #closest_setting when setting is of non-boolean type root_setting: 100, child_setting: 200, result: 200 behaves like fetching closest setting returns closest non-nil value root_setting: 100, child_setting: nil, result: 100 behaves like fetching closest setting returns closest non-nil value root_setting: nil, child_setting: nil, result: nil behaves like fetching closest setting returns closest non-nil value when setting is of boolean type root_setting: true, child_setting: false, result: false behaves like fetching closest setting returns closest non-nil value root_setting: true, child_setting: nil, result: true behaves like fetching closest setting returns closest non-nil value root_setting: nil, child_setting: nil, result: nil behaves like fetching closest setting returns closest non-nil value NotesFinder #execute finds notes on merge requests finds notes on snippets excludes notes on commits the author can't download succeeds when no notes found when notes filter is present returns only user notes when using only_comments filter returns only system notes when using only_activity filters gets all notes on restricted projects publicly excludes notes on merge requests publicly excludes notes on issues publicly excludes notes on snippets for target type finds only notes for the selected type for target finds all notes finds notes on merge requests finds notes on snippets finds notes on personal snippets raises an exception for an invalid target_type filters out old notes confidential issue notes returns notes if user can see the issue raises an error if user can not see the issue raises an error for project members with guest role for explicit target returns the expected notes returns the expected notes when last_fetched_at is given fails when nil is provided .search returns notes with matching content returns notes with matching content regardless of the casing returns commit notes user can access confidential issues returns notes with matching content if user can see the issue does not return notes with matching content if user can not see the issue does not return notes with matching content for project members with guest role does not return notes with matching content for unauthenticated users inlines SQL filters on subqueries for performance project_id check search filter #target for a issue target returns the issue for a merge request target returns the merge_request for a snippet target returns the snippet for a commit target returns the commit target_iid finds issues by iid finds merge requests by iid returns nil if both target_id and target_iid are not given prioritizes target_id over target_iid EnvironmentStatus should delegate #id to the #environment object should delegate #name to the #environment object should delegate #deployed_at to the #deployment object should delegate #status to the #deployment object #project should eq #<Project id:414 namespace487/project367> #merge_request should eq #<MergeRequest id:173 namespace490/project370!1> #deployment should eq #<Deployment id: 7, iid: 1, project_id: 420, environment_id: 7, ref: "pages-deploy", tag: false, sha:...-15 08:45:29", on_stop: nil, status: "success", finished_at: "2019-10-15 08:45:29", cluster_id: nil> #changes contains only added and modified public pages .for_merge_request is based on merge_request.diff_head_sha .after_merge_request is based on merge_request.merge_commit_sha .build_environments_status when environment is created on a forked project returns environment status when environment is created on a target project returns environment status when the build stops an environment does not return environment status when user does not have a permission to see the environment does not return environment status when multiple deployments with the same SHA in different environments returns deployments related to the head pipeline when multiple deployments in the same pipeline for the same environments returns unique entries when environment is stopped does not return environment status PipelineEntity #as_json when pipeline is empty contains required fields excludes coverage data when disabled contains details contains flags when pipeline is retryable does not serialize stage builds user has ability to retry pipeline contains retry path user does not have ability to retry pipeline does not contain retry path when pipeline is cancelable does not serialize stage builds user has ability to cancel pipeline contains cancel path user does not have ability to cancel pipeline does not contain cancel path when pipeline ref is empty does not generate branch path when pipeline has a failure reason set has a correct failure reason when pipeline is detached merge request pipeline makes detached flag true does not expose source sha and target sha when user is a developer has merge request information when user is an external user has no merge request information when pipeline is merge request pipeline makes detached flag false makes atached flag true exposes source sha and target sha exposes merge request event type MigrateAutoDevOpsDomainToClusterDomain NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping with ProjectAutoDevOps with no domain == 20190204115450 MigrateAutoDevOpsDomainToClusterDomain: migrating =========== -- execute("UPDATE clusters\nSET domain = project_auto_devops.domain\nFROM cluster_projects, project_auto_devops\nWHERE\n cluster_projects.cluster_id = clusters.id\n AND project_auto_devops.project_id = cluster_projects.project_id\n AND project_auto_devops.domain != ''\n") -> 0.0011s == 20190204115450 MigrateAutoDevOpsDomainToClusterDomain: migrated (0.0012s) == does not update cluster project with ProjectAutoDevOps with domain == 20190204115450 MigrateAutoDevOpsDomainToClusterDomain: migrating =========== -- execute("UPDATE clusters\nSET domain = project_auto_devops.domain\nFROM cluster_projects, project_auto_devops\nWHERE\n cluster_projects.cluster_id = clusters.id\n AND project_auto_devops.project_id = cluster_projects.project_id\n AND project_auto_devops.domain != ''\n") -> 0.0012s == 20190204115450 MigrateAutoDevOpsDomainToClusterDomain: migrated (0.0013s) == updates all cluster projects when only some ProjectAutoDevOps have domain set == 20190204115450 MigrateAutoDevOpsDomainToClusterDomain: migrating =========== -- execute("UPDATE clusters\nSET domain = project_auto_devops.domain\nFROM cluster_projects, project_auto_devops\nWHERE\n cluster_projects.cluster_id = clusters.id\n AND project_auto_devops.project_id = cluster_projects.project_id\n AND project_auto_devops.domain != ''\n") -> 0.0011s == 20190204115450 MigrateAutoDevOpsDomainToClusterDomain: migrated (0.0012s) == only updates specific cluster projects NOTICE: table "design_management_designs" does not exist, skipping NOTICE: table "design_management_designs_versions" does not exist, skipping NOTICE: table "design_management_versions" does not exist, skipping NOTICE: table "geo_container_repository_updated_events" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping Issuable::Clone::ContentRewriter rewriting award emojis copies the award emojis rewriting description when description is a simple text does not rewrite the description when description contains a local reference rewrites the local reference correctly when description contains a cross reference rewrites the cross reference correctly when description contains a user reference works with a user reference when description contains uploads rewrites uploads in the description rewriting notes simple notes rewrites existing notes in valid order copies all the issue notes does not change the note attributes copies the award emojis copies system_note_metadata for system note notes with reference rewrites the references correctly notes with upload rewrites note content correctly discussion notes rewrites discussion correctly Ci::PipelinePresenter inherits from Gitlab::View::Presenter::Delegated #initialize takes a pipeline and optional params exposes pipeline forwards missing methods to pipeline #status_title when pipeline is auto-canceled shows that the pipeline is auto-canceled when pipeline is not auto-canceled does not have a status title #failure_reason when pipeline has failure reason represents a failure reason sentence when pipeline does not have failure reason returns nil #name when pipeline is detached merge request pipeline should eq "Detached merge request pipeline" when pipeline is merge request pipeline should eq "Merged result pipeline" when pipeline is merge train pipeline should eq "Merge train pipeline" when pipeline is branch pipeline should eq "Pipeline" #ref_text when pipeline is detached merge request pipeline returns a correct ref text when pipeline is merge request pipeline returns a correct ref text when pipeline is branch pipeline when ref exists in the repository returns a correct ref text when ref contains malicious script does not include the malicious script when ref exists in the repository returns a correct ref text when ref contains malicious script does not include the malicious script #all_related_merge_request_text with zero related merge requests (branch pipeline) should eq "No related merge requests found." with one related merge request should eq "1 related merge request: <a class=\"mr-iid\" href=\"/namespace588/project468/merge_requests/1\">!1 My title 410</a>" with two related merge requests should eq "2 related merge requests: <a class=\"mr-iid\" href=\"/namespace589/project469/merge_requests/2\">!2 ...412</a>, <a class=\"mr-iid\" href=\"/namespace589/project469/merge_requests/1\">!1 My title 411</a>" #all_related_merge_requests memoizes the returned relation #link_to_merge_request returns a correct link when pipeline is branch pipeline returns nothing #link_to_merge_request_source_branch returns a correct link when pipeline is branch pipeline returns nothing #link_to_merge_request_target_branch returns a correct link when pipeline is branch pipeline returns nothing Snippet modules should includes the Gitlab::VisibilityLevel module should includes the Participable module should includes the Referable module should includes the Sortable module should includes the Awardable module associations should belong to author class_name => User required: should belong to project required: should have many notes dependent => destroy should have many award_emoji dependent => destroy validation should validate that :author cannot be empty/falsy should validate that :title cannot be empty/falsy should validate that the length of :title is at most 255 should validate that the length of :file_name is at most 255 should validate that :content cannot be empty/falsy should validate that :visibility_level is either ‹0›, ‹10›, or ‹20› #to_reference when snippet belongs to a project returns a String reference to the object supports a cross-project reference when snippet does not belong to a project returns a String reference to the object still returns shortest reference when project arg present #file_name file_name is nil returns an empty string file_name is not nil returns the file_name #content_html_invalidated? invalidates the HTML cache of content when the filename changes .search returns snippets with a matching title returns snippets with a partially matching title returns snippets with a matching title regardless of the casing returns snippets with a matching file name returns snippets with a partially matching file name returns snippets with a matching file name regardless of the casing .search_code returns snippets with matching content returns snippets with partially matching content returns snippets with matching content regardless of the casing .with_optional_visibility when a visibility level is provided returns snippets with the given visibility when a visibility level is not provided returns all snippets .only_global_snippets returns snippets not associated with any projects .only_include_projects_visible_to when a user is provided returns snippets visible to the user when a user is not provided returns snippets visible to anonymous users only_include_projects_with_snippets_enabled includes snippets for projects with snippets enabled when the include_private option is enabled includes snippets for projects with snippets set to private when the include_private option is not enabled does not include snippets for projects that have snippets set to private .only_include_authorized_projects only includes snippets for projects the user is authorized to see .for_project_with_user when a user is provided returns an empty collection if the user can not view the snippets returns the snippets if the user is a member of the project returns public snippets for a public project the user is not a member of when a user is not provided returns an empty collection for a private project returns public snippets for a public project .visible_to_or_authored_by returns snippets visible to the user #participants includes the snippet author includes the note authors #check_for_spam when public and spammable attributes changed returns true when private returns false returns true when switching to public when spammable attributes have not changed returns false #blob returns a blob representing the snippet data #embeddable? project snippet only returns true when both project and snippet are public only returns true when both project and snippet are public only returns true when both project and snippet are public only returns true when both project and snippet are public only returns true when both project and snippet are public only returns true when both project and snippet are public only returns true when both project and snippet are public only returns true when both project and snippet are public only returns true when both project and snippet are public personal snippet only returns true when snippet is public only returns true when snippet is public only returns true when snippet is public Projects::Serverless::FunctionsFinder #installed when reactive_caching is still fetching data when reactive_caching has finished when knative is not installed returns false reactive_caching is finished and knative is installed returns true retrieve data from knative does not have knative installed should be empty has knative installed there are no functions there are functions has a function has metrics has prometheus is available has query data PrometheusMetric should belong to project required: should validate that :title cannot be empty/falsy should validate that :query cannot be empty/falsy should validate that :group cannot be empty/falsy behaves like having unique enum values has unique values in "group" common metrics common: false, with_project: true, result: true should eq true common: false, with_project: false, result: false should eq false common: true, with_project: true, result: false should eq false common: true, with_project: false, result: true should eq true #query_series legend: "Some other legend", type: NilClass should be a kind of NilClass legend: "Status Code", type: Array should be a kind of Array #group_title behaves like group_title returns text Response metrics (NGINX Ingress VTS) for group nginx_ingress_vts behaves like group_title returns text Response metrics (NGINX Ingress) for group nginx_ingress behaves like group_title returns text Response metrics (HA Proxy) for group ha_proxy behaves like group_title returns text Response metrics (AWS ELB) for group aws_elb behaves like group_title returns text Response metrics (NGINX) for group nginx behaves like group_title returns text System metrics (Kubernetes) for group kubernetes behaves like group_title returns text Business metrics (Custom) for group business behaves like group_title returns text Response metrics (Custom) for group response behaves like group_title returns text System metrics (Custom) for group system #priority group: :nginx_ingress_vts, priority: 10 should eq 10 group: :nginx_ingress, priority: 10 should eq 10 group: :ha_proxy, priority: 10 should eq 10 group: :aws_elb, priority: 10 should eq 10 group: :nginx, priority: 10 should eq 10 group: :kubernetes, priority: 5 should eq 5 group: :business, priority: 0 should eq 0 group: :response, priority: -5 should eq -5 group: :system, priority: -10 should eq -10 #required_metrics group: :nginx_ingress_vts, required_metrics: ["nginx_upstream_responses_total", "nginx_upstream_response_msecs_avg"] should eq ["nginx_upstream_responses_total", "nginx_upstream_response_msecs_avg"] group: :nginx_ingress, required_metrics: ["nginx_ingress_controller_requests", "nginx_ingress_controller_ingress_upstream_latency_seconds_sum"] should eq ["nginx_ingress_controller_requests", "nginx_ingress_controller_ingress_upstream_latency_seconds_sum"] group: :ha_proxy, required_metrics: ["haproxy_frontend_http_requests_total", "haproxy_frontend_http_responses_total"] should eq ["haproxy_frontend_http_requests_total", "haproxy_frontend_http_responses_total"] group: :aws_elb, required_metrics: ["aws_elb_request_count_sum", "aws_elb_latency_average", "aws_elb_httpcode_backend_5_xx_sum"] should eq ["aws_elb_request_count_sum", "aws_elb_latency_average", "aws_elb_httpcode_backend_5_xx_sum"] group: :nginx, required_metrics: ["nginx_server_requests", "nginx_server_requestMsec"] should eq ["nginx_server_requests", "nginx_server_requestMsec"] group: :kubernetes, required_metrics: ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"] should eq ["container_memory_usage_bytes", "container_cpu_usage_seconds_total"] group: :business, required_metrics: [] should eq [] group: :response, required_metrics: [] should eq [] group: :system, required_metrics: [] should eq [] #to_query_metric converts to queryable metric object queryable metric object has title queryable metric object has y_label queryable metric has no required_metric queryable metric has weight 0 queryable metrics has query description #to_metric_hash returns a hash suitable for inclusion on a metrics dashboard Gitlab::DataBuilder::Note When asking for a note on commit returns the note and commit-specific data contains project data contains deprecated repository data When asking for a note on commit diff returns the note and commit-specific data contains project data contains deprecated repository data When asking for a note on issue returns the note and issue-specific data contains project data contains deprecated repository data with confidential issue sets event_type to confidential_note When asking for a note on merge request returns the note and merge request data contains project data contains deprecated repository data When asking for a note on merge request diff returns the note and merge request diff data contains project data contains deprecated repository data When asking for a note on project snippet returns the note and project snippet data contains project data contains deprecated repository data Gitlab::DataBuilder::Push .build with changed files returns commit hook data without changed files returns commit hook data without include deltas .build_sample should be a kind of Hash should eq "1b12f15a11fc6e62177bef08f47bc7b5ce50b141" should eq "b83d6e391c22777fca1ed3012fce84f633d7fed0" should eq "refs/heads/master" should eq 3 should eq 3 should eq ["bar/branch-test.txt"] should eq [] should eq [] contains project data contains deprecated repository data .build should be a kind of Hash should eq "0000000000000000000000000000000000000000" should eq "5937ac0a7beb003549fc5fd26fc247adbce4a52e" should eq "8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b" should eq "refs/tags/v1.1.0" should eq nil should eq "John Doe1513" should eq "user1514" should eq "public-email@example.com" should eq "https://www.gravatar.com/avatar/ce363bd60431af7693b4133dce3b84c7?s=80&d=identicon" should eq 749 should be a kind of Hash should be empty should be zero contains project data contains deprecated repository data does not raise an error when given nil commits Clusters::Applications::UpgradeService #execute when there are no errors make the application updating schedule async installation status check when kubernetes cluster communication fails logs into kubernetes.log and Sentry make the application errored a non kubernetes error happens logs into kubernetes.log and Sentry make the application errored Ci::BuildPresenter inherits from Gitlab::View::Presenter::Delegated #initialize takes a build and optional params exposes build forwards missing methods to build #erased_by_user? takes a build and optional params #erased_by_name when build is not erased returns nil when build is erased returns the name of the eraser #status_title when build is auto-canceled shows that the build is auto-canceled when build failed returns the reason of failure when build has failed && retried does not include retried title when build has failed and is allowed to returns the reason of failure For any other build returns the status quack like a Ci::Build permission-wise user is not allowed returns false user is allowed returns true #trigger_variables when variable is stored in ci_pipeline_variables when pipeline is triggered by trigger API returns variables when pipeline is not triggered by trigger API does not return variables when variable is stored in ci_trigger_requests.variables returns variables #tooltip_message When build has failed returns the reason of failure When build has failed and retried includes the reason of failure and the retried title When build has failed and is allowed to includes the reason of failure For any other build (no retried) includes build name and status For any other build (retried) includes build name and status #execute_in when build is scheduled when schedule is not expired returns execution time when schedule is expired returns execution time when build is not delayed does not return execution time #callout_failure_message returns a verbose failure reason #recoverable? when is a script or missing dependency failure returns false when is any other failure type returns true Issuable::Clone::AttributesRewriter setting labels sets labels present in the new project and group labels does not set any labels when not used on the original issue copies the resource label events setting milestones sets milestone to nil when old issue milestone is not in the new project copies the milestone when old issue milestone title is in the new project copies the milestone when old issue milestone is a group milestone CycleAnalytics::GroupLevel #permissions returns true for all stages #stats 2019-10-15T08:47:28.059Z 91 TID-gohcudbg3 WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>65} returns medians for each stage for a specific group #summary 2019-10-15T08:47:30.736Z 91 TID-gohcudbg3 WARN: {:class=>"ArchiveTraceWorker", :message=>"The job does not have live trace but going to be archived.", :job_id=>67} returns medians for each stage for a specific group CommitCollection #each yields every commit .committers returns a relation of users when users are found returns empty array when committers cannot be found excludes authors of merge commits #without_merge_commits returns all commits except merge commits #with_latest_pipeline sets the latest pipeline for every commit so no additional queries are necessary enrichment methods #unenriched returns all commits that are not backed by gitaly data #fully_enriched? returns true when all commits are backed by gitaly data returns false when any commits are not backed by gitaly data returns true when the collection is empty #enrich! replaces commits in the collection with those backed by gitaly data maintains the original order of the commits fetches data if there are unenriched commits does not fetch data if all commits are enriched returns the original commit if the commit could not be lazy loaded #respond_to_missing? returns true when the underlying Array responds to the message returns false when the underlying Array does not respond to the message #method_missing delegates undefined methods to the underlying Array layouts/nav/sidebar/_project behaves like has nav sidebar has collapsed nav sidebar on mobile issue boards has board tab packages tab highlights sidebar item and flyout highlights container registry tab releases entry renders releases link wiki entry tab when wiki is enabled shows the wiki tab with the wiki internal link when wiki is disabled does not show the wiki tab external wiki entry tab when it is active shows the external wiki tab with the external wiki service link when it is disabled does not show the external wiki tab ci/cd settings tab when project is archived does not show the ci/cd settings tab when project is active shows the ci/cd settings tab operations settings tab when project is archived does not show the operations settings tab when project is active shows the operations settings tab InvalidGpgSignatureUpdateWorker when GpgKey is found calls NotificationService.new.run when GpgKey is not found does not raise errors does not call NotificationService.new.run ClusterAncestorsFinder#execute for a project returns the project clusters followed by group clusters nested groups returns the project clusters followed by group clusters ordered ascending the hierarchy user cannot read clusters for clusterable returns nothing for a group returns the list of group clusters nested groups returns the list of group clusters ordered ascending the hierarchy for an instance returns the list of instance clusters AwardEmojis::DestroyService #execute when user is not authorized behaves like a service that does not authorize the user does not remove the emoji returns an error state returns a nil award returns the error when the user is authorized when user has not awarded an emoji to the awardable behaves like a service that does not authorize the user does not remove the emoji returns an error state returns a nil award returns the error when user has awarded an emoji to the awardable removes the emoji returns a success status returns no errors returns the destroyed award GitlabIssueTrackerService Associations should belong to project required: should have one service_hook Validations when service is active should validate that :issues_url cannot be empty/falsy behaves like issue tracker service URL attribute should allow :issues_url to be ‹"https://example.com"› should not allow :issues_url to be ‹"example.com"› should not allow :issues_url to be ‹"ftp://example.com"› should not allow :issues_url to be ‹"herp-and-derp"› when service is inactive should not validate that :issues_url cannot be empty/falsy project and issue urls with absolute urls gives the correct path with relative urls gives the correct path overriding properties when data are stored in properties behaves like issue tracker fields when data are stored in the properties #update removes title and description from properties stores title & description in services table reading fields returns correct values when data are stored in separated fields behaves like issue tracker fields when data are stored in the properties #update removes title and description from properties stores title & description in services table reading fields returns correct values when data are stored in both properties and separated fields behaves like issue tracker fields when data are stored in the properties #update removes title and description from properties stores title & description in services table reading fields returns correct values when no title & description are set returns default values NamespacelessProjectDestroyWorker #perform project has namespace does not do anything project has no namespace project not a fork of another project truncates the project's team deletes the project does not call unlink_fork does not do anything in Project#remove_pages method project forked from another closes open merge requests destroys fork network members project has non-existing namespace deletes the project Gitlab::Diff::Highlight #highlight with a diff file returns Gitlab::Diff::Line elements does not modify "match" lines highlights and marks unchanged lines highlights and marks removed lines highlights and marks added lines when no diff_refs when no inline diffs behaves like without inline diffs returns html escaped diff text with diff lines returns Gitlab::Diff::Line elements does not modify "match" lines marks unchanged lines marks removed lines marks added lines when the inline diff marker has an invalid range keeps the original rich line reports to Sentry if configured when no inline diffs behaves like without inline diffs returns html escaped diff text Discussions::ResolveService #execute doesn't resolve discussions the user can't resolve resolves the discussion executes the notification service adds a system note to the discussion can resolve multiple discussions at once SearchHelper search_autocomplete_opts with no current user returns nil with a standard user includes Help sections includes default sections does not include admin sections does not allow regular expression in search term includes the user's groups includes nested group includes the user's projects includes the required project attrs includes the required group attrs does not include the public group with a current project includes project-specific sections with an admin user includes admin sections search_entries_info raises an error for unrecognized scopes scope: "blobs", label: "code result" uses the correct singular label uses the correct plural label scope: "commits", label: "commit" uses the correct singular label uses the correct plural label scope: "issues", label: "issue" uses the correct singular label uses the correct plural label scope: "merge_requests", label: "merge request" uses the correct singular label uses the correct plural label scope: "milestones", label: "milestone" uses the correct singular label uses the correct plural label scope: "notes", label: "comment" uses the correct singular label uses the correct plural label scope: "projects", label: "project" uses the correct singular label uses the correct plural label scope: "snippet_blobs", label: "snippet result" uses the correct singular label uses the correct plural label scope: "snippet_titles", label: "snippet" uses the correct singular label uses the correct plural label scope: "users", label: "user" uses the correct singular label uses the correct plural label scope: "wiki_blobs", label: "wiki result" uses the correct singular label uses the correct plural label search_entries_empty_message returns the formatted entry message search_filter_input_options project includes id with type includes project-id includes project endpoints includes autocomplete=off flag group does not includes project-id includes group endpoints dashboard does not include group-id and project-id includes dashboard endpoints search_history_storage_prefix project returns project full_path group returns group full_path dashboard returns dashboard search_filter_link renders a search filter link for the current scope renders a search filter link for another scope merges in the current search params and given params assigns given data attributes on the list container Gitlab::MarkdownCache::ActiveRecord::Extension an unchanged markdown field should eq "`Foo`" should eq "<p data-sourcepos=\"1:1-1:5\" dir=\"auto\"><code>Foo</code></p>" should not be truthy should eq 1179648 a changed markdown field should eq "<p data-sourcepos=\"1:1-1:5\" dir=\"auto\"><code>Bar</code></p>" should eq 1179648 when a markdown field is set repeatedly to an empty string should receive refresh_markdown_cache(*(any args)) 1 time when a markdown field is set repeatedly to a string which renders as empty html should receive refresh_markdown_cache(*(any args)) 1 time a non-markdown field changed should eq "closed" should eq "`Foo`" should eq "<p data-sourcepos=\"1:1-1:5\" dir=\"auto\"><code>Foo</code></p>" should eq 1179648 version is out of date should eq "<p data-sourcepos=\"1:1-1:5\" dir=\"auto\"><code>Bar</code></p>" should eq 1179648 when an invalidating field is changed invalidates the cache when project changes invalidates the cache when author changes .attributes excludes cache attributes that is blacklisted by default #cached_html_up_to_date? returns false if markdown has been changed but html has not returns true if markdown has not been changed but html has returns true if markdown and html have both been changed returns false if the markdown field is set but the html is not #refresh_markdown_cache! skips saving if not persisted saves the changes Banzai::ReferenceParser::CommitRangeParser #nodes_visible_to_user when the link has a data-issue attribute behaves like referenced feature visibility when feature is disabled does not create reference when feature is enabled only for team members does not create reference for non member creates reference for member when feature is enabled creates reference #referenced_by when the link has a data-project attribute when the link as a data-commit-range attribute returns an Array of commit ranges returns an empty Array when the commit range could not be found when the link does not have a data-commit-range attribute returns an empty Array when the link does not have a data-project attribute returns an empty Array #commit_range_ids_per_project returns a Hash containing range IDs per project does not add a project when the data-commit-range attribute is empty #find_ranges returns an Array of range objects skips ranges that could not be found #find_object when the range has valid commits returns the commit range when the range does not have any valid commits returns nil group context returns nil Projects::OpenIssuesCountService behaves like a counter caching service #count caches the count #refresh_cache refreshes the cache #delete_cache removes the cache #uncached_count does not cache the count #count when user is nil does not include confidential issues in the issue count when user is provided when user can read confidential issues returns the right count with confidential issues uses total_open_issues_count cache key when user cannot read confidential issues does not include confidential issues uses public_open_issues_count cache key #refresh_cache when cache is empty refreshes cache keys correctly when cache is outdated refreshes cache keys correctly WikiPages::UpdateService #execute updates the wiki page executes webhooks counts edit events when the options are bad does not count an edit event reports the error Gitlab::CycleAnalytics::BaseEventFetcher limits the rows to the max number Issues::ImportCsvService #execute invalid file returns invalid file error comma delimited file imports CSV without errors tab delimited file with error row imports CSV with some error rows semicolon delimited file with CRLF imports CSV with a blank row IssuePresenter #web_url returns correct path #subscribed? returns not subscribed returns subscribed #issue_path returns correct path Projects::HashedStorage::MigrateRepositoryService #execute works even when project validation fails repository lock tries to lock the repository fails when a git operation is in progress when repository doesnt exist on disk skips the disk change but increase the version when succeeds renames project and wiki repositories updates project to be hashed and not read-only move operation is called for both repositories writes project full path to .git/config when one move fails rollsback repositories to original name when rollback fails does not try to move nil repository over existing Ci::ArchiveTracesCronWorker when a job succeeded executes service behaves like archives trace should be exist when the job finished recently behaves like does not archive trace should be nil when a trace had already been archived continues to archive live traces when an unexpected exception happened during archiving puts a log when a job was cancelled behaves like archives trace should be exist when a job is running behaves like does not archive trace should be nil Gitlab::Graphql::Authorization Field authorizations with a single permission returns the protected field when user has permission returns nil when user is not authorized with a collection of permissions returns the protected field when user has all permissions returns nil when user only has one of the permissions returns nil when user only has none of the permissions Field authorizations when field is a built in type with a single permission returns the protected field when user has permission returns nil when user is not authorized with a collection of permissions returns the protected field when user has all permissions returns nil when user only has one of the permissions returns nil when user only has none of the permissions Type authorizations with a single permission returns the protected field when user has permission returns nil when user is not authorized with a collection of permissions returns the protected field when user has all permissions returns nil when user only has one of the permissions returns nil when user only has none of the permissions type and field authorizations together returns the protected field when user has all permissions returns nil when user only has one of the permissions returns nil when user only has none of the permissions type authorizations when applied to a relay connection returns only the elements visible to the user returns nil when user is not authorized limiting connections with multiple objects only checks permissions for the first object type authorizations when applied to a basic connection returns the protected field when user has permission returns nil when user is not authorized Authorizations on active record relations renders the issues the user has access to does not check access on fields that will not be rendered ProjectImportState associations should belong to project required: validations should validate that :project cannot be empty/falsy Project import job imports a project #human_status_name when import_state exists returns the humanized status name import state transitions state transition: [:started] => [:finished] resets last_error performs housekeeping when an import of a fresh project is completed does not perform housekeeping when project repository does not exist does not perform housekeeping when project does not have a valid import type #remove_jid without an JID does nothing with an JID unsets the JID Lfs::LocksFinderService #execute find by id with results returns the record without results returns an empty list find by path with results returns the record without results returns an empty list find all with results returns all the records without results returns an empty list when an error is raised doesn't succeed GitlabRoutingHelper Project URL helpers #project_member_path should eq "/namespace967/project846/-/project_members/1175" #request_access_project_members_path should eq "/namespace968/project847/-/project_members/request_access" #leave_project_members_path should eq "/namespace969/project848/-/project_members/leave" #approve_access_request_project_member_path should eq "/namespace970/project849/-/project_members/1177/approve_access_request" #resend_invite_project_member_path should eq "/namespace971/project850/-/project_members/1179/resend_invite" Group URL helpers #group_members_url should eq "http://test.host/groups/group209/-/group_members" #group_member_path should eq "/groups/group210/-/group_members/1180" #request_access_group_members_path should eq "/groups/group211/-/group_members/request_access" #leave_group_members_path should eq "/groups/group212/-/group_members/leave" #approve_access_request_group_member_path should eq "/groups/group213/-/group_members/1181/approve_access_request" #resend_invite_group_member_path should eq "/groups/group214/-/group_members/1182/resend_invite" #preview_markdown_path returns group preview markdown path for a group parent returns project preview markdown path for a project parent returns snippet preview markdown path for a personal snippet returns project preview markdown path for a project snippet #edit_milestone_path returns group milestone edit path when given entity parent is a Group returns project milestone edit path when given entity parent is not a Group Gitlab::Kubernetes::Helm::InitCommand behaves like helm commands #generate_script returns appropriate command on a rbac-enabled cluster behaves like helm commands #generate_script returns appropriate command #rbac? rbac is enabled should be truthy rbac is not enabled should be falsey #config_map_resource returns a KubeClient resource with config map content for the application #pod_resource rbac is enabled generates a pod that uses the tiller serviceAccountName rbac is not enabled generates a pod that uses the default serviceAccountName #service_account_resource rbac is enabled generates a Kubeclient resource for the tiller ServiceAccount rbac is not enabled generates nothing #cluster_role_binding_resource rbac is enabled generates a Kubeclient resource for the ClusterRoleBinding for tiller rbac is not enabled generates nothing Gitlab::ExclusiveLease #try_obtain cannot obtain twice before the lease has expired can obtain after the lease has expired #renew returns true when we have the existing lease returns false when we dont have a lease #exists? returns true for an existing lease returns false for a lease that does not exist .get_uuid gets the uuid if lease with the key associated exists returns false if the lease does not exist .cancel can cancel a lease #ttl returns the TTL of the Redis key returns nil when the lease does not exist .reset_all! removes all existing lease keys from redis Members::CreateService adds user to members adds no user to members limits the number of users to 100 does not add an invalid member does not add a member with an existing invite Gitlab::Sanitizers::Exif #batch_clean filters only jpg/tiff images with image uploads processes all uploads if range ID is not set processes only uploads in the selected range processes only uploads for the selected uploader processes only uploads created since specified date pauses if sleep_time is set #clean no dry run removes exif from the image ignores image without exif raises an error if the exiftool fails with an error dry run doesn't change the image #extra_tags returns a list of keys for exif file returns an empty list for file with only whitelisted and ignored tags ProjectFeaturesCompatibility converts fields from 'true' to ProjectFeature::ENABLED converts fields from 'false' to ProjectFeature::DISABLED converts fields from true to ProjectFeature::ENABLED converts fields from false to ProjectFeature::DISABLED accepts private as ProjectFeature::PRIVATE LabelNote when resource is issue behaves like label note created from events .from_events returns system note with expected attributes updates markdown cache if reference is not set yet updates markdown cache if label was deleted returns html note returns text note for added labels returns text note for removed labels returns text note for added and removed labels returns text note for cross-project label returns text note for cross-group label when resource is merge request behaves like label note created from events .from_events returns system note with expected attributes updates markdown cache if reference is not set yet updates markdown cache if label was deleted returns html note returns text note for added labels returns text note for removed labels returns text note for added and removed labels returns text note for cross-project label returns text note for cross-group label Gitlab::Kubernetes::DefaultNamespace #from_environment_name generates a slug and passes it to #from_environment_slug #from_environment_slug namespace per environment is enabled platform namespace is specified should eq "platform-namespace-environment22" cluster is unmanaged should eq "platform-namespace" platform namespace is blank constructs a namespace from the project and environment namespace per environment is disabled platform namespace is specified should eq "platform-namespace" platform namespace is blank constructs a namespace from the project and environment AwardEmojiHelper .toggle_award_url note on personal snippet returns correct url note on project item returns correct url personal snippet returns correct url merge request returns correct url issue returns correct url RepositoryImportWorker modules includes ProjectImportOptions #perform when worker was reset without cleanup imports the project successfully when the import was successful imports a project when the import has failed hide the credentials that were used in the import URL updates the error on Import/Export when using an asynchronous importer does not mark the import process as finished projects/diffs/_stats.html.haml when the commit contains several changes uses plural for additions uses plural for deletions when the commit contains no addition and no deletions uses plural for additions uses plural for deletions when the commit contains exactly one addition and one deletion uses singular for additions uses singular for deletions create_tokens setting secret keys when none of the secrets exist generates different hashes for secret_key_base, otp_key_base, and db_key_base generates an RSA key for openid_connect_signing_key warns about the secrets to add to secrets.yml writes the secrets to secrets.yml does not write a .secret file when the other secrets all exist when secret_key_base exists in the environment and secrets.yml does not issue a warning uses the environment variable does not update secrets.yml when secret_key_base and otp_key_base exist does not write any files sets the keys to the values from the environment and secrets.yml deletes the .secret file when secret_key_base and otp_key_base do not exist uses the file secret keeps the other secrets as they were warns about the missing secrets deletes the .secret file when db_key_base is blank but exists in secrets.yml warns about updating db_key_base warns about the blank value existing in secrets.yml and exits does not update secrets.yml IssueTrackerService Validations only one issue tracker per project when service is changed manually by user executes the validation when service is changed internally does not execute the validation UserAgentDetail .submittable? is submittable when not already submitted is not submittable when already submitted .valid? is valid with a subject is invalid without a subject Boards::ListService #execute when board parent is a project behaves like boards list service returns parent boards when parent does not have a board creates a new parent board delegates the parent board creation to Boards::CreateService when parent has a board does not create a new board when board parent is a group behaves like boards list service returns parent boards when parent does not have a board creates a new parent board delegates the parent board creation to Boards::CreateService when parent has a board does not create a new board WikiPages::DestroyService #execute executes webhooks increments the delete count does not increment the delete count if the deletion failed Gitlab::VisibilityLevelChecker #level_restricted? when visibility level is allowed returns false with nil for visibility level when visibility level is restricted returns true and visibility name overridden visibility when restricted returns true and visibility name when misspelled returns false with nil for visibility level when import_data is missing returns false with nil for visibility level MergeRequests::MigrateExternalDiffsService .enqueue! enqueues nothing if external diffs are disabled enqueues eligible in-database diffs if external diffs are enabled #execute migrates an in-database diff to the external store WebHookLog should belong to web_hook required: should serialize :request_headers class_name => Hash should serialize :request_data class_name => Hash should serialize :response_headers class_name => Hash should validate that :web_hook cannot be empty/falsy .recent does not return web hook logs that are too old returns the web hook logs in descending order #success? 2xx should be truthy not 2xx should be falsey internal erorr should be falsey Gitlab::BackgroundMigration::AddMergeRequestDiffCommitsCount NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_f1016db1483e" for relation "users" does not exist, skipping #perform migrates diffs that have no commits skips diffs that have commits_count already set migrates multiple diffs to the correct values NOTICE: trigger "trigger_7dc952250ffd" for relation "users" does not exist, skipping NOTICE: table "design_management_designs" does not exist, skipping NOTICE: table "design_management_designs_versions" does not exist, skipping NOTICE: table "design_management_versions" does not exist, skipping NOTICE: table "geo_container_repository_updated_events" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping Gitlab::GithubImport::StageMethods #perform returns if no project could be found imports the data when the project exists #try_import imports the project reschedules the worker if RateLimitError was raised #find_project returns a Project for an existing ID returns nil for a project that failed importing returns nil for a non-existing project ID PaginatedDiffEntity exposes diff_files exposes pagination data MigrateManagedClustersWithNoTokenToUnmanaged NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping == 20190613231640 MigrateManagedClustersWithNoTokenToUnmanaged: migrating ===== == 20190613231640 MigrateManagedClustersWithNoTokenToUnmanaged: migrated (0.0343s) marks the cluster as unmanaged cluster is not project type == 20190613231640 MigrateManagedClustersWithNoTokenToUnmanaged: migrating ===== == 20190613231640 MigrateManagedClustersWithNoTokenToUnmanaged: migrated (0.0034s) does not update the cluster kubernetes namespace has a service account token == 20190613231640 MigrateManagedClustersWithNoTokenToUnmanaged: migrating ===== == 20190613231640 MigrateManagedClustersWithNoTokenToUnmanaged: migrated (0.0033s) does not update the cluster cluster was created after the cutoff == 20190613231640 MigrateManagedClustersWithNoTokenToUnmanaged: migrating ===== == 20190613231640 MigrateManagedClustersWithNoTokenToUnmanaged: migrated (0.0034s) does not update the cluster NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping Gitlab::Ci::Status::Build::Preparing #illustration should include :image, :size, :title, and :content .matches? when build is preparing is a correct match when build is not preparing does not match NamespaceFileUploader behaves like builds correct paths #store_dir behaves like matches the method pattern should match /uploads\/-\/system\/namespace\/\d+/ #cache_dir behaves like matches the method pattern example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.) #work_dir behaves like matches the method pattern example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.) #upload_path behaves like matches the method pattern should match /\h+\/\S+/ #relative_path is relative (PENDING: Path not set, skipping.) .absolute_path behaves like matches the method pattern should match /\/builds\/gitlab-org\/gitlab\/tmp\/tests\/public\/uploads\/-\/system\/namespace\/\d+\/(?-mix:\h+\/\S+)/ .base_dir behaves like matches the method pattern example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.) object_store is REMOTE behaves like builds correct paths #store_dir behaves like matches the method pattern should match /namespace\/\d+\/\h+/ #cache_dir behaves like matches the method pattern example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.) #work_dir behaves like matches the method pattern example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.) #upload_path behaves like matches the method pattern should match /\h+\/\S+/ #relative_path is relative (PENDING: Path not set, skipping.) .absolute_path behaves like matches the method pattern example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.) .base_dir behaves like matches the method pattern example at ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 (PENDING: No pattern provided, skipping.) .base_dir returns local storage base_dir without store param returns local storage base_dir when store param is Store::LOCAL returns remote base_dir when store param is Store::REMOTE #workhorse_local_upload_path returns the correct path in uploads directory #migrate! behaves like migrates returns corresponding file type does nothing when migrating to the current store migrate to the specified store removes the original file after the migration can access to the original file during migration when migrate! is not occupied by another process executes migrate! executes use_file when migrate! is occupied by another process does not execute migrate! does not execute use_file migration is unsuccessful when the store is not supported does not update the object_store does not delete the original file upon a fog failure does not update the object_store does not delete the original file upon a database failure does not update the object_store does not delete the original file behaves like migrates returns corresponding file type does nothing when migrating to the current store migrate to the specified store removes the original file after the migration can access to the original file during migration when migrate! is not occupied by another process executes migrate! executes use_file when migrate! is occupied by another process does not execute migrate! does not execute use_file migration is unsuccessful when the store is not supported does not update the object_store does not delete the original file upon a fog failure does not update the object_store does not delete the original file upon a database failure does not update the object_store does not delete the original file copy_to files are stored locally generates a new secret creates new upload correctly copies the file copies the file to the correct location files are stored remotely generates a new secret creates new upload correctly copies the file copies the file to the correct location Gitlab::Ci::Build::Prerequisite::Factory .for_build prerequisite is unmet should eq [#<InstanceDouble(Gitlab::Ci::Build::Prerequisite::KubernetesNamespace) (anonymous)>] prerequisite is met should be empty ProjectImportOptions sets default retry limit sets default status expiration .sidekiq_retries_exhausted 2019-10-15T08:49:54.855Z 91 TID-gohcudbg3 WARN: Failed with [1074, nil, nil]: marks fork as failed 2019-10-15T08:49:55.047Z 91 TID-gohcudbg3 WARN: Failed with [1075, nil, nil]: logs the appropriate error message for forked projects 2019-10-15T08:49:55.226Z 91 TID-gohcudbg3 WARN: Failed with [1076, nil, nil]: logs the appropriate error message for forked projects when project does not have import_state raises an error Gitlab::LegacyGithubImport::WikiFormatter #disk_path appends .wiki to disk path #full_path appends .wiki to project path #import_url returns URL of the wiki repository Gitlab::Metrics::Instrumentation .series returns a String .configure yields self .instrument_method with metrics enabled instruments the Class defines a proxy method calls the instrumented method with the correct arguments tracks the call duration upon calling the method does not track method calls below a given duration threshold generates a method with the correct arity when using methods without arguments when a module is instrumented multiple times calls the instrumented method with the correct arguments with metrics disabled does not instrument the method .instrument_instance_method with metrics enabled instruments instances of the Class defines a proxy method calls the instrumented method with the correct arguments tracks the call duration upon calling the method does not track method calls below a given duration threshold with metrics disabled does not instrument the method .instrument_class_hierarchy recursively instruments a class hierarchy does not instrument the root module .instrument_methods instruments all public class methods instruments all protected class methods instruments all private instance methods only instruments methods directly defined in the module can take a block to determine if a method should be instrumented .instrument_instance_methods instruments all public instance methods instruments all protected instance methods instruments all private instance methods only instruments methods directly defined in the module can take a block to determine if a method should be instrumented Gitlab::Graphql::Loaders::PipelineForShaLoader #find_last batch-resolves latest pipeline Prometheus::AdapterService #prometheus_adapter prometheus service can execute queries return prometheus service as prometheus adapter prometheus service can't execute queries with cluster with prometheus not available returns nil with cluster with prometheus available returns application handling all environments with cluster without prometheus installed returns nil BlobViewer::Base .can_render? when the extension is supported when the binaryness matches returns true when the binaryness does not match returns false when the file type is supported when the binaryness matches returns true when the binaryness does not match returns false when the extension and file type are not supported returns false #collapsed? when the blob size is larger than the collapse limit returns true when the blob size is smaller than the collapse limit returns false #too_large? when the blob size is larger than the size limit returns true when the blob size is smaller than the size limit returns false #render_error when the blob is expanded when the blob size is larger than the size limit returns :too_large when the blob size is smaller than the size limit returns nil when not expanded when the blob size is larger than the collapse limit returns :collapsed when the blob size is smaller than the collapse limit returns nil projects/pipeline_schedules/_pipeline_schedule taking ownership of schedule when non-owner is signed in non-owner can take ownership of pipeline when owner is signed in owner cannot take ownership of pipeline Gitlab::CycleAnalytics::ProductionEventFetcher behaves like default query config has the stage attribute has the projection attributes Gitlab::Ci::Status::Build::Erased #illustration should include :image, :size, and :title .matches? when build is erased is a correct match when build is not erased does not match Gitlab::Checks::ProjectCreated .fetch_message with a project created message queue returns project created message deletes the project created message from redis with no project created message queue returns nil #add_message queues a project created message handles anonymous push SetIssueIdForAllVersions NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping == 20190715043954 SetIssueIdForAllVersions: migrating ========================= -- execute("UPDATE design_management_versions as versions SET issue_id = (\n SELECT design_management_designs.issue_id\n FROM design_management_designs\n INNER JOIN design_management_designs_versions ON design_management_designs.id = design_management_designs_versions.design_id\n WHERE design_management_designs_versions.version_id = versions.id\n LIMIT 1\n )") -> 0.0014s == 20190715043954 SetIssueIdForAllVersions: migrated (0.0018s) ================ correctly sets issue_id NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping EnqueueResetMergeStatus NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping == 20190528180441 EnqueueResetMergeStatus: migrating ========================== -- Scheduling `ResetMergeStatus` jobs == 20190528180441 EnqueueResetMergeStatus: migrated (0.0529s) ================= correctly schedules background migrations NOTICE: table "geo_container_repository_updated_events" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping MailScheduler::IssueDueWorker #perform sends emails for open issues due tomorrow in the project specified HashedStorage::MigratorWorker #perform delegates to MigratorService 2019-10-15T08:50:18.502Z 91 TID-gohcudbg3 INFO: Skipped attachments move from '/builds/gitlab-org/gitlab/tmp/tests/public/uploads/namespace1097/project976' to '/builds/gitlab-org/gitlab/tmp/tests/public/uploads/@hashed/33/0e/330e14d4ae80612334d94c488d29eb469626b476864abdeb5c1bd261db461c50', source path doesn't exist or is not a directory (PROJECT_ID=1099) 2019-10-15T08:50:18.577Z 91 TID-gohcudbg3 INFO: Skipped attachments move from '/builds/gitlab-org/gitlab/tmp/tests/public/uploads/namespace1098/project977' to '/builds/gitlab-org/gitlab/tmp/tests/public/uploads/@hashed/ab/98/ab9828ca390581b72629069049793ba3c99bb8e5e9e7b97a55c71957e04df9a3', source path doesn't exist or is not a directory (PROJECT_ID=1100) migrates projects in the specified range Projects::ContainerRepository::CleanupTagsService #execute when no params are specified does not remove anything when regex matching everything is specified does remove B* and C when regex matching specific tags is used does remove C and D when removing a tagged image that is used by another tag does not remove the tag when removing keeping only 3 does remove C as it is oldest when removing older than 1 day does remove B* and C as they are older than 1 day when combining all parameters does remove B* and C RemoveEmptyExternUidAuth0Identities NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_f1016db1483e" for relation "users" does not exist, skipping == 20180220150310 RemoveEmptyExternUidAuth0Identities: migrating ============== == 20180220150310 RemoveEmptyExternUidAuth0Identities: migrated (0.0092s) ===== leaves the correct auth0 identity == 20180220150310 RemoveEmptyExternUidAuth0Identities: migrating ============== == 20180220150310 RemoveEmptyExternUidAuth0Identities: migrated (0.0103s) ===== leaves the correct github identity NOTICE: trigger "trigger_7dc952250ffd" for relation "users" does not exist, skipping NOTICE: table "design_management_designs" does not exist, skipping NOTICE: table "design_management_designs_versions" does not exist, skipping NOTICE: table "design_management_versions" does not exist, skipping NOTICE: table "geo_container_repository_updated_events" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping ImportIssuesCsvWorker #perform calls #execute on Issues::ImportCsvService and destroys upload PivotaltrackerService Associations should belong to project required: should have one service_hook Validations when service is active should validate that :token cannot be empty/falsy when service is inactive should not validate that :token cannot be empty/falsy Execute posts correct message when allowed branches is specified posts message if branch is in the list does not post message if branch is not in the list BoardsHelper #build_issue_link_base project board returns correct path for project board group board returns correct path for base group returns correct path for subgroup #board_data returns a board_lists_path as lists_endpoint #current_board_json can serialise with a basic set of attributes Gitlab::PhabricatorImport::ProjectCreator #execute creates a project correctly and schedule an import when import params are missing returns nil when import params are invalid returns an unpersisted project AssureCommitsCountForMergeRequestDiff NOTICE: trigger "trigger_36edafd19664" for relation "epics" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping when there are still unmigrated commit_counts afterwards == 20180425131009 AssureCommitsCountForMergeRequestDiff: migrating ============ DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "MIN(id)", "MAX(id)". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from block in up at /builds/gitlab-org/gitlab/db/migrate/20180425131009_assure_commits_count_for_merge_request_diff.rb:18) == 20180425131009 AssureCommitsCountForMergeRequestDiff: migrated (0.0145s) === migrates commit_counts sequentially in batches NOTICE: table "design_management_designs" does not exist, skipping NOTICE: table "design_management_designs_versions" does not exist, skipping NOTICE: table "design_management_versions" does not exist, skipping NOTICE: table "geo_container_repository_updated_events" does not exist, skipping NOTICE: trigger "trigger_806273a4d8be" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_dd1443fbd36e" for relation "application_settings" does not exist, skipping NOTICE: trigger "trigger_84853438aac0" for relation "epics" does not exist, skipping Projects::ContainerRepository::DeleteTagsService #execute without permissions should include {:status => :error} with permissions when no params are specified does not remove anything with empty tags does not remove anything with dummy tags disabled deletes tags one by one with dummy tags enabled deletes the tags using a dummy image Gitlab::Graphql::Representation::TreeEntry .decorate returns NilClass when given nil returns array of TreeEntry ProtectedBranches::DestroyService #execute destroys a protected branch when a policy restricts rule deletion prevents deletion of the protected branch rule Gitlab::Import::DatabaseHelpers .insert_and_return_id returns the ID returned by the query Gitlab::Ci::Pipeline::Chain::Skip when pipeline has been skipped by a user breaks the chain skips the pipeline when pipeline has not been skipped does not break the chain does not skip a pipeline chain when [ci skip] should be ignored does not break the chain when pipeline should be skipped but not persisted breaks the chain does not skip pipeline PublicUrlValidator #validate with no options allows http,https schemes by default checks that the url structure is valid with schemes allows urls with the defined schemes add error if the url scheme does not match the selected ones by default blocks urls pointing to localhost blocks urls pointing to the local network when local requests are allowed does not block urls pointing to localhost does not block urls pointing to the local network RuboCop::Cop::Graphql::AuthorizeTypes when NOT in a type folder does not add an offense even though there is no authorize call when in a type folder adds an offense when there is no authorize call does not add an offense for classes that have an authorize call does not add an offense for classes that only have an authorize call does not add an offense for base types Gitlab::Ci::Status::Pipeline::Blocked #text overrides status text #label overrides status label .matches? when pipeline is blocked is a correct match when pipeline is not blocked does not match Gitlab::Graphql::Representation::SubmoduleTreeEntry .decorate returns array of SubmoduleTreeEntry Gitlab::SidekiqMiddleware::MemoryKiller when MAX_RSS is set to 0 does nothing when MAX_RSS is exceeded sends the TSTP, TERM and KILL signals at expected times 2019-10-15T08:51:13.650Z 91 TID-gohhnwj3f WARN: {:class=>"ProjectCacheWorker", :pid=>999, :signal=>nil, :message=>"Sidekiq worker PID-999 current RSS 10240 exceeds maximum RSS 5120 after finishing job ProjectCacheWorker JID-123"} 2019-10-15T08:51:13.650Z 91 TID-gohhnwj3f WARN: {:class=>"ProjectCacheWorker", :pid=>999, :signal=>nil, :message=>"Sidekiq worker PID-999 will stop fetching new jobs in 900 seconds, and will be shut down 30 seconds later"} 2019-10-15T08:51:13.650Z 91 TID-gohhnwj3f WARN: {:class=>"ProjectCacheWorker", :pid=>999, :signal=>"SIGTSTP", :message=>"waiting 900 seconds before sending Sidekiq worker PID-999 SIGTSTP (stop fetching new jobs)"} 2019-10-15T08:51:13.651Z 91 TID-gohhnwj3f WARN: {:class=>"ProjectCacheWorker", :pid=>999, :signal=>"SIGTSTP", :message=>"sending Sidekiq worker PID-999 SIGTSTP (stop fetching new jobs)"} 2019-10-15T08:51:13.651Z 91 TID-gohhnwj3f WARN: {:class=>"ProjectCacheWorker", :pid=>999, :signal=>"SIGTERM", :message=>"waiting 30 seconds before sending Sidekiq worker PID-999 SIGTERM (gracefully shut down)"} 2019-10-15T08:51:13.651Z 91 TID-gohhnwj3f WARN: {:class=>"ProjectCacheWorker", :pid=>999, :signal=>"SIGTERM", :message=>"sending Sidekiq worker PID-999 SIGTERM (gracefully shut down)"} 2019-10-15T08:51:13.652Z 91 TID-gohhnwj3f WARN: {:class=>"ProjectCacheWorker", :pid=>999, :signal=>"SIGKILL", :message=>"waiting 10 seconds before sending Sidekiq worker PGRP-999 SIGKILL (die)"} 2019-10-15T08:51:13.652Z 91 TID-gohhnwj3f WARN: {:class=>"ProjectCacheWorker", :pid=>999, :signal=>"SIGKILL", :message=>"sending Sidekiq worker PGRP-999 SIGKILL (die)"} sends TSTP and TERM to the pid, but KILL to the pgroup, when running as process leader when MAX_RSS is not exceeded does nothing OmniAuth::Strategies::Jwt #decoded when the RS256 algorithm is used decodes the user information when the RS384 algorithm is used decodes the user information when the RS512 algorithm is used decodes the user information when the ES256 algorithm is used decodes the user information when the ES384 algorithm is used decodes the user information when the ES512 algorithm is used decodes the user information when the HS256 algorithm is used decodes the user information when the HS384 algorithm is used decodes the user information when the HS512 algorithm is used decodes the user information required claims is missing raises error when valid_within is specified but iat attribute is missing in response raises error when timestamp claim is too skewed from present raises error CommitsHelper commit_author_link escapes the author email escapes the author name commit_committer_link escapes the committer email escapes the committer name #view_on_environment_button returns a link tag linking to the file in the environment Projects::ForksCountService behaves like a counter caching service #count caches the count #refresh_cache refreshes the cache #delete_cache removes the cache #uncached_count does not cache the count #count returns the number of forks ProtectedTags::CreateService #execute creates a new protected tag Gitlab::Ci::Config::Entry::Job .nodes when filtering all the entry/node names should contain exactly :before_script, :script, :stage, :type, :after_script, :cache, :image, :services, :only, :except, :rules, :variables, :artifacts, :environment, :coverage, and :retry .matching? when config is not a hash should be falsey when config is a regular job should be truthy when config is a bridge job should be falsey when config is a hidden job should be falsey validations when entry config value is correct #valid? is valid when job name is empty reports error when delayed job when start_in is specified should be valid when has needs should be valid when has dependencies should be valid when entry value is not correct incorrect config value type #errors reports error about a config type when config is empty #valid is invalid when unknown keys detected #valid is not valid when script is not provided returns error about missing script entry when extends key is not a string returns error about wrong value type when parallel value is not correct when it is not a numeric value returns error about invalid type when it is lower than two returns error about value too low when it is bigger than 50 returns error about value too high when it is not an integer returns error about wrong value when it uses both "when:" and "rules:" returns an error about when: being combined with rules when delayed job when start_in is specified returns error about invalid type when start_in is empty returns error about invalid type when start_in is not formatted as a duration returns error about invalid type when start_in is longer than one day returns error about exceeding the limit when only: is used with rules: returns error about mixing only: with rules: and only: is blank returns error about mixing only: with rules: and rules: is blank returns error about mixing only: with rules: when except: is used with rules: returns error about mixing except: with rules: and except: is blank returns error about mixing except: with rules: and rules: is blank returns error about mixing except: with rules: when only: and except: are both used with rules: returns errors about mixing both only: and except: with rules: when only: and except: as both blank returns errors about mixing both only: and except: with rules: when rules: is blank returns errors about mixing both only: and except: with rules: when start_in specified without delayed specification returns error about invalid type when has dependencies that are not a array of strings returns error about invalid type when has needs that are not a array of strings returns error about invalid type when have dependencies that are not subset of needs returns error about invalid data when stage: is missing returns error about invalid data when timeout value is not correct when it is higher than instance wide timeout returns error about value too high when it is not a duration returns error about wrong value when timeout value is correct returns correct timeout #relevant? is a relevant entry #compose! when job config overrides default config overrides default config when job config does not override default config uses config from default entry when composed #value when entry is correct returns correct value #manual_action? when job is a manual action is a manual action when job is not a manual action is not a manual action #delayed? when job is a delayed is a delayed when job is not a delayed is not a delayed #ignored? when job is a manual action when it is not specified if job is allowed to fail is an ignored job when job is allowed to fail is an ignored job when job is not allowed to fail is not an ignored job when job is not a manual action when it is not specified if job is allowed to fail is not an ignored job when job is allowed to fail is an ignored job when job is not allowed to fail is not an ignored job Gitlab::LegacyGithubImport::UserFormatter #gitlab_id returns nil when GitHub user is not a GitLab user when GitHub user is a GitLab user return GitLab user id when user associated their account with GitHub returns GitLab user id when user primary email matches GitHub email returns GitLab user id when any of user linked emails matches GitHub email Gitlab::GithubImport::Stage::ImportPullRequestsWorker #import imports all the pull requests Gitlab::TaskHelpers #checkout_or_clone_version checkout the version and reset to it with a branch version checkout the version and reset to it with a branch name target_dir doesn't exist clones the repo target_dir exists doesn't clone the repository #clone_repo clones the repo in the target dir #checkout_version clones the repo in the target dir #run_command runs command and return the output returns empty string when command doesnt exist #run_command! runs command and return the output returns and exception when command exit with non zero code Gitlab::FakeApplicationSettings wraps OpenStruct variables properly defines predicate methods does not define a predicate method does not override an existing predicate method behaves like application settings examples predicate method changes when value is updated restricted signup domains behaves like string of domains sets single domain sets multiple domains with spaces sets multiple domains with newlines and a space sets multiple domains with commas sets multiple domains with semicolon sets multiple domains with mixture of everything removes duplicates does not fail with garbage values does not raise error with nil blacklisted signup domains sets multiple domain with file behaves like string of domains sets single domain sets multiple domains with spaces sets multiple domains with newlines and a space sets multiple domains with commas sets multiple domains with semicolon sets multiple domains with mixture of everything removes duplicates does not fail with garbage values does not raise error with nil outbound_local_requests_whitelist clears outbound_local_requests_whitelist_arrays memoization behaves like string of domains sets single domain sets multiple domains with spaces sets multiple domains with newlines and a space sets multiple domains with commas sets multiple domains with semicolon sets multiple domains with mixture of everything removes duplicates does not fail with garbage values does not raise error with nil outbound_local_requests_whitelist_arrays separates the IPs and domains add_to_outbound_local_requests_whitelist adds entry to outbound_local_requests_whitelist clears outbound_local_requests_whitelist_arrays memoization does not raise error with nil does not raise error with nil usage ping settings when the usage ping is disabled in gitlab.yml does not allow the usage ping to be configured when the usage ping is disabled in the DB returns false for usage_ping_enabled when the usage ping is enabled in the DB returns false for usage_ping_enabled when the usage ping is enabled in gitlab.yml allows the usage ping to be configured when the usage ping is disabled in the DB returns false for usage_ping_enabled when the usage ping is enabled in the DB returns true for usage_ping_enabled #allowed_key_types includes all key types by default excludes disabled key types #key_restriction_for returns the restriction value for recognised types allows types to be passed as a string returns forbidden for unrecognised type #allow_signup? returns true returns false if signup is disabled returns false if password authentication is disabled for the web interface #pick_repository_storage uses Array#sample to pick a random storage #user_default_internal_regex_enabled? user_default_external: false, user_default_internal_regex: nil, result: false should eq false user_default_external: false, user_default_internal_regex: "", result: false should eq false user_default_external: false, user_default_internal_regex: "^(?:(?!\\.ext@).)*$\\r?\\n?", result: false should eq false user_default_external: true, user_default_internal_regex: "", result: false should eq false user_default_external: true, user_default_internal_regex: nil, result: false should eq false user_default_external: true, user_default_internal_regex: "^(?:(?!\\.ext@).)*$\\r?\\n?", result: true should eq true #archive_builds_older_than when the archive_builds_in_seconds is set should be within 60 of 2019-10-15 07:51:18 UTC when the archive_builds_in_seconds is set should be nil #commit_email_hostname when the value is provided returns the provided value when the value is not provided returns the default from the class Banzai::Filter::ExternalLinkFilter ignores elements without an href attribute ignores non-HTTP(S) links skips internal links for root links on document behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links for nested links on document behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links for invalid urls adds rel and target attributes to broken hrefs adds rel and target to improperly formatted mailtos adds rel and target to improperly formatted autolinks for links with a username with a valid username behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links with an impersonated username behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links for non-lowercase scheme links skips internal links skips relative links with http behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links with https behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links for protocol-relative links behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links links with RTLO character escapes RTLO in link text does not mangle the link text behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links for generated autolinks with an IDN character does not change the link text uses punycode for emails behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links autolinked image adds a toolip with punycode behaves like an external link with rel attribute adds rel="nofollow" to external links adds rel="noreferrer" to external links adds rel="noopener" to external links for links that look malicious with an IDN character adds a toolip with punycode with RTLO character adds a toolip with punycode instrument_classes can autoload and instrument all files RuboCop::Cop::Gitlab::RailsLogger flags the use of Rails.logger.error with a constant receiver flags the use of Rails.logger.info with a constant receiver flags the use of Rails.logger.warn with a constant receiver does not flag the use of Rails.logger with a constant that is not Rails does not flag the use of logger with a send receiver Import metrics on development seed imports all prometheus metrics UserFinder #find_by_id when the user exists returns the user when the user exists (id as string) returns the user when the user does not exist returns nil #find_by_username when the user exists returns the user when the user does not exist returns nil #find_by_id_or_username when the user exists (id) returns the user when the user exists (id as string) returns the user when the user exists (username) returns the user when the user does not exist (username) returns nil when the user does not exist returns nil #find_by_id! when the user exists returns the user when the user exists (id as string) returns the user when the user does not exist raises ActiveRecord::RecordNotFound #find_by_username! when the user exists returns the user when the user does not exist raises ActiveRecord::RecordNotFound #find_by_id_or_username! when the user exists (id) returns the user when the user exists (id as string) returns the user when the user exists (username) returns the user when the user does not exist (username) raises ActiveRecord::RecordNotFound when the user does not exist raises ActiveRecord::RecordNotFound #find_by_ssh_key_id returns the user when passing the ssh key id returns the user when passing the ssh key id (string) returns nil when the id does not exist Gitlab::HTTPConnectionAdapter #connection when local requests are not allowed sets up the connection raises error when it is a request to local address raises error when it is a request to localhost address when port different from URL scheme is used sets up the addr_port accordingly when DNS rebinding protection is disabled sets up the connection when http(s) environment variable is set sets up the connection when local requests are allowed sets up the connection sets up the connection when it is a local network sets up the connection when it is localhost dashboard/projects/_blank_state_admin_welcome.html.haml links to new group path Mattermost::Team #all for valid request returns teams for error message raises an error with message #create for a new team returns the new team for existing team raises an error with message #delete for an existing team returns team status for an unknown team raises an error with message Gitlab::Favicon .main defaults to favicon.png has blue favicon for development has yellow favicon for canary uses the custom favicon if a favicon appearance is present asset host returns a relative url when the asset host is not configured returns a full url when the asset host is configured .status_overlay returns the overlay for the status .available_status_names returns the available status names DeployKeys::CreateService creates a deploy key Gitlab::SQL::Pattern .to_pattern when a query is shorter than 3 chars returns exact matching pattern and ignore_minimum_char_limit is true returns partial matching pattern when a query with a escape character is shorter than 3 chars returns sanitized exact matching pattern and ignore_minimum_char_limit is true returns sanitized partial matching pattern when a query is equal to 3 chars returns partial matching pattern when a query with a escape character is equal to 3 chars returns partial matching pattern when a query is longer than 3 chars returns partial matching pattern when a query with a escape character is longer than 3 chars returns sanitized partial matching pattern .select_fuzzy_words with a word equal to 3 chars returns array cotaining a word with a word shorter than 3 chars returns empty array with two words both equal to 3 chars returns array containing two words with two words divided by two spaces both equal to 3 chars returns array containing two words with two words equal to 3 chars and shorter than 3 chars returns array containing a word with a multi-word surrounded by double quote returns array containing a multi-word with a multi-word surrounded by double quote and two words returns array containing a multi-word and tow words with a multi-word surrounded by double quote missing a spece before the first double quote returns array containing two words with double quote with a multi-word surrounded by double quote missing a spece after the second double quote returns array containing two words with double quote with two multi-word surrounded by double quote and two words returns array containing two multi-words and tow words .fuzzy_arel_match with a word equal to 3 chars returns a single ILIKE condition with a word shorter than 3 chars returns a single equality condition uses LOWER instead of ILIKE when LOWER is enabled with two words both equal to 3 chars returns a joining LIKE condition using a AND with two words both shorter than 3 chars returns a single ILIKE condition with two words, one shorter 3 chars returns a single ILIKE condition using the longer word with a multi-word surrounded by double quote and two words returns a joining LIKE condition using a AND Import metrics on production seed imports all prometheus metrics Every Sidekiq worker does not use the default queue uses the cronjob queue when the worker runs as a cronjob has its queue in Gitlab::SidekiqConfig::QUEUE_CONFIG_PATHS has its queue or namespace in config/sidekiq_queues.yml FeatureGate User #flipper_id when user is not persisted should be nil when user is persisted should eq "User:2161" Gitlab::Ci::Config::Entry::Reports validates ALLOWED_KEYS expects junit to be an artifact file_type expects codequality to be an artifact file_type expects sast to be an artifact file_type expects dependency_scanning to be an artifact file_type expects container_scanning to be an artifact file_type expects dast to be an artifact file_type expects performance to be an artifact file_type expects license_management to be an artifact file_type expects metrics to be an artifact file_type validation when entry config value is correct keyword: :junit, file: "junit.xml" when value is an array behaves like a valid entry #value returns artifacts configuration #valid? is valid when value is not array behaves like a valid entry #value returns artifacts configuration #valid? is valid keyword: :codequality, file: "gl-code-quality-report.json" when value is an array behaves like a valid entry #value returns artifacts configuration #valid? is valid when value is not array behaves like a valid entry #value returns artifacts configuration #valid? is valid keyword: :sast, file: "gl-sast-report.json" when value is an array behaves like a valid entry #value returns artifacts configuration #valid? is valid when value is not array behaves like a valid entry #value returns artifacts configuration #valid? is valid keyword: :dependency_scanning, file: "gl-dependency-scanning-report.json" when value is an array behaves like a valid entry #value returns artifacts configuration #valid? is valid when value is not array behaves like a valid entry #value returns artifacts configuration #valid? is valid keyword: :container_scanning, file: "gl-container-scanning-report.json" when value is an array behaves like a valid entry #value returns artifacts configuration #valid? is valid when value is not array behaves like a valid entry #value returns artifacts configuration #valid? is valid keyword: :dast, file: "gl-dast-report.json" when value is an array behaves like a valid entry #value returns artifacts configuration #valid? is valid when value is not array behaves like a valid entry #value returns artifacts configuration #valid? is valid keyword: :license_management, file: "gl-license-management-report.json" when value is an array behaves like a valid entry #value returns artifacts configuration #valid? is valid when value is not array behaves like a valid entry #value returns artifacts configuration #valid? is valid keyword: :performance, file: "performance.json" when value is an array behaves like a valid entry #value returns artifacts configuration #valid? is valid when value is not array behaves like a valid entry #value returns artifacts configuration #valid? is valid when entry value is not correct #errors when there is an unknown key present reports error MoveToProjectSerializer #represent includes the name and name with namespace Gitlab::Redis::SharedState .params withstands mutation when url contains unix socket reference with old format returns path key instead with new format returns path key instead when url is host based with old format returns hash with host, port, db, and password with new format returns hash with host, port, db, and password .url withstands mutation when yml file with env variable reads redis url from env variable ._raw_config is frozen returns false when the file does not exist returns false when the filename can't be determined .with when running not on sidekiq workers instantiates a connection pool with size 5 when running on sidekiq workers instantiates a connection pool with a size based on the concurrency of the worker #sentinels when sentinels are defined returns an array of hashes with host and port keys when sentinels are not defined returns nil #sentinels? when sentinels are defined returns true when sentinels are not defined returns false #raw_config_hash returns default redis url when no config file is present returns old-style single url config in a hash #fetch_config returns false when no config file is present returns false when config file is present but has invalid YAML Gitlab::SidekiqDaemon::Monitor #within_job tracks thread when job is canceled 2019-10-15T08:51:25.577Z 91 TID-gohcudbg3 WARN: {:class=>"Gitlab::SidekiqDaemon::Monitor", :action=>"run", :queue=>"queue", :jid=>"2c02ba679ab69be34b595fbcfd90ae42", :canceled=>true} does not execute a block 2019-10-15T08:51:25.584Z 91 TID-gohcudbg3 WARN: {:class=>"Gitlab::SidekiqDaemon::Monitor", :action=>"run", :queue=>"queue", :jid=>"874b3527fe43b7c3ea8c2d1a0caaec1c", :canceled=>true} raises exception #start_working when notification channel not enabled return directly #start_working when notification channel enabled when structured logging is used logs start message logs stop message logs StandardError message logs and raises Exception message when StandardError is raised does retry connection when message is published and message is valid processes cancel and message is not valid json skips processing #stop #<Thread:0x00005598627999b0@/builds/gitlab-org/gitlab/lib/gitlab/daemon.rb:37 run> terminated with exception (report_on_exception is true): /builds/gitlab-org/gitlab/lib/gitlab/sidekiq_daemon/monitor.rb:188:in `nonzero?': Interrupt (Interrupt) from /builds/gitlab-org/gitlab/lib/gitlab/sidekiq_daemon/monitor.rb:188:in `notification_channel_enabled?' from /builds/gitlab-org/gitlab/lib/gitlab/sidekiq_daemon/monitor.rb:65:in `start_working' from /builds/gitlab-org/gitlab/lib/gitlab/daemon.rb:37:in `block (2 levels) in start' does stop the thread #process_job_cancel when jid is missing does not run thread when jid is provided when jid is not found does not log cancellation message when jid is found #<Thread:0x00005598628b1b68@/builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:220 run> terminated with exception (report_on_exception is true): /builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:220:in `sleep': Gitlab::SidekiqDaemon::Monitor::CancelledError (Gitlab::SidekiqDaemon::Monitor::CancelledError) from /builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:220:in `block (6 levels) in <top (required)>' does log cancellation message 2019-10-15T08:51:25.669Z 91 TID-gohgacrsb WARN: {:class=>"Gitlab::SidekiqDaemon::Monitor", :action=>"cancel", :message=>"Canceling thread with CancelledError", :jid=>"my-jid", :thread_id=>47056488608820} #<Thread:0x0000559862936868@/builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:220 run> terminated with exception (report_on_exception is true): /builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:220:in `sleep': Gitlab::SidekiqDaemon::Monitor::CancelledError (Gitlab::SidekiqDaemon::Monitor::CancelledError) from /builds/gitlab-org/gitlab/spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb:220:in `block (6 levels) in <top (required)>' does cancel the thread .cancel_job sets a redis key notifies all workers #notification_channel_enabled? return nil when SIDEKIQ_MONITOR_WORKER is not set return nil when SIDEKIQ_MONITOR_WORKER set to 0 return 1 when SIDEKIQ_MONITOR_WORKER set to 1 Gitlab::UsageDataCounters::SnippetCounter behaves like a redis usage counter .count(create) increments the Snippet create counter by 1 .read(create) returns the total number of create events behaves like a redis usage counter .count(update) increments the Snippet update counter by 1 .read(update) returns the total number of update events behaves like a redis usage counter with totals totals can report all totals unknown events cannot increment cannot read Shard .populate! creates shards based on the config file .by_name returns an existing shard creates a new shard retries if creation races Gitlab::DependencyLinker::GodepsJsonLinker .support? supports Godeps.json does not support other files #link links the package name links GitHub repos links GitLab projects links Golang packages Gitlab::Ci::Reports::TestSuiteComparer #new_failures when head sutie has a newly failed test case which does not exist in base returns the failed test case when head sutie still has a failed test case which failed in base does not return the failed test case when head sutie has a success test case which failed in base does not return the failed test case #existing_failures when head sutie has a newly failed test case which does not exist in base returns the failed test case when head sutie still has a failed test case which failed in base does not return the failed test case when head sutie has a success test case which failed in base does not return the failed test case #resolved_failures when head sutie has a newly failed test case which does not exist in base returns the failed test case returns the correct resolved count when head sutie still has a failed test case which failed in base does not return the failed test case returns the correct resolved count when head sutie has a success test case which failed in base does not return the resolved test case returns the correct resolved count #total_count returns the total test counts in head suite #failed_count when there are a new failure and an existing failure returns the correct count when there is a new failure returns the correct count when there is an existing failure returns the correct count #total_status when all test cases in head suite are success returns the total status in head suite when there is a failed test case in head suite returns the total status in head suite LicenseTemplateFinder #execute popular: true only returns popular licenses popular: false only returns unpopular licenses popular: nil returns all licenses known by the Licensee gem correctly copies all attributes Banzai::Filter::InlineDiffFilter adds inline diff span tags for deletions when using square brackets adds inline diff span tags for deletions when using curley braces does not add inline diff span tags when a closing tag is not provided adds inline span tags for additions when using square brackets adds inline span tags for additions when using curley braces does not add inline diff span tags when a closing addition tag is not provided does not add inline diff span tags when the tags do not match prevents user-land html being injected preserves content inside pre tags preserves content inside code tags preserves content inside tt tags Gitlab::Ci::Config::Entry::Cache validations when entry config value is correct #value returns hash value #valid? should be valid policy is pull-push should be valid should include {:policy => "pull-push"} policy is push should be valid should include {:policy => "push"} policy is pull should be valid should include {:policy => "pull"} when key is missing #value sets key with the default when entry value is not correct #errors when is not a hash reports errors with config value when policy is unknown reports error when descendants are invalid reports error with descendants when there is an unknown key present reports error with descendants Gitlab::Email::Hook::SmimeSignatureInterceptor signs the email appropriately with SMIME MergeRequest::Metrics associations should belong to merge_request required: should belong to latest_closed_by class_name => User required: should belong to merged_by class_name => User required: Gitlab::Kubernetes #container_exec_url should eq "wss" should eq "example.com" should eq "/api/v1/namespaces/default/pods/pod1/exec" should eq "container=container1&stderr=true&stdin=true&stdout=true&tty=true&command=sh&command=-c&command=bash+%7C%7C+sh" with a HTTP API URL should eq "ws" with a path prefix in the API URL should eq "/prefix/api/v1/namespaces/default/pods/pod1/exec" with arguments that need urlencoding should eq "/api/v1/namespaces/default%20namespace/pods/pod%201/exec" should match /\Acontainer=container\+1&/ #filter_by_label returns matching labels #filter_by_annotation returns matching labels #filter_by_project_environment returns matching env label #filter_by_legacy_label returns matching labels #to_kubeconfig should eq {"apiVersion"=>"v1", "clusters"=>[{"cluster"=>{"certificate-authority-data"=>"UEVN", "server"=>"https..."gitlab-deploy", "kind"=>"Config", "users"=>[{"name"=>"gitlab-deploy", "user"=>{"token"=>"TOKEN"}}]} when CA PEM is not provided should eq {"apiVersion"=>"v1", "clusters"=>[{"cluster"=>{"server"=>"https://kube.domain.com"}, "name"=>"gitlab-..."gitlab-deploy", "kind"=>"Config", "users"=>[{"name"=>"gitlab-deploy", "user"=>{"token"=>"TOKEN"}}]} when token is not provided should be nil #add_terminal_auth adds authentication parameters to a hash TabHelper nav_link passes extra html options to the list element with the content of the li captures block output with controller param performs checks on the current controller with action param performs checks on both controller and action when both are present with namespace in path notation performs checks on both controller and namespace with action param performs checks on both namespace, controller and action when they are all present with action param performs checks on the current action with path param accepts a path shorthand with namespace accepts a path shorthand with namespace Gitlab::SidekiqStatus .set stores the job ID .unset removes the job ID .all_completed? returns true if all jobs have been completed returns false if a job has not yet been completed .running? returns true if job is running returns false if job is not found .num_running returns 0 if all jobs have been completed returns 2 if two jobs are still running .num_completed returns 1 if all jobs have been completed returns 1 if a job has not yet been completed .key_for returns the key for a job ID completed returns the completed job returns only the jobs completed Gitlab::UsageDataCounters::ProductivityAnalyticsCounter behaves like a redis usage counter .count(views) increments the ProductivityAnalytics views counter by 1 .read(views) returns the total number of views events behaves like a redis usage counter with totals totals can report all totals unknown events cannot increment cannot read Gitlab::UsageDataCounters::MergeRequestCounter behaves like a redis usage counter .count(create) increments the Merge Request create counter by 1 .read(create) returns the total number of create events behaves like a redis usage counter with totals totals can report all totals unknown events cannot increment cannot read Gitlab::Git::Changes #includes_branches? has changes for branches should be truthy has no changes for branches should be falsey #includes_tags? has changes for tags should be truthy has no changes for tags should be falsey #add_branch_change adds the branch change to the collection does not add the change as a tag change #add_tag_change adds the tag change to the collection does not add the change as a branch change Prometheus::PidProvider .worker_id when running in Sidekiq server mode should eq "sidekiq" when running in Unicorn mode when unicorn master is specified in process name when running in Omnibus before the process was renamed should eq "unicorn_master" after the process was renamed should eq "unicorn_master" when in development env before the process was renamed should eq "unicorn_master" after the process was renamed should eq "unicorn_master" when unicorn worker id is specified in process name when running in Omnibus should eq "unicorn_1" when in development env should eq "unicorn_1" when no specified unicorn master or worker id in process name should eq "process_91" when running in Puma mode when cluster worker id is specified in process name should eq "puma_1" when no worker id is specified in process name should eq "puma_master" when running in unknown mode should eq "process_91" Gitlab::Ci::Pipeline::Expression::Lexeme::String .build creates a new instance of the token .type is a value lexeme .scan when using double quotes correctly identifies string token when using single quotes correctly identifies string token when there are mixed quotes in the string is a greedy scanner for double quotes is a greedy scanner for single quotes allows to use single quotes inside double quotes allow to use double quotes inside single quotes allows to use an empty string inside single quotes allow to use an empty string inside double quotes #evaluate returns string value if it is present returns an empty string if it is empty Gitlab::DependencyLinker .link links using GemfileLinker links using GemspecLinker links using PackageJsonLinker links using ComposerJsonLinker links using PodfileLinker links using PodspecLinker links using PodspecJsonLinker links using CartfileLinker links using GodepsJsonLinker links using RequirementsTxtLinker Clusters::Project should belong to cluster required: should belong to project required: should have many kubernetes_namespaces RuboCop::Cop::AvoidBreakFromStrongMemoize flags violation for break inside strong_memoize flags violation for break inside strong_memoize nested blocks doesn't flag violation for next inside strong_memoize doesn't flag violation for break inside blocks doesn't call add_offense twice for nested blocks doesn't check when block is empty Gitlab::Sherlock::Collection #add adds a new transaction is aliased as << #each iterates over every transaction #clear removes all transactions #empty? returns true for an empty collection returns false for a collection with a transaction #find_transaction returns the transaction for the given ID returns nil when no transaction could be found #newest_first returns transactions sorted from new to old Gitlab::Ci::Config::Entry::Hidden .matching? when name starts with dot should be truthy when name does not start with dot should be falsey .new validations when entry config value is correct #value returns key value #valid? is valid when entry value is not correct when config is empty #valid is invalid #leaf? is a leaf #relevant? is not a relevant entry Gitlab::Diff::SuggestionDiff #diff_lines returns diff lines with correct line numbers ChatMessage::NoteMessage commit notes without markdown returns a message regarding notes on commits with markdown returns a message regarding notes on commits merge request notes without markdown returns a message regarding notes on a merge request with markdown returns a message regarding notes on a merge request issue notes without markdown returns a message regarding notes on an issue with markdown returns a message regarding notes on an issue project snippet notes without markdown returns a message regarding notes on a project snippet with markdown returns a message regarding notes on a project snippet Gitlab::Ci::Build::Artifacts::Adapters::RawStream #initialize when stream is passed initialized when stream is not passed raises an error #each_blob when file is not empty iterates content when file is empty does not iterate content RuboCop::Cop::QA::ElementWithPattern in a QA file registers an offense for elements with a pattern does not register an offense for element without a pattern outside of a migration spec file does not register an offense Gitlab::Analytics::CycleAnalytics::StageEvents::StageEvent should respond to #name should respond to #identifier should respond to #object_type should respond to #timestamp_projection should respond to #apply_query_customization Gitlab::Git::RawDiffChange bad input does not set most of the attrs adding a file initialize the proper attrs renaming a file initialize the proper attrs modifying a file initialize the proper attrs deleting a file initialize the proper attrs Gitlab::GithubImport::PageCounter #initialize sets the initial page number to 1 when no value is cached sets the initial page number to the cached value when one is present #set overwrites the page number when the given number is greater than the current number does not overwrite the page number when the given number is lower than the current number Gitlab::Ci::Status::Group::Common does not have action has details has no details_path Gitlab::Analytics::CycleAnalytics::StageEvents::IssueStageEnd behaves like cycle analytics event should be a kind of String should be a kind of Symbol should include ApplicationRecord(abstract) should respond to #timestamp_projection #apply_query_customization expects an ActiveRecord::Relation object as argument and returns a modified version of it Gitlab::GithubImport::BulkImporting #build_database_rows returns an Array containing the rows to insert does not import objects that have already been imported #bulk_insert bulk inserts rows into the database RspecFlaky::FlakyExamplesCollection #initialize accepts no argument accepts a hash does not accept anything else #to_h calls #to_h on the values #- returns only examples that are not present in the given collection fails if the given collection does not respond to `#key?` Gitlab::Ci::Config::Entry::Paths validations when entry config value is valid #value returns key value #valid? is valid when entry value is not valid #errors saves errors Gitlab::Diff::InlineDiff .for_lines finds all inline diffs can handle unchanged empty lines #inline_diffs finds the inline diff Gitlab::Ci::Reports::TestCase #initialize when both classname and name are given when test case is passed initializes an instance when test case is failed initializes an instance when classname is missing raises an error when name is missing raises an error Gitlab::GithubImport::IssuableFinder #database_id returns nil when no cache is in place returns the ID of an issuable when the cache is in place raises TypeError when the object is not supported #cache_database_id caches the ID of a database row Banzai::FilterArray #insert_after inserts an element after a provided element inserts an element at the end when the provided element does not exist #insert_before inserts an element before a provided element inserts an element at the beginning when the provided element does not exist RuboCop::Cop::SidekiqOptionsQueue registers an offense when `sidekiq_options` is used with the `queue` option does not register an offense when `sidekiq_options` is used with another option SessionsHelper #unconfirmed_email? returns true when the flash alert contains a devise failure unconfirmed message returns false when the flash alert does not contain a devise failure unconfirmed message RequestAwareEntity includes URL helpers includes method for checking abilities fetches request from options AwardEmoji should eq "AwardEmoji" should require graphql authorizations :read_emoji should have graphql fields :description, :unicode_version, :emoji, :name, :unicode, and :user Group should expose permissions using Types::PermissionTypes::Group should eq "Group" should require graphql authorizations :read_group TodosDestroyer::ConfidentialIssueWorker calls the Todos::Destroy::ConfidentialIssueService with issue_id parameter calls the Todos::Destroy::ConfidentialIssueService with project_id parameter Gitlab::StringRegexMarker #mark with a single occurrence marks the match with multiple occurrences marks the matches Gitlab::Metrics::Dashboard::Defaults should be const defined :DEFAULT_PANEL_TYPE should be const defined :DEFAULT_PANEL_WEIGHT Types::Ci::PipelineType should eq "Pipeline" should expose permissions using Types::PermissionTypes::Ci::Pipeline Bitbucket::Paginator items return items and raises StopIteration in the end ProviderRepoSerializer represents ProviderRepoEntity entities TodosDestroyer::GroupPrivateWorker calls the Todos::Destroy::GroupPrivateService with the params it was given Gitlab::Git::GitmodulesParser parses a .gitmodules file correctly PipelineBackgroundQueue sets a default object storage queue automatically Knapsack report was generated. Preview: { "spec/services/merge_requests/update_service_spec.rb": 77.94184827804565, "spec/services/projects/import_service_spec.rb": 58.774707555770874, "spec/models/concerns/resolvable_discussion_spec.rb": 30.25692343711853, "spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb": 32.19275426864624, "spec/models/commit_spec.rb": 20.043416738510132, "spec/lib/gitlab/search_results_spec.rb": 18.289692163467407, "spec/models/namespace_spec.rb": 16.098291873931885, "spec/finders/notes_finder_spec.rb": 13.690574645996094, "spec/models/environment_status_spec.rb": 12.786731243133545, "spec/serializers/pipeline_entity_spec.rb": 7.6658241748809814, "spec/migrations/migrate_auto_dev_ops_domain_to_cluster_domain_spec.rb": 10.726818084716797, "spec/services/issuable/clone/content_rewriter_spec.rb": 10.592961311340332, "spec/presenters/ci/pipeline_presenter_spec.rb": 9.891790866851807, "spec/models/snippet_spec.rb": 8.102383136749268, "spec/finders/projects/serverless/functions_finder_spec.rb": 7.598154783248901, "spec/models/prometheus_metric_spec.rb": 6.841198205947876, "spec/lib/gitlab/data_builder/note_spec.rb": 7.086171627044678, "spec/lib/gitlab/data_builder/push_spec.rb": 6.445171117782593, "spec/services/clusters/applications/upgrade_service_spec.rb": 4.52116060256958, "spec/presenters/ci/build_presenter_spec.rb": 6.448850393295288, "spec/services/issuable/clone/attributes_rewriter_spec.rb": 3.4006738662719727, "spec/models/cycle_analytics/group_level_spec.rb": 5.1707916259765625, "spec/models/commit_collection_spec.rb": 4.449567556381226, "spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb": 4.2165398597717285, "spec/workers/invalid_gpg_signature_update_worker_spec.rb": 3.939131259918213, "spec/finders/cluster_ancestors_finder_spec.rb": 4.174522161483765, "spec/services/award_emojis/destroy_service_spec.rb": 3.7469418048858643, "spec/models/project_services/gitlab_issue_tracker_service_spec.rb": 3.9154391288757324, "spec/workers/namespaceless_project_destroy_worker_spec.rb": 2.912449359893799, "spec/lib/gitlab/diff/highlight_spec.rb": 2.844543933868408, "spec/services/discussions/resolve_service_spec.rb": 3.10675311088562, "spec/helpers/search_helper_spec.rb": 2.582709550857544, "spec/lib/gitlab/markdown_cache/active_record/extension_spec.rb": 3.1782498359680176, "spec/lib/banzai/reference_parser/commit_range_parser_spec.rb": 3.2927207946777344, "spec/services/projects/open_issues_count_service_spec.rb": 2.5769307613372803, "spec/services/wiki_pages/update_service_spec.rb": 2.274021625518799, "spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb": 2.893266201019287, "spec/services/issues/import_csv_service_spec.rb": 2.4089863300323486, "spec/presenters/issue_presenter_spec.rb": 1.3254148960113525, "spec/services/projects/hashed_storage/migrate_repository_service_spec.rb": 2.408705472946167, "spec/workers/ci/archive_traces_cron_worker_spec.rb": 2.2962446212768555, "spec/graphql/features/authorization_spec.rb": 1.9741096496582031, "spec/models/project_import_state_spec.rb": 1.8169522285461426, "spec/services/lfs/locks_finder_service_spec.rb": 1.735490322113037, "spec/helpers/gitlab_routing_helper_spec.rb": 1.996032476425171, "spec/lib/gitlab/kubernetes/helm/init_command_spec.rb": 1.8242299556732178, "spec/lib/gitlab/exclusive_lease_spec.rb": 2.0349409580230713, "spec/services/members/create_service_spec.rb": 1.895646095275879, "spec/lib/gitlab/sanitizers/exif_spec.rb": 1.748408555984497, "spec/models/concerns/project_features_compatibility_spec.rb": 1.0265583992004395, "spec/models/label_note_spec.rb": 1.5928351879119873, "spec/lib/gitlab/kubernetes/default_namespace_spec.rb": 1.6287965774536133, "spec/helpers/award_emoji_helper_spec.rb": 1.1152317523956299, "spec/workers/repository_import_worker_spec.rb": 0.8946349620819092, "spec/views/projects/diffs/_stats.html.haml_spec.rb": 1.1188433170318604, "spec/initializers/secret_token_spec.rb": 2.017000436782837, "spec/models/project_services/issue_tracker_service_spec.rb": 1.2132830619812012, "spec/models/user_agent_detail_spec.rb": 0.5898599624633789, "spec/services/boards/list_service_spec.rb": 0.8129115104675293, "spec/services/wiki_pages/destroy_service_spec.rb": 1.1380693912506104, "spec/lib/gitlab/visibility_level_checker_spec.rb": 1.1146125793457031, "spec/services/merge_requests/migrate_external_diffs_service_spec.rb": 1.0659279823303223, "spec/models/hooks/web_hook_log_spec.rb": 0.9219198226928711, "spec/lib/gitlab/background_migration/add_merge_request_diff_commits_count_spec.rb": 0.9819326400756836, "spec/workers/concerns/gitlab/github_import/stage_methods_spec.rb": 1.1059789657592773, "spec/serializers/paginated_diff_entity_spec.rb": 1.3744475841522217, "spec/migrations/migrate_managed_clusters_with_no_token_to_unmanaged_spec.rb": 1.6455328464508057, "spec/lib/gitlab/ci/status/build/preparing_spec.rb": 0.9860763549804688, "spec/uploaders/namespace_file_uploader_spec.rb": 1.2549545764923096, "spec/lib/gitlab/ci/build/prerequisite/factory_spec.rb": 0.45867204666137695, "spec/workers/concerns/project_import_options_spec.rb": 0.7927916049957275, "spec/lib/gitlab/legacy_github_import/wiki_formatter_spec.rb": 0.5312566757202148, "spec/lib/gitlab/metrics/instrumentation_spec.rb": 0.9771943092346191, "spec/lib/gitlab/graphql/loaders/pipeline_for_sha_loader_spec.rb": 0.5155344009399414, "spec/services/prometheus/adapter_service_spec.rb": 1.177753210067749, "spec/models/blob_viewer/base_spec.rb": 0.6445975303649902, "spec/views/projects/pipeline_schedules/_pipeline_schedule.html.haml_spec.rb": 0.4640343189239502, "spec/lib/gitlab/cycle_analytics/production_event_fetcher_spec.rb": 0.307863712310791, "spec/lib/gitlab/ci/status/build/erased_spec.rb": 0.6280672550201416, "spec/lib/gitlab/checks/project_created_spec.rb": 0.8457474708557129, "spec/migrations/set_issue_id_for_all_versions_spec.rb": 0.4766066074371338, "spec/migrations/enqueue_reset_merge_status_spec.rb": 0.7332315444946289, "spec/workers/mail_scheduler/issue_due_worker_spec.rb": 1.182905673980713, "spec/workers/hashed_storage/migrator_worker_spec.rb": 0.5305290222167969, "spec/services/projects/container_repository/cleanup_tags_service_spec.rb": 0.7027640342712402, "spec/migrations/remove_empty_extern_uid_auth0_identities_spec.rb": 0.3868253231048584, "spec/workers/import_issues_csv_worker_spec.rb": 0.7073650360107422, "spec/models/project_services/pivotaltracker_service_spec.rb": 0.15301847457885742, "spec/helpers/boards_helper_spec.rb": 0.2944977283477783, "spec/lib/gitlab/phabricator_import/project_creator_spec.rb": 0.778599739074707, "spec/migrations/assure_commits_count_for_merge_request_diff_spec.rb": 0.3982410430908203, "spec/services/projects/container_repository/delete_tags_service_spec.rb": 0.4287707805633545, "spec/lib/gitlab/graphql/representation/tree_entry_spec.rb": 0.4042987823486328, "spec/services/protected_branches/destroy_service_spec.rb": 0.4136974811553955, "spec/lib/gitlab/import/database_helpers_spec.rb": 0.45586729049682617, "spec/lib/gitlab/ci/pipeline/chain/skip_spec.rb": 0.2491145133972168, "spec/validators/public_url_validator_spec.rb": 0.4600341320037842, "spec/rubocop/cop/graphql/authorize_types_spec.rb": 0.08158040046691895, "spec/lib/gitlab/ci/status/pipeline/blocked_spec.rb": 0.3463938236236572, "spec/lib/gitlab/graphql/representation/submodule_tree_entry_spec.rb": 0.19532537460327148, "spec/lib/gitlab/sidekiq_middleware/memory_killer_spec.rb": 0.016881465911865234, "spec/lib/omni_auth/strategies/jwt_spec.rb": 0.33389782905578613, "spec/helpers/commits_helper_spec.rb": 0.24155139923095703, "spec/services/projects/forks_count_service_spec.rb": 0.5500636100769043, "spec/services/protected_tags/create_service_spec.rb": 0.2358534336090088, "spec/lib/gitlab/ci/config/entry/job_spec.rb": 0.27992701530456543, "spec/lib/gitlab/legacy_github_import/user_formatter_spec.rb": 0.2707226276397705, "spec/workers/gitlab/github_import/stage/import_pull_requests_worker_spec.rb": 0.22690248489379883, "spec/tasks/gitlab/task_helpers_spec.rb": 0.14667201042175293, "spec/lib/gitlab/fake_application_settings_spec.rb": 0.13277268409729004, "spec/lib/banzai/filter/external_link_filter_spec.rb": 0.4002103805541992, "spec/initializers/zz_metrics_spec.rb": 0.15259742736816406, "spec/rubocop/cop/gitlab/rails_logger_spec.rb": 0.01888728141784668, "spec/db/development/import_common_metrics_spec.rb": 0.11392974853515625, "spec/finders/user_finder_spec.rb": 0.10589766502380371, "spec/lib/gitlab/http_connection_adapter_spec.rb": 0.15259671211242676, "spec/views/dashboard/projects/_blank_state_admin_welcome.haml_spec.rb": 0.09879422187805176, "spec/lib/mattermost/team_spec.rb": 0.11541438102722168, "spec/lib/gitlab/favicon_spec.rb": 0.11640310287475586, "spec/services/deploy_keys/create_service_spec.rb": 0.09103965759277344, "spec/lib/gitlab/sql/pattern_spec.rb": 0.04291057586669922, "spec/db/production/import_common_metrics_spec.rb": 0.0979623794555664, "spec/workers/every_sidekiq_worker_spec.rb": 0.06880712509155273, "spec/models/concerns/feature_gate_spec.rb": 0.06291437149047852, "spec/lib/gitlab/ci/config/entry/reports_spec.rb": 0.09242081642150879, "spec/serializers/move_to_project_serializer_spec.rb": 0.06205630302429199, "spec/lib/gitlab/redis/shared_state_spec.rb": 0.09433984756469727, "spec/lib/gitlab/sidekiq_daemon/monitor_spec.rb": 0.07279706001281738, "spec/lib/gitlab/usage_data_counters/snippet_counter_spec.rb": 0.05124831199645996, "spec/models/shard_spec.rb": 0.05440783500671387, "spec/lib/gitlab/dependency_linker/godeps_json_linker_spec.rb": 0.0526280403137207, "spec/lib/gitlab/ci/reports/test_suite_comparer_spec.rb": 0.035367488861083984, "spec/finders/license_template_finder_spec.rb": 0.041759490966796875, "spec/lib/banzai/filter/inline_diff_filter_spec.rb": 0.026629924774169922, "spec/lib/gitlab/ci/config/entry/cache_spec.rb": 0.03148484230041504, "spec/lib/gitlab/email/hook/smime_signature_interceptor_spec.rb": 0.038471221923828125, "spec/models/merge_request/metrics_spec.rb": 0.03846406936645508, "spec/lib/gitlab/kubernetes_spec.rb": 0.041229963302612305, "spec/helpers/tab_helper_spec.rb": 0.026092529296875, "spec/lib/gitlab/sidekiq_status_spec.rb": 0.03319430351257324, "spec/lib/gitlab/usage_data_counters/productivity_analytics_counter_spec.rb": 0.034058332443237305, "spec/lib/gitlab/usage_data_counters/merge_request_counter_spec.rb": 0.02884387969970703, "spec/lib/gitlab/git/changes_spec.rb": 0.015614032745361328, "spec/lib/prometheus/pid_provider_spec.rb": 0.2753169536590576, "spec/lib/gitlab/ci/pipeline/expression/lexeme/string_spec.rb": 0.042572021484375, "spec/lib/gitlab/dependency_linker_spec.rb": 0.026407241821289062, "spec/models/clusters/project_spec.rb": 0.02653336524963379, "spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb": 0.026099205017089844, "spec/lib/gitlab/sherlock/collection_spec.rb": 0.023197174072265625, "spec/lib/gitlab/ci/config/entry/hidden_spec.rb": 0.019429683685302734, "spec/lib/gitlab/diff/suggestion_diff_spec.rb": 0.02916717529296875, "spec/models/project_services/chat_message/note_message_spec.rb": 0.01892685890197754, "spec/lib/gitlab/ci/build/artifacts/adapters/raw_stream_spec.rb": 0.009765148162841797, "spec/rubocop/cop/qa/element_with_pattern_spec.rb": 0.016432523727416992, "spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb": 0.010199785232543945, "spec/lib/gitlab/git/raw_diff_change_spec.rb": 0.011304378509521484, "spec/lib/gitlab/github_import/page_counter_spec.rb": 0.012576580047607422, "spec/lib/gitlab/ci/status/group/common_spec.rb": 0.009536981582641602, "spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end_spec.rb": 0.011367321014404297, "spec/lib/gitlab/github_import/bulk_importing_spec.rb": 0.00961756706237793, "spec/lib/rspec_flaky/flaky_examples_collection_spec.rb": 0.013273239135742188, "spec/lib/gitlab/ci/config/entry/paths_spec.rb": 0.008036613464355469, "spec/lib/gitlab/diff/inline_diff_spec.rb": 0.0072290897369384766, "spec/lib/gitlab/ci/reports/test_case_spec.rb": 0.009013175964355469, "spec/lib/gitlab/github_import/issuable_finder_spec.rb": 0.009921550750732422, "spec/lib/banzai/filter_array_spec.rb": 0.007055997848510742, "spec/rubocop/cop/sidekiq_options_queue_spec.rb": 0.006752729415893555, "spec/helpers/sessions_helper_spec.rb": 0.0056688785552978516, "spec/serializers/request_aware_entity_spec.rb": 0.00682520866394043, "spec/graphql/types/award_emojis/award_emoji_type_spec.rb": 0.0067365169525146484, "spec/graphql/types/group_type_spec.rb": 0.0063169002532958984, "spec/workers/todos_destroyer/confidential_issue_worker_spec.rb": 0.004883527755737305, "spec/lib/gitlab/string_regex_marker_spec.rb": 0.004384040832519531, "spec/lib/gitlab/metrics/dashboard/defaults_spec.rb": 0.004073619842529297, "spec/graphql/types/ci/pipeline_type_spec.rb": 0.004352569580078125, "spec/lib/bitbucket/paginator_spec.rb": 0.0030257701873779297, "spec/serializers/provider_repo_serializer_spec.rb": 0.0021924972534179688, "spec/workers/todos_destroyer/group_private_worker_spec.rb": 0.0035834312438964844, "spec/lib/gitlab/git/gitmodules_parser_spec.rb": 0.006211757659912109, "spec/workers/concerns/pipeline_background_queue_spec.rb": 0.0033838748931884766 } Knapsack global time execution for tests: 08m 14s Pending: (Failures listed here are expected and do not affect your suite's status) 1) NamespaceFileUploader behaves like builds correct paths #cache_dir behaves like matches the method pattern # No pattern provided, skipping. # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 2) NamespaceFileUploader behaves like builds correct paths #work_dir behaves like matches the method pattern # No pattern provided, skipping. # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 3) NamespaceFileUploader behaves like builds correct paths #relative_path is relative # Path not set, skipping. # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:39 4) NamespaceFileUploader behaves like builds correct paths .base_dir behaves like matches the method pattern # No pattern provided, skipping. # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 5) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths #cache_dir behaves like matches the method pattern # No pattern provided, skipping. # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 6) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths #work_dir behaves like matches the method pattern # No pattern provided, skipping. # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 7) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths #relative_path is relative # Path not set, skipping. # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:39 8) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths .absolute_path behaves like matches the method pattern # No pattern provided, skipping. # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 9) NamespaceFileUploader object_store is REMOTE behaves like builds correct paths .base_dir behaves like matches the method pattern # No pattern provided, skipping. # ./spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb:8 Finished in 10 minutes 49 seconds (files took 31.26 seconds to load) 2021 examples, 0 failures, 9 pending Tue Oct 15 08:51:45 UTC 2019 section_end:1571129506:build_script [0Ksection_start:1571129506:after_script [0K[32;1mRunning after script...[0;m [32;1m$ date[0;m Tue Oct 15 08:51:49 UTC 2019 section_end:1571129511:after_script [0Ksection_start:1571129511:archive_cache [0K[32;1mNot uploading cache debian-stretch-ruby-2.6.3-node-12.x-2 due to policy[0;m section_end:1571129516:archive_cache [0Ksection_start:1571129516:upload_artifacts_on_success [0K[32;1mUploading artifacts...[0;m coverage/: found 5 matching files [0;m knapsack/: found 6 matching files [0;m rspec_flaky/: found 4 matching files [0;m rspec_profiling/: found 1 matching files [0;m [0;33mWARNING: tmp/capybara/: no matching files [0;m tmp/memory_test/: found 2 matching files [0;m Uploading artifacts to coordinator... ok [0;m id[0;m=321109334 responseStatus[0;m=201 Created token[0;m=cCHirG4d [32;1mUploading artifacts...[0;m junit_rspec.xml: found 1 matching files [0;m Uploading artifacts to coordinator... ok [0;m id[0;m=321109334 responseStatus[0;m=201 Created token[0;m=cCHirG4d section_end:1571129524:upload_artifacts_on_success [0K[32;1mJob succeeded [0;m