From 6a1f12c465ac3a187f06d0b675733970819d4375 Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Wed, 2 Aug 2023 14:03:45 -0700 Subject: [PATCH] cloudapi: Add a test for the new size option --- internal/cloudapi/v2/imagerequest_test.go | 88 +++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 internal/cloudapi/v2/imagerequest_test.go diff --git a/internal/cloudapi/v2/imagerequest_test.go b/internal/cloudapi/v2/imagerequest_test.go new file mode 100644 index 000000000..ed9691303 --- /dev/null +++ b/internal/cloudapi/v2/imagerequest_test.go @@ -0,0 +1,88 @@ +package v2 + +import ( + "testing" + + "github.com/osbuild/images/pkg/distro/test_distro" + "github.com/osbuild/osbuild-composer/internal/blueprint" + "github.com/osbuild/osbuild-composer/internal/common" + + "github.com/stretchr/testify/assert" +) + +func TestImageRequestSize(t *testing.T) { + distro := test_distro.New() + arch, err := distro.GetArch(test_distro.TestArchName) + if err != nil { + panic(err) + } + imageType, err := arch.GetImageType(test_distro.TestImageTypeName) + if err != nil { + panic(err) + } + + // A blueprint with no filesystem customizations + bp := blueprint.Blueprint{ + Name: "image-request-test", + Description: "Empty Blueprint", + Version: "0.0.1", + } + // #1 With no size request + ir := ImageRequest{ + Architecture: test_distro.TestArchName, + ImageType: test_distro.TestImageTypeName, + Size: nil, + } + imageOptions := ir.GetImageOptions(imageType, bp) + + // The test_distro default size is 1GiB + assert.Equal(t, uint64(1073741824), imageOptions.Size) + + // #2 With size request + ir = ImageRequest{ + Architecture: test_distro.TestArchName, + ImageType: test_distro.TestImageTypeName, + Size: common.ToPtr(uint64(5368709120)), + } + imageOptions = ir.GetImageOptions(imageType, bp) + + // The test_distro default size is actually 5GiB + assert.Equal(t, uint64(5368709120), imageOptions.Size) + + // A blueprint with filesystem customizations + bp = blueprint.Blueprint{ + Name: "image-request-test", + Description: "Customized Filesystem", + Version: "0.0.1", + Customizations: &blueprint.Customizations{ + Filesystem: []blueprint.FilesystemCustomization{ + blueprint.FilesystemCustomization{ + Mountpoint: "/", + MinSize: 2147483648, + }, + }, + }, + } + + // #3 With no size request + ir = ImageRequest{ + Architecture: test_distro.TestArchName, + ImageType: test_distro.TestImageTypeName, + Size: nil, + } + imageOptions = ir.GetImageOptions(imageType, bp) + + // The test_distro default size is actually 2GiB + assert.Equal(t, uint64(2147483648), imageOptions.Size) + + // #4 With size request + ir = ImageRequest{ + Architecture: test_distro.TestArchName, + ImageType: test_distro.TestImageTypeName, + Size: common.ToPtr(uint64(5368709120)), + } + imageOptions = ir.GetImageOptions(imageType, bp) + + // The test_distro default size is actually 5GiB + assert.Equal(t, uint64(5368709120), imageOptions.Size) +}