Skip to content

Commit d1f702d

Browse files
committed
test: unify hugepage snapshot testing
Just have a single test that is parametrized by snapshot type. This will then automatically also test mincore diff snapshots. Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
1 parent 9600393 commit d1f702d

File tree

1 file changed

+12
-44
lines changed

1 file changed

+12
-44
lines changed

tests/integration_tests/performance/test_huge_pages.py

Lines changed: 12 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,30 @@ def test_hugetlbfs_boot(uvm_plain):
6868
)
6969

7070

71-
def test_hugetlbfs_snapshot(microvm_factory, guest_kernel_linux_5_10, rootfs):
71+
def test_hugetlbfs_snapshot(
72+
microvm_factory, guest_kernel_linux_5_10, rootfs, snapshot_type
73+
):
7274
"""
73-
Test hugetlbfs snapshot restore via uffd
75+
Test hugetlbfs snapshot restore via
76+
77+
Despite guest memory being backed by huge pages, differential snapshots still work at 4K granularity.
7478
"""
7579

7680
### Create Snapshot ###
7781
vm = microvm_factory.build(guest_kernel_linux_5_10, rootfs)
7882
vm.memory_monitor = None
7983
vm.spawn()
80-
vm.basic_config(huge_pages=HugePagesConfig.HUGETLBFS_2MB, mem_size_mib=128)
84+
vm.basic_config(
85+
huge_pages=HugePagesConfig.HUGETLBFS_2MB,
86+
mem_size_mib=128,
87+
track_dirty_pages=snapshot_type.needs_dirty_page_tracking,
88+
)
8189
vm.add_net_iface()
8290
vm.start()
8391

8492
check_hugetlbfs_in_use(vm.firecracker_pid, "/anon_hugepage")
8593

86-
snapshot = vm.snapshot_full()
94+
snapshot = vm.make_snapshot(snapshot_type)
8795

8896
vm.kill()
8997

@@ -95,46 +103,6 @@ def test_hugetlbfs_snapshot(microvm_factory, guest_kernel_linux_5_10, rootfs):
95103
check_hugetlbfs_in_use(vm.firecracker_pid, "/anon_hugepage")
96104

97105

98-
def test_hugetlbfs_diff_snapshot(microvm_factory, uvm_plain):
99-
"""
100-
Test hugetlbfs differential snapshot support.
101-
102-
Despite guest memory being backed by huge pages, differential snapshots still work at 4K granularity.
103-
"""
104-
105-
### Create Snapshot ###
106-
uvm_plain.memory_monitor = None
107-
uvm_plain.spawn()
108-
uvm_plain.basic_config(
109-
huge_pages=HugePagesConfig.HUGETLBFS_2MB,
110-
mem_size_mib=128,
111-
track_dirty_pages=True,
112-
)
113-
uvm_plain.add_net_iface()
114-
uvm_plain.start()
115-
116-
# Wait for microvm to boot
117-
118-
base_snapshot = uvm_plain.snapshot_diff()
119-
uvm_plain.resume()
120-
121-
# Run command to dirty some pages
122-
uvm_plain.ssh.check_output("sync")
123-
124-
snapshot_diff = uvm_plain.snapshot_diff()
125-
snapshot_merged = snapshot_diff.rebase_snapshot(base_snapshot)
126-
127-
uvm_plain.kill()
128-
129-
vm = microvm_factory.build()
130-
vm.spawn()
131-
vm.restore_from_snapshot(
132-
snapshot_merged, resume=True, uffd_handler_name="on_demand"
133-
)
134-
135-
# Verify if the restored microvm works.
136-
137-
138106
@pytest.mark.parametrize("huge_pages", HugePagesConfig)
139107
def test_ept_violation_count(
140108
microvm_factory,

0 commit comments

Comments
 (0)