Skip to content

Commit 44ac587

Browse files
committed
refactor(test): Utility to get CPU template name
We do the same thing in multiple places. Signed-off-by: Takahiro Itazuri <[email protected]>
1 parent 2862941 commit 44ac587

File tree

7 files changed

+27
-31
lines changed

7 files changed

+27
-31
lines changed

tests/conftest.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
from framework.properties import global_props
3939
from framework.utils_cpu_templates import (
4040
custom_cpu_templates_params,
41+
get_cpu_template_name,
4142
static_cpu_templates_params,
4243
)
4344
from host_tools.metrics import get_metrics_logger
@@ -361,12 +362,9 @@ def custom_cpu_template(request, record_property):
361362
)
362363
def cpu_template_any(request, record_property):
363364
"""This fixture combines no template, static and custom CPU templates"""
364-
cpu_template_name = request.param
365-
if request.param is None:
366-
cpu_template_name = "None"
367-
elif "name" in request.param:
368-
cpu_template_name = request.param["name"]
369-
record_property("cpu_template", cpu_template_name)
365+
record_property(
366+
"cpu_template", get_cpu_template_name(request.param, with_type=True)
367+
)
370368
return request.param
371369

372370

tests/framework/microvm.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
from framework.jailer import JailerContext
3838
from framework.microvm_helpers import MicrovmHelpers
3939
from framework.properties import global_props
40+
from framework.utils_cpu_templates import get_cpu_template_name
4041
from framework.utils_drive import VhostUserBlkBackend, VhostUserBlkBackendType
4142
from framework.utils_uffd import spawn_pf_handler, uffd_handler
4243
from host_tools.fcmetrics import FCMetricsMonitor
@@ -248,7 +249,7 @@ def __init__(
248249
self.disks_vhost_user = {}
249250
self.vcpus_count = None
250251
self.mem_size_bytes = None
251-
self.cpu_template_name = None
252+
self.cpu_template_name = "None"
252253
# The given custom CPU template will be set in basic_config() but could
253254
# be overwritten via set_cpu_template().
254255
self.custom_cpu_template = custom_cpu_template
@@ -797,16 +798,15 @@ def basic_config(
797798

798799
def set_cpu_template(self, cpu_template):
799800
"""Set guest CPU template."""
801+
self.cpu_template_name = get_cpu_template_name(cpu_template)
800802
if cpu_template is None:
801803
return
802804
# static CPU template
803805
if isinstance(cpu_template, str):
804806
self.api.machine_config.patch(cpu_template=cpu_template)
805-
self.cpu_template_name = cpu_template
806807
# custom CPU template
807808
elif isinstance(cpu_template, dict):
808809
self.api.cpu_config.put(**cpu_template["template"])
809-
self.cpu_template_name = cpu_template["name"]
810810

811811
def add_drive(
812812
self,

tests/framework/utils_cpu_templates.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,12 @@ def static_cpu_templates_params():
8080
"""Return Static CPU templates as pytest parameters"""
8181
for name in sorted(get_supported_cpu_templates()):
8282
yield pytest.param(name, id="static_" + name)
83+
84+
85+
def get_cpu_template_name(cpu_template, with_type=False):
86+
"""Return the CPU template name."""
87+
if isinstance(cpu_template, str):
88+
return ("static_" if with_type else "") + cpu_template
89+
if isinstance(cpu_template, dict):
90+
return ("custom_" if with_type else "") + cpu_template["name"]
91+
return "None"

tests/integration_tests/functional/test_cpu_features_aarch64.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ def test_guest_cpu_features(uvm_any):
3939
match global_props.cpu_model, vm.cpu_template_name:
4040
case CpuModel.ARM_NEOVERSE_N1, "V1N1":
4141
expected_cpu_features = G2_FEATS
42-
case CpuModel.ARM_NEOVERSE_N1, None:
42+
case CpuModel.ARM_NEOVERSE_N1, "None":
4343
expected_cpu_features = G2_FEATS
4444

4545
# [cm]7g with guest kernel 5.10 and later
4646
case CpuModel.ARM_NEOVERSE_V1, "V1N1":
4747
expected_cpu_features = G2_FEATS
4848
case CpuModel.ARM_NEOVERSE_V1, "AARCH64_WITH_SVE_AND_PAC":
4949
expected_cpu_features = G3_FEATS | G3_SVE_AND_PAC
50-
case CpuModel.ARM_NEOVERSE_V1, None:
50+
case CpuModel.ARM_NEOVERSE_V1, "None":
5151
expected_cpu_features = G3_FEATS
52-
case CpuModel.ARM_NEOVERSE_V2, None:
52+
case CpuModel.ARM_NEOVERSE_V2, "None":
5353
expected_cpu_features = G4_FEATS
5454
case CpuModel.ARM_NEOVERSE_V2, "AARCH64_WITH_SVE_AND_PAC":
5555
expected_cpu_features = G4_FEATS | G4_SVE_AND_PAC

tests/integration_tests/functional/test_cpu_features_x86_64.py

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from framework import utils
2222
from framework.defs import SUPPORTED_HOST_KERNELS
2323
from framework.properties import global_props
24-
from framework.utils_cpu_templates import SUPPORTED_CPU_TEMPLATES
24+
from framework.utils_cpu_templates import get_cpu_template_name
2525

2626
PLATFORM = platform.machine()
2727
UNSUPPORTED_HOST_KERNEL = (
@@ -77,16 +77,6 @@ def _check_extended_cache_features(vm):
7777
assert cache_size > 0
7878

7979

80-
def get_cpu_template_dir(cpu_template):
81-
"""
82-
Utility function to return a valid string which will be used as
83-
name of the directory where snapshot artifacts are stored during
84-
snapshot test and loaded from during restore test.
85-
86-
"""
87-
return cpu_template if cpu_template else "none"
88-
89-
9080
def skip_test_based_on_artifacts(snapshot_artifacts_dir):
9181
"""
9282
It is possible that some X template is not supported on
@@ -431,7 +421,7 @@ def test_cpu_wrmsr_snapshot(microvm_factory, guest_kernel, rootfs, msr_cpu_templ
431421
snapshot_artifacts_dir = (
432422
Path(shared_names["snapshot_artifacts_root_dir_wrmsr"])
433423
/ guest_kernel.name
434-
/ (msr_cpu_template if msr_cpu_template else "none")
424+
/ get_cpu_template_name(msr_cpu_template, with_type=True)
435425
)
436426
clean_and_mkdir(snapshot_artifacts_dir)
437427

@@ -499,7 +489,7 @@ def test_cpu_wrmsr_restore(microvm_factory, msr_cpu_template, guest_kernel):
499489
"""
500490

501491
shared_names = SNAPSHOT_RESTORE_SHARED_NAMES
502-
cpu_template_dir = msr_cpu_template if msr_cpu_template else "none"
492+
cpu_template_dir = get_cpu_template_name(msr_cpu_template, with_type=True)
503493
snapshot_artifacts_dir = (
504494
Path(shared_names["snapshot_artifacts_root_dir_wrmsr"])
505495
/ guest_kernel.name
@@ -567,7 +557,7 @@ def test_cpu_cpuid_snapshot(microvm_factory, guest_kernel, rootfs, msr_cpu_templ
567557
vm.start()
568558

569559
# Dump CPUID to a file that will be published to S3 for the 2nd part of the test
570-
cpu_template_dir = get_cpu_template_dir(msr_cpu_template)
560+
cpu_template_dir = get_cpu_template_name(msr_cpu_template, with_type=True)
571561
snapshot_artifacts_dir = (
572562
Path(shared_names["snapshot_artifacts_root_dir_cpuid"])
573563
/ guest_kernel.name
@@ -619,7 +609,7 @@ def test_cpu_cpuid_restore(microvm_factory, guest_kernel, msr_cpu_template):
619609
"""
620610

621611
shared_names = SNAPSHOT_RESTORE_SHARED_NAMES
622-
cpu_template_dir = get_cpu_template_dir(msr_cpu_template)
612+
cpu_template_dir = get_cpu_template_name(msr_cpu_template, with_type=True)
623613
snapshot_artifacts_dir = (
624614
Path(shared_names["snapshot_artifacts_root_dir_cpuid"])
625615
/ guest_kernel.name

tests/integration_tests/functional/test_snapshot_phase1.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
generate_mmds_get_request,
1717
generate_mmds_session_token,
1818
)
19+
from framework.utils_cpu_templates import get_cpu_template_name
1920

2021
if platform.machine() != "x86_64":
2122
pytestmark = pytest.mark.skip("only x86_64 architecture supported")
@@ -36,20 +37,18 @@ def test_snapshot_phase1(
3637
vm.add_net_iface()
3738

3839
static_cpu_template = None
39-
cpu_template_name = "None"
4040
if isinstance(cpu_template_any, str):
4141
static_cpu_template = cpu_template_any
42-
cpu_template_name = f"static_{cpu_template_any}"
4342
elif isinstance(cpu_template_any, dict):
4443
vm.api.cpu_config.put(**cpu_template_any["template"])
45-
cpu_template_name = f"custom_{cpu_template_any['name']}"
4644
vm.basic_config(
4745
vcpu_count=2,
4846
mem_size_mib=512,
4947
cpu_template=static_cpu_template,
5048
)
5149

5250
guest_kernel_version = re.search("vmlinux-(.*)", vm.kernel_file.name)
51+
cpu_template_name = get_cpu_template_name(cpu_template_any, with_type=True)
5352
snapshot_artifacts_dir = (
5453
results_dir
5554
/ f"{guest_kernel_version.group(1)}_{cpu_template_name}_guest_snapshot"

tests/integration_tests/security/test_vulnerabilities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def expected_vulnerabilities(self, cpu_template_name):
8787
"""
8888
if (
8989
global_props.cpu_codename in ["INTEL_ICELAKE", "INTEL_SAPPHIRE_RAPIDS"]
90-
and cpu_template_name is None
90+
and cpu_template_name == "None"
9191
):
9292
return {
9393
'{"NAME": "REPTAR", "CVE": "CVE-2023-23583", "VULNERABLE": true, "INFOS": "Your microcode is too old to mitigate the vulnerability"}'

0 commit comments

Comments
 (0)