diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-08 15:09:33 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-08 15:09:33 +0300 |
commit | c52b72f5772d52e9fc85bd9f4e8b8497a6278c37 (patch) | |
tree | bbe0504b4c07a93e24db4a72785a847b2540eef8 /spec/services/metrics | |
parent | 21341457a8c422d890a9ec30838b597dea565d62 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/metrics')
3 files changed, 135 insertions, 1 deletions
diff --git a/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb b/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb index 04ae50b8eb6..4a226fe386c 100644 --- a/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb +++ b/spec/services/metrics/dashboard/clone_dashboard_service_spec.rb @@ -81,7 +81,18 @@ RSpec.describe Metrics::Dashboard::CloneDashboardService, :use_clean_rails_memor allow(::Gitlab::Metrics::Dashboard::Processor).to receive(:new).and_return(double(process: file_content_hash)) end - it_behaves_like 'valid dashboard cloning process', ::Metrics::Dashboard::SystemDashboardService::DASHBOARD_PATH, [::Gitlab::Metrics::Dashboard::Stages::CommonMetricsInserter, ::Gitlab::Metrics::Dashboard::Stages::CustomMetricsInserter, ::Gitlab::Metrics::Dashboard::Stages::Sorter] + it_behaves_like 'valid dashboard cloning process', ::Metrics::Dashboard::SystemDashboardService::DASHBOARD_PATH, + [ + ::Gitlab::Metrics::Dashboard::Stages::CommonMetricsInserter, + ::Gitlab::Metrics::Dashboard::Stages::CustomMetricsInserter, + ::Gitlab::Metrics::Dashboard::Stages::Sorter + ] + + it_behaves_like 'valid dashboard cloning process', ::Metrics::Dashboard::ClusterDashboardService::DASHBOARD_PATH, + [ + ::Gitlab::Metrics::Dashboard::Stages::CommonMetricsInserter, + ::Gitlab::Metrics::Dashboard::Stages::Sorter + ] it_behaves_like 'valid dashboard cloning process', ::Metrics::Dashboard::SelfMonitoringDashboardService::DASHBOARD_PATH, diff --git a/spec/services/metrics/dashboard/cluster_dashboard_service_spec.rb b/spec/services/metrics/dashboard/cluster_dashboard_service_spec.rb new file mode 100644 index 00000000000..bf606241efc --- /dev/null +++ b/spec/services/metrics/dashboard/cluster_dashboard_service_spec.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Metrics::Dashboard::ClusterDashboardService, :use_clean_rails_memory_store_caching do + include MetricsDashboardHelpers + + let_it_be(:user) { create(:user) } + let_it_be(:cluster_project) { create(:cluster_project) } + let_it_be(:cluster) { cluster_project.cluster } + let_it_be(:project) { cluster_project.project } + + before do + project.add_maintainer(user) + end + + describe '.valid_params?' do + let(:params) { { cluster: cluster, embedded: 'false' } } + + subject { described_class.valid_params?(params) } + + it { is_expected.to be_truthy } + + context 'with matching dashboard_path' do + let(:params) { { dashboard_path: ::Metrics::Dashboard::ClusterDashboardService::DASHBOARD_PATH } } + + it { is_expected.to be_truthy } + end + + context 'missing cluster without dashboard_path' do + let(:params) { {} } + + it { is_expected.to be_falsey } + end + end + + describe '#get_dashboard' do + let(:service_params) { [project, user, { cluster: cluster, cluster_type: :project }] } + let(:service_call) { described_class.new(*service_params).get_dashboard } + + it_behaves_like 'valid dashboard service response' + it_behaves_like 'caches the unprocessed dashboard for subsequent calls' + + context 'when called with a non-system dashboard' do + let(:dashboard_path) { 'garbage/dashboard/path' } + + # We want to always return the cluster dashboard. + it_behaves_like 'valid dashboard service response' + end + end +end diff --git a/spec/services/metrics/dashboard/cluster_metrics_embed_service_spec.rb b/spec/services/metrics/dashboard/cluster_metrics_embed_service_spec.rb new file mode 100644 index 00000000000..e80911d6265 --- /dev/null +++ b/spec/services/metrics/dashboard/cluster_metrics_embed_service_spec.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Metrics::Dashboard::ClusterMetricsEmbedService, :use_clean_rails_memory_store_caching do + include MetricsDashboardHelpers + using RSpec::Parameterized::TableSyntax + + let_it_be(:user) { create(:user) } + let_it_be(:cluster_project) { create(:cluster_project) } + let_it_be(:cluster) { cluster_project.cluster } + let_it_be(:project) { cluster_project.project } + + before do + project.add_maintainer(user) + end + + describe '.valid_params?' do + let(:valid_params) { { cluster: 1, embedded: 'true', group: 'hello', title: 'world', y_label: 'countries' } } + + subject { described_class } + + it { expect(subject.valid_params?(valid_params)).to be_truthy } + + context 'missing all params' do + let(:params) { {} } + + it { expect(subject.valid_params?(params)).to be_falsy } + end + + [:cluster, :embedded, :group, :title, :y_label].each do |param_key| + it 'returns false with missing param' do + params = valid_params.except(param_key) + + expect(subject.valid_params?(params)).to be_falsy + end + end + end + + describe '#get_dashboard' do + let(:service_params) do + [ + project, + user, + { + cluster: cluster, + cluster_type: :project, + embedded: 'true', + group: 'Cluster Health', + title: 'CPU Usage', + y_label: 'CPU (cores)' + } + ] + end + let(:service_call) { described_class.new(*service_params).get_dashboard } + let(:panel_groups) { service_call[:dashboard][:panel_groups] } + let(:panel) { panel_groups.first[:panels].first } + + it_behaves_like 'valid embedded dashboard service response' + it_behaves_like 'caches the unprocessed dashboard for subsequent calls' + + it 'returns one panel' do + expect(panel_groups.size).to eq 1 + expect(panel_groups.first[:panels].size).to eq 1 + end + + it 'returns panel by title and y_label' do + expect(panel[:title]).to eq(service_params.last[:title]) + expect(panel[:y_label]).to eq(service_params.last[:y_label]) + end + end +end |