Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
b4282df8b33b
Commit
b4282df8
authored
Nov 22, 2017
by
Shinya Maeda
Browse files
Add test suit for platform::kubernetes
parent
9bdabf037337
Changes
8
Hide whitespace changes
Inline
Side-by-side
app/models/project.rb
View file @
b4282df8
...
...
@@ -914,13 +914,6 @@
deployment_platform
end
# TODO: This will be extended for multiple enviroment clusters
# TODO: Add super nice tests to check this interchangeability
def
deployment_platform
@deployment_platform
||=
clusters
.
where
(
enabled:
true
).
first
&
.
platform_kubernetes
@deployment_platform
||=
deployment_services
.
reorder
(
nil
).
find_by
(
active:
true
)
end
def
monitoring_services
services
.
where
(
category: :monitoring
)
end
...
...
@@ -1858,4 +1851,11 @@
raise
ex
end
# TODO: This will be extended for multiple enviroment clusters
# TODO: Add super nice tests to check this interchangeability
def
deployment_platform
@deployment_platform
||=
clusters
.
where
(
enabled:
true
).
first
&
.
platform_kubernetes
@deployment_platform
||=
deployment_services
.
reorder
(
nil
).
find_by
(
active:
true
)
end
end
spec/controllers/projects/branches_controller_spec.rb
View file @
b4282df8
...
...
@@ -130,6 +130,24 @@
expect
(
response
.
location
).
to
include
(
project_new_blob_path
(
project
,
branch
))
expect
(
response
).
to
have_gitlab_http_status
(
302
)
end
it
'redirects to autodeploy setup page'
do
result
=
{
status: :success
,
branch:
double
(
name:
branch
)
}
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
expect_any_instance_of
(
CreateBranchService
).
to
receive
(
:execute
).
and_return
(
result
)
expect
(
SystemNoteService
).
to
receive
(
:new_issue_branch
).
and_return
(
true
)
post
:create
,
namespace_id:
project
.
namespace
.
to_param
,
project_id:
project
.
to_param
,
branch_name:
branch
,
issue_iid:
issue
.
iid
expect
(
response
.
location
).
to
include
(
project_new_blob_path
(
project
,
branch
))
expect
(
response
).
to
have_gitlab_http_status
(
302
)
end
end
context
'without issue feature access'
do
...
...
spec/features/auto_deploy_spec.rb
View file @
b4282df8
...
...
@@ -4,9 +4,10 @@
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:project
,
:repository
)
}
before
do
create
:kubernetes_service
,
project:
project
project
.
team
<<
[
user
,
:master
]
sign_in
user
end
context
'when user configured kubernetes from Integration > Kubernetes'
do
before
do
create
:kubernetes_service
,
project:
project
project
.
team
<<
[
user
,
:master
]
sign_in
user
end
...
...
@@ -12,6 +13,12 @@
context
'when no deployment service is active'
do
before
do
project
.
kubernetes_service
.
update!
(
active:
false
)
context
'when no deployment service is active'
do
before
do
project
.
kubernetes_service
.
update!
(
active:
false
)
end
it
'does not show a button to set up auto deploy'
do
visit
project_path
(
project
)
expect
(
page
).
to
have_no_content
(
'Set up auto deploy'
)
end
end
...
...
@@ -16,8 +23,35 @@
end
it
'does not show a button to set up auto deploy'
do
visit
project_path
(
project
)
expect
(
page
).
to
have_no_content
(
'Set up auto deploy'
)
context
'when a deployment service is active'
do
before
do
project
.
kubernetes_service
.
update!
(
active:
true
)
visit
project_path
(
project
)
end
it
'shows a button to set up auto deploy'
do
expect
(
page
).
to
have_link
(
'Set up auto deploy'
)
end
it
'includes OpenShift as an available template'
,
:js
do
click_link
'Set up auto deploy'
click_button
'Apply a GitLab CI Yaml template'
within
'.gitlab-ci-yml-selector'
do
expect
(
page
).
to
have_content
(
'OpenShift'
)
end
end
it
'creates a merge request using "auto-deploy" branch'
,
:js
do
click_link
'Set up auto deploy'
click_button
'Apply a GitLab CI Yaml template'
within
'.gitlab-ci-yml-selector'
do
click_on
'OpenShift'
end
wait_for_requests
click_button
'Commit changes'
expect
(
page
).
to
have_content
(
'New Merge Request From auto-deploy into master'
)
end
end
end
...
...
@@ -21,5 +55,5 @@
end
end
context
'when
a deployment service is active
'
do
context
'when
user configured kubernetes from CI/CD > Clusters
'
do
before
do
...
...
@@ -25,5 +59,6 @@
before
do
project
.
kubernetes_service
.
update!
(
active:
true
)
visit
project_path
(
project
)
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
project
.
team
<<
[
user
,
:master
]
sign_in
user
end
...
...
@@ -28,6 +63,7 @@
end
it
'shows a button to set up auto deploy'
do
expect
(
page
).
to
have_link
(
'Set up auto deploy'
)
end
context
'when no deployment service is active'
do
before
do
project
.
kubernetes_service
.
update!
(
active:
false
)
end
...
...
@@ -33,10 +69,7 @@
it
'includes OpenShift as an available template'
,
:js
do
click_link
'Set up auto deploy'
click_button
'Apply a GitLab CI Yaml template'
within
'.gitlab-ci-yml-selector'
do
expect
(
page
).
to
have_content
(
'OpenShift'
)
it
'does not show a button to set up auto deploy'
do
visit
project_path
(
project
)
expect
(
page
).
to
have_no_content
(
'Set up auto deploy'
)
end
end
...
...
@@ -40,9 +73,12 @@
end
end
it
'creates a merge request using "auto-deploy" branch'
,
:js
do
click_link
'Set up auto deploy'
click_button
'Apply a GitLab CI Yaml template'
within
'.gitlab-ci-yml-selector'
do
click_on
'OpenShift'
context
'when a deployment service is active'
do
before
do
project
.
kubernetes_service
.
update!
(
active:
true
)
visit
project_path
(
project
)
end
it
'shows a button to set up auto deploy'
do
expect
(
page
).
to
have_link
(
'Set up auto deploy'
)
end
...
...
@@ -48,4 +84,11 @@
end
wait_for_requests
click_button
'Commit changes'
it
'includes OpenShift as an available template'
,
:js
do
click_link
'Set up auto deploy'
click_button
'Apply a GitLab CI Yaml template'
within
'.gitlab-ci-yml-selector'
do
expect
(
page
).
to
have_content
(
'OpenShift'
)
end
end
...
...
@@ -51,5 +94,15 @@
expect
(
page
).
to
have_content
(
'New Merge Request From auto-deploy into master'
)
it
'creates a merge request using "auto-deploy" branch'
,
:js
do
click_link
'Set up auto deploy'
click_button
'Apply a GitLab CI Yaml template'
within
'.gitlab-ci-yml-selector'
do
click_on
'OpenShift'
end
wait_for_requests
click_button
'Commit changes'
expect
(
page
).
to
have_content
(
'New Merge Request From auto-deploy into master'
)
end
end
end
end
spec/features/projects/environments/environment_spec.rb
View file @
b4282df8
...
...
@@ -101,5 +101,11 @@
end
context
'with terminal'
do
let
(
:project
)
{
create
(
:kubernetes_project
,
:test_repo
)
}
shared_examples
'correct behavior with terminal'
do
context
'for project master'
do
let
(
:role
)
{
:master
}
scenario
'it shows the terminal button'
do
expect
(
page
).
to
have_terminal_button
end
...
...
@@ -105,4 +111,8 @@
context
'for project master'
do
let
(
:role
)
{
:master
}
context
'web terminal'
,
:js
do
before
do
# Stub #terminals as it causes js-enabled feature specs to render the page incorrectly
allow_any_instance_of
(
Environment
).
to
receive
(
:terminals
)
{
nil
}
visit
terminal_project_environment_path
(
project
,
environment
)
end
...
...
@@ -108,5 +118,8 @@
scenario
'it shows the terminal button'
do
expect
(
page
).
to
have_terminal_button
it
'displays a web terminal'
do
expect
(
page
).
to
have_selector
(
'#terminal'
)
expect
(
page
).
to
have_link
(
nil
,
href:
environment
.
external_url
)
end
end
end
...
...
@@ -111,9 +124,5 @@
end
context
'web terminal'
,
:js
do
before
do
# Stub #terminals as it causes js-enabled feature specs to render the page incorrectly
allow_any_instance_of
(
Environment
).
to
receive
(
:terminals
)
{
nil
}
visit
terminal_project_environment_path
(
project
,
environment
)
end
context
'for developer'
do
let
(
:role
)
{
:developer
}
...
...
@@ -119,8 +128,7 @@
it
'displays a web terminal'
do
expect
(
page
).
to
have_selector
(
'#terminal'
)
expect
(
page
).
to
have_link
(
nil
,
href:
environment
.
external_url
)
scenario
'does not show terminal button'
do
expect
(
page
).
not_to
have_terminal_button
end
end
end
...
...
@@ -123,7 +131,10 @@
end
end
end
context
'for developer'
do
let
(
:role
)
{
:developer
}
context
'when user configured kubernetes from Integration > Kubernetes'
do
let
(
:project
)
{
create
(
:kubernetes_project
,
:test_repo
)
}
it_behaves_like
'correct behavior with terminal'
end
...
...
@@ -129,7 +140,9 @@
scenario
'does not show terminal button'
do
expect
(
page
).
not_to
have_terminal_button
end
context
'when user configured kubernetes from CI/CD > Clusters'
do
let!
(
:cluster
)
{
create
(
:cluster
,
:project
,
:provided_by_gcp
)
}
let
(
:project
)
{
cluster
.
project
}
it_behaves_like
'correct behavior with terminal'
end
end
...
...
spec/features/projects/environments/environments_spec.rb
View file @
b4282df8
...
...
@@ -208,5 +208,7 @@
end
context
'when kubernetes terminal is available'
do
let
(
:project
)
{
create
(
:kubernetes_project
,
:test_repo
)
}
shared_examples
'correct behavior with terminal'
do
context
'for project master'
do
let
(
:role
)
{
:master
}
...
...
@@ -212,4 +214,6 @@
context
'for project master'
do
let
(
:role
)
{
:master
}
it
'shows the terminal button'
do
expect
(
page
).
to
have_terminal_button
end
end
...
...
@@ -215,5 +219,9 @@
it
'shows the terminal button'
do
expect
(
page
).
to
have_terminal_button
context
'when user is a developer'
do
let
(
:role
)
{
:developer
}
it
'does not show terminal button'
do
expect
(
page
).
not_to
have_terminal_button
end
end
end
...
...
@@ -218,6 +226,6 @@
end
end
context
'when user
is a developer
'
do
let
(
:ro
le
)
{
:developer
}
context
'when user
configured kubernetes from Integration > Kubernetes
'
do
let
(
:
p
ro
ject
)
{
create
(
:kubernetes_project
,
:test_repo
)
}
...
...
@@ -223,7 +231,12 @@
it
'does not show terminal button'
do
expect
(
page
).
not_to
have_terminal_button
end
it_behaves_like
'correct behavior with terminal'
end
context
'when user configured kubernetes from CI/CD > Clusters'
do
let!
(
:cluster
)
{
create
(
:cluster
,
:project
,
:provided_by_gcp
)
}
let
(
:project
)
{
cluster
.
project
}
it_behaves_like
'correct behavior with terminal'
end
end
end
...
...
spec/lib/gitlab/ci/build/policy/kubernetes_spec.rb
View file @
b4282df8
...
...
@@ -4,5 +4,10 @@
let
(
:pipeline
)
{
create
(
:ci_pipeline
,
project:
project
)
}
context
'when kubernetes service is active'
do
set
(
:project
)
{
create
(
:kubernetes_project
)
}
shared_examples
'correct behavior for satisfied_by?'
do
it
'is satisfied by a kubernetes pipeline'
do
expect
(
described_class
.
new
(
'active'
))
.
to
be_satisfied_by
(
pipeline
)
end
end
...
...
@@ -8,7 +13,15 @@
it
'is satisfied by a kubernetes pipeline'
do
expect
(
described_class
.
new
(
'active'
))
.
to
be_satisfied_by
(
pipeline
)
context
'when user configured kubernetes from Integration > Kubernetes'
do
let
(
:project
)
{
create
(
:kubernetes_project
)
}
it_behaves_like
'correct behavior for satisfied_by?'
end
context
'when user configured kubernetes from CI/CD > Clusters'
do
let!
(
:cluster
)
{
create
(
:cluster
,
:project
,
:provided_by_gcp
)
}
let
(
:project
)
{
cluster
.
project
}
it_behaves_like
'correct behavior for satisfied_by?'
end
end
...
...
spec/models/project_spec.rb
View file @
b4282df8
...
...
@@ -2002,12 +2002,25 @@
end
context
'when project has a deployment service'
do
let
(
:project
)
{
create
(
:kubernetes_project
)
}
it
'returns variables from this service'
do
expect
(
project
.
deployment_variables
).
to
include
(
{
key:
'KUBE_TOKEN'
,
value:
project
.
kubernetes_service
.
token
,
public:
false
}
)
shared_examples
'correct behavior with variables'
do
it
'returns variables from this service'
do
expect
(
project
.
deployment_variables
).
to
include
(
{
key:
'KUBE_TOKEN'
,
value:
project
.
kubernetes_service
.
token
,
public:
false
}
)
end
end
context
'when user configured kubernetes from Integration > Kubernetes'
do
let
(
:project
)
{
create
(
:kubernetes_project
)
}
it_behaves_like
'correct behavior with variables'
end
context
'when user configured kubernetes from CI/CD > Clusters'
do
let!
(
:cluster
)
{
create
(
:cluster
,
:project
,
:provided_by_gcp
)
}
let
(
:project
)
{
cluster
.
project
}
it_behaves_like
'correct behavior with variables'
end
end
end
...
...
spec/support/prometheus/additional_metrics_shared_examples.rb
View file @
b4282df8
...
...
@@ -41,7 +41,12 @@
end
describe
'project has Kubernetes service'
do
let
(
:project
)
{
create
(
:kubernetes_project
)
}
let
(
:environment
)
{
create
(
:environment
,
slug:
'environment-slug'
,
project:
project
)
}
let
(
:kube_namespace
)
{
project
.
kubernetes_service
.
actual_namespace
}
shared_examples
'correct behavior with metrics'
do
let
(
:environment
)
{
create
(
:environment
,
slug:
'environment-slug'
,
project:
project
)
}
let
(
:kube_namespace
)
{
project
.
kubernetes_service
.
actual_namespace
}
it_behaves_like
'query context containing environment slug and filter'
it
'query context contains kube_namespace'
do
expect
(
subject
).
to
receive
(
:query_metrics
).
with
(
hash_including
(
kube_namespace:
kube_namespace
))
...
...
@@ -47,3 +52,8 @@
it_behaves_like
'query context containing environment slug and filter'
subject
.
query
(
*
query_params
)
end
end
context
'when user configured kubernetes from Integration > Kubernetes'
do
let
(
:project
)
{
create
(
:kubernetes_project
)
}
...
...
@@ -49,4 +59,4 @@
it
'query context contains kube_namespace'
do
expect
(
subject
).
to
receive
(
:query_metrics
).
with
(
hash_including
(
kube_namespace:
kube_namespace
))
it_behaves_like
'correct behavior with metrics'
end
...
...
@@ -52,5 +62,9 @@
subject
.
query
(
*
query_params
)
context
'when user configured kubernetes from CI/CD > Clusters'
do
let!
(
:cluster
)
{
create
(
:cluster
,
:project
,
:provided_by_gcp
)
}
let
(
:project
)
{
cluster
.
project
}
it_behaves_like
'correct behavior with metrics'
end
end
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment