2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-10-21 23:28:19 +00:00
Files
xcat-core/xCAT-test/unit/genesis_openembedded.t
T
2026-10-12 15:56:25 -03:00

170 lines
6.4 KiB
Perl

#!/usr/bin/env perl
use strict;
use warnings;
use Digest::SHA qw(sha256_hex);
use FindBin;
use lib "$FindBin::Bin/../lib";
use Test::More;
use XCAT::Test::File qw(slurp_repo_file);
# Fragments specify requested kernel options; they do not prove the built kernel configuration.
my $yocto_release_key =
slurp_repo_file('xCAT-genesis-base/oe/keys/yocto-release.asc');
is( sha256_hex($yocto_release_key),
'42d49e59f2aa01a1c1417a52d3c915a24a64060c852f33e3bd04fbb738457e70',
'vendored Yocto release key matches the reviewed key material' );
my $ppc64_kernel_config = slurp_repo_file(
'xCAT-genesis-base/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-ppc64.cfg'
);
like( $ppc64_kernel_config, qr/^CONFIG_CPU_BIG_ENDIAN=y$/m,
'ppc64 fragment requests big endian' );
like( $ppc64_kernel_config, qr/^# CONFIG_CPU_LITTLE_ENDIAN is not set$/m,
'ppc64 fragment disables little endian' );
my $kernel_config = slurp_repo_file(
'xCAT-genesis-base/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-x86-common.cfg'
);
for my $symbol (
qw(
CONFIG_MODULES CONFIG_MEGARAID_SAS CONFIG_SCSI_MPT3SAS CONFIG_SCSI_HPSA
CONFIG_BLK_DEV_NVME CONFIG_IXGBE CONFIG_I40E CONFIG_ICE CONFIG_MLX5_CORE
CONFIG_INFINIBAND CONFIG_MLX5_INFINIBAND CONFIG_IPMI_HANDLER CONFIG_EDAC
CONFIG_USB_STORAGE CONFIG_BLK_DEV_LOOP CONFIG_OVERLAY_FS CONFIG_SQUASHFS
CONFIG_SQUASHFS_XATTR CONFIG_SQUASHFS_ZSTD
)
)
{
like( $kernel_config, qr/^\Q$symbol\E=[ym]$/m,
"x86_64 fragment requests $symbol" );
}
my $x86_kernel_config = slurp_repo_file(
'xCAT-genesis-base/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-x86.cfg'
);
like( $x86_kernel_config, qr/^CONFIG_M686=y$/m,
'x86 fragment selects the i686 processor family' );
like( $x86_kernel_config, qr/^# CONFIG_M586 is not set$/m,
'x86 fragment disables i586' );
like( $x86_kernel_config, qr/^CONFIG_HIGHMEM4G=y$/m,
'x86 fragment requests the 32-bit high-memory model' );
like( $x86_kernel_config, qr/^# CONFIG_X86_MCE is not set$/m,
'x86 fragment disables machine-check registers' );
for my $vendor (qw(AMD INTEL)) {
like( $x86_kernel_config,
qr/^# CONFIG_X86_MCE_\Q$vendor\E is not set$/m,
"x86 fragment disables the $vendor machine-check feature" );
}
my $x86_64_kernel_config = slurp_repo_file(
'xCAT-genesis-base/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-x86-64.cfg'
);
like( $x86_64_kernel_config, qr/^CONFIG_EDAC_AMD64=m$/m,
'x86_64 keeps its architecture-specific EDAC driver' );
my $armv7hf_kernel_config = slurp_repo_file(
'xCAT-genesis-base/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-armv7hf.cfg'
);
for my $symbol (
qw(
CONFIG_ARCH_VIRT CONFIG_AEABI CONFIG_VFP CONFIG_SERIAL_AMBA_PL011
CONFIG_VIRTIO_MMIO CONFIG_VIRTIO_BLK CONFIG_VIRTIO_NET
CONFIG_SCSI_MPT3SAS CONFIG_MEGARAID_SAS CONFIG_BLK_DEV_NVME
CONFIG_IXGBE CONFIG_MLX4_CORE CONFIG_INFINIBAND CONFIG_IPMI_HANDLER
CONFIG_USB_XHCI_HCD CONFIG_USB_STORAGE CONFIG_BLK_DEV_LOOP
CONFIG_OVERLAY_FS CONFIG_SQUASHFS
)
)
{
like( $armv7hf_kernel_config, qr/^\Q$symbol\E=[ym]$/m,
"armv7hf fragment requests $symbol" );
}
my $aarch64_kernel_config = slurp_repo_file(
'xCAT-genesis-base/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-aarch64.cfg'
);
for my $symbol (
qw(
CONFIG_ARM64 CONFIG_ARCH_VIRT CONFIG_SERIAL_AMBA_PL011
CONFIG_VIRTIO_PCI CONFIG_VIRTIO_BLK CONFIG_VIRTIO_NET
CONFIG_SCSI_MPT3SAS CONFIG_SCSI_HPSA CONFIG_MEGARAID_SAS
CONFIG_BLK_DEV_NVME CONFIG_IXGBE CONFIG_I40E CONFIG_ICE
CONFIG_MLX5_CORE CONFIG_INFINIBAND CONFIG_MLX5_INFINIBAND
CONFIG_IPMI_HANDLER CONFIG_EDAC CONFIG_USB_XHCI_HCD
CONFIG_USB_STORAGE CONFIG_BLK_DEV_LOOP CONFIG_OVERLAY_FS CONFIG_SQUASHFS
)
)
{
like( $aarch64_kernel_config, qr/^\Q$symbol\E=[ym]$/m,
"aarch64 fragment requests $symbol" );
}
my $riscv64_kernel_config = slurp_repo_file(
'xCAT-genesis-base/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-riscv64.cfg'
);
for my $symbol (
qw(
CONFIG_64BIT CONFIG_RISCV CONFIG_RISCV_SBI CONFIG_SERIAL_8250_CONSOLE
CONFIG_VIRTIO_PCI CONFIG_VIRTIO_BLK CONFIG_VIRTIO_NET
CONFIG_SCSI_MPT3SAS CONFIG_SCSI_HPSA CONFIG_MEGARAID_SAS
CONFIG_BLK_DEV_NVME CONFIG_IXGBE CONFIG_I40E CONFIG_ICE
CONFIG_MLX5_CORE CONFIG_INFINIBAND CONFIG_MLX5_INFINIBAND
CONFIG_IPMI_HANDLER CONFIG_EDAC CONFIG_USB_XHCI_HCD
CONFIG_USB_STORAGE CONFIG_BLK_DEV_LOOP CONFIG_OVERLAY_FS CONFIG_SQUASHFS
)
)
{
like( $riscv64_kernel_config, qr/^\Q$symbol\E=[ym]$/m,
"riscv64 fragment requests $symbol" );
}
for my $symbol (
qw(
CONFIG_ACPI CONFIG_ACPI_APEI CONFIG_ACPI_APEI_GHES
CONFIG_EFI CONFIG_EFI_STUB
)
)
{
like( $riscv64_kernel_config, qr/^\Q$symbol\E=[ym]$/m,
"riscv64 fragment requests $symbol to boot on ACPI firmware" );
}
my $powerpc64_kernel_config = slurp_repo_file(
'xCAT-genesis-base/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-powerpc64.cfg'
);
for my $symbol (
qw(
CONFIG_PPC_PSERIES CONFIG_PPC_POWERNV CONFIG_PPC_64S_HASH_MMU
CONFIG_PPC_RADIX_MMU CONFIG_SCSI_IPR CONFIG_SCSI_IBMVSCSI
CONFIG_SCSI_IBMVFC CONFIG_MEGARAID_SAS CONFIG_BLK_DEV_NVME
CONFIG_IBMVETH CONFIG_IBMVNIC CONFIG_MLX5_CORE CONFIG_INFINIBAND
CONFIG_IPMI_HANDLER CONFIG_USB_XHCI_HCD CONFIG_USB_STORAGE
CONFIG_BLK_DEV_LOOP CONFIG_OVERLAY_FS CONFIG_SQUASHFS
)
)
{
like( $powerpc64_kernel_config, qr/^\Q$symbol\E=[ym]$/m,
"64-bit Power fragment requests $symbol" );
}
like( $powerpc64_kernel_config, qr/^# CONFIG_PPC_VAS is not set$/m,
'POWER8 fragment disables VAS facilities' );
my $console_service = slurp_repo_file(
'xCAT-genesis-base/oe/meta-xcat-genesis/recipes-core/xcat-genesis-console/files/xcat-genesis-console@.service'
);
like( $console_service, qr/^Environment=TERM=xterm$/m,
'console service sets the terminal type' );
like( $console_service, qr/^Environment=COLUMNS=80$/m,
'status console fixes the serial width' );
like( $console_service, qr/^Environment=LINES=24$/m,
'status console fixes the serial height' );
like( $console_service, qr/^TTYPath=\/dev\/%I$/m,
'status console binds to the machine console' );
unlike( $console_service, qr/xcat\.debug-shell|genesis-debug-shell/,
'status console has no boot-time debug escape' );
done_testing();