Commit ff09f2d7 by sanshi

事件表更

parent 37378dab
......@@ -2,18 +2,15 @@
# 确认事件
# 作者: 陈磊
# 时间: 2019-10-24
from WorkApi.ApiBase import ApiBase
from WorkUtils.UtilsRequest import UtilsRequest
from WorkUtils.UtilsLog import UtilsLog
class ProblemAcknowledge(object):
def __init__(self, _host, eventids=None, action=None, message=None, severity=None):
def __init__(self, _host):
"""
:param _host: 域名
:param eventids: 应用ID
:param action : 主机组的ID
:param message: 应用名称
:param severity: 应用程序的来源
:return:
"""
self.log = UtilsLog()
......@@ -28,18 +25,19 @@ class ProblemAcknowledge(object):
self._json = {}
self.response = ""
self.eventids = eventids
self.action = action
self.message = message
self.severity = severity
self.eventids = None
self.action = None
self.message = None
self.severity = None
self.api = UtilsRequest()
def get_response(self):
self._json = {
"eventids": self.eventids,
"action": self.action,
"message": self.message,
"severity": self.severity,
}
base = ApiBase()
base.dict_add_key(_key="eventids", value=self.eventids)
base.dict_add_key(_key="action", value=self.action)
base.dict_add_key(_key="message", value=self.message)
base.dict_add_key(_key="severity", value=self.severity)
self._json = base._json
self.response = self.api.post(url=self._url, json=self._json)
......@@ -5,17 +5,23 @@
from __future__ import division
from WorkApi.API.Host.host_create import HostCreate
from WorkUtils.UtilsLog import UtilsLog
from WorkUtils.UtilsDataBase import UtilsDataBase
from WorkUtils.UtilsResponse import UtilsResponse
from WorkApi.API.Problem.problem_acknowledge import ProblemAcknowledge
from WorkData.Zabbix.hosts import DataHosts
from WorkData.Zabbix.events import DataEvents
from WorkData.Zabbix.items import DataItems
from WorkData.Zabbix.functions import DataFunctions
from WorkCase import CaseBase
import allure
import time
@allure.feature("测试模块:problem.acknowledge")
......@@ -30,16 +36,45 @@ class TestProblemAcknowledge(object):
db_base = env["db_base"]
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
def setup_class(cls):
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)
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
def teardown_class(cls):
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):
self.log.debug("测试用例执行开始...")
......@@ -66,6 +101,18 @@ class TestProblemAcknowledge(object):
sql = DataEvents().select_all_from_allKeys(session=session, eventid=eventid, objectid=objectid)
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")
def insert_events(self, eventid=None, source=None, _object=None, objectid=None, clock=None, value=None, acknowledged=None,
ns=None, name=None, severity=None):
......@@ -94,10 +141,75 @@ class TestProblemAcknowledge(object):
_msg = UtilsResponse().get_msg(response=response)
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("创建测试数据")
def case_create(self, eventid):
self.insert_events(eventid=eventid, source=0, _object=0, objectid=10000, clock=1568790047, value=1, acknowledged=1, ns=937649172,
name=self.base_name, severity=0)
def case_create_host(self, num):
host = self.base_host_name + num
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.story("告警忽略/关闭:action为空,返回异常")
......@@ -114,21 +226,49 @@ class TestProblemAcknowledge(object):
self.check_code(response=response, code=100)
self.check_msg(response=response, msg="[eventids]不能为空")
@allure.title("problem.acknowledge:action=1 关闭告警")
@allure.story("告警忽略/关闭:action=1 关闭告警")
@allure.title("problem.acknowledge:action=1 关闭一个告警")
@allure.story("告警忽略/关闭:action=1 关闭一个告警")
def test_case_03(self):
event_id = 1
self.case_create(eventid=event_id)
response = self.problem_acknowledge(eventids=[event_id], action=1)
self.case_create_host(num="03")
self.case_create(num="03", objectid=self.triggers_ids[0], acknowledged=0)
response = self.problem_acknowledge(eventids=[self.eventid], action=1)
self.check_code(response=response, code=0)
self.check_sql(eventid=self.eventid)
@allure.title("problem.acknowledge:action=2 忽略告警")
@allure.story("告警忽略/关闭:action=2 忽略告警")
@allure.title("problem.acknowledge:action=2 忽略一个告警")
@allure.story("告警忽略/关闭:action=2 忽略一个告警")
def test_case_04(self):
event_id = 2
self.case_create(eventid=event_id)
response = self.problem_acknowledge(eventids=[event_id], action=2)
self.case_create_host(num="04")
self.case_create(num="04", objectid=self.triggers_ids[0], acknowledged=0)
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_sql(eventid=eventid_1)
self.check_sql(eventid=eventid_2)
self.check_sql(eventid=eventid_3)
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