Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-06-23 06:07:43 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-06-23 06:07:43 +0300
commit0fb62bd3e1df8e54a58382f177edc15926b6b861 (patch)
tree30d7cdd49a08aa4ff54bf615072746e36a7ab2ad /spec
parentec8587780b41c8a895f2b26d60c86bf93be5e038 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/frontend/members/components/app_spec.js21
-rw-r--r--spec/frontend/members/components/filter_sort/members_filtered_search_bar_spec.js12
-rw-r--r--spec/frontend/members/components/members_tabs_spec.js75
-rw-r--r--spec/frontend/members/components/table/members_table_spec.js19
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select_vue/store/mutations_spec.js29
-rw-r--r--spec/frontend/vue_shared/components/sidebar/labels_select_widget/store/mutations_spec.js29
-rw-r--r--spec/initializers/lograge_spec.rb2
-rw-r--r--spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb12
-rw-r--r--spec/lib/gitlab/ci/pipeline/seed/build_spec.rb13
-rw-r--r--spec/lib/gitlab/instrumentation_helper_spec.rb8
-rw-r--r--spec/lib/gitlab/metrics/subscribers/active_record_spec.rb2
-rw-r--r--spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb6
-rw-r--r--spec/models/plan_limits_spec.rb1
-rw-r--r--spec/services/ci/create_pipeline_service/rules_spec.rb16
-rw-r--r--spec/support/shared_examples/metrics/active_record_subscriber_shared_examples.rb9
15 files changed, 147 insertions, 107 deletions
diff --git a/spec/frontend/members/components/app_spec.js b/spec/frontend/members/components/app_spec.js
index b9fdf8792fd..9590cd9d8d4 100644
--- a/spec/frontend/members/components/app_spec.js
+++ b/spec/frontend/members/components/app_spec.js
@@ -5,7 +5,8 @@ import Vuex from 'vuex';
import * as commonUtils from '~/lib/utils/common_utils';
import MembersApp from '~/members/components/app.vue';
import FilterSortContainer from '~/members/components/filter_sort/filter_sort_container.vue';
-import { MEMBER_TYPES } from '~/members/constants';
+import MembersTable from '~/members/components/table/members_table.vue';
+import { MEMBER_TYPES, TAB_QUERY_PARAM_VALUES } from '~/members/constants';
import { RECEIVE_MEMBER_ROLE_ERROR, HIDE_ERROR } from '~/members/store/mutation_types';
import mutations from '~/members/store/mutations';
@@ -19,7 +20,7 @@ describe('MembersApp', () => {
const createComponent = (state = {}, options = {}) => {
store = new Vuex.Store({
modules: {
- [MEMBER_TYPES.user]: {
+ [MEMBER_TYPES.group]: {
namespaced: true,
state: {
showError: true,
@@ -34,7 +35,8 @@ describe('MembersApp', () => {
wrapper = shallowMount(MembersApp, {
localVue,
propsData: {
- namespace: MEMBER_TYPES.user,
+ namespace: MEMBER_TYPES.group,
+ tabQueryParamValue: TAB_QUERY_PARAM_VALUES.group,
},
store,
...options,
@@ -57,7 +59,7 @@ describe('MembersApp', () => {
it('renders and scrolls to error alert', async () => {
createComponent({ showError: false, errorMessage: '' });
- store.commit(`${MEMBER_TYPES.user}/${RECEIVE_MEMBER_ROLE_ERROR}`, {
+ store.commit(`${MEMBER_TYPES.group}/${RECEIVE_MEMBER_ROLE_ERROR}`, {
error: new Error('Network Error'),
});
@@ -77,7 +79,7 @@ describe('MembersApp', () => {
it('does not render and scroll to error alert', async () => {
createComponent();
- store.commit(`${MEMBER_TYPES.user}/${HIDE_ERROR}`);
+ store.commit(`${MEMBER_TYPES.group}/${HIDE_ERROR}`);
await nextTick();
@@ -103,4 +105,13 @@ describe('MembersApp', () => {
expect(findFilterSortContainer().exists()).toBe(true);
});
+
+ it('renders `MembersTable` component and passes `tabQueryParamValue` prop', () => {
+ createComponent();
+
+ const membersTableComponent = wrapper.findComponent(MembersTable);
+
+ expect(membersTableComponent.exists()).toBe(true);
+ expect(membersTableComponent.props('tabQueryParamValue')).toBe(TAB_QUERY_PARAM_VALUES.group);
+ });
});
diff --git a/spec/frontend/members/components/filter_sort/members_filtered_search_bar_spec.js b/spec/frontend/members/components/filter_sort/members_filtered_search_bar_spec.js
index 5e04e20801a..a3b91cb20bb 100644
--- a/spec/frontend/members/components/filter_sort/members_filtered_search_bar_spec.js
+++ b/spec/frontend/members/components/filter_sort/members_filtered_search_bar_spec.js
@@ -216,5 +216,17 @@ describe('MembersFilteredSearchBar', () => {
'https://localhost/?two_factor=enabled&search=foobar&sort=name_asc',
);
});
+
+ it('adds active tab query param', () => {
+ window.location.search = '?tab=invited';
+
+ createComponent();
+
+ findFilteredSearchBar().vm.$emit('onFilter', [
+ { type: 'filtered-search-term', value: { data: 'foobar' } },
+ ]);
+
+ expect(window.location.href).toBe('https://localhost/?search=foobar&tab=invited');
+ });
});
});
diff --git a/spec/frontend/members/components/members_tabs_spec.js b/spec/frontend/members/components/members_tabs_spec.js
index 6f1a6d0c223..33d8eebf7eb 100644
--- a/spec/frontend/members/components/members_tabs_spec.js
+++ b/spec/frontend/members/components/members_tabs_spec.js
@@ -1,9 +1,14 @@
+import { GlTabs } from '@gitlab/ui';
import Vue, { nextTick } from 'vue';
import Vuex from 'vuex';
import { mountExtended } from 'helpers/vue_test_utils_helper';
import MembersApp from '~/members/components/app.vue';
import MembersTabs from '~/members/components/members_tabs.vue';
-import { MEMBER_TYPES } from '~/members/constants';
+import {
+ MEMBER_TYPES,
+ TAB_QUERY_PARAM_VALUES,
+ ACTIVE_TAB_QUERY_PARAM_NAME,
+} from '~/members/constants';
import { pagination } from '../mock_data';
describe('MembersTabs', () => {
@@ -93,6 +98,18 @@ describe('MembersTabs', () => {
wrapper.destroy();
});
+ it('renders `GlTabs` with `syncActiveTabWithQueryParams` and `queryParamName` props set', async () => {
+ await createComponent();
+
+ const glTabsComponent = wrapper.findComponent(GlTabs);
+
+ expect(glTabsComponent.exists()).toBe(true);
+ expect(glTabsComponent.props()).toMatchObject({
+ syncActiveTabWithQueryParams: true,
+ queryParamName: ACTIVE_TAB_QUERY_PARAM_NAME,
+ });
+ });
+
describe('when tabs have a count', () => {
it('renders tabs with count', async () => {
await createComponent();
@@ -106,7 +123,7 @@ describe('MembersTabs', () => {
expect(findActiveTab().text()).toContain('Members');
});
- it('renders `MembersApp` and passes `namespace` prop', async () => {
+ it('renders `MembersApp` and passes `namespace` and `tabQueryParamValue` props', async () => {
await createComponent();
const membersApps = wrapper.findAllComponents(MembersApp).wrappers;
@@ -115,6 +132,10 @@ describe('MembersTabs', () => {
expect(membersApps[1].props('namespace')).toBe(MEMBER_TYPES.group);
expect(membersApps[2].props('namespace')).toBe(MEMBER_TYPES.invite);
expect(membersApps[3].props('namespace')).toBe(MEMBER_TYPES.accessRequest);
+
+ expect(membersApps[1].props('tabQueryParamValue')).toBe(TAB_QUERY_PARAM_VALUES.group);
+ expect(membersApps[2].props('tabQueryParamValue')).toBe(TAB_QUERY_PARAM_VALUES.invite);
+ expect(membersApps[3].props('tabQueryParamValue')).toBe(TAB_QUERY_PARAM_VALUES.accessRequest);
});
});
@@ -127,56 +148,16 @@ describe('MembersTabs', () => {
expect(findTabByText('Invited')).toBeUndefined();
expect(findTabByText('Access requests')).toBeUndefined();
});
- });
- describe('when url param matches `filteredSearchBar.searchParam`', () => {
- beforeEach(() => {
- window.location.search = '?search_groups=foo+bar';
- });
-
- const expectGroupsTabActive = () => {
- expect(findActiveTab().text()).toContain('Groups');
- };
-
- describe('when tab has a count', () => {
- it('sets tab that corresponds to search param as active tab', async () => {
- await createComponent();
-
- expectGroupsTabActive();
+ describe('when url param matches `filteredSearchBar.searchParam`', () => {
+ beforeEach(() => {
+ window.location.search = '?search_groups=foo+bar';
});
- });
-
- describe('when tab does not have a count', () => {
- it('sets tab that corresponds to search param as active tab', async () => {
- await createComponent({ totalItems: 0 });
-
- expectGroupsTabActive();
- });
- });
- });
-
- describe('when url param matches `pagination.paramName`', () => {
- beforeEach(() => {
- window.location.search = '?invited_page=2';
- });
-
- const expectInvitedTabActive = () => {
- expect(findActiveTab().text()).toContain('Invited');
- };
-
- describe('when tab has a count', () => {
- it('sets tab that corresponds to pagination param as active tab', async () => {
- await createComponent();
-
- expectInvitedTabActive();
- });
- });
- describe('when tab does not have a count', () => {
- it('sets tab that corresponds to pagination param as active tab', async () => {
+ it('shows tab that corresponds to search param', async () => {
await createComponent({ totalItems: 0 });
- expectInvitedTabActive();
+ expect(findTabByText('Groups')).not.toBeUndefined();
});
});
});
diff --git a/spec/frontend/members/components/table/members_table_spec.js b/spec/frontend/members/components/table/members_table_spec.js
index 5308d7651a3..3a17d78bd17 100644
--- a/spec/frontend/members/components/table/members_table_spec.js
+++ b/spec/frontend/members/components/table/members_table_spec.js
@@ -15,7 +15,7 @@ import MemberAvatar from '~/members/components/table/member_avatar.vue';
import MemberSource from '~/members/components/table/member_source.vue';
import MembersTable from '~/members/components/table/members_table.vue';
import RoleDropdown from '~/members/components/table/role_dropdown.vue';
-import { MEMBER_TYPES } from '~/members/constants';
+import { MEMBER_TYPES, TAB_QUERY_PARAM_VALUES } from '~/members/constants';
import * as initUserPopovers from '~/user_popovers';
import {
member as memberMock,
@@ -34,7 +34,7 @@ describe('MembersTable', () => {
const createStore = (state = {}) => {
return new Vuex.Store({
modules: {
- [MEMBER_TYPES.user]: {
+ [MEMBER_TYPES.invite]: {
namespaced: true,
state: {
members: [],
@@ -54,11 +54,14 @@ describe('MembersTable', () => {
const createComponent = (state, provide = {}) => {
wrapper = mount(MembersTable, {
localVue,
+ propsData: {
+ tabQueryParamValue: TAB_QUERY_PARAM_VALUES.invite,
+ },
store: createStore(state),
provide: {
sourceId: 1,
currentUserId: 1,
- namespace: MEMBER_TYPES.user,
+ namespace: MEMBER_TYPES.invite,
...provide,
},
stubs: [
@@ -74,7 +77,7 @@ describe('MembersTable', () => {
});
};
- const url = 'https://localhost/foo-bar/-/project_members';
+ const url = 'https://localhost/foo-bar/-/project_members?tab=invited';
const getByText = (text, options) =>
createWrapper(getByTextHelper(wrapper.element, text, options));
@@ -92,7 +95,7 @@ describe('MembersTable', () => {
const expectCorrectLinkToPage2 = () => {
expect(findPagination().findByText('2', { selector: 'a' }).attributes('href')).toBe(
- `${url}?page=2`,
+ `${url}&invited_members_page=2`,
);
};
@@ -271,7 +274,7 @@ describe('MembersTable', () => {
currentPage: 1,
perPage: 5,
totalItems: 10,
- paramName: 'page',
+ paramName: 'invited_members_page',
},
});
@@ -279,14 +282,14 @@ describe('MembersTable', () => {
});
it('removes any url params defined as `null` in the `params` attribute', () => {
- window.location = new URL(`${url}?search_groups=foo`);
+ window.location = new URL(`${url}&search_groups=foo`);
createComponent({
pagination: {
currentPage: 1,
perPage: 5,
totalItems: 10,
- paramName: 'page',
+ paramName: 'invited_members_page',
params: { search_groups: null },
},
});
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select_vue/store/mutations_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select_vue/store/mutations_spec.js
index ab266ac8aed..1d2a9c34599 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select_vue/store/mutations_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select_vue/store/mutations_spec.js
@@ -153,7 +153,16 @@ describe('LabelsSelect Mutations', () => {
});
describe(`${types.UPDATE_SELECTED_LABELS}`, () => {
- const labels = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }];
+ let labels;
+
+ beforeEach(() => {
+ labels = [
+ { id: 1, title: 'scoped::test', set: true },
+ { id: 2, set: false, title: 'scoped::one' },
+ { id: 3, title: '' },
+ { id: 4, title: '' },
+ ];
+ });
it('updates `state.labels` to include `touched` and `set` props based on provided `labels` param', () => {
const updatedLabelIds = [2];
@@ -169,5 +178,23 @@ describe('LabelsSelect Mutations', () => {
}
});
});
+
+ describe('when label is scoped', () => {
+ it('unsets the currently selected scoped label and sets the current label', () => {
+ const state = {
+ labels,
+ };
+ mutations[types.UPDATE_SELECTED_LABELS](state, {
+ labels: [{ id: 2, title: 'scoped::one' }],
+ });
+
+ expect(state.labels).toEqual([
+ { id: 1, title: 'scoped::test', set: false },
+ { id: 2, set: true, title: 'scoped::one', touched: true },
+ { id: 3, title: '' },
+ { id: 4, title: '' },
+ ]);
+ });
+ });
});
});
diff --git a/spec/frontend/vue_shared/components/sidebar/labels_select_widget/store/mutations_spec.js b/spec/frontend/vue_shared/components/sidebar/labels_select_widget/store/mutations_spec.js
index acb275b5d90..9e965cb33e8 100644
--- a/spec/frontend/vue_shared/components/sidebar/labels_select_widget/store/mutations_spec.js
+++ b/spec/frontend/vue_shared/components/sidebar/labels_select_widget/store/mutations_spec.js
@@ -120,7 +120,16 @@ describe('LabelsSelect Mutations', () => {
});
describe(`${types.UPDATE_SELECTED_LABELS}`, () => {
- const labels = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }];
+ let labels;
+
+ beforeEach(() => {
+ labels = [
+ { id: 1, title: 'scoped::test', set: true },
+ { id: 2, set: false, title: 'scoped::one' },
+ { id: 3, title: '' },
+ { id: 4, title: '' },
+ ];
+ });
it('updates `state.labels` to include `touched` and `set` props based on provided `labels` param', () => {
const updatedLabelIds = [2];
@@ -136,5 +145,23 @@ describe('LabelsSelect Mutations', () => {
}
});
});
+
+ describe('when label is scoped', () => {
+ it('unsets the currently selected scoped label and sets the current label', () => {
+ const state = {
+ labels,
+ };
+ mutations[types.UPDATE_SELECTED_LABELS](state, {
+ labels: [{ id: 2, title: 'scoped::one' }],
+ });
+
+ expect(state.labels).toEqual([
+ { id: 1, title: 'scoped::test', set: false },
+ { id: 2, set: true, title: 'scoped::one', touched: true },
+ { id: 3, title: '' },
+ { id: 4, title: '' },
+ ]);
+ });
+ });
});
});
diff --git a/spec/initializers/lograge_spec.rb b/spec/initializers/lograge_spec.rb
index 651b0c8a9b8..a1fd9be299b 100644
--- a/spec/initializers/lograge_spec.rb
+++ b/spec/initializers/lograge_spec.rb
@@ -200,6 +200,8 @@ RSpec.describe 'lograge', type: :request do
%w[
db_primary_wal_count
db_replica_wal_count
+ db_primary_wal_cached_count
+ db_replica_wal_cached_count
db_replica_count
db_replica_cached_count
db_primary_count
diff --git a/spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb b/spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb
index 2e537f40692..687bb82a8ef 100644
--- a/spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb
+++ b/spec/lib/gitlab/ci/pipeline/chain/seed_spec.rb
@@ -203,18 +203,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Chain::Seed do
expect(rspec_variables['VAR1']).to eq('overridden var 1')
end
-
- context 'when the FF ci_workflow_rules_variables is disabled' do
- before do
- stub_feature_flags(ci_workflow_rules_variables: false)
- end
-
- it 'sends root variable' do
- run_chain
-
- expect(rspec_variables['VAR1']).to eq('var 1')
- end
- end
end
context 'N+1 queries' do
diff --git a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb
index 020f957cf70..f6c456e488d 100644
--- a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb
+++ b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb
@@ -250,19 +250,6 @@ RSpec.describe Gitlab::Ci::Pipeline::Seed::Build do
{ key: 'VAR4', value: 'new var pipeline 4', public: true }]
)
end
-
- context 'when FF ci_workflow_rules_variables is disabled' do
- before do
- stub_feature_flags(ci_workflow_rules_variables: false)
- end
-
- it 'returns existing yaml variables' do
- expect(subject[:yaml_variables]).to match_array(
- [{ key: 'VAR2', value: 'var 2', public: true },
- { key: 'VAR3', value: 'var 3', public: true }]
- )
- end
- end
end
context 'when root_variables_inheritance is false' do
diff --git a/spec/lib/gitlab/instrumentation_helper_spec.rb b/spec/lib/gitlab/instrumentation_helper_spec.rb
index 28ae90d4947..1460af3488d 100644
--- a/spec/lib/gitlab/instrumentation_helper_spec.rb
+++ b/spec/lib/gitlab/instrumentation_helper_spec.rb
@@ -133,7 +133,9 @@ RSpec.describe Gitlab::InstrumentationHelper do
db_primary_count: 0,
db_primary_cached_count: 0,
db_primary_wal_count: 0,
- db_replica_wal_count: 0)
+ db_replica_wal_count: 0,
+ db_primary_wal_cached_count: 0,
+ db_replica_wal_cached_count: 0)
end
end
@@ -150,7 +152,9 @@ RSpec.describe Gitlab::InstrumentationHelper do
db_primary_count: 0,
db_primary_cached_count: 0,
db_primary_wal_count: 0,
- db_replica_wal_count: 0)
+ db_replica_wal_count: 0,
+ db_primary_wal_cached_count: 0,
+ db_replica_wal_cached_count: 0)
end
end
end
diff --git a/spec/lib/gitlab/metrics/subscribers/active_record_spec.rb b/spec/lib/gitlab/metrics/subscribers/active_record_spec.rb
index 915f28ec6e9..6fc8f090431 100644
--- a/spec/lib/gitlab/metrics/subscribers/active_record_spec.rb
+++ b/spec/lib/gitlab/metrics/subscribers/active_record_spec.rb
@@ -183,6 +183,8 @@ RSpec.describe Gitlab::Metrics::Subscribers::ActiveRecord do
'SQL' | 'UPDATE users SET admin = true WHERE id = 10' | true | true | false | false
'SQL' | 'SELECT pg_current_wal_insert_lsn()::text AS location' | true | false | false | true
'SQL' | 'SELECT pg_last_wal_replay_lsn()::text AS location' | true | false | false | true
+ 'CACHE' | 'SELECT pg_current_wal_insert_lsn()::text AS location' | true | false | true | true
+ 'CACHE' | 'SELECT pg_last_wal_replay_lsn()::text AS location' | true | false | true | true
'CACHE' | 'SELECT * FROM users WHERE id = 10' | true | false | true | false
'SCHEMA' | "SELECT attr.attname FROM pg_attribute attr INNER JOIN pg_constraint cons ON attr.attrelid = cons.conrelid AND attr.attnum = any(cons.conkey) WHERE cons.contype = 'p' AND cons.conrelid = '\"projects\"'::regclass" | false | false | false | false
nil | 'BEGIN' | false | false | false | false
diff --git a/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb b/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb
index 22deaca824a..4406b34e638 100644
--- a/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb
+++ b/spec/lib/gitlab/sidekiq_logging/structured_logger_spec.rb
@@ -314,7 +314,9 @@ RSpec.describe Gitlab::SidekiqLogging::StructuredLogger do
'db_primary_cached_count' => 0,
'db_primary_wal_count' => 0,
'db_primary_duration_s' => a_value > 0,
- "db_primary_#{dbname}_duration_s" => a_value > 0
+ "db_primary_#{dbname}_duration_s" => a_value > 0,
+ 'db_primary_wal_cached_count' => 0,
+ 'db_replica_wal_cached_count' => 0
)
end
@@ -336,6 +338,8 @@ RSpec.describe Gitlab::SidekiqLogging::StructuredLogger do
'db_primary_count' => 0,
'db_primary_cached_count' => 0,
'db_primary_wal_count' => 0,
+ 'db_primary_wal_cached_count' => 0,
+ 'db_replica_wal_cached_count' => 0,
'db_primary_duration_s' => 0
)
end
diff --git a/spec/models/plan_limits_spec.rb b/spec/models/plan_limits_spec.rb
index cf8e30023eb..07347dfb6ec 100644
--- a/spec/models/plan_limits_spec.rb
+++ b/spec/models/plan_limits_spec.rb
@@ -184,6 +184,7 @@ RSpec.describe PlanLimits do
ci_max_artifact_size_junit
ci_max_artifact_size_sast
ci_max_artifact_size_dast
+ ci_max_artifact_size_running_container_scanning
ci_max_artifact_size_codequality
ci_max_artifact_size_license_management
ci_max_artifact_size_performance
diff --git a/spec/services/ci/create_pipeline_service/rules_spec.rb b/spec/services/ci/create_pipeline_service/rules_spec.rb
index 33ec6aacc44..acdf38bbc13 100644
--- a/spec/services/ci/create_pipeline_service/rules_spec.rb
+++ b/spec/services/ci/create_pipeline_service/rules_spec.rb
@@ -230,22 +230,6 @@ RSpec.describe Ci::CreatePipelineService do
[nil, nil, nil, 'job var 4', nil, nil, 'overridden var 7']
)
end
-
- context 'when FF ci_workflow_rules_variables is disabled' do
- before do
- stub_feature_flags(ci_workflow_rules_variables: false)
- end
-
- it 'does not affect workflow variables but job variables' do
- expect(job1.scoped_variables.to_hash.values_at(*variable_keys)).to eq(
- ['overridden var 1', 'job var 2', nil, 'workflow var 4', 'job var 5', nil, 'workflow var 7']
- )
-
- expect(job2.scoped_variables.to_hash.values_at(*variable_keys)).to eq(
- [nil, nil, nil, 'job var 4', nil, nil, 'overridden var 7']
- )
- end
- end
end
context 'when matching to the second rule' do
diff --git a/spec/support/shared_examples/metrics/active_record_subscriber_shared_examples.rb b/spec/support/shared_examples/metrics/active_record_subscriber_shared_examples.rb
index cce9d584690..a84658780b9 100644
--- a/spec/support/shared_examples/metrics/active_record_subscriber_shared_examples.rb
+++ b/spec/support/shared_examples/metrics/active_record_subscriber_shared_examples.rb
@@ -19,6 +19,8 @@ RSpec.shared_examples 'store ActiveRecord info in RequestStore' do |db_role|
db_replica_count: 0,
db_replica_duration_s: 0.0,
db_primary_wal_count: record_wal_query ? 1 : 0,
+ db_primary_wal_cached_count: record_wal_query && record_cached_query ? 1 : 0,
+ db_replica_wal_cached_count: 0,
db_replica_wal_count: 0
}
expected[:"db_primary_#{::Gitlab::Database.dbname(connection)}_duration_s"] = 0.002 if record_query
@@ -34,6 +36,8 @@ RSpec.shared_examples 'store ActiveRecord info in RequestStore' do |db_role|
db_replica_count: record_query ? 1 : 0,
db_replica_duration_s: record_query ? 0.002 : 0,
db_replica_wal_count: record_wal_query ? 1 : 0,
+ db_replica_wal_cached_count: record_wal_query && record_cached_query ? 1 : 0,
+ db_primary_wal_cached_count: 0,
db_primary_wal_count: 0
}
expected[:"db_replica_#{::Gitlab::Database.dbname(connection)}_duration_s"] = 0.002 if record_query
@@ -91,7 +95,10 @@ RSpec.shared_examples 'record ActiveRecord metrics in a metrics transaction' do
end
if record_wal_query
- expect(transaction).to receive(:increment).with("gitlab_transaction_db_#{db_role}_wal_count_total".to_sym, 1) if db_role
+ if db_role
+ expect(transaction).to receive(:increment).with("gitlab_transaction_db_#{db_role}_wal_count_total".to_sym, 1)
+ expect(transaction).to receive(:increment).with("gitlab_transaction_db_#{db_role}_wal_cached_count_total".to_sym, 1) if record_cached_query
+ end
else
expect(transaction).not_to receive(:increment).with("gitlab_transaction_db_#{db_role}_wal_count_total".to_sym, 1) if db_role
end