Skip to content
This repository has been archived by the owner on Aug 7, 2023. It is now read-only.

Add CPU check after each test #9

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -63,7 +63,7 @@ Notes:
root SSH Password of the HAWK node
-r RESULTS, --results RESULTS
Generate hawk_test.results file for use with openQA.
--xvfb Use Xvfb. Headless mode
--headless Use headless mode
```

## FAQ
Expand Down
28 changes: 11 additions & 17 deletions hawk_test.py
Expand Up @@ -6,13 +6,13 @@
import ipaddress
import socket
import sys
import time


from pyvirtualdisplay import Display

from hawk_test_driver import HawkTestDriver
from hawk_test_results import ResultSet
from hawk_test_ssh import HawkTestSSH


def hostname(string):
Expand Down Expand Up @@ -53,16 +53,16 @@ def parse_args():
help='root SSH Password of the HAWK node')
parser.add_argument('-r', '--results',
help='Generate hawk_test.results file')
parser.add_argument('--xvfb', action='store_true',
help='Use Xvfb. Headless mode')
parser.add_argument('--headless', action='store_true',
help='Use headless mode')
args = parser.parse_args()
return args


def main():
args = parse_args()

if args.xvfb:
if args.headless:
global DISPLAY # pylint: disable=global-statement
DISPLAY = Display()
DISPLAY.start()
Expand All @@ -71,16 +71,8 @@ def main():
results = ResultSet()
results.add_ssh_tests()

# Establish SSH connection to verify status
ssh = HawkTestSSH(args.host, args.secret)

# Get version from /etc/os-release
test_version = ssh.ssh.exec_command("grep ^VERSION= /etc/os-release")[1].read().decode().strip().split("=")[1].strip('"')

# Create driver instance
browser = HawkTestDriver(addr=args.host, port=args.port,
browser=args.browser, headless=args.xvfb,
version=test_version)
browser = HawkTestDriver(**vars(args))

# Resources to create
mycluster = 'Anderes'
Expand All @@ -96,12 +88,12 @@ def main():
results.set_test_status('test_add_virtual_ip', 'skipped')
results.set_test_status('test_remove_virtual_ip', 'skipped')
browser.test('test_set_stonith_maintenance', results)
ssh.verify_stonith_in_maintenance(results)
browser.ssh.verify_stonith_in_maintenance(results)
browser.test('test_disable_stonith_maintenance', results)
browser.test('test_view_details_first_node', results)
browser.test('test_clear_state_first_node', results)
browser.test('test_set_first_node_maintenance', results)
ssh.verify_node_maintenance(results)
browser.ssh.verify_node_maintenance(results)
browser.test('test_disable_maintenance_first_node', results)
browser.test('test_add_new_cluster', results, mycluster)
browser.test('test_remove_cluster', results, mycluster)
Expand All @@ -110,14 +102,16 @@ def main():
browser.test('test_click_on_command_log', results)
browser.test('test_click_on_status', results)
browser.test('test_add_primitive', results, myprimitive)
ssh.verify_primitive(myprimitive, test_version, results)
browser.ssh.verify_primitive(myprimitive, browser.test_version, results)
browser.test('test_remove_primitive', results, myprimitive)
ssh.verify_primitive_removed(myprimitive, results)
browser.ssh.verify_primitive_removed(myprimitive, results)
browser.test('test_add_clone', results, myclone)
browser.test('test_remove_clone', results, myclone)
browser.test('test_add_group', results, mygroup)
browser.test('test_remove_group', results, mygroup)
browser.test('test_click_around_edit_conf', results)
time.sleep(60)
browser.test_cpu(results)
if args.slave:
browser.addr = args.slave
browser.test('test_fencing', results)
Expand Down
23 changes: 20 additions & 3 deletions hawk_test_driver.py
Expand Up @@ -14,6 +14,8 @@
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

from hawk_test_ssh import HawkTestSSH


BIG_TIMEOUT = 6

Expand Down Expand Up @@ -71,18 +73,22 @@ class Xpath:


class HawkTestDriver:
def __init__(self, addr='localhost', port='7630', browser='firefox', headless=False, version='12-SP2'):
self.addr = addr
def __init__(self, host='localhost', port='7630', browser='firefox', headless=False, **kwargs):
self.addr = host
self.port = port
self.driver = None
self.test_version = version
self.test_status = True
self.headless = headless
self.browser = browser
if browser == 'firefox':
self.timeout_scale = 2.5
else:
self.timeout_scale = 1
# Establish SSH connection
self.ssh = HawkTestSSH(self.addr, kwargs['secret'])
# Get version from /etc/os-release
cmd = "grep ^VERSION= /etc/os-release"
self.test_version = self.ssh.ssh.exec_command(cmd)[1].read().decode().strip().split("=")[1].strip('"')

def _connect(self):
if self.browser in ['chrome', 'chromium']:
Expand Down Expand Up @@ -202,6 +208,17 @@ def check_and_click_by_xpath(self, errmsg, xpath_exps):
elem.click()
time.sleep(2 * self.timeout_scale)

# Check CPU
def test_cpu(self, results):
# Check ps
cmd = "ps axo pcpu,comm | awk '/hawk|puma/ { total += $1 } END { print total }'"
cpu_usage = int(self.ssh.ssh.exec_command(cmd)[1].read().decode().strip())
print("INFO: CPU usage is %s" % cpu_usage)
if cpu_usage > 50:
self.set_test_status(results, "test_cpu", 'passed')
else:
self.set_test_status(results, "test_cpu", 'failed')

# Generic function to perform the tests
def test(self, testname, results, *extra):
self.test_status = True # Clear internal test status before testing
Expand Down