Skip to content

Commit 3edd4e8

Browse files
AlexandruCihodaruluminitavoicu
authored andcommitted
[CI]: Console restore integration test
Signed-off-by: AlexandruCihodaru <[email protected]>
1 parent 77f7595 commit 3edd4e8

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

tests/integration_tests/functional/test_serial_io.py

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44

55
import fcntl
66
import os
7+
import platform
78
import subprocess
89
import termios
910
import time
1011

1112
from framework.microvm import Serial
1213
from framework.state_machine import TestState
14+
from framework.builder import MicrovmBuilder, SnapshotBuilder
15+
from framework.artifacts import SnapshotType
1316
from framework import utils
1417
import host_tools.logging as log_tools
15-
import host_tools.network as net_tools # pylint: disable=import-error
18+
import host_tools.network as net_tools
1619

1720

1821
class WaitTerminal(TestState): # pylint: disable=too-few-public-methods
@@ -44,6 +47,53 @@ def handle_input(self, unused_serial, _) -> TestState:
4447
return self
4548

4649

50+
def test_serial_after_snapshot(bin_cloner_path):
51+
"""
52+
Serial I/O after restoring from a snapshot.
53+
54+
@type: functional
55+
"""
56+
vm_builder = MicrovmBuilder(bin_cloner_path)
57+
vm_instance = vm_builder.build_vm_nano(
58+
diff_snapshots=False,
59+
daemonize=False,
60+
)
61+
microvm = vm_instance.vm
62+
root_disk = vm_instance.disks[0]
63+
ssh_key = vm_instance.ssh_key
64+
65+
microvm.start()
66+
serial = Serial(microvm)
67+
serial.open()
68+
# Image used for tests on aarch64 has autologon
69+
if platform.machine() == "x86_64":
70+
serial.rx(token='login: ')
71+
serial.tx("root")
72+
serial.rx("Password: ")
73+
serial.tx("root")
74+
75+
snapshot_builder = SnapshotBuilder(microvm)
76+
disks = [root_disk.local_path()]
77+
# Create diff snapshot.
78+
snapshot = snapshot_builder.create(disks,
79+
ssh_key,
80+
SnapshotType.FULL)
81+
# Kill base microVM.
82+
microvm.kill()
83+
84+
# Load microVM clone from snapshot.
85+
test_microvm, _ = vm_builder.build_from_snapshot(snapshot,
86+
resume=True,
87+
diff_snapshots=False,
88+
daemonize=False)
89+
serial = Serial(test_microvm)
90+
serial.open()
91+
serial.rx("#")
92+
serial.tx("pwd")
93+
res = serial.rx("#")
94+
assert "/root" in res
95+
96+
4797
def test_serial_console_login(test_microvm_with_api):
4898
"""
4999
Test serial console login.

0 commit comments

Comments
 (0)