Merge pull request #1273 from jfckm/example-escape

Example test for EmergencyEscape
This commit is contained in:
Robert Baldyga 2022-07-14 12:38:45 +02:00 committed by GitHub
commit 7443c1e694
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,6 +4,7 @@
#
import pytest
from collections import namedtuple
from core.test_run import TestRun
from storage_devices.disk import DiskType, DiskTypeSet
@ -14,9 +15,12 @@ from storage_devices.drbd import Drbd
from test_tools.drbdadm import Drbdadm
from test_tools import fs_utils
from test_tools.disk_utils import Filesystem
from test_tools.fs_utils import copy, check_if_file_exists
from test_utils.filesystem.directory import Directory
from test_utils.filesystem.file import File
from test_utils.size import Size, Unit
from test_utils.emergency_escape import EmergencyEscape
from test_utils.fstab import add_mountpoint
def setup_module():
@ -213,3 +217,43 @@ def test_drbd_example():
for dut in TestRun.duts:
with TestRun.use_dut(dut):
Drbdadm.down(caches.name)
def test_example_emergency_escape():
"""
title: Example test EmergencyEscape class
description: |
Check if EmergencyEscape escapes emergency mode on DUT and leaves a verification marker
pass_criteria:
- DUT boots to default target after escaping emergency mode
- verification marker present in dmesg
"""
with TestRun.step("Create not-working mount"):
FakeDevice = namedtuple("FakeDevice", ["path"])
copy("/etc/fstab", "/root/fstab.bkup", force=True)
dev = FakeDevice("/dev/not_existing_device")
add_mountpoint(dev, "/not/a/mountpoint", Filesystem.xfs, mount_now=False)
with TestRun.step("Configure emergency escape to restore working fstab from backup"):
escape = EmergencyEscape()
escape.add_escape_method_command("/usr/bin/cp /root/fstab.bkup /etc/fstab")
escape.add_cleanup_method_command("/usr/bin/rm -f /root/fstab.bkup")
with TestRun.step("Reboot with escape"):
with escape:
TestRun.executor.reboot()
TestRun.executor.wait_for_connection()
dmesg_out = TestRun.executor.run_expect_success("dmesg").stdout.split("\n")
assert escape.verify_trigger_in_log(
dmesg_out
), "Emergency Escape trigger marker not found in dmesg"
with TestRun.step("Reboot without escape"):
TestRun.executor.reboot()
TestRun.executor.wait_for_connection()
dmesg_out = TestRun.executor.run_expect_success("dmesg").stdout.split("\n")
assert not escape.verify_trigger_in_log(
dmesg_out
), "Emergency Escape trigger marker found in dmesg"