summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-08-02 18:12:15 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-08-02 18:12:15 +0000
commite28bb9d18133611eef2a1357c57dc57ca97cfd5a (patch)
treeaee3bab9fa515d456ab7fff5b7c9819ef9da0244
parent9c33625b8e47c6aa96095018a0c1dd3f22c2ce1e (diff)
downloadgitlab-ce-e28bb9d18133611eef2a1357c57dc57ca97cfd5a.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--.gitlab/ci/qa.gitlab-ci.yml2
-rw-r--r--.gitlab/issue_templates/Implementation.md13
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock4
-rw-r--r--app/assets/javascripts/runner/components/cells/runner_summary_cell.vue6
-rw-r--r--app/events/projects/project_archived_event.rb17
-rw-r--r--app/models/lfs_object.rb2
-rw-r--r--app/services/projects/update_service.rb14
-rw-r--r--config/feature_flags/development/archive_rate_limit.yml2
-rw-r--r--config/feature_flags/development/async_commit_diff_files.yml2
-rw-r--r--config/feature_flags/development/branch_list_keyset_pagination.yml2
-rw-r--r--config/feature_flags/development/increase_page_size_exponentially.yml2
-rw-r--r--config/feature_flags/development/json_wrapper_legacy_mode.yml2
-rw-r--r--config/feature_flags/development/repository_archive_hotlinking_interception.yml2
-rw-r--r--config/feature_flags/development/unlink_fork_network_upon_visibility_decrease.yml2
-rw-r--r--config/feature_flags/development/workhorse_archive_cache_disabled.yml2
-rw-r--r--doc/development/service_ping/implement.md2
-rw-r--r--doc/user/project/pages/custom_domains_ssl_tls_certification/dns_concepts.md1
-rw-r--r--lib/gitlab/memory/jemalloc.rb10
-rw-r--r--lib/gitlab/memory/reports/jemalloc_stats.rb3
-rw-r--r--lib/gitlab/memory/reports_daemon.rb15
-rw-r--r--package.json2
-rw-r--r--qa/Dockerfile2
-rw-r--r--spec/events/projects/project_archived_event_spec.rb44
-rw-r--r--spec/frontend/runner/components/cells/runner_summary_cell_spec.js13
-rw-r--r--spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb2
-rw-r--r--spec/lib/gitlab/memory/jemalloc_spec.rb5
-rw-r--r--spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb32
-rw-r--r--spec/lib/gitlab/memory/reports_daemon_spec.rb22
-rw-r--r--spec/models/lfs_object_spec.rb4
-rw-r--r--spec/services/projects/update_service_spec.rb12
-rw-r--r--spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb8
-rw-r--r--yarn.lock8
34 files changed, 194 insertions, 69 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0ff1c6951c7..486da5bb906 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -84,7 +84,7 @@ variables:
GIT_SUBMODULE_STRATEGY: "none"
GET_SOURCES_ATTEMPTS: "3"
DEBIAN_VERSION: "bullseye"
- CHROME_VERSION: "101"
+ CHROME_VERSION: "103"
DOCKER_VERSION: "20.10.14"
RUBY_VERSION: "2.7"
diff --git a/.gitlab/ci/qa.gitlab-ci.yml b/.gitlab/ci/qa.gitlab-ci.yml
index 4ee080343a9..a71aac4225e 100644
--- a/.gitlab/ci/qa.gitlab-ci.yml
+++ b/.gitlab/ci/qa.gitlab-ci.yml
@@ -1,5 +1,5 @@
.qa-job-base:
- image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-2.7:bundler-2.3-git-2.33-chrome-${CHROME_VERSION}
+ image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/debian-bullseye-ruby-2.7:bundler-2.3-chrome-103-docker-20.10.14
extends:
- .default-retry
- .qa-cache
diff --git a/.gitlab/issue_templates/Implementation.md b/.gitlab/issue_templates/Implementation.md
index f57bfae4da3..e09f807d3d9 100644
--- a/.gitlab/issue_templates/Implementation.md
+++ b/.gitlab/issue_templates/Implementation.md
@@ -37,13 +37,20 @@ Add details for required items and delete others.
## Implementation plan
<!--
-Steps and the parts of the code that will need to get updated. The plan can also
-call-out responsibilities for other team members or teams.
+Steps and the parts of the code that will need to get updated.
+The plan can also call-out responsibilities for other team members or teams and
+can be split into smaller MRs to simplify the code review process.
e.g.:
+- MR 1: Part 1
+- [ ] ~frontend Step 1
+- [ ] ~frontend Step 2
+- MR 2: Part 2
+- [ ] ~backend Step 1
+- [ ] ~backend Step 2
+- MR 3: Part 3
- [ ] ~frontend Step 1
- - [ ] `@person` Step 1a
- [ ] ~frontend Step 2
-->
diff --git a/Gemfile b/Gemfile
index 3736df605cf..b047dc4e54d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -168,7 +168,7 @@ gem 'asciidoctor', '~> 2.0.10'
gem 'asciidoctor-include-ext', '~> 0.4.0', require: false
gem 'asciidoctor-plantuml', '~> 0.0.12'
gem 'asciidoctor-kroki', '~> 0.5.0', require: false
-gem 'rouge', '~> 3.29.0'
+gem 'rouge', '~> 3.30.0'
gem 'truncato', '~> 0.7.11'
gem 'bootstrap_form', '~> 4.2.0'
gem 'nokogiri', '~> 1.13.6'
diff --git a/Gemfile.lock b/Gemfile.lock
index 99f9828cb0d..6af20938e38 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1126,7 +1126,7 @@ GEM
rexml (3.2.5)
rinku (2.0.0)
rotp (6.2.0)
- rouge (3.29.0)
+ rouge (3.30.0)
rqrcode (0.7.0)
chunky_png
rqrcode-rails3 (0.1.7)
@@ -1699,7 +1699,7 @@ DEPENDENCIES
responders (~> 3.0)
retriable (~> 3.1.2)
rexml (~> 3.2.5)
- rouge (~> 3.29.0)
+ rouge (~> 3.30.0)
rqrcode-rails3 (~> 0.1.7)
rspec-benchmark (~> 0.6.0)
rspec-parameterized
diff --git a/app/assets/javascripts/runner/components/cells/runner_summary_cell.vue b/app/assets/javascripts/runner/components/cells/runner_summary_cell.vue
index 1eb383a1904..1cd098d6713 100644
--- a/app/assets/javascripts/runner/components/cells/runner_summary_cell.vue
+++ b/app/assets/javascripts/runner/components/cells/runner_summary_cell.vue
@@ -59,7 +59,11 @@ export default {
<tooltip-on-truncate class="gl-display-block gl-text-truncate" :title="description">
{{ description }}
</tooltip-on-truncate>
- <tooltip-on-truncate class="gl-display-block gl-text-truncate" :title="ipAddress">
+ <tooltip-on-truncate
+ v-if="ipAddress"
+ class="gl-display-block gl-text-truncate"
+ :title="ipAddress"
+ >
<span class="gl-md-display-none gl-lg-display-inline">{{ __('IP Address') }}</span>
<strong>{{ ipAddress }}</strong>
</tooltip-on-truncate>
diff --git a/app/events/projects/project_archived_event.rb b/app/events/projects/project_archived_event.rb
new file mode 100644
index 00000000000..9ac83fd791b
--- /dev/null
+++ b/app/events/projects/project_archived_event.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Projects
+ class ProjectArchivedEvent < ::Gitlab::EventStore::Event
+ def schema
+ {
+ 'type' => 'object',
+ 'properties' => {
+ 'project_id' => { 'type' => 'integer' },
+ 'namespace_id' => { 'type' => 'integer' },
+ 'root_namespace_id' => { 'type' => 'integer' }
+ },
+ 'required' => %w[project_id namespace_id root_namespace_id]
+ }
+ end
+ end
+end
diff --git a/app/models/lfs_object.rb b/app/models/lfs_object.rb
index caeffae7bda..8aa48561e60 100644
--- a/app/models/lfs_object.rb
+++ b/app/models/lfs_object.rb
@@ -15,7 +15,7 @@ class LfsObject < ApplicationRecord
scope :for_oids, -> (oids) { where(oid: oids) }
scope :for_oid_and_size, -> (oid, size) { find_by(oid: oid, size: size) }
- validates :oid, presence: true, uniqueness: true
+ validates :oid, presence: true, uniqueness: true, format: { with: /\A\h{64}\z/ }
mount_file_store_uploader LfsObjectUploader
diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb
index 5708421014a..d757b0700b9 100644
--- a/app/services/projects/update_service.rb
+++ b/app/services/projects/update_service.rb
@@ -121,6 +121,8 @@ module Projects
end
update_pending_builds if runners_settings_toggled?
+
+ publish_event
end
def after_rename_service(project)
@@ -209,6 +211,18 @@ module Projects
[]
end
end
+
+ def publish_event
+ return unless project.archived_previously_changed?
+
+ event = Projects::ProjectArchivedEvent.new(data: {
+ project_id: @project.id,
+ namespace_id: @project.namespace_id,
+ root_namespace_id: @project.root_namespace.id
+ })
+
+ Gitlab::EventStore.publish(event)
+ end
end
end
diff --git a/config/feature_flags/development/archive_rate_limit.yml b/config/feature_flags/development/archive_rate_limit.yml
index 3318d7fa939..e5840c1dab3 100644
--- a/config/feature_flags/development/archive_rate_limit.yml
+++ b/config/feature_flags/development/archive_rate_limit.yml
@@ -1,7 +1,7 @@
---
name: archive_rate_limit
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25750
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369432
milestone: '12.9'
type: development
group: group::source code
diff --git a/config/feature_flags/development/async_commit_diff_files.yml b/config/feature_flags/development/async_commit_diff_files.yml
index a4519835fa1..0cadf592cc1 100644
--- a/config/feature_flags/development/async_commit_diff_files.yml
+++ b/config/feature_flags/development/async_commit_diff_files.yml
@@ -1,7 +1,7 @@
---
name: async_commit_diff_files
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/38450
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369439
milestone: '13.3'
type: development
group: group::source code
diff --git a/config/feature_flags/development/branch_list_keyset_pagination.yml b/config/feature_flags/development/branch_list_keyset_pagination.yml
index 12200292058..7e8e437fa96 100644
--- a/config/feature_flags/development/branch_list_keyset_pagination.yml
+++ b/config/feature_flags/development/branch_list_keyset_pagination.yml
@@ -1,7 +1,7 @@
---
name: branch_list_keyset_pagination
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/35819
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369435
milestone: '13.2'
type: development
group: group::source code
diff --git a/config/feature_flags/development/increase_page_size_exponentially.yml b/config/feature_flags/development/increase_page_size_exponentially.yml
index 88f05d1e850..8297a4078fa 100644
--- a/config/feature_flags/development/increase_page_size_exponentially.yml
+++ b/config/feature_flags/development/increase_page_size_exponentially.yml
@@ -1,7 +1,7 @@
---
name: increase_page_size_exponentially
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66174
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369434
milestone: '14.1'
type: development
group: group::source code
diff --git a/config/feature_flags/development/json_wrapper_legacy_mode.yml b/config/feature_flags/development/json_wrapper_legacy_mode.yml
index 13a4bb30d09..071f5ef7022 100644
--- a/config/feature_flags/development/json_wrapper_legacy_mode.yml
+++ b/config/feature_flags/development/json_wrapper_legacy_mode.yml
@@ -1,7 +1,7 @@
---
name: json_wrapper_legacy_mode
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30849
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369436
milestone: '13.0'
type: development
group: group::source code
diff --git a/config/feature_flags/development/repository_archive_hotlinking_interception.yml b/config/feature_flags/development/repository_archive_hotlinking_interception.yml
index 56943627231..dbdde4993f8 100644
--- a/config/feature_flags/development/repository_archive_hotlinking_interception.yml
+++ b/config/feature_flags/development/repository_archive_hotlinking_interception.yml
@@ -1,7 +1,7 @@
---
name: repository_archive_hotlinking_interception
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/50c11f278d18fe1f3fb12eb595067216bb58ade2
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369433
milestone: '12.10'
type: development
group: group::source code
diff --git a/config/feature_flags/development/unlink_fork_network_upon_visibility_decrease.yml b/config/feature_flags/development/unlink_fork_network_upon_visibility_decrease.yml
index c94b48d8329..e7e220c310b 100644
--- a/config/feature_flags/development/unlink_fork_network_upon_visibility_decrease.yml
+++ b/config/feature_flags/development/unlink_fork_network_upon_visibility_decrease.yml
@@ -1,7 +1,7 @@
---
name: unlink_fork_network_upon_visibility_decrease
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20466
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369438
milestone: '12.6'
type: development
group: group::source code
diff --git a/config/feature_flags/development/workhorse_archive_cache_disabled.yml b/config/feature_flags/development/workhorse_archive_cache_disabled.yml
index e40741863d4..fb171616dc5 100644
--- a/config/feature_flags/development/workhorse_archive_cache_disabled.yml
+++ b/config/feature_flags/development/workhorse_archive_cache_disabled.yml
@@ -1,7 +1,7 @@
---
name: workhorse_archive_cache_disabled
introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/16325
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369437
milestone: '10.5'
type: development
group: group::source code
diff --git a/doc/development/service_ping/implement.md b/doc/development/service_ping/implement.md
index 3263ba6458e..9a4f4e52241 100644
--- a/doc/development/service_ping/implement.md
+++ b/doc/development/service_ping/implement.md
@@ -9,7 +9,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
Service Ping consists of two kinds of data:
- **Counters**: Track how often a certain event happened over time, such as how many CI/CD pipelines have run.
- They are monotonic and always trend up.
+ They are monotonic and usually trend up.
- **Observations**: Facts collected from one or more GitLab instances and can carry arbitrary data.
There are no general guidelines for how to collect those, due to the individual nature of that data.
diff --git a/doc/user/project/pages/custom_domains_ssl_tls_certification/dns_concepts.md b/doc/user/project/pages/custom_domains_ssl_tls_certification/dns_concepts.md
index 6daf671a751..c4c30dbdab4 100644
--- a/doc/user/project/pages/custom_domains_ssl_tls_certification/dns_concepts.md
+++ b/doc/user/project/pages/custom_domains_ssl_tls_certification/dns_concepts.md
@@ -32,6 +32,7 @@ for the most popular hosting services:
<!-- vale gitlab.Spelling = NO -->
+- [123-reg](https://www.123-reg.co.uk/support/domains/domain-name-server-dns-management-guide/)
- [Amazon](https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html)
- [Bluehost](https://www.bluehost.com/help/article/dns-management-add-edit-or-delete-dns-entries)
- [Cloudflare](https://support.cloudflare.com/hc/en-us/articles/201720164-Creating-a-Cloudflare-account-and-adding-a-website)
diff --git a/lib/gitlab/memory/jemalloc.rb b/lib/gitlab/memory/jemalloc.rb
index fbe5ae656b9..7163a70a5cb 100644
--- a/lib/gitlab/memory/jemalloc.rb
+++ b/lib/gitlab/memory/jemalloc.rb
@@ -29,16 +29,20 @@ module Gitlab
# @param [String] path Directory path the dump will be put into
# @param [String] format `json` or `txt`
# @param [String] filename_label Optional custom string that will be injected into the file name, e.g. `worker_0`
- # @return [void]
+ # @return [String] Full path to the resulting dump file
def dump_stats(path:, format: STATS_DEFAULT_FORMAT, filename_label: nil)
verify_format!(format)
+ format_settings = STATS_FORMATS[format]
+ file_path = File.join(path, file_name(format_settings[:extension], filename_label))
+
with_malloc_stats_print do |stats_print|
- format_settings = STATS_FORMATS[format]
- File.open(File.join(path, file_name(format_settings[:extension], filename_label)), 'wb') do |io|
+ File.open(file_path, 'wb') do |io|
write_stats(stats_print, io, format_settings)
end
end
+
+ file_path
end
private
diff --git a/lib/gitlab/memory/reports/jemalloc_stats.rb b/lib/gitlab/memory/reports/jemalloc_stats.rb
index b3848d40770..b99bec4ac3e 100644
--- a/lib/gitlab/memory/reports/jemalloc_stats.rb
+++ b/lib/gitlab/memory/reports/jemalloc_stats.rb
@@ -23,8 +23,7 @@ module Gitlab
def run
return unless active?
- Gitlab::Memory::Jemalloc.dump_stats(path: reports_path, filename_label: worker_id)
- cleanup
+ Gitlab::Memory::Jemalloc.dump_stats(path: reports_path, filename_label: worker_id).tap { cleanup }
end
def active?
diff --git a/lib/gitlab/memory/reports_daemon.rb b/lib/gitlab/memory/reports_daemon.rb
index 8788bee27a6..ed1da8baab5 100644
--- a/lib/gitlab/memory/reports_daemon.rb
+++ b/lib/gitlab/memory/reports_daemon.rb
@@ -39,12 +39,12 @@ module Gitlab
start_monotonic_time = Gitlab::Metrics::System.monotonic_time
start_thread_cpu_time = Gitlab::Metrics::System.thread_cpu_time
- report.run
+ file_path = report.run
cpu_s = Gitlab::Metrics::System.thread_cpu_duration(start_thread_cpu_time)
duration_s = Gitlab::Metrics::System.monotonic_time - start_monotonic_time
- log_report(label: report_label(report), cpu_s: cpu_s, duration_s: duration_s)
+ log_report(label: report_label(report), cpu_s: cpu_s, duration_s: duration_s, size: file_size(file_path))
@report_duration_counter.increment({ report: report_label(report) }, duration_s)
sleep sleep_between_reports_s
@@ -62,14 +62,15 @@ module Gitlab
sleep_s + rand(sleep_max_delta_s)
end
- def log_report(label:, duration_s:, cpu_s:)
+ def log_report(label:, duration_s:, cpu_s:, size:)
Gitlab::AppLogger.info(
message: 'finished',
pid: $$,
worker_id: worker_id,
perf_report: label,
duration_s: duration_s.round(2),
- cpu_s: cpu_s.round(2)
+ cpu_s: cpu_s.round(2),
+ perf_report_size_bytes: size
)
end
@@ -94,6 +95,12 @@ module Gitlab
default_labels
)
end
+
+ def file_size(file_path)
+ File.size(file_path.to_s)
+ rescue Errno::ENOENT
+ 0
+ end
end
end
end
diff --git a/package.json b/package.json
index 4719011a6b8..9bb0cb98a05 100644
--- a/package.json
+++ b/package.json
@@ -100,7 +100,7 @@
"codesandbox-api": "0.0.23",
"compression-webpack-plugin": "^5.0.2",
"copy-webpack-plugin": "^6.4.1",
- "core-js": "^3.24.0",
+ "core-js": "^3.24.1",
"cron-validator": "^1.1.1",
"cronstrue": "^1.122.0",
"cropper": "^2.3.0",
diff --git a/qa/Dockerfile b/qa/Dockerfile
index 9611b3653eb..341732ab56f 100644
--- a/qa/Dockerfile
+++ b/qa/Dockerfile
@@ -1,5 +1,5 @@
ARG DOCKER_VERSION=20.10.14
-ARG CHROME_VERSION=101
+ARG CHROME_VERSION=103
ARG QA_BUILD_TARGET=qa
FROM registry.gitlab.com/gitlab-org/gitlab-build-images/debian-bullseye-ruby-2.7:bundler-2.3-git-2.33-lfs-2.9-chrome-${CHROME_VERSION}-docker-${DOCKER_VERSION}-gcloud-383-kubectl-1.23 AS qa
diff --git a/spec/events/projects/project_archived_event_spec.rb b/spec/events/projects/project_archived_event_spec.rb
new file mode 100644
index 00000000000..c68c9b5e114
--- /dev/null
+++ b/spec/events/projects/project_archived_event_spec.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Projects::ProjectArchivedEvent do
+ subject(:constructor) { described_class.new(data: data) }
+
+ where(:data, :valid) do
+ valid_event = {
+ project_id: 1,
+ namespace_id: 2,
+ root_namespace_id: 3
+ }
+
+ # All combinations of missing keys
+ with_missing_keys = 0.upto(valid_event.size - 1)
+ .flat_map { |size| valid_event.keys.combination(size).to_a }
+ .map { |keys| [valid_event.slice(*keys), false] }
+
+ [
+ [valid_event, true],
+ *with_missing_keys,
+ [{ project_id: 'foo', namespace_id: 2 }, false],
+ [{ project_id: 1, namespace_id: 'foo' }, false],
+ [{ project_id: [], namespace_id: 2 }, false],
+ [{ project_id: 1, namespace_id: [] }, false],
+ [{ project_id: {}, namespace_id: 2 }, false],
+ [{ project_id: 1, namespace_id: {} }, false],
+ ['foo', false],
+ [123, false],
+ [[], false]
+ ]
+ end
+
+ with_them do
+ it 'validates data' do
+ if valid
+ expect { constructor }.not_to raise_error
+ else
+ expect { constructor }.to raise_error(Gitlab::EventStore::InvalidEvent)
+ end
+ end
+ end
+end
diff --git a/spec/frontend/runner/components/cells/runner_summary_cell_spec.js b/spec/frontend/runner/components/cells/runner_summary_cell_spec.js
index b2e8c5a3ad9..b06ab652212 100644
--- a/spec/frontend/runner/components/cells/runner_summary_cell_spec.js
+++ b/spec/frontend/runner/components/cells/runner_summary_cell_spec.js
@@ -1,3 +1,4 @@
+import { __ } from '~/locale';
import { mountExtended } from 'helpers/vue_test_utils_helper';
import RunnerSummaryCell from '~/runner/components/cells/runner_summary_cell.vue';
import { INSTANCE_TYPE, PROJECT_TYPE } from '~/runner/constants';
@@ -61,8 +62,16 @@ describe('RunnerTypeCell', () => {
expect(wrapper.text()).toContain(mockDescription);
});
- it('Displays the runner ip address', () => {
- expect(wrapper.text()).toContain(mockIpAddress);
+ it('Displays ip address', () => {
+ expect(wrapper.text()).toContain(`${__('IP Address')} ${mockIpAddress}`);
+ });
+
+ it('Displays no ip address', () => {
+ createComponent({
+ ipAddress: null,
+ });
+
+ expect(wrapper.text()).not.toContain(__('IP Address'));
});
it('Displays a custom slot', () => {
diff --git a/spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb b/spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb
index 6dfd4424342..251829b83a0 100644
--- a/spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe Gitlab::GithubImport::Importer::LfsObjectsImporter do
let(:lfs_attributes) do
{
- oid: 'oid',
+ oid: 'a' * 64,
size: 1,
link: 'http://www.gitlab.com/lfs_objects/oid'
}
diff --git a/spec/lib/gitlab/memory/jemalloc_spec.rb b/spec/lib/gitlab/memory/jemalloc_spec.rb
index cd7218330c2..482ac6e5802 100644
--- a/spec/lib/gitlab/memory/jemalloc_spec.rb
+++ b/spec/lib/gitlab/memory/jemalloc_spec.rb
@@ -28,11 +28,12 @@ RSpec.describe Gitlab::Memory::Jemalloc do
describe '.dump_stats' do
it 'writes stats JSON file' do
- described_class.dump_stats(path: outdir, format: format)
+ file_path = described_class.dump_stats(path: outdir, format: format)
file = Dir.entries(outdir).find { |e| e.match(/jemalloc_stats\.#{$$}\.\d+\.json$/) }
expect(file).not_to be_nil
- expect(File.read(File.join(outdir, file))).to eq(output)
+ expect(file_path).to eq(File.join(outdir, file))
+ expect(File.read(file_path)).to eq(output)
end
end
end
diff --git a/spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb b/spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb
index 1b056b87bf9..81bf5ce119f 100644
--- a/spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb
+++ b/spec/lib/gitlab/memory/reports/jemalloc_stats_spec.rb
@@ -3,34 +3,24 @@
require 'spec_helper'
RSpec.describe Gitlab::Memory::Reports::JemallocStats do
- let(:jemalloc_stats) { described_class.new(reports_path: '/empty-dir') }
+ let(:reports_dir) {'/empty-dir'}
+ let(:jemalloc_stats) { described_class.new(reports_path: reports_dir) }
describe '.run' do
context 'when :report_jemalloc_stats ops FF is enabled' do
- let(:worker_id) { 'puma_1' }
+ let(:worker_id) {'puma_1'}
+ let(:report_name) {'report.json'}
+ let(:report_path) { File.join(reports_dir, report_name) }
before do
allow(Prometheus::PidProvider).to receive(:worker_id).and_return(worker_id)
end
- context 'when GITLAB_DIAGNOSTIC_REPORTS_PATH env var is set' do
- let(:reports_dir) { '/empty-dir' }
+ it 'invokes Jemalloc.dump_stats and returns file path' do
+ expect(Gitlab::Memory::Jemalloc)
+ .to receive(:dump_stats).with(path: reports_dir, filename_label: worker_id).and_return(report_path)
- before do
- stub_env('GITLAB_DIAGNOSTIC_REPORTS_PATH', reports_dir)
- end
-
- it 'writes reports into custom dir while enabled' do
- expect(Gitlab::Memory::Jemalloc).to receive(:dump_stats).with(path: reports_dir, filename_label: worker_id)
-
- jemalloc_stats.run
- end
- end
-
- it 'writes reports into default dir while enabled' do
- expect(Gitlab::Memory::Jemalloc).to receive(:dump_stats).with(path: '/empty-dir', filename_label: worker_id)
-
- jemalloc_stats.run
+ expect(jemalloc_stats.run).to eq(report_path)
end
describe 'reports cleanup' do
@@ -108,10 +98,10 @@ RSpec.describe Gitlab::Memory::Reports::JemallocStats do
stub_feature_flags(report_jemalloc_stats: false)
end
- it 'does not run the report' do
+ it 'does not run the report and returns nil' do
expect(Gitlab::Memory::Jemalloc).not_to receive(:dump_stats)
- jemalloc_stats.run
+ expect(jemalloc_stats.run).to be_nil
end
end
end
diff --git a/spec/lib/gitlab/memory/reports_daemon_spec.rb b/spec/lib/gitlab/memory/reports_daemon_spec.rb
index 6af317f2771..c9562470971 100644
--- a/spec/lib/gitlab/memory/reports_daemon_spec.rb
+++ b/spec/lib/gitlab/memory/reports_daemon_spec.rb
@@ -7,6 +7,7 @@ RSpec.describe Gitlab::Memory::ReportsDaemon do
describe '#run_thread' do
let(:report_duration_counter) { instance_double(::Prometheus::Client::Counter) }
+ let(:file_size) { 1_000_000 }
before do
allow(Gitlab::Metrics).to receive(:counter).and_return(report_duration_counter)
@@ -17,10 +18,12 @@ RSpec.describe Gitlab::Memory::ReportsDaemon do
# let alive return 3 times: true, true, false
allow(daemon).to receive(:alive).and_return(true, true, false)
+
+ allow(File).to receive(:size).with(/#{daemon.reports_path}.*\.json/).and_return(file_size)
end
it 'runs reports' do
- expect(daemon.send(:reports)).to all(receive(:run).twice)
+ expect(daemon.send(:reports)).to all(receive(:run).twice.and_call_original)
daemon.send(:run_thread)
end
@@ -32,6 +35,7 @@ RSpec.describe Gitlab::Memory::ReportsDaemon do
hash_including(
:duration_s,
:cpu_s,
+ perf_report_size_bytes: file_size,
message: 'finished',
pid: Process.pid,
worker_id: 'worker_1',
@@ -41,6 +45,18 @@ RSpec.describe Gitlab::Memory::ReportsDaemon do
daemon.send(:run_thread)
end
+ context 'when the report object returns invalid file path' do
+ before do
+ allow(File).to receive(:size).with(/#{daemon.reports_path}.*\.json/).and_raise(Errno::ENOENT)
+ end
+
+ it 'logs `0` as `perf_report_size_bytes`' do
+ expect(Gitlab::AppLogger).to receive(:info).with(hash_including(perf_report_size_bytes: 0)).twice
+
+ daemon.send(:run_thread)
+ end
+ end
+
it 'sets real time duration gauge' do
expect(report_duration_counter).to receive(:increment).with({ report: 'jemalloc_stats' }, an_instance_of(Float))
@@ -58,8 +74,8 @@ RSpec.describe Gitlab::Memory::ReportsDaemon do
allow(daemon).to receive(:reports).and_return([active_report_1, inactive_report, active_report_2])
- expect(active_report_1).to receive(:run).twice
- expect(active_report_2).to receive(:run).twice
+ expect(active_report_1).to receive(:run).and_return('/tmp/report_1.json').twice
+ expect(active_report_2).to receive(:run).and_return('/tmp/report_2.json').twice
expect(inactive_report).not_to receive(:run)
daemon.send(:run_thread)
diff --git a/spec/models/lfs_object_spec.rb b/spec/models/lfs_object_spec.rb
index 5210709a468..c25d0451f18 100644
--- a/spec/models/lfs_object_spec.rb
+++ b/spec/models/lfs_object_spec.rb
@@ -193,9 +193,9 @@ RSpec.describe LfsObject do
end
describe '.unreferenced_in_batches' do
- let!(:unreferenced_lfs_object1) { create(:lfs_object, oid: '1') }
+ let!(:unreferenced_lfs_object1) { create(:lfs_object, oid: '1' * 64) }
let!(:referenced_lfs_object) { create(:lfs_objects_project).lfs_object }
- let!(:unreferenced_lfs_object2) { create(:lfs_object, oid: '2') }
+ let!(:unreferenced_lfs_object2) { create(:lfs_object, oid: '2' * 64) }
it 'returns lfs objects in batches' do
stub_const('LfsObject::BATCH_SIZE', 1)
diff --git a/spec/services/projects/update_service_spec.rb b/spec/services/projects/update_service_spec.rb
index ca838be0fa8..85d3e99109d 100644
--- a/spec/services/projects/update_service_spec.rb
+++ b/spec/services/projects/update_service_spec.rb
@@ -348,6 +348,18 @@ RSpec.describe Projects::UpdateService do
end
end
+ context 'when archiving a project' do
+ it 'publishes a ProjectTransferedEvent' do
+ expect { update_project(project, user, archived: true) }
+ .to publish_event(Projects::ProjectArchivedEvent)
+ .with(
+ project_id: project.id,
+ namespace_id: project.namespace_id,
+ root_namespace_id: project.root_namespace.id
+ )
+ end
+ end
+
context 'when changing operations feature visibility' do
let(:feature_params) { { operations_access_level: ProjectFeature::DISABLED } }
diff --git a/spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb b/spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb
index 6007d3b34f8..2562a7bc6fe 100644
--- a/spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb
+++ b/spec/workers/remove_unreferenced_lfs_objects_worker_spec.rb
@@ -6,12 +6,12 @@ RSpec.describe RemoveUnreferencedLfsObjectsWorker do
let(:worker) { described_class.new }
describe '#perform' do
- let!(:unreferenced_lfs_object1) { create(:lfs_object, oid: '1') }
- let!(:unreferenced_lfs_object2) { create(:lfs_object, oid: '2') }
+ let!(:unreferenced_lfs_object1) { create(:lfs_object, oid: '1' * 64) }
+ let!(:unreferenced_lfs_object2) { create(:lfs_object, oid: '2' * 64) }
let!(:project1) { create(:project, lfs_enabled: true) }
let!(:project2) { create(:project, lfs_enabled: true) }
- let!(:referenced_lfs_object1) { create(:lfs_object, oid: '3') }
- let!(:referenced_lfs_object2) { create(:lfs_object, oid: '4') }
+ let!(:referenced_lfs_object1) { create(:lfs_object, oid: '3' * 64) }
+ let!(:referenced_lfs_object2) { create(:lfs_object, oid: '4' * 64) }
let!(:lfs_objects_project1_1) do
create(:lfs_objects_project,
project: project1,
diff --git a/yarn.lock b/yarn.lock
index 06d41e82dda..834d04a4bcb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3729,10 +3729,10 @@ core-js-pure@^3.0.0:
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813"
integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==
-core-js@^3.24.0:
- version "3.24.0"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.0.tgz#4928d4e99c593a234eb1a1f9abd3122b04d3ac57"
- integrity sha512-IeOyT8A6iK37Ep4kZDD423mpi6JfPRoPUdQwEWYiGolvn4o6j2diaRzNfDfpTdu3a5qMbrGUzKUpYpRY8jXCkQ==
+core-js@^3.24.1:
+ version "3.24.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.1.tgz#cf7724d41724154010a6576b7b57d94c5d66e64f"
+ integrity sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg==
core-js@~2.3.0:
version "2.3.0"