2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-09-02 15:36:03 +00:00

test(genimage): cover Mellanox InfiniBand defaults

This commit is contained in:
Vinícius Ferrão
2026-08-28 13:57:12 -03:00
parent 801677d447
commit ee18db925a
+133
View File
@@ -34,6 +34,21 @@ my @cases = (
[ 'ubuntu', 's390x', [qw(qdio ccwgroup)] ],
);
foreach my $family (qw(rh sles ubuntu)) {
my $source = read_text(repo_path(
"xCAT-server/share/xcat/netboot/$family/genimage",
));
my $load_dd = index($source, 'my @dd_drivers = &load_dd();');
my $resolve = index(
$source,
'@ndrivers = imgutils::resolve_mellanox_default_net_drivers(',
);
ok(
$load_dd >= 0 && $resolve > $load_dd,
"$family resolves Mellanox defaults after installing driver updates",
);
}
foreach my $case (@cases) {
my ( $family, $arch, $expected ) = @{$case};
is_deeply(
@@ -90,6 +105,124 @@ sub create_target_kernel {
);
}
{
my @doca_modules = (
'updates/dkms/mlx5_core.ko.zst',
'updates/dkms/mlx5_ib.ko.zst',
'updates/dkms/ib_ipoib.ko.zst',
);
my ( $root, $kernelver ) = create_target_kernel(
files => \@doca_modules,
dependencies => \@doca_modules,
);
is_deeply(
[ imgutils::resolve_mellanox_default_net_drivers(
$root,
$kernelver,
[],
qw(mlx_en.ko mlx5_core.ko),
) ],
[qw(mlx5_core.ko mlx5_ib.ko ib_ipoib.ko)],
'a DOCA-OFED target includes the available mlx5 InfiniBand and IPoIB modules',
);
}
{
my @mlx4_modules = (
'kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko.xz',
'kernel/drivers/infiniband/hw/mlx4/mlx4_ib.ko.xz',
'kernel/drivers/infiniband/ulp/ipoib/ib_ipoib.ko.xz',
);
my ( $root, $kernelver ) = create_target_kernel(
files => \@mlx4_modules,
dependencies => \@mlx4_modules,
);
is_deeply(
[ imgutils::resolve_mellanox_default_net_drivers(
$root, $kernelver, [], qw(mlx_en.ko),
) ],
[qw(mlx4_en.ko mlx4_ib.ko ib_ipoib.ko)],
'an older mlx4 target includes its available InfiniBand and IPoIB modules',
);
}
{
my @modules = (
'kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko.xz',
'kernel/drivers/infiniband/ulp/ipoib/ib_ipoib.ko.xz',
);
my ( $root, $kernelver ) = create_target_kernel(
files => \@modules,
dependencies => \@modules,
);
is_deeply(
[ imgutils::resolve_mellanox_default_net_drivers(
$root, $kernelver, [], qw(mlx5_core.ko),
) ],
[qw(mlx5_core.ko)],
'IPoIB is not added without an available Mellanox InfiniBand driver',
);
}
{
my @modules = (
'updates/dkms/mlx5_core.ko.zst',
'updates/dkms/mlx5_ib.ko.zst',
'updates/dkms/ib_ipoib.ko.zst',
);
my ( $root, $kernelver ) = create_target_kernel(
files => \@modules,
dependencies => \@modules,
);
is_deeply(
[ imgutils::resolve_mellanox_default_net_drivers(
$root,
$kernelver,
[qw(mlx5_ib.ko ib_ipoib.ko)],
qw(mlx5_core.ko),
) ],
[qw(mlx5_ib.ko ib_ipoib.ko mlx5_core.ko)],
'explicit and optional InfiniBand drivers are deduplicated',
);
}
{
my @modules = (
'updates/dkms/mlx5_core.ko.zst',
'updates/dkms/mlx5_ib.ko.zst',
'updates/dkms/ib_ipoib.ko.zst',
);
my ( $root, $kernelver ) = create_target_kernel(
files => \@modules,
dependencies => \@modules,
);
is_deeply(
[ imgutils::resolve_mellanox_default_net_drivers(
$root, $kernelver, [qw(mlx5_core.ko)],
) ],
[qw(mlx5_core.ko)],
'an explicit Mellanox request does not enable optional InfiniBand defaults',
);
}
{
my @modules = (
'updates/mlnx-ofed/mlx4_ib.ko.zst',
'updates/mlnx-ofed/ib_ipoib.ko.zst',
);
my ( $root, $kernelver ) = create_target_kernel(
files => \@modules,
dependencies => \@modules,
);
is_deeply(
[ imgutils::resolve_mellanox_default_net_drivers(
$root, $kernelver, [], qw(mlx_en.ko),
) ],
[qw(mlx4_ib.ko ib_ipoib.ko)],
'an InfiniBand-only OFED stack does not require an Ethernet frontend',
);
}
{
my $mlx4 = 'kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko.xz';
my ( $root, $kernelver ) = create_target_kernel(