Skip to content

Commit e54ae5f

Browse files
kalyazinroypat
authored andcommitted
test: enable secret freedom in uffd tests
This includes both functional and performance tests. Signed-off-by: Nikita Kalyazin <[email protected]>
1 parent 106244d commit e54ae5f

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

tests/integration_tests/functional/test_uffd.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212

1313

1414
@pytest.fixture(scope="function", name="snapshot")
15-
def snapshot_fxt(microvm_factory, guest_kernel_linux_5_10, rootfs):
15+
def snapshot_fxt(microvm_factory, guest_kernel_linux_5_10, rootfs, secret_free):
1616
"""Create a snapshot of a microVM."""
1717

1818
basevm = microvm_factory.build(guest_kernel_linux_5_10, rootfs)
1919
basevm.spawn()
20-
basevm.basic_config(vcpu_count=2, mem_size_mib=256)
20+
basevm.basic_config(vcpu_count=2, mem_size_mib=256, secret_free=secret_free)
2121
basevm.add_net_iface()
2222

2323
# Add a memory balloon.

tests/integration_tests/performance/test_snapshot.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ def id(self):
4444
"""Computes a unique id for this test instance"""
4545
return "all_dev" if self.all_devices else f"{self.vcpus}vcpu_{self.mem}mb"
4646

47-
def boot_vm(self, microvm_factory, guest_kernel, rootfs, pci_enabled) -> Microvm:
47+
def boot_vm(
48+
self, microvm_factory, guest_kernel, rootfs, pci_enabled, secret_free
49+
) -> Microvm:
4850
"""Creates the initial snapshot that will be loaded repeatedly to sample latencies"""
4951
vm = microvm_factory.build(
5052
guest_kernel,
@@ -59,6 +61,7 @@ def boot_vm(self, microvm_factory, guest_kernel, rootfs, pci_enabled) -> Microvm
5961
mem_size_mib=self.mem,
6062
rootfs_io_engine="Sync",
6163
huge_pages=self.huge_pages,
64+
secret_free=secret_free,
6265
)
6366

6467
for _ in range(self.nets):
@@ -107,7 +110,7 @@ def test_restore_latency(
107110
We only test a single guest kernel, as the guest kernel does not "participate" in snapshot restore.
108111
"""
109112
vm = test_setup.boot_vm(
110-
microvm_factory, guest_kernel_linux_5_10, rootfs, pci_enabled
113+
microvm_factory, guest_kernel_linux_5_10, rootfs, pci_enabled, False
111114
)
112115

113116
metrics.set_dimensions(
@@ -154,14 +157,21 @@ def test_post_restore_latency(
154157
metrics,
155158
uffd_handler,
156159
huge_pages,
160+
secret_free,
157161
):
158162
"""Collects latency metric of post-restore memory accesses done inside the guest"""
159163
if huge_pages != HugePagesConfig.NONE and uffd_handler is None:
160164
pytest.skip("huge page snapshots can only be restored using uffd")
161165

166+
if secret_free and uffd_handler is None:
167+
pytest.skip("Restoring from a file is not compatible with Secret Freedom")
168+
169+
if secret_free and huge_pages != HugePagesConfig.NONE:
170+
pytest.skip("Huge pages are not supported with Secret Freedom yet")
171+
162172
test_setup = SnapshotRestoreTest(mem=1024, vcpus=2, huge_pages=huge_pages)
163173
vm = test_setup.boot_vm(
164-
microvm_factory, guest_kernel_linux_5_10, rootfs, pci_enabled
174+
microvm_factory, guest_kernel_linux_5_10, rootfs, pci_enabled, secret_free
165175
)
166176

167177
metrics.set_dimensions(
@@ -215,11 +225,15 @@ def test_population_latency(
215225
huge_pages,
216226
vcpus,
217227
mem,
228+
secret_free,
218229
):
219230
"""Collects population latency metrics (e.g. how long it takes UFFD handler to fault in all memory)"""
231+
if secret_free and huge_pages != HugePagesConfig.NONE:
232+
pytest.skip("Huge pages are not supported with Secret Freedom yet")
233+
220234
test_setup = SnapshotRestoreTest(mem=mem, vcpus=vcpus, huge_pages=huge_pages)
221235
vm = test_setup.boot_vm(
222-
microvm_factory, guest_kernel_linux_5_10, rootfs, pci_enabled
236+
microvm_factory, guest_kernel_linux_5_10, rootfs, pci_enabled, secret_free
223237
)
224238

225239
metrics.set_dimensions(
@@ -267,15 +281,21 @@ def test_snapshot_create_latency(
267281
uvm_plain,
268282
metrics,
269283
snapshot_type,
284+
secret_free,
270285
):
271286
"""Measure the latency of creating a Full snapshot"""
272287

288+
if secret_free and snapshot_type.needs_dirty_page_tracking:
289+
pytest.skip("secret freedom and dirty pgae tracking are mutually exclusive")
290+
273291
vm = uvm_plain
292+
vm.memory_monitor = None
274293
vm.spawn()
275294
vm.basic_config(
276295
vcpu_count=2,
277296
mem_size_mib=512,
278297
track_dirty_pages=snapshot_type.needs_dirty_page_tracking,
298+
secret_free=secret_free,
279299
)
280300
vm.start()
281301
vm.pin_threads(0)

0 commit comments

Comments
 (0)