Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
7cd9cdbe
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7cd9cdbe
编写于
4月 02, 2019
作者:
T
Thong Kuah
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor to share tests for base class method
DRY up tests for logging error.
上级
5eb2d6ea
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
75 addition
and
203 deletion
+75
-203
spec/services/clusters/applications/check_installation_progress_service_spec.rb
.../applications/check_installation_progress_service_spec.rb
+11
-16
spec/services/clusters/applications/install_service_spec.rb
spec/services/clusters/applications/install_service_spec.rb
+13
-63
spec/services/clusters/applications/patch_service_spec.rb
spec/services/clusters/applications/patch_service_spec.rb
+12
-62
spec/services/clusters/applications/upgrade_service_spec.rb
spec/services/clusters/applications/upgrade_service_spec.rb
+12
-62
spec/support/shared_examples/services/base_helm_service_shared_examples.rb
...ed_examples/services/base_helm_service_shared_examples.rb
+27
-0
未找到文件。
spec/services/clusters/applications/check_installation_progress_service_spec.rb
浏览文件 @
7cd9cdbe
...
...
@@ -33,15 +33,22 @@ describe Clusters::Applications::CheckInstallationProgressService, '#execute' do
end
end
shared_examples
'error
logg
ing'
do
shared_examples
'error
handl
ing'
do
context
'when installation raises a Kubeclient::HttpError'
do
let
(
:cluster
)
{
create
(
:cluster
,
:provided_by_user
,
:project
)
}
let
(
:logger
)
{
service
.
send
(
:logger
)
}
let
(
:error
)
{
Kubeclient
::
HttpError
.
new
(
401
,
'Unauthorized'
,
nil
)
}
before
do
application
.
update!
(
cluster:
cluster
)
expect
(
service
).
to
receive
(
:installation_phase
).
and_raise
(
Kubeclient
::
HttpError
.
new
(
401
,
'Unauthorized'
,
nil
))
expect
(
service
).
to
receive
(
:installation_phase
).
and_raise
(
error
)
end
include_examples
'logs kubernetes errors'
do
let
(
:error_name
)
{
'Kubeclient::HttpError'
}
let
(
:error_message
)
{
'Unauthorized'
}
let
(
:error_code
)
{
401
}
end
it
'shows the response code from the error'
do
...
...
@@ -50,18 +57,6 @@ describe Clusters::Applications::CheckInstallationProgressService, '#execute' do
expect
(
application
).
to
be_errored
.
or
(
be_update_errored
)
expect
(
application
.
status_reason
).
to
eq
(
'Kubernetes error: 401'
)
end
it
'should log error'
do
expect
(
logger
).
to
receive
(
:error
)
service
.
execute
end
it
'logs error backtrace'
do
expect
(
logger
).
to
receive
(
:error
).
with
(
hash_including
(
backtrace:
instance_of
(
Array
)))
service
.
execute
end
end
end
...
...
@@ -73,7 +68,7 @@ describe Clusters::Applications::CheckInstallationProgressService, '#execute' do
context
'when application is updating'
do
let
(
:application
)
{
create
(
:clusters_applications_helm
,
:updating
)
}
include_examples
'error
logg
ing'
include_examples
'error
handl
ing'
RESCHEDULE_PHASES
.
each
{
|
phase
|
it_behaves_like
'a not yet terminated installation'
,
phase
}
...
...
@@ -134,7 +129,7 @@ describe Clusters::Applications::CheckInstallationProgressService, '#execute' do
end
context
'when application is installing'
do
include_examples
'error
logg
ing'
include_examples
'error
handl
ing'
RESCHEDULE_PHASES
.
each
{
|
phase
|
it_behaves_like
'a not yet terminated installation'
,
phase
}
...
...
spec/services/clusters/applications/install_service_spec.rb
浏览文件 @
7cd9cdbe
...
...
@@ -39,53 +39,34 @@ describe Clusters::Applications::InstallService do
expect
(
helm_client
).
to
receive
(
:install
).
with
(
install_command
).
and_raise
(
error
)
end
include_examples
'logs kubernetes errors'
do
let
(
:error_name
)
{
'Kubeclient::HttpError'
}
let
(
:error_message
)
{
'system failure'
}
let
(
:error_code
)
{
500
}
end
it
'make the application errored'
do
service
.
execute
expect
(
application
).
to
be_errored
expect
(
application
.
status_reason
).
to
match
(
'Kubernetes error: 500'
)
end
it
'logs errors'
do
expect
(
service
.
send
(
:logger
)).
to
receive
(
:error
).
with
(
{
exception:
'Kubeclient::HttpError'
,
message:
'system failure'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::InstallService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
project_ids
,
group_ids:
[],
error_code:
500
}
)
expect
(
Gitlab
::
Sentry
).
to
receive
(
:track_acceptable_exception
).
with
(
error
,
extra:
hash_including
(
exception:
'Kubeclient::HttpError'
,
message:
'system failure'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::InstallService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
project_ids
,
group_ids:
[],
error_code:
500
)
)
service
.
execute
end
end
context
'a non kubernetes error happens'
do
let
(
:application
)
{
create
(
:clusters_applications_helm
,
:scheduled
)
}
let
(
:error
)
{
StandardError
.
new
(
"something bad happened"
)
}
let
(
:error
)
{
StandardError
.
new
(
'something bad happened'
)
}
before
do
expect
(
application
).
to
receive
(
:make_installing!
).
once
.
and_raise
(
error
)
end
include_examples
'logs kubernetes errors'
do
let
(
:error_name
)
{
'StandardError'
}
let
(
:error_message
)
{
'something bad happened'
}
let
(
:error_code
)
{
nil
}
end
it
'make the application errored'
do
expect
(
helm_client
).
not_to
receive
(
:install
)
...
...
@@ -94,37 +75,6 @@ describe Clusters::Applications::InstallService do
expect
(
application
).
to
be_errored
expect
(
application
.
status_reason
).
to
eq
(
"Can't start installation process."
)
end
it
'logs errors'
do
expect
(
service
.
send
(
:logger
)).
to
receive
(
:error
).
with
(
{
exception:
'StandardError'
,
error_code:
nil
,
message:
'something bad happened'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::InstallService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
projects
.
pluck
(
:id
),
group_ids:
[]
}
)
expect
(
Gitlab
::
Sentry
).
to
receive
(
:track_acceptable_exception
).
with
(
error
,
extra:
hash_including
(
exception:
'StandardError'
,
error_code:
nil
,
message:
'something bad happened'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::InstallService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
projects
.
pluck
(
:id
),
group_ids:
[]
)
)
service
.
execute
end
end
end
end
spec/services/clusters/applications/patch_service_spec.rb
浏览文件 @
7cd9cdbe
...
...
@@ -41,49 +41,30 @@ describe Clusters::Applications::PatchService do
expect
(
helm_client
).
to
receive
(
:update
).
with
(
update_command
).
and_raise
(
error
)
end
include_examples
'logs kubernetes errors'
do
let
(
:error_name
)
{
'Kubeclient::HttpError'
}
let
(
:error_message
)
{
'system failure'
}
let
(
:error_code
)
{
500
}
end
it
'make the application errored'
do
service
.
execute
expect
(
application
).
to
be_update_errored
expect
(
application
.
status_reason
).
to
match
(
'Kubernetes error: 500'
)
end
it
'logs errors'
do
expect
(
service
.
send
(
:logger
)).
to
receive
(
:error
).
with
(
{
exception:
'Kubeclient::HttpError'
,
message:
'system failure'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::PatchService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
project_ids
,
group_ids:
[],
error_code:
500
}
)
expect
(
Gitlab
::
Sentry
).
to
receive
(
:track_acceptable_exception
).
with
(
error
,
extra:
{
exception:
'Kubeclient::HttpError'
,
message:
'system failure'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::PatchService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
project_ids
,
group_ids:
[],
error_code:
500
}
)
service
.
execute
end
end
context
'a non kubernetes error happens'
do
let
(
:application
)
{
create
(
:clusters_applications_knative
,
:scheduled
)
}
let
(
:error
)
{
StandardError
.
new
(
'something bad happened'
)
}
include_examples
'logs kubernetes errors'
do
let
(
:error_name
)
{
'StandardError'
}
let
(
:error_message
)
{
'something bad happened'
}
let
(
:error_code
)
{
nil
}
end
before
do
expect
(
application
).
to
receive
(
:make_updating!
).
once
.
and_raise
(
error
)
end
...
...
@@ -96,37 +77,6 @@ describe Clusters::Applications::PatchService do
expect
(
application
).
to
be_update_errored
expect
(
application
.
status_reason
).
to
eq
(
"Can't start update process."
)
end
it
'logs errors'
do
expect
(
service
.
send
(
:logger
)).
to
receive
(
:error
).
with
(
{
exception:
'StandardError'
,
error_code:
nil
,
message:
'something bad happened'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::PatchService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
projects
.
pluck
(
:id
),
group_ids:
[]
}
)
expect
(
Gitlab
::
Sentry
).
to
receive
(
:track_acceptable_exception
).
with
(
error
,
extra:
{
exception:
'StandardError'
,
error_code:
nil
,
message:
'something bad happened'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::PatchService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
projects
.
pluck
(
:id
),
group_ids:
[]
}
)
service
.
execute
end
end
end
end
spec/services/clusters/applications/upgrade_service_spec.rb
浏览文件 @
7cd9cdbe
...
...
@@ -41,43 +41,18 @@ describe Clusters::Applications::UpgradeService do
expect
(
helm_client
).
to
receive
(
:update
).
with
(
install_command
).
and_raise
(
error
)
end
include_examples
'logs kubernetes errors'
do
let
(
:error_name
)
{
'Kubeclient::HttpError'
}
let
(
:error_message
)
{
'system failure'
}
let
(
:error_code
)
{
500
}
end
it
'make the application errored'
do
service
.
execute
expect
(
application
).
to
be_update_errored
expect
(
application
.
status_reason
).
to
match
(
'Kubernetes error: 500'
)
end
it
'logs errors'
do
expect
(
service
.
send
(
:logger
)).
to
receive
(
:error
).
with
(
{
exception:
'Kubeclient::HttpError'
,
message:
'system failure'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::UpgradeService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
project_ids
,
group_ids:
[],
error_code:
500
}
)
expect
(
Gitlab
::
Sentry
).
to
receive
(
:track_acceptable_exception
).
with
(
error
,
extra:
{
exception:
'Kubeclient::HttpError'
,
message:
'system failure'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::UpgradeService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
project_ids
,
group_ids:
[],
error_code:
500
}
)
service
.
execute
end
end
context
'a non kubernetes error happens'
do
...
...
@@ -88,6 +63,12 @@ describe Clusters::Applications::UpgradeService do
expect
(
application
).
to
receive
(
:make_updating!
).
once
.
and_raise
(
error
)
end
include_examples
'logs kubernetes errors'
do
let
(
:error_name
)
{
'StandardError'
}
let
(
:error_message
)
{
'something bad happened'
}
let
(
:error_code
)
{
nil
}
end
it
'make the application errored'
do
expect
(
helm_client
).
not_to
receive
(
:update
)
...
...
@@ -96,37 +77,6 @@ describe Clusters::Applications::UpgradeService do
expect
(
application
).
to
be_update_errored
expect
(
application
.
status_reason
).
to
eq
(
"Can't start upgrade process."
)
end
it
'logs errors'
do
expect
(
service
.
send
(
:logger
)).
to
receive
(
:error
).
with
(
{
exception:
'StandardError'
,
error_code:
nil
,
message:
'something bad happened'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::UpgradeService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
projects
.
pluck
(
:id
),
group_ids:
[]
}
)
expect
(
Gitlab
::
Sentry
).
to
receive
(
:track_acceptable_exception
).
with
(
error
,
extra:
{
exception:
'StandardError'
,
error_code:
nil
,
message:
'something bad happened'
,
backtrace:
instance_of
(
Array
),
service:
'Clusters::Applications::UpgradeService'
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
projects
.
pluck
(
:id
),
group_ids:
[]
}
)
service
.
execute
end
end
end
end
spec/support/shared_examples/services/base_helm_service_shared_examples.rb
0 → 100644
浏览文件 @
7cd9cdbe
# frozen_string_literal: true
shared_examples
'logs kubernetes errors'
do
let
(
:error_hash
)
do
{
exception:
error_name
,
message:
error_message
,
backtrace:
instance_of
(
Array
),
service:
service
.
class
.
name
,
app_id:
application
.
id
,
project_ids:
application
.
cluster
.
project_ids
,
group_ids:
[],
error_code:
error_code
}
end
it
'logs into kubernetes.log and Sentry'
do
expect
(
service
.
send
(
:logger
)).
to
receive
(
:error
).
with
(
error_hash
)
expect
(
Gitlab
::
Sentry
).
to
receive
(
:track_acceptable_exception
).
with
(
error
,
extra:
hash_including
(
error_hash
)
)
service
.
execute
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录