Skip to content

Commit cf2e964

Browse files
committed
test(memory_hotplug): add secret free
This is to make sure we test secret freedom with memory hotplug. Signed-off-by: Nikita Kalyazin <[email protected]>
1 parent 8da6f35 commit cf2e964

File tree

2 files changed

+71
-13
lines changed

2 files changed

+71
-13
lines changed

tests/integration_tests/functional/test_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -982,13 +982,13 @@ def test_api_entropy(uvm_plain):
982982
test_microvm.api.entropy.put()
983983

984984

985-
def test_api_memory_hotplug(uvm_plain_6_1):
985+
def test_api_memory_hotplug(uvm_plain_6_1, secret_free):
986986
"""
987987
Test hotplug related API commands.
988988
"""
989989
test_microvm = uvm_plain_6_1
990990
test_microvm.spawn()
991-
test_microvm.basic_config()
991+
test_microvm.basic_config(secret_free=secret_free)
992992
test_microvm.add_net_iface()
993993

994994
# Adding hotplug memory region should be OK.

tests/integration_tests/performance/test_hotplug_memory.py

Lines changed: 69 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def uvm_booted_memhp(
2929
huge_pages,
3030
_uffd_handler,
3131
snapshot_type,
32+
secret_free,
3233
):
3334
"""Boots a VM with the given memory hotplugging config"""
3435

@@ -39,6 +40,7 @@ def uvm_booted_memhp(
3940
"huge_pages": huge_pages,
4041
# we need enough memory to be able to hotplug up to 16GB
4142
"mem_size_mib": 512,
43+
"secret_free": secret_free,
4244
}
4345
if vhost_user:
4446
# We need to setup ssh keys manually because we did not specify rootfs
@@ -73,6 +75,7 @@ def uvm_resumed_memhp(
7375
huge_pages,
7476
uffd_handler,
7577
snapshot_type,
78+
secret_free,
7679
):
7780
"""Restores a VM with the given memory hotplugging config after booting and snapshotting"""
7881
if vhost_user:
@@ -88,54 +91,92 @@ def uvm_resumed_memhp(
8891
huge_pages,
8992
None,
9093
snapshot_type,
94+
secret_free,
9195
)
9296
snapshot = uvm.make_snapshot(snapshot_type)
9397
return microvm_factory.build_from_snapshot(snapshot, uffd_handler_name=uffd_handler)
9498

9599

96100
@pytest.fixture(
97101
params=[
98-
(uvm_booted_memhp, False, HugePagesConfig.NONE, None, None),
99-
(uvm_booted_memhp, False, HugePagesConfig.HUGETLBFS_2MB, None, None),
100-
(uvm_booted_memhp, True, HugePagesConfig.NONE, None, None),
101-
(uvm_resumed_memhp, False, HugePagesConfig.NONE, None, SnapshotType.FULL),
102-
(uvm_resumed_memhp, False, HugePagesConfig.NONE, None, SnapshotType.DIFF),
102+
(uvm_booted_memhp, False, HugePagesConfig.NONE, None, None, False),
103+
(uvm_booted_memhp, False, HugePagesConfig.HUGETLBFS_2MB, None, None, False),
104+
(uvm_booted_memhp, True, HugePagesConfig.NONE, None, None, False),
105+
(uvm_booted_memhp, False, HugePagesConfig.NONE, None, None, True),
106+
(
107+
uvm_resumed_memhp,
108+
False,
109+
HugePagesConfig.NONE,
110+
None,
111+
SnapshotType.FULL,
112+
False,
113+
),
114+
(
115+
uvm_resumed_memhp,
116+
False,
117+
HugePagesConfig.NONE,
118+
None,
119+
SnapshotType.DIFF,
120+
False,
121+
),
103122
(
104123
uvm_resumed_memhp,
105124
False,
106125
HugePagesConfig.NONE,
107126
None,
108127
SnapshotType.DIFF_MINCORE,
128+
False,
109129
),
110130
(
111131
uvm_resumed_memhp,
112132
False,
113133
HugePagesConfig.NONE,
114134
"on_demand",
115135
SnapshotType.FULL,
136+
False,
116137
),
117138
(
118139
uvm_resumed_memhp,
119140
False,
120141
HugePagesConfig.HUGETLBFS_2MB,
121142
"on_demand",
122143
SnapshotType.FULL,
144+
False,
145+
),
146+
(
147+
uvm_resumed_memhp,
148+
False,
149+
HugePagesConfig.NONE,
150+
"on_demand",
151+
SnapshotType.FULL,
152+
True,
123153
),
124154
],
125155
ids=[
126156
"booted",
127157
"booted-huge-pages",
128158
"booted-vhost-user",
159+
"booted-secret-free",
129160
"resumed",
130161
"resumed-diff",
131162
"resumed-mincore",
132163
"resumed-uffd",
133164
"resumed-uffd-huge-pages",
165+
"resumed-uffd-secret-free",
134166
],
135167
)
136168
def uvm_any_memhp(request, uvm_plain_6_1, rootfs, microvm_factory):
137169
"""Fixture that yields a booted or resumed VM with memory hotplugging"""
138-
ctor, vhost_user, huge_pages, uffd_handler, snapshot_type = request.param
170+
ctor, vhost_user, huge_pages, uffd_handler, snapshot_type, secret_free = (
171+
request.param
172+
)
173+
174+
if secret_free is True and global_props.host_linux_version_metrics != "next":
175+
pytest.skip("Secret Freedom isn't supported by this host kernel")
176+
177+
if secret_free is True and global_props.instance == "m6g.metal":
178+
pytest.skip("Secret Freedom isn't supported on Graviton2")
179+
139180
yield ctor(
140181
uvm_plain_6_1,
141182
rootfs,
@@ -145,6 +186,7 @@ def uvm_any_memhp(request, uvm_plain_6_1, rootfs, microvm_factory):
145186
huge_pages,
146187
uffd_handler,
147188
snapshot_type,
189+
secret_free,
148190
)
149191

