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
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2019-07-01 07:25:52 +0300
committerLin Jen-Shin <godfat@godfat.org>2019-07-01 07:25:52 +0300
commitbc71d0b46164e8bcd4af78e5ce15261c8d796c52 (patch)
tree916092c65bcc99db69084b1bcf10dd072a300e34 /spec/models
parent5ad09f38cceb7ee648206fd28c155a360cb64d31 (diff)
parent04af6132b14e594aeddef2a6d0c171af667c9539 (diff)
Merge branch 'add-clusters-to-deployment' into 'master'
Add clusters association to deployment See merge request gitlab-org/gitlab-ce!29960
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/concerns/deployable_spec.rb14
-rw-r--r--spec/models/deployment_spec.rb62
2 files changed, 72 insertions, 4 deletions
diff --git a/spec/models/concerns/deployable_spec.rb b/spec/models/concerns/deployable_spec.rb
index 42bed9434f5..bb73dd8ade0 100644
--- a/spec/models/concerns/deployable_spec.rb
+++ b/spec/models/concerns/deployable_spec.rb
@@ -7,10 +7,6 @@ describe Deployable do
let(:deployment) { job.deployment }
let(:environment) { deployment&.environment }
- before do
- job.reload
- end
-
context 'when the deployable object will deploy to production' do
let!(:job) { create(:ci_build, :start_review_app) }
@@ -26,6 +22,16 @@ describe Deployable do
end
end
+ context 'when the deployable object will deploy to a cluster' do
+ let(:project) { create(:project) }
+ let!(:cluster) { create(:cluster, :provided_by_user, projects: [project]) }
+ let!(:job) { create(:ci_build, :start_review_app, project: project) }
+
+ it 'creates a deployment with cluster association' do
+ expect(deployment.cluster).to eq(cluster)
+ end
+ end
+
context 'when the deployable object will stop an environment' do
let!(:job) { create(:ci_build, :stop_review_app) }
diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb
index a433878f3bc..8d0eb0f4a06 100644
--- a/spec/models/deployment_spec.rb
+++ b/spec/models/deployment_spec.rb
@@ -7,6 +7,7 @@ describe Deployment do
it { is_expected.to belong_to(:project).required }
it { is_expected.to belong_to(:environment).required }
+ it { is_expected.to belong_to(:cluster).class_name('Clusters::Cluster') }
it { is_expected.to belong_to(:user) }
it { is_expected.to belong_to(:deployable) }
@@ -294,6 +295,67 @@ describe Deployment do
end
end
+ describe '#has_metrics?' do
+ subject { deployment.has_metrics? }
+
+ context 'when deployment is failed' do
+ let(:deployment) { create(:deployment, :failed) }
+
+ it { is_expected.to be_falsy }
+ end
+
+ context 'when deployment is success' do
+ let(:deployment) { create(:deployment, :success) }
+
+ context 'without a monitoring service' do
+ it { is_expected.to be_falsy }
+ end
+
+ context 'with a Prometheus Service' do
+ let(:prometheus_service) { double(:prometheus_service, can_query?: true) }
+
+ before do
+ allow(deployment.project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_service
+ end
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'with a Prometheus Service that cannot query' do
+ let(:prometheus_service) { double(:prometheus_service, can_query?: false) }
+
+ before do
+ allow(deployment.project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_service
+ end
+
+ it { is_expected.to be_falsy }
+ end
+
+ context 'with a cluster Prometheus' do
+ let(:deployment) { create(:deployment, :success, :on_cluster) }
+ let!(:prometheus) { create(:clusters_applications_prometheus, :installed, cluster: deployment.cluster) }
+
+ before do
+ expect(deployment.cluster.application_prometheus).to receive(:can_query?).and_return(true)
+ end
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'fallback deployment platform' do
+ let(:cluster) { create(:cluster, :provided_by_user, environment_scope: '*', projects: [deployment.project]) }
+ let!(:prometheus) { create(:clusters_applications_prometheus, :installed, cluster: cluster) }
+
+ before do
+ expect(deployment.project).to receive(:deployment_platform).and_return(cluster.platform)
+ expect(cluster.application_prometheus).to receive(:can_query?).and_return(true)
+ end
+
+ it { is_expected.to be_truthy }
+ end
+ end
+ end
+
describe '#metrics' do
let(:deployment) { create(:deployment, :success) }
let(:prometheus_adapter) { double('prometheus_adapter', can_query?: true) }