mirror of
https://git.proxmox.com/git/pve-installer
synced 2025-04-28 16:59:06 +00:00
test: add tests for zfs_arc_max calculations
Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
This commit is contained in:
parent
4c25372e50
commit
9a0d66cb36
3
Makefile
3
Makefile
@ -45,6 +45,7 @@ $(BUILDDIR):
|
|||||||
proxmox-tui-installer/ \
|
proxmox-tui-installer/ \
|
||||||
proxmox-installer-common/ \
|
proxmox-installer-common/ \
|
||||||
spice-vdagent.sh \
|
spice-vdagent.sh \
|
||||||
|
test/ \
|
||||||
unconfigured.sh \
|
unconfigured.sh \
|
||||||
xinitrc \
|
xinitrc \
|
||||||
$@.tmp
|
$@.tmp
|
||||||
@ -76,7 +77,9 @@ $(DSC): $(BUILDDIR)
|
|||||||
sbuild: $(DSC)
|
sbuild: $(DSC)
|
||||||
sbuild $(DSC)
|
sbuild $(DSC)
|
||||||
|
|
||||||
|
.PHONY: test
|
||||||
test:
|
test:
|
||||||
|
$(MAKE) -C test check
|
||||||
$(CARGO) test --workspace $(CARGO_BUILD_ARGS)
|
$(CARGO) test --workspace $(CARGO_BUILD_ARGS)
|
||||||
|
|
||||||
DESTDIR=
|
DESTDIR=
|
||||||
|
1
debian/control
vendored
1
debian/control
vendored
@ -11,6 +11,7 @@ Build-Depends: cargo:native,
|
|||||||
librust-regex-1+default-dev (>= 1.7~~),
|
librust-regex-1+default-dev (>= 1.7~~),
|
||||||
librust-serde-1+default-dev,
|
librust-serde-1+default-dev,
|
||||||
librust-serde-json-1+default-dev,
|
librust-serde-json-1+default-dev,
|
||||||
|
libtest-mockmodule-perl,
|
||||||
perl,
|
perl,
|
||||||
rustc:native,
|
rustc:native,
|
||||||
Standards-Version: 4.5.1
|
Standards-Version: 4.5.1
|
||||||
|
10
test/Makefile
Normal file
10
test/Makefile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
all:
|
||||||
|
|
||||||
|
export PERLLIB=..
|
||||||
|
|
||||||
|
.PHONY: check
|
||||||
|
check: test-zfs-arc-max
|
||||||
|
|
||||||
|
.PHONY: test-zfs-arc-max
|
||||||
|
test-zfs-arc-max:
|
||||||
|
./zfs-arc-max.pl
|
81
test/zfs-arc-max.pl
Executable file
81
test/zfs-arc-max.pl
Executable file
@ -0,0 +1,81 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use Test::More;
|
||||||
|
use Test::MockModule qw(strict);
|
||||||
|
|
||||||
|
my $proxmox_install_runenv = Test::MockModule->new('Proxmox::Install::RunEnv');
|
||||||
|
my $proxmox_install_isoenv = Test::MockModule->new('Proxmox::Install::ISOEnv');
|
||||||
|
|
||||||
|
sub mock_product {
|
||||||
|
my ($product) = @_;
|
||||||
|
|
||||||
|
$proxmox_install_isoenv->redefine(
|
||||||
|
get => sub {
|
||||||
|
my ($k) = @_;
|
||||||
|
return $product if $k eq 'product';
|
||||||
|
die "iso environment key $k not mocked!\n";
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
my %default_tests = (
|
||||||
|
16 => 64, # at least 64 MiB
|
||||||
|
1024 => 102,
|
||||||
|
4 * 1024 => 410,
|
||||||
|
8 * 1024 => 819,
|
||||||
|
150 * 1024 => 15360,
|
||||||
|
160 * 1024 => 16384,
|
||||||
|
1024 * 1024 => 16384, # maximum of 16 GiB
|
||||||
|
);
|
||||||
|
|
||||||
|
while (my ($total_mem, $expected) = each %default_tests) {
|
||||||
|
$proxmox_install_runenv->redefine(
|
||||||
|
get => sub {
|
||||||
|
my ($k) = @_;
|
||||||
|
return $total_mem if $k eq 'total_memory';
|
||||||
|
die "runtime environment key $k not mocked!\n";
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
mock_product('pve');
|
||||||
|
is(Proxmox::Install::RunEnv::default_zfs_arc_max(), $expected,
|
||||||
|
"$expected MiB should be zfs_arc_max for PVE with $total_mem MiB system memory");
|
||||||
|
|
||||||
|
mock_product('pbs');
|
||||||
|
is(Proxmox::Install::RunEnv::default_zfs_arc_max(), 0,
|
||||||
|
"zfs_arc_max should default to `0` for PBS with $total_mem MiB system memory");
|
||||||
|
|
||||||
|
mock_product('pmg');
|
||||||
|
is(Proxmox::Install::RunEnv::default_zfs_arc_max(), 0,
|
||||||
|
"zfs_arc_max should default to `0` for PMG with $total_mem MiB system memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
my @clamp_tests = (
|
||||||
|
# input, total system memory, expected
|
||||||
|
[ 0, 4 * 1024, 0 ],
|
||||||
|
[ 16, 4 * 1024, 64 ],
|
||||||
|
[ 4 * 1024, 4 * 1024, 4 * 1024 ],
|
||||||
|
[ 4 * 1024, 6 * 1024, 4 * 1024 ],
|
||||||
|
[ 8 * 1024, 4 * 1024, 4 * 1024 ],
|
||||||
|
);
|
||||||
|
|
||||||
|
mock_product('pve');
|
||||||
|
foreach (@clamp_tests) {
|
||||||
|
my ($input, $total_mem, $expected) = @$_;
|
||||||
|
|
||||||
|
$proxmox_install_runenv->redefine(
|
||||||
|
get => sub {
|
||||||
|
my ($k) = @_;
|
||||||
|
return $total_mem if $k eq 'total_memory';
|
||||||
|
die "runtime environment key $k not mocked!\n";
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
is(Proxmox::Install::RunEnv::clamp_zfs_arc_max($input), $expected,
|
||||||
|
"$input MiB zfs_arc_max should be clamped to $expected MiB with $total_mem MiB system memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
done_testing();
|
Loading…
Reference in New Issue
Block a user