diff --git a/pkg/vf/bootloader_test.go b/pkg/vf/bootloader_test.go new file mode 100644 index 00000000..c5c5a8b0 --- /dev/null +++ b/pkg/vf/bootloader_test.go @@ -0,0 +1,53 @@ +package vf + +import ( + "path/filepath" + "testing" + + "github.com/stretchr/testify/require" +) + +type isUncompressedCheckFunc func(t require.TestingT, value bool, msgAndArgs ...interface{}) + +type uncompressedKernelTest struct { + filename string + isUncompressedCheck isUncompressedCheckFunc +} + +var uncompressedKernelTests = map[string]uncompressedKernelTest{ + "fedora-amd64-compressed": { + filename: filepath.Join("testdata", "vmlinuz-truncated-6.4.11-200.fc38.x86_64"), + isUncompressedCheck: require.False, + }, + "fedora-arm64-compressed": { + // this kernel is wrapped in an EFI binary, I don't know how to produce an uncompressed version + filename: filepath.Join("testdata", "vmlinuz-truncated-6.4.11-200.fc38.aarch64"), + isUncompressedCheck: require.False, + }, + "puipui-arm64-uncompressed": { + filename: filepath.Join("testdata", "vmlinux-truncated-0.1.0.puipui.aarch64"), + isUncompressedCheck: require.True, + }, + "puipui-am64-compressed": { + filename: filepath.Join("testdata", "vmlinux-truncated-0.1.0.puipui.x86_64"), + isUncompressedCheck: require.False, + }, + "rhel-arm64-uncompressed": { + filename: filepath.Join("testdata", "vmlinux-truncated-5.14.0-70.72.1.el9_0.aarch64"), + isUncompressedCheck: require.True, + }, + "rhel-arm64-compressed": { + filename: filepath.Join("testdata", "vmlinuz-truncated-5.14.0-70.72.1.el9_0.aarch64"), + isUncompressedCheck: require.False, + }, +} + +func TestUncompressedKernel(t *testing.T) { + for name, test := range uncompressedKernelTests { + t.Run(name, func(t *testing.T) { + uncompressed, err := isKernelUncompressed(test.filename) + require.NoError(t, err) + test.isUncompressedCheck(t, uncompressed) + }) + } +} diff --git a/pkg/vf/testdata/vmlinux-truncated-0.1.0.puipui.aarch64 b/pkg/vf/testdata/vmlinux-truncated-0.1.0.puipui.aarch64 new file mode 100644 index 00000000..2c7d39a4 Binary files /dev/null and b/pkg/vf/testdata/vmlinux-truncated-0.1.0.puipui.aarch64 differ diff --git a/pkg/vf/testdata/vmlinux-truncated-0.1.0.puipui.x86_64 b/pkg/vf/testdata/vmlinux-truncated-0.1.0.puipui.x86_64 new file mode 100644 index 00000000..6dabaae5 Binary files /dev/null and b/pkg/vf/testdata/vmlinux-truncated-0.1.0.puipui.x86_64 differ diff --git a/pkg/vf/testdata/vmlinux-truncated-5.14.0-70.72.1.el9_0.aarch64 b/pkg/vf/testdata/vmlinux-truncated-5.14.0-70.72.1.el9_0.aarch64 new file mode 100644 index 00000000..0f5c526d Binary files /dev/null and b/pkg/vf/testdata/vmlinux-truncated-5.14.0-70.72.1.el9_0.aarch64 differ diff --git a/pkg/vf/testdata/vmlinuz-truncated-5.14.0-70.72.1.el9_0.aarch64 b/pkg/vf/testdata/vmlinuz-truncated-5.14.0-70.72.1.el9_0.aarch64 new file mode 100644 index 00000000..556c457f Binary files /dev/null and b/pkg/vf/testdata/vmlinuz-truncated-5.14.0-70.72.1.el9_0.aarch64 differ diff --git a/pkg/vf/testdata/vmlinuz-truncated-6.4.11-200.fc38.aarch64 b/pkg/vf/testdata/vmlinuz-truncated-6.4.11-200.fc38.aarch64 new file mode 100644 index 00000000..14523b3b Binary files /dev/null and b/pkg/vf/testdata/vmlinuz-truncated-6.4.11-200.fc38.aarch64 differ diff --git a/pkg/vf/testdata/vmlinuz-truncated-6.4.11-200.fc38.x86_64 b/pkg/vf/testdata/vmlinuz-truncated-6.4.11-200.fc38.x86_64 new file mode 100644 index 00000000..f47d61b3 Binary files /dev/null and b/pkg/vf/testdata/vmlinuz-truncated-6.4.11-200.fc38.x86_64 differ