Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
pentaLiker
DolphinScheduler
提交
79779da0
DolphinScheduler
项目概览
pentaLiker
/
DolphinScheduler
与 Fork 源项目一致
Fork自
apache / DolphinScheduler
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
DolphinScheduler
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
79779da0
编写于
1月 29, 2021
作者:
B
break60
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev' of
https://github.com/apache/incubator-dolphinscheduler
into dev
上级
ffdda00a
658376ad
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
145 addition
and
6 deletion
+145
-6
dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/runner/AlertSender.java
...org/apache/dolphinscheduler/alert/runner/AlertSender.java
+6
-5
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
...in/java/org/apache/dolphinscheduler/api/enums/Status.java
+1
-0
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java
...uler/api/service/impl/AlertPluginInstanceServiceImpl.java
+23
-0
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertPluginInstanceServiceTest.java
...scheduler/api/service/AlertPluginInstanceServiceTest.java
+99
-0
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AlertPluginInstance.java
...ache/dolphinscheduler/dao/entity/AlertPluginInstance.java
+2
-1
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java
.../apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java
+6
-0
dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml
...g/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml
+7
-0
pom.xml
pom.xml
+1
-0
未找到文件。
dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/runner/AlertSender.java
浏览文件 @
79779da0
...
...
@@ -75,13 +75,14 @@ public class AlertSender {
List
<
AlertPluginInstance
>
alertInstanceList
=
alertDao
.
listInstanceByAlertGroupId
(
alertGroupId
);
if
(
CollectionUtils
.
isEmpty
(
alertInstanceList
))
{
logger
.
error
(
"send alert msg fail,no bind plugin instance."
);
return
;
alertDao
.
updateAlert
(
AlertStatus
.
EXECUTION_FAILURE
,
"no bind plugin instance"
,
alert
.
getId
());
continue
;
}
AlertData
alertData
=
new
AlertData
();
alertData
.
setId
(
alert
.
getId
())
.
setContent
(
alert
.
getContent
())
.
setLog
(
alert
.
getLog
())
.
setTitle
(
alert
.
getTitle
());
.
setContent
(
alert
.
getContent
())
.
setLog
(
alert
.
getLog
())
.
setTitle
(
alert
.
getTitle
());
for
(
AlertPluginInstance
instance
:
alertInstanceList
)
{
...
...
@@ -126,7 +127,7 @@ public class AlertSender {
for
(
AlertPluginInstance
instance
:
alertInstanceList
)
{
AlertResult
alertResult
=
this
.
alertResultHandler
(
instance
,
alertData
);
AlertSendResponseResult
alertSendResponseResult
=
new
AlertSendResponseResult
(
Boolean
.
parseBoolean
(
String
.
valueOf
(
alertResult
.
getStatus
())),
alertResult
.
getMessage
());
Boolean
.
parseBoolean
(
String
.
valueOf
(
alertResult
.
getStatus
())),
alertResult
.
getMessage
());
sendResponseStatus
=
sendResponseStatus
&&
alertSendResponseResult
.
getStatus
();
sendResponseResults
.
add
(
alertSendResponseResult
);
}
...
...
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
浏览文件 @
79779da0
...
...
@@ -290,6 +290,7 @@ public enum Status {
QUERY_ALL_ALERT_PLUGIN_INSTANCE_ERROR
(
110009
,
"query all alert plugin instance error"
,
"查询所有告警实例失败"
),
PLUGIN_INSTANCE_ALREADY_EXIT
(
110010
,
"plugin instance already exit"
,
"该告警插件实例已存在"
),
LIST_PAGING_ALERT_PLUGIN_INSTANCE_ERROR
(
110011
,
"query plugin instance page error"
,
"分页查询告警实例失败"
),
DELETE_ALERT_PLUGIN_INSTANCE_ERROR_HAS_ALERT_GROUP_ASSOCIATED
(
110012
,
"failed to delete the alert instance, there is an alarm group associated with this alert instance"
,
"删除告警实例失败,存在与此告警实例关联的警报组"
)
;
...
...
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java
浏览文件 @
79779da0
...
...
@@ -27,13 +27,16 @@ import org.apache.dolphinscheduler.common.utils.CollectionUtils;
import
org.apache.dolphinscheduler.dao.entity.AlertPluginInstance
;
import
org.apache.dolphinscheduler.dao.entity.PluginDefine
;
import
org.apache.dolphinscheduler.dao.entity.User
;
import
org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper
;
import
org.apache.dolphinscheduler.dao.mapper.AlertPluginInstanceMapper
;
import
org.apache.dolphinscheduler.dao.mapper.PluginDefineMapper
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -56,6 +59,9 @@ public class AlertPluginInstanceServiceImpl extends BaseService implements Alert
@Autowired
private
PluginDefineMapper
pluginDefineMapper
;
@Autowired
private
AlertGroupMapper
alertGroupMapper
;
/**
* creat alert plugin instance
*
...
...
@@ -121,6 +127,13 @@ public class AlertPluginInstanceServiceImpl extends BaseService implements Alert
@Override
public
Map
<
String
,
Object
>
delete
(
User
loginUser
,
int
id
)
{
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
//check if there is an associated alert group
boolean
hasAssociatedAlertGroup
=
checkHasAssociatedAlertGroup
(
String
.
valueOf
(
id
));
if
(
hasAssociatedAlertGroup
)
{
putMsg
(
result
,
Status
.
DELETE_ALERT_PLUGIN_INSTANCE_ERROR_HAS_ALERT_GROUP_ASSOCIATED
);
return
result
;
}
int
i
=
alertPluginInstanceMapper
.
deleteById
(
id
);
if
(
i
>
0
)
{
putMsg
(
result
,
Status
.
SUCCESS
);
...
...
@@ -205,4 +218,14 @@ public class AlertPluginInstanceServiceImpl extends BaseService implements Alert
return
alertPluginInstanceVOS
;
}
private
boolean
checkHasAssociatedAlertGroup
(
String
id
)
{
List
<
String
>
idsList
=
alertGroupMapper
.
queryInstanceIdsList
();
if
(
CollectionUtils
.
isEmpty
(
idsList
))
{
return
false
;
}
Optional
<
String
>
first
=
idsList
.
stream
().
filter
(
k
->
null
!=
k
&&
Arrays
.
asList
(
k
.
split
(
","
)).
contains
(
id
)).
findFirst
();
return
first
.
isPresent
();
}
}
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertPluginInstanceServiceTest.java
0 → 100644
浏览文件 @
79779da0
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.apache.dolphinscheduler.api.service
;
import
org.apache.dolphinscheduler.api.enums.Status
;
import
org.apache.dolphinscheduler.api.service.impl.AlertPluginInstanceServiceImpl
;
import
org.apache.dolphinscheduler.common.Constants
;
import
org.apache.dolphinscheduler.common.enums.UserType
;
import
org.apache.dolphinscheduler.dao.entity.AlertPluginInstance
;
import
org.apache.dolphinscheduler.dao.entity.User
;
import
org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper
;
import
org.apache.dolphinscheduler.dao.mapper.AlertPluginInstanceMapper
;
import
org.apache.dolphinscheduler.dao.mapper.PluginDefineMapper
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Map
;
import
org.junit.Assert
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.Mockito
;
import
org.mockito.junit.MockitoJUnitRunner
;
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
AlertPluginInstanceServiceTest
{
@InjectMocks
AlertPluginInstanceServiceImpl
alertPluginInstanceService
;
@Mock
private
AlertPluginInstanceMapper
alertPluginInstanceMapper
;
@Mock
private
PluginDefineMapper
pluginDefineMapper
;
@Mock
private
AlertGroupMapper
alertGroupMapper
;
private
List
<
AlertPluginInstance
>
alertPluginInstances
;
private
User
user
;
@Before
public
void
before
()
{
user
=
new
User
();
user
.
setUserType
(
UserType
.
ADMIN_USER
);
user
.
setId
(
1
);
AlertPluginInstance
alertPluginInstance
=
new
AlertPluginInstance
();
alertPluginInstance
.
setPluginInstanceParams
(
"test1"
);
alertPluginInstance
.
setPluginDefineId
(
1
);
alertPluginInstance
.
setId
(
1
);
alertPluginInstance
.
setPluginInstanceParams
(
"test"
);
alertPluginInstances
=
new
ArrayList
<>();
alertPluginInstances
.
add
(
alertPluginInstance
);
}
@Test
public
void
testCreate
()
{
Mockito
.
when
(
alertPluginInstanceMapper
.
queryByInstanceName
(
"test"
)).
thenReturn
(
alertPluginInstances
);
Map
<
String
,
Object
>
result
=
alertPluginInstanceService
.
create
(
user
,
1
,
"test"
,
"test params"
);
Assert
.
assertEquals
(
Status
.
PLUGIN_INSTANCE_ALREADY_EXIT
,
result
.
get
(
Constants
.
STATUS
));
Mockito
.
when
(
alertPluginInstanceMapper
.
insert
(
Mockito
.
any
())).
thenReturn
(
1
);
result
=
alertPluginInstanceService
.
create
(
user
,
1
,
"test1"
,
"test params"
);
Assert
.
assertEquals
(
Status
.
SUCCESS
,
result
.
get
(
Constants
.
STATUS
));
}
@Test
public
void
testDelete
()
{
List
<
String
>
ids
=
Arrays
.
asList
(
"11,2,3"
,
null
,
"98,1"
);
Mockito
.
when
(
alertGroupMapper
.
queryInstanceIdsList
()).
thenReturn
(
ids
);
Map
<
String
,
Object
>
result
=
alertPluginInstanceService
.
delete
(
user
,
1
);
Assert
.
assertEquals
(
Status
.
DELETE_ALERT_PLUGIN_INSTANCE_ERROR_HAS_ALERT_GROUP_ASSOCIATED
,
result
.
get
(
Constants
.
STATUS
));
Mockito
.
when
(
alertPluginInstanceMapper
.
deleteById
(
9
)).
thenReturn
(
1
);
result
=
alertPluginInstanceService
.
delete
(
user
,
9
);
Assert
.
assertEquals
(
Status
.
SUCCESS
,
result
.
get
(
Constants
.
STATUS
));
}
}
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AlertPluginInstance.java
浏览文件 @
79779da0
...
...
@@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.dao.entity;
import
java.util.Date
;
import
com.baomidou.mybatisplus.annotation.FieldStrategy
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
...
...
@@ -39,7 +40,7 @@ public class AlertPluginInstance {
/**
* plugin_define_id
*/
@TableField
(
"plugin_define_id"
)
@TableField
(
value
=
"plugin_define_id"
,
updateStrategy
=
FieldStrategy
.
NEVER
)
private
int
pluginDefineId
;
/**
...
...
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java
浏览文件 @
79779da0
...
...
@@ -61,6 +61,12 @@ public interface AlertGroupMapper extends BaseMapper<AlertGroup> {
*/
List
<
AlertGroup
>
queryAllGroupList
();
/**
* query instance ids All
* @return list
*/
List
<
String
>
queryInstanceIdsList
();
/**
* queryAlertGroupInstanceIdsById
* @param alertGroupId
...
...
dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml
浏览文件 @
79779da0
...
...
@@ -52,6 +52,13 @@
order by update_time desc
</select>
<select
id=
"queryInstanceIdsList"
resultType=
"String"
>
select
alert_instance_ids
from t_ds_alertgroup
order by update_time desc
</select>
<select
id=
"queryAlertGroupInstanceIdsById"
resultType=
"String"
>
select alert_instance_ids from t_ds_alertgroup
where id = #{alertGroupId}
...
...
pom.xml
浏览文件 @
79779da0
...
...
@@ -787,6 +787,7 @@
<include>
**/api/service/BaseDAGServiceTest.java
</include>
<include>
**/api/service/BaseServiceTest.java
</include>
<include>
**/api/service/DataAnalysisServiceTest.java
</include>
<include>
**/api/service/AlertPluginInstanceServiceTest.java
</include>
<include>
**/api/service/DataSourceServiceTest.java
</include>
<include>
**/api/service/ExecutorService2Test.java
</include>
<include>
**/api/service/ExecutorServiceTest.java
</include>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录