150192

@@ -251,6 +293,7 @@ def test_virtio_mem_hotplug_hotunplug(uvm_any_memhp):
251293
Check that memory can be hotplugged into the VM.
252294
"""
253295
uvm = uvm_any_memhp
296+
254297
check_device_detected(uvm)
255298

256299
check_hotplug(uvm, 1024)
@@ -275,12 +318,12 @@ def test_virtio_mem_hotplug_hotunplug(uvm_any_memhp):
275318
],
276319
ids=["all_different", "slot_sized_block", "single_slot", "single_block"],
277320
)
278-
def test_virtio_mem_configs(uvm_plain_6_1, memhp_config):
321+
def test_virtio_mem_configs(uvm_plain_6_1, memhp_config, secret_free):
279322
"""
280323
Check that the virtio mem device is working as expected for different configs
281324
"""
282325
uvm = uvm_booted_memhp(
283-
uvm_plain_6_1, None, None, False, memhp_config, None, None, None
326+
uvm_plain_6_1, None, None, False, memhp_config, None, None, None, secret_free
284327
)
285328
if not uvm.pci_enabled:
286329
pytest.skip(
@@ -323,6 +366,7 @@ def test_snapshot_restore_persistence(uvm_plain_6_1, microvm_factory, snapshot_t
323366
None,
324367
None,
325368
snapshot_type,
369+
False,
326370
)
327371

328372
uvm.hotplug_memory(1024)
@@ -356,7 +400,15 @@ def test_snapshot_restore_incremental(uvm_plain_6_1, microvm_factory):
356400
)
357401

358402
uvm = uvm_booted_memhp(
359-
uvm_plain_6_1, None, microvm_factory, False, DEFAULT_CONFIG, None, None, None
403+
uvm_plain_6_1,
404+
None,
405+
microvm_factory,
406+
False,
407+
DEFAULT_CONFIG,
408+
None,
409+
None,
410+
None,
411+
False,
360412
)
361413

362414
snapshot = uvm.snapshot_full()
@@ -442,7 +494,13 @@ def timed_memory_hotplug(uvm, size, metrics, metric_prefix, fc_metric_name):
442494
[HugePagesConfig.NONE, HugePagesConfig.HUGETLBFS_2MB],
443495
)
444496
def test_memory_hotplug_latency(
445-
microvm_factory, guest_kernel_linux_6_1, rootfs, hotplug_size, huge_pages, metrics
497+
microvm_factory,
498+
guest_kernel_linux_6_1,
499+
rootfs,
500+
hotplug_size,
501+
huge_pages,
502+
metrics,
503+
secret_free,
446504
):
447505
"""Test the latency of hotplugging memory"""
448506

@@ -454,7 +512,7 @@ def test_memory_hotplug_latency(
454512
}
455513
uvm_plain_6_1 = microvm_factory.build(guest_kernel_linux_6_1, rootfs, pci=True)
456514
uvm = uvm_booted_memhp(
457-
uvm_plain_6_1, None, None, False, config, None, None, None
515+
uvm_plain_6_1, None, None, False, config, None, None, None, secret_free
458516
)
459517

460518
if i == 0:

0 commit comments

Comments
 (0)