Commit ff09f2d7 by sanshi

事件表更

parent 37378dab
...@@ -2,18 +2,15 @@ ...@@ -2,18 +2,15 @@
# 确认事件 # 确认事件
# 作者: 陈磊 # 作者: 陈磊
# 时间: 2019-10-24 # 时间: 2019-10-24
from WorkApi.ApiBase import ApiBase
from WorkUtils.UtilsRequest import UtilsRequest from WorkUtils.UtilsRequest import UtilsRequest
from WorkUtils.UtilsLog import UtilsLog from WorkUtils.UtilsLog import UtilsLog
class ProblemAcknowledge(object): class ProblemAcknowledge(object):
def __init__(self, _host, eventids=None, action=None, message=None, severity=None): def __init__(self, _host):
""" """
:param _host: 域名 :param _host: 域名
:param eventids: 应用ID
:param action : 主机组的ID
:param message: 应用名称
:param severity: 应用程序的来源
:return: :return:
""" """
self.log = UtilsLog() self.log = UtilsLog()
...@@ -28,18 +25,19 @@ class ProblemAcknowledge(object): ...@@ -28,18 +25,19 @@ class ProblemAcknowledge(object):
self._json = {} self._json = {}
self.response = "" self.response = ""
self.eventids = eventids self.eventids = None
self.action = action self.action = None
self.message = message self.message = None
self.severity = severity self.severity = None
self.api = UtilsRequest() self.api = UtilsRequest()
def get_response(self): def get_response(self):
self._json = { base = ApiBase()
"eventids": self.eventids, base.dict_add_key(_key="eventids", value=self.eventids)
"action": self.action, base.dict_add_key(_key="action", value=self.action)
"message": self.message, base.dict_add_key(_key="message", value=self.message)
"severity": self.severity, base.dict_add_key(_key="severity", value=self.severity)
} self._json = base._json
self.response = self.api.post(url=self._url, json=self._json) self.response = self.api.post(url=self._url, json=self._json)
...@@ -5,17 +5,23 @@ ...@@ -5,17 +5,23 @@
from __future__ import division from __future__ import division
from WorkApi.API.Host.host_create import HostCreate
from WorkUtils.UtilsLog import UtilsLog from WorkUtils.UtilsLog import UtilsLog
from WorkUtils.UtilsDataBase import UtilsDataBase from WorkUtils.UtilsDataBase import UtilsDataBase
from WorkUtils.UtilsResponse import UtilsResponse from WorkUtils.UtilsResponse import UtilsResponse
from WorkApi.API.Problem.problem_acknowledge import ProblemAcknowledge from WorkApi.API.Problem.problem_acknowledge import ProblemAcknowledge
from WorkData.Zabbix.hosts import DataHosts
from WorkData.Zabbix.events import DataEvents from WorkData.Zabbix.events import DataEvents
from WorkData.Zabbix.items import DataItems
from WorkData.Zabbix.functions import DataFunctions
from WorkCase import CaseBase from WorkCase import CaseBase
import allure import allure
import time
@allure.feature("测试模块:problem.acknowledge") @allure.feature("测试模块:problem.acknowledge")
...@@ -30,16 +36,45 @@ class TestProblemAcknowledge(object): ...@@ -30,16 +36,45 @@ class TestProblemAcknowledge(object):
db_base = env["db_base"] db_base = env["db_base"]
base_name = "SS EVENT" base_name = "SS EVENT"
base_host_name = "SS HOST EVENT"
base_description = "SS 自动化专用 告警"
base_ip = "172.16.3.170"
base_groupid = 99
base_port = 161
base_eventid = 92000000
base_type_snmp = 10186
@classmethod @classmethod
def setup_class(cls): def setup_class(cls):
cls.log.debug("开始执行测试套件.......") cls.log.debug("开始执行测试套件.......")
session = UtilsDataBase().conn_mysql(db_url=cls.db_url, db_port=cls.db_port, db_base=cls.db_base, db_user=cls.db_user, db_pw=cls.db_pw) session = UtilsDataBase().conn_mysql(db_url=cls.db_url, db_port=cls.db_port, db_base=cls.db_base, db_user=cls.db_user, db_pw=cls.db_pw)
DataEvents().delete_name(session=session, name=cls.base_name) sql = DataHosts().select_like_name(session=session, name=cls.base_host_name)
for x, y in enumerate(sql):
session = UtilsDataBase().conn_mysql(db_url=cls.db_url, db_port=cls.db_port, db_base=cls.db_base, db_user=cls.db_user, db_pw=cls.db_pw)
DataItems().delete_hostid(session=session, hostid=y.hostid)
session = UtilsDataBase().conn_mysql(db_url=cls.db_url, db_port=cls.db_port, db_base=cls.db_base, db_user=cls.db_user, db_pw=cls.db_pw)
DataHosts().delete_like_name(session=session, name=cls.base_host_name)
session = UtilsDataBase().conn_mysql(db_url=cls.db_url, db_port=cls.db_port, db_base=cls.db_base, db_user=cls.db_user, db_pw=cls.db_pw)
DataEvents().delete_like_name(session=session, name=cls.base_name)
@classmethod @classmethod
def teardown_class(cls): def teardown_class(cls):
cls.log.debug("结束执行测试套件.......") cls.log.debug("结束执行测试套件.......")
session = UtilsDataBase().conn_mysql(db_url=cls.db_url, db_port=cls.db_port, db_base=cls.db_base, db_user=cls.db_user, db_pw=cls.db_pw)
sql = DataHosts().select_like_name(session=session, name=cls.base_host_name)
for x, y in enumerate(sql):
session = UtilsDataBase().conn_mysql(db_url=cls.db_url, db_port=cls.db_port, db_base=cls.db_base, db_user=cls.db_user, db_pw=cls.db_pw)
DataItems().delete_hostid(session=session, hostid=y.hostid)
session = UtilsDataBase().conn_mysql(db_url=cls.db_url, db_port=cls.db_port, db_base=cls.db_base, db_user=cls.db_user, db_pw=cls.db_pw)
DataHosts().delete_like_name(session=session, name=cls.base_host_name)
session = UtilsDataBase().conn_mysql(db_url=cls.db_url, db_port=cls.db_port, db_base=cls.db_base, db_user=cls.db_user, db_pw=cls.db_pw)
DataEvents().delete_like_name(session=session, name=cls.base_name)
def setup_method(self): def setup_method(self):
self.log.debug("测试用例执行开始...") self.log.debug("测试用例执行开始...")
...@@ -66,6 +101,18 @@ class TestProblemAcknowledge(object): ...@@ -66,6 +101,18 @@ class TestProblemAcknowledge(object):
sql = DataEvents().select_all_from_allKeys(session=session, eventid=eventid, objectid=objectid) sql = DataEvents().select_all_from_allKeys(session=session, eventid=eventid, objectid=objectid)
return sql return sql
@allure.step("查询表:items")
def select_items(self, hostid=None):
session = self.db_session()
sql = DataItems().select_all_from_allKeys(session=session, hostid=hostid)
return sql
@allure.step("查询表:items")
def select_functions(self, itemid=None):
session = self.db_session()
sql = DataFunctions().select_all_from_allKeys(session=session, itemid=itemid)
return sql
@allure.step("新增表数据:events") @allure.step("新增表数据:events")
def insert_events(self, eventid=None, source=None, _object=None, objectid=None, clock=None, value=None, acknowledged=None, def insert_events(self, eventid=None, source=None, _object=None, objectid=None, clock=None, value=None, acknowledged=None,
ns=None, name=None, severity=None): ns=None, name=None, severity=None):
...@@ -94,10 +141,75 @@ class TestProblemAcknowledge(object): ...@@ -94,10 +141,75 @@ class TestProblemAcknowledge(object):
_msg = UtilsResponse().get_msg(response=response) _msg = UtilsResponse().get_msg(response=response)
assert _msg == msg assert _msg == msg
@allure.step("调用接口:host.create")
def host_create(self, host=None, name=None, description=None, groupids=None, interfaces=None, tags=None, templateids=None, macros=None,
inventory=None, status=None, inventory_mode=None):
api = HostCreate(_host=self.host)
api.host = host
api.name = name
api.description = description
api.groupids = groupids
api.interfaces = interfaces
api.tags = tags
api.templateids = templateids
api.macros = macros
api.inventory = inventory
api.status = status
api.inventory_mode = inventory_mode
api.tls_connect = 1
api.tls_accept = 1
api.tls_psk_identity = ""
api.tls_psk = ""
api.get_response()
return api.response
@allure.step("创建测试数据") @allure.step("创建测试数据")
def case_create(self, eventid): def case_create_host(self, num):
self.insert_events(eventid=eventid, source=0, _object=0, objectid=10000, clock=1568790047, value=1, acknowledged=1, ns=937649172, host = self.base_host_name + num
name=self.base_name, severity=0) description = self.base_description + num
interfaces = {
"type": 2,
"main": 1,
"useip": 1,
"ip": self.base_ip,
"dns": "",
"port": self.base_port,
"bulk": 1
}
response = self.host_create(host=host, description=description, groupids=[self.base_groupid],
interfaces=[interfaces], status=0, templateids=[self.base_type_snmp],
macros=[{
"macro": "{$SNMP_COMMUNITY}",
"value": "public"
}])
self.check_code(response=response, code=0)
self.hostid = UtilsResponse().get_result(response=response)["hostids"][0]
sql_items = self.select_items(hostid=self.hostid)
self.triggers_ids = []
for x, y in enumerate(sql_items):
sql_functions = self.select_functions(itemid=y.itemid)
for q, w in enumerate(sql_functions):
self.triggers_ids.append(w.triggerid)
return self.hostid
@allure.step("创建测试数据")
def case_create(self, num, objectid, acknowledged):
self.eventid = self.base_eventid + int(num)
self.name = self.base_name + num
self.insert_events(eventid=self.eventid, source=0, _object=0, objectid=objectid, clock=0, value=1,
acknowledged=acknowledged, ns=int(time.time()),
name=self.name, severity=0)
return self.eventid
@allure.step("校验告警状态")
def check_sql(self, eventid):
sql = self.select_events(eventid=eventid)
assert sql != []
for x, y in enumerate(sql):
assert y.acknowledged == 1
assert x == 0
@allure.title("problem.acknowledge:action为空,返回异常") @allure.title("problem.acknowledge:action为空,返回异常")
@allure.story("告警忽略/关闭:action为空,返回异常") @allure.story("告警忽略/关闭:action为空,返回异常")
...@@ -114,21 +226,49 @@ class TestProblemAcknowledge(object): ...@@ -114,21 +226,49 @@ class TestProblemAcknowledge(object):
self.check_code(response=response, code=100) self.check_code(response=response, code=100)
self.check_msg(response=response, msg="[eventids]不能为空") self.check_msg(response=response, msg="[eventids]不能为空")
@allure.title("problem.acknowledge:action=1 关闭告警") @allure.title("problem.acknowledge:action=1 关闭一个告警")
@allure.story("告警忽略/关闭:action=1 关闭告警") @allure.story("告警忽略/关闭:action=1 关闭一个告警")
def test_case_03(self): def test_case_03(self):
event_id = 1 self.case_create_host(num="03")
self.case_create(eventid=event_id) self.case_create(num="03", objectid=self.triggers_ids[0], acknowledged=0)
response = self.problem_acknowledge(eventids=[event_id], action=1) response = self.problem_acknowledge(eventids=[self.eventid], action=1)
self.check_code(response=response, code=0) self.check_code(response=response, code=0)
self.check_sql(eventid=self.eventid)
@allure.title("problem.acknowledge:action=2 忽略告警") @allure.title("problem.acknowledge:action=2 忽略一个告警")
@allure.story("告警忽略/关闭:action=2 忽略告警") @allure.story("告警忽略/关闭:action=2 忽略一个告警")
def test_case_04(self): def test_case_04(self):
event_id = 2 self.case_create_host(num="04")
self.case_create(eventid=event_id) self.case_create(num="04", objectid=self.triggers_ids[0], acknowledged=0)
response = self.problem_acknowledge(eventids=[event_id], action=2) response = self.problem_acknowledge(eventids=[self.eventid], action=2)
self.check_code(response=response, code=0)
self.check_sql(eventid=self.eventid)
@allure.title("problem.acknowledge:action=1 关闭多个告警")
@allure.story("告警忽略/关闭:action=1 关闭多个告警")
def test_case_05(self):
self.case_create_host(num="05")
eventid_1 = self.case_create(num="051", objectid=self.triggers_ids[0], acknowledged=0)
eventid_2 = self.case_create(num="052", objectid=self.triggers_ids[1], acknowledged=0)
eventid_3 = self.case_create(num="053", objectid=self.triggers_ids[2], acknowledged=0)
response = self.problem_acknowledge(eventids=[eventid_1, eventid_2, eventid_3], action=1)
self.check_code(response=response, code=0)
self.check_sql(eventid=eventid_1)
self.check_sql(eventid=eventid_2)
self.check_sql(eventid=eventid_3)
@allure.title("problem.acknowledge:action=2 忽略多个告警")
@allure.story("告警忽略/关闭:action=2 忽略多个告警")
def test_case_06(self):
self.case_create_host(num="06")
eventid_1 = self.case_create(num="061", objectid=self.triggers_ids[0], acknowledged=0)
eventid_2 = self.case_create(num="062", objectid=self.triggers_ids[1], acknowledged=0)
eventid_3 = self.case_create(num="063", objectid=self.triggers_ids[2], acknowledged=0)
response = self.problem_acknowledge(eventids=[eventid_1, eventid_2, eventid_3], action=2)
self.check_code(response=response, code=0) self.check_code(response=response, code=0)
self.check_sql(eventid=eventid_1)
self.check_sql(eventid=eventid_2)
self.check_sql(eventid=eventid_3)
if __name__ == "__main__": if __name__ == "__main__":
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment