180 lines
7.1 KiB
Python
180 lines
7.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
from include.common_classes_60 import PandoraWebDriverTestCase
|
|
from include.common_functions_60 import login, click_menu_element, detect_and_pass_all_wizards, logout, gen_random_string
|
|
from include.planned_downtime_functions import *
|
|
from include.alert_functions import *
|
|
from include.module_functions import *
|
|
from include.agent_functions import *
|
|
from include.event_functions import *
|
|
from selenium import webdriver
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.common.keys import Keys
|
|
from selenium.webdriver.support.ui import Select
|
|
from selenium.common.exceptions import NoSuchElementException
|
|
from selenium.common.exceptions import NoAlertPresentException
|
|
from selenium.webdriver.remote.webelement import WebElement
|
|
|
|
import unittest2, time, re, datetime
|
|
import logging
|
|
|
|
class Planned_downtime(PandoraWebDriverTestCase):
|
|
|
|
test_name = u'Planned_downtime'
|
|
test_description = u'Planed downtime test'
|
|
tickets_associated = []
|
|
|
|
def atest_A_create_planned_downtime_Quiet(self):
|
|
|
|
u"""
|
|
Create and search planned downtime quiet
|
|
"""
|
|
|
|
logging.basicConfig(filename="Planned_downtime.log", level=logging.INFO, filemode='w')
|
|
|
|
driver = self.driver
|
|
self.login()
|
|
detect_and_pass_all_wizards(driver)
|
|
|
|
planned_name = gen_random_string(6)
|
|
|
|
create_planned_downtime(driver,planned_name,"Applications","Quiet","Once",description=planned_name)
|
|
|
|
time.sleep(10)
|
|
|
|
search_planned_downtime(driver,planned_name)
|
|
|
|
element = driver.find_element_by_xpath('//img[@data-title="Running"]')
|
|
self.assertIsInstance(element,WebElement)
|
|
|
|
logging.info("atest_A_create_planned_downtime_Quiet is correct")
|
|
|
|
def atest_B_create_planned_downtime_disabled_agents(self):
|
|
|
|
u"""
|
|
Create and search planned downtime disabled agents
|
|
"""
|
|
driver = self.driver
|
|
|
|
planned_name = gen_random_string(6)
|
|
|
|
create_planned_downtime(driver,planned_name,"Applications","Disabled Agents","Once",description=planned_name)
|
|
|
|
time.sleep(10)
|
|
|
|
search_planned_downtime(driver,planned_name)
|
|
|
|
element = driver.find_element_by_xpath('//img[@data-title="Running"]')
|
|
self.assertIsInstance(element,WebElement)
|
|
|
|
logging.info("atest_B_create_planned_downtime_disabled_agents is correct")
|
|
|
|
def atest_C_create_planned_downtime_disabled_only_alerts(self):
|
|
|
|
u"""
|
|
Create and search planned downtime disabled only alerts
|
|
"""
|
|
driver = self.driver
|
|
|
|
planned_name = gen_random_string(6)
|
|
|
|
create_planned_downtime(driver,planned_name,"Applications","Disabled only Alerts","Once",description=planned_name)
|
|
|
|
time.sleep(10)
|
|
|
|
search_planned_downtime(driver,planned_name)
|
|
|
|
element = driver.find_element_by_xpath('//img[@data-title="Running"]')
|
|
self.assertIsInstance(element,WebElement)
|
|
|
|
logging.info("atest_C_create_planned_downtime_disabled_only_alerts is correct")
|
|
|
|
def atest_D_delete_planned_downtime(self):
|
|
|
|
|
|
driver=self.driver
|
|
|
|
planned_name = gen_random_string(6)
|
|
|
|
create_planned_downtime(driver,planned_name,"Applications","Quiet","Once",description=planned_name)
|
|
|
|
delete_planned_downtime(driver,planned_name)
|
|
|
|
logging.info("atest_D_delete_planned_downtime is correct")
|
|
|
|
def atest_E_quiet_functionality(self):
|
|
|
|
driver=self.driver
|
|
|
|
planned_name = gen_random_string(6)
|
|
agent_name_A = gen_random_string(6)
|
|
agent_name_B = gen_random_string(6)
|
|
|
|
module_name_A_A = gen_random_string(6)
|
|
module_name_A_B = gen_random_string(6)
|
|
|
|
module_name_B_A = gen_random_string(6)
|
|
module_name_B_B = gen_random_string(6)
|
|
|
|
create_agent(driver,agent_name_A,ip="127.0.0.1",group="Applications")
|
|
create_agent(driver,agent_name_B,ip="127.0.0.1",group="Applications")
|
|
|
|
create_module('network_server',driver,agent_name=agent_name_A,module_name=module_name_A_A,component_group='Network Management',network_component='Host Alive')
|
|
create_module('network_server',driver,agent_name=agent_name_A,module_name=module_name_A_B,component_group='Network Management',network_component='Host Latency')
|
|
|
|
create_module('network_server',driver,agent_name=agent_name_B,module_name=module_name_B_A,component_group='Network Management',network_component='Host Alive')
|
|
create_module('network_server',driver,agent_name=agent_name_B,module_name=module_name_B_B,component_group='Network Management',network_component='Host Alive')
|
|
|
|
assign_alert_template_to_module(driver,agent_name_A,module_name_A_A,'Critical condition')
|
|
assign_alert_template_to_module(driver,agent_name_A,module_name_A_B,'Critical condition')
|
|
|
|
assign_alert_template_to_module(driver,agent_name_B,module_name_B_A,'Critical condition')
|
|
assign_alert_template_to_module(driver,agent_name_B,module_name_B_B,'Critical condition')
|
|
|
|
#Little hack to allow the planned downtime to be edited
|
|
fifteen_seconds_later = datetime.datetime.now() + datetime.timedelta(seconds=15)
|
|
fifteen_seconds_later_to_pandora = str(fifteen_seconds_later.hour)+":"+str(fifteen_seconds_later.minute)+":"+str(fifteen_seconds_later.second)
|
|
|
|
create_planned_downtime(driver,planned_name,"Applications","Quiet","Once",hour_from=fifteen_seconds_later_to_pandora,description=planned_name,agent_module_list=[(agent_name_A,[module_name_A_A]),(agent_name_B,[module_name_B_A])])
|
|
|
|
#We wait 10 seconds to the planned downtime to start. Since we do not specify a date, default dates are from now to one hour in the future.
|
|
time.sleep(40)
|
|
|
|
#Is the planned downtime running?
|
|
search_planned_downtime(driver,planned_name)
|
|
element = driver.find_element_by_xpath('//img[@data-title="Running"]')
|
|
self.assertIsInstance(element,WebElement)
|
|
|
|
force_alert_of_module(driver,agent_name_A,module_name_A_A,'Critical condition')
|
|
force_alert_of_module(driver,agent_name_A,module_name_A_B,'Critical condition')
|
|
force_alert_of_module(driver,agent_name_B,module_name_B_A,'Critical condition')
|
|
force_alert_of_module(driver,agent_name_B,module_name_B_B,'Critical condition')
|
|
|
|
search_events(driver,agent_name=agent_name_A,module_name=module_name_A_A)
|
|
|
|
event_who_should_not_be_present = driver.find_elements_by_xpath('//tbody/tr[td[3][contains(.,"Alert fired")] and td[4][contains(.,"'+agent_name_A+'")]]')
|
|
|
|
self.assertEqual(event_who_should_not_be_present,[])
|
|
|
|
search_events(driver,agent_name=agent_name_A,module_name=module_name_A_B)
|
|
|
|
event_who_should_be_present = driver.find_elements_by_xpath('//tbody/tr[td[3][contains(.,"Alert fired")] and td[4][contains(.,"'+agent_name_A+'")]]')
|
|
|
|
self.assertNotEqual(event_who_should_be_present,[])
|
|
|
|
search_events(driver,agent_name=agent_name_B,module_name=module_name_B_A)
|
|
|
|
event_who_should_not_be_present_b = driver.find_elements_by_xpath('//tbody/tr[td[3][contains(.,"Alert fired")] and td[4][contains(.,"'+agent_name_B+'")]]')
|
|
|
|
self.assertEqual(event_who_should_not_be_present_b,[])
|
|
|
|
search_events(driver,agent_name=agent_name_B,module_name=module_name_B_B)
|
|
|
|
event_who_should_be_present_b = driver.find_elements_by_xpath('//tbody/tr[td[3][contains(.,"Alert fired")] and td[4][contains(.,"'+agent_name_B+'")]]')
|
|
|
|
self.assertNotEqual(event_who_should_be_present_b,[])
|
|
|
|
logging.info("atest_E_quiet_functionality is correct")
|
|
|
|
if __name__ == "__main__":
|
|
unittest2.main()
|