|
Packit Service |
509fd4 |
package rhel84_test
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
import (
|
|
Packit Service |
509fd4 |
"testing"
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
"github.com/stretchr/testify/assert"
|
|
Packit Service |
bcdfb1 |
"github.com/stretchr/testify/require"
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
|
Packit Service |
bcdfb1 |
"github.com/osbuild/osbuild-composer/internal/distro"
|
|
Packit Service |
509fd4 |
"github.com/osbuild/osbuild-composer/internal/distro/distro_test_common"
|
|
Packit Service |
509fd4 |
"github.com/osbuild/osbuild-composer/internal/distro/rhel84"
|
|
Packit Service |
509fd4 |
)
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
type rhelFamilyDistro struct {
|
|
Packit Service |
bcdfb1 |
name string
|
|
Packit Service |
bcdfb1 |
distro distro.Distro
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
var rhelFamilyDistros = []rhelFamilyDistro{
|
|
Packit Service |
bcdfb1 |
{
|
|
Packit Service |
bcdfb1 |
name: "rhel",
|
|
Packit Service |
bcdfb1 |
distro: rhel84.New(),
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
{
|
|
Packit Service |
bcdfb1 |
name: "centos",
|
|
Packit Service |
bcdfb1 |
distro: rhel84.NewCentos(),
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
func TestFilenameFromType(t *testing.T) {
|
|
Packit Service |
509fd4 |
type args struct {
|
|
Packit Service |
509fd4 |
outputFormat string
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
tests := []struct {
|
|
Packit Service |
509fd4 |
name string
|
|
Packit Service |
509fd4 |
args args
|
|
Packit Service |
509fd4 |
want string
|
|
Packit Service |
509fd4 |
want1 string
|
|
Packit Service |
509fd4 |
wantErr bool
|
|
Packit Service |
509fd4 |
}{
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "ami",
|
|
Packit Service |
509fd4 |
args: args{"ami"},
|
|
Packit Service |
509fd4 |
want: "image.raw",
|
|
Packit Service |
509fd4 |
want1: "application/octet-stream",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "openstack",
|
|
Packit Service |
509fd4 |
args: args{"openstack"},
|
|
Packit Service |
509fd4 |
want: "disk.qcow2",
|
|
Packit Service |
509fd4 |
want1: "application/x-qemu-disk",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "qcow2",
|
|
Packit Service |
509fd4 |
args: args{"qcow2"},
|
|
Packit Service |
509fd4 |
want: "disk.qcow2",
|
|
Packit Service |
509fd4 |
want1: "application/x-qemu-disk",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "tar",
|
|
Packit Service |
509fd4 |
args: args{"tar"},
|
|
Packit Service |
509fd4 |
want: "root.tar.xz",
|
|
Packit Service |
509fd4 |
want1: "application/x-tar",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "vhd",
|
|
Packit Service |
509fd4 |
args: args{"vhd"},
|
|
Packit Service |
509fd4 |
want: "disk.vhd",
|
|
Packit Service |
509fd4 |
want1: "application/x-vhd",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "vmdk",
|
|
Packit Service |
509fd4 |
args: args{"vmdk"},
|
|
Packit Service |
509fd4 |
want: "disk.vmdk",
|
|
Packit Service |
509fd4 |
want1: "application/x-vmdk",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "invalid-output-type",
|
|
Packit Service |
509fd4 |
args: args{"foobar"},
|
|
Packit Service |
509fd4 |
wantErr: true,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
for _, dist := range rhelFamilyDistros {
|
|
Packit Service |
bcdfb1 |
t.Run(dist.name, func(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
for _, tt := range tests {
|
|
Packit Service |
bcdfb1 |
t.Run(tt.name, func(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
dist := dist.distro
|
|
Packit Service |
bcdfb1 |
arch, _ := dist.GetArch("x86_64")
|
|
Packit Service |
bcdfb1 |
imgType, err := arch.GetImageType(tt.args.outputFormat)
|
|
Packit Service |
bcdfb1 |
if (err != nil) != tt.wantErr {
|
|
Packit Service |
bcdfb1 |
t.Errorf("Arch.GetImageType() error = %v, wantErr %v", err, tt.wantErr)
|
|
Packit Service |
bcdfb1 |
return
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
if !tt.wantErr {
|
|
Packit Service |
bcdfb1 |
got := imgType.Filename()
|
|
Packit Service |
bcdfb1 |
got1 := imgType.MIMEType()
|
|
Packit Service |
bcdfb1 |
if got != tt.want {
|
|
Packit Service |
bcdfb1 |
t.Errorf("ImageType.Filename() got = %v, want %v", got, tt.want)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
if got1 != tt.want1 {
|
|
Packit Service |
bcdfb1 |
t.Errorf("ImageType.MIMEType() got1 = %v, want %v", got1, tt.want1)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
})
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
})
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func TestImageType_BuildPackages(t *testing.T) {
|
|
Packit Service |
509fd4 |
x8664BuildPackages := []string{
|
|
Packit Service |
509fd4 |
"dnf",
|
|
Packit Service |
509fd4 |
"dosfstools",
|
|
Packit Service |
509fd4 |
"e2fsprogs",
|
|
Packit Service |
509fd4 |
"grub2-efi-x64",
|
|
Packit Service |
509fd4 |
"grub2-pc",
|
|
Packit Service |
509fd4 |
"policycoreutils",
|
|
Packit Service |
509fd4 |
"shim-x64",
|
|
Packit Service |
509fd4 |
"systemd",
|
|
Packit Service |
509fd4 |
"tar",
|
|
Packit Service |
509fd4 |
"qemu-img",
|
|
Packit Service |
509fd4 |
"xz",
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
aarch64BuildPackages := []string{
|
|
Packit Service |
509fd4 |
"dnf",
|
|
Packit Service |
509fd4 |
"dosfstools",
|
|
Packit Service |
509fd4 |
"e2fsprogs",
|
|
Packit Service |
509fd4 |
"policycoreutils",
|
|
Packit Service |
509fd4 |
"qemu-img",
|
|
Packit Service |
509fd4 |
"systemd",
|
|
Packit Service |
509fd4 |
"tar",
|
|
Packit Service |
509fd4 |
"xz",
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
buildPackages := map[string][]string{
|
|
Packit Service |
509fd4 |
"x86_64": x8664BuildPackages,
|
|
Packit Service |
509fd4 |
"aarch64": aarch64BuildPackages,
|
|
Packit Service |
509fd4 |
"ppc64le": nil,
|
|
Packit Service |
509fd4 |
"s390x": nil,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
for _, dist := range rhelFamilyDistros {
|
|
Packit Service |
bcdfb1 |
t.Run(dist.name, func(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
d := dist.distro
|
|
Packit Service |
bcdfb1 |
for _, archLabel := range d.ListArches() {
|
|
Packit Service |
bcdfb1 |
archStruct, err := d.GetArch(archLabel)
|
|
Packit Service |
bcdfb1 |
if assert.NoErrorf(t, err, "d.GetArch(%v) returned err = %v; expected nil", archLabel, err) {
|
|
Packit Service |
bcdfb1 |
continue
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
for _, itLabel := range archStruct.ListImageTypes() {
|
|
Packit Service |
bcdfb1 |
itStruct, err := archStruct.GetImageType(itLabel)
|
|
Packit Service |
bcdfb1 |
if assert.NoErrorf(t, err, "d.GetArch(%v) returned err = %v; expected nil", archLabel, err) {
|
|
Packit Service |
bcdfb1 |
continue
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
15f37d |
buildPkgs := itStruct.PackageSets(blueprint.Blueprint{})["build-packages"]
|
|
Packit Service |
15f37d |
assert.NotNil(t, buildPkgs)
|
|
Packit Service |
15f37d |
assert.ElementsMatch(t, buildPackages[archLabel], buildPkgs.Include)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
})
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func TestImageType_Name(t *testing.T) {
|
|
Packit Service |
509fd4 |
imgMap := []struct {
|
|
Packit Service |
509fd4 |
arch string
|
|
Packit Service |
509fd4 |
imgNames []string
|
|
Packit Service |
509fd4 |
}{
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
arch: "x86_64",
|
|
Packit Service |
509fd4 |
imgNames: []string{
|
|
Packit Service |
509fd4 |
"ami",
|
|
Packit Service |
509fd4 |
"qcow2",
|
|
Packit Service |
509fd4 |
"openstack",
|
|
Packit Service |
bcdfb1 |
"rhel-edge-commit",
|
|
Packit Service |
509fd4 |
"tar",
|
|
Packit Service |
509fd4 |
"vhd",
|
|
Packit Service |
509fd4 |
"vmdk",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
arch: "aarch64",
|
|
Packit Service |
509fd4 |
imgNames: []string{
|
|
Packit Service |
509fd4 |
"ami",
|
|
Packit Service |
509fd4 |
"qcow2",
|
|
Packit Service |
509fd4 |
"openstack",
|
|
Packit Service |
bcdfb1 |
"rhel-edge-commit",
|
|
Packit Service |
509fd4 |
"tar",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
arch: "ppc64le",
|
|
Packit Service |
509fd4 |
imgNames: []string{
|
|
Packit Service |
509fd4 |
"qcow2",
|
|
Packit Service |
509fd4 |
"tar",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
arch: "s390x",
|
|
Packit Service |
509fd4 |
imgNames: []string{
|
|
Packit Service |
bcdfb1 |
"qcow2",
|
|
Packit Service |
509fd4 |
"tar",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
for _, dist := range rhelFamilyDistros {
|
|
Packit Service |
bcdfb1 |
t.Run(dist.name, func(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
for _, mapping := range imgMap {
|
|
Packit Service |
bcdfb1 |
if mapping.arch == "s390x" && dist.name == "centos" {
|
|
Packit Service |
bcdfb1 |
continue
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
arch, err := dist.distro.GetArch(mapping.arch)
|
|
Packit Service |
509fd4 |
if assert.NoError(t, err) {
|
|
Packit Service |
bcdfb1 |
for _, imgName := range mapping.imgNames {
|
|
Packit Service |
bcdfb1 |
if imgName == "rhel-edge-commit" && dist.name == "centos" {
|
|
Packit Service |
bcdfb1 |
continue
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
imgType, err := arch.GetImageType(imgName)
|
|
Packit Service |
bcdfb1 |
if assert.NoError(t, err) {
|
|
Packit Service |
bcdfb1 |
assert.Equalf(t, imgName, imgType.Name(), "arch: %s", mapping.arch)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
})
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func TestImageType_Size(t *testing.T) {
|
|
Packit Service |
509fd4 |
const gigaByte = 1024 * 1024 * 1024
|
|
Packit Service |
509fd4 |
sizeMap := []struct {
|
|
Packit Service |
509fd4 |
name string
|
|
Packit Service |
509fd4 |
inputSize uint64
|
|
Packit Service |
509fd4 |
outputSize uint64
|
|
Packit Service |
509fd4 |
}{
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "ami",
|
|
Packit Service |
509fd4 |
inputSize: 6*gigaByte + 1,
|
|
Packit Service |
509fd4 |
outputSize: 6*gigaByte + 1,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "ami",
|
|
Packit Service |
509fd4 |
inputSize: 0,
|
|
Packit Service |
509fd4 |
outputSize: 6 * gigaByte,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "vhd",
|
|
Packit Service |
509fd4 |
inputSize: 10 * gigaByte,
|
|
Packit Service |
509fd4 |
outputSize: 10 * gigaByte,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "vhd",
|
|
Packit Service |
509fd4 |
inputSize: 10*gigaByte - 1,
|
|
Packit Service |
509fd4 |
outputSize: 10 * gigaByte,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
for _, dist := range rhelFamilyDistros {
|
|
Packit Service |
bcdfb1 |
t.Run(dist.name, func(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
arch, err := dist.distro.GetArch("x86_64")
|
|
Packit Service |
509fd4 |
if assert.NoError(t, err) {
|
|
Packit Service |
bcdfb1 |
for _, mapping := range sizeMap {
|
|
Packit Service |
bcdfb1 |
imgType, err := arch.GetImageType(mapping.name)
|
|
Packit Service |
bcdfb1 |
if assert.NoError(t, err) {
|
|
Packit Service |
bcdfb1 |
size := imgType.Size(mapping.inputSize)
|
|
Packit Service |
bcdfb1 |
assert.Equalf(t, mapping.outputSize, size, "Image type: %s, input size: %d, expected: %d, got: %d",
|
|
Packit Service |
bcdfb1 |
mapping.name, mapping.inputSize, mapping.outputSize, size)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
})
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func TestImageType_BasePackages(t *testing.T) {
|
|
Packit Service |
509fd4 |
pkgMaps := []struct {
|
|
Packit Service |
bcdfb1 |
name string
|
|
Packit Service |
bcdfb1 |
basePackages []string
|
|
Packit Service |
bcdfb1 |
bootloaderPackages []string
|
|
Packit Service |
bcdfb1 |
excludedPackages []string
|
|
Packit Service |
bcdfb1 |
bootable bool
|
|
Packit Service |
bcdfb1 |
rhelOnlyBasePackages []string
|
|
Packit Service |
509fd4 |
}{
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "ami",
|
|
Packit Service |
509fd4 |
basePackages: []string{
|
|
Packit Service |
509fd4 |
"checkpolicy",
|
|
Packit Service |
509fd4 |
"chrony",
|
|
Packit Service |
509fd4 |
"cloud-init",
|
|
Packit Service |
509fd4 |
"cloud-init",
|
|
Packit Service |
509fd4 |
"cloud-utils-growpart",
|
|
Packit Service |
509fd4 |
"@core",
|
|
Packit Service |
509fd4 |
"dhcp-client",
|
|
Packit Service |
509fd4 |
"gdisk",
|
|
Packit Service |
509fd4 |
"langpacks-en",
|
|
Packit Service |
509fd4 |
"net-tools",
|
|
Packit Service |
509fd4 |
"NetworkManager",
|
|
Packit Service |
509fd4 |
"redhat-release",
|
|
Packit Service |
509fd4 |
"redhat-release-eula",
|
|
Packit Service |
509fd4 |
"rsync",
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted",
|
|
Packit Service |
509fd4 |
"tar",
|
|
Packit Service |
509fd4 |
"yum-utils",
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
// Default from Blueprint
|
|
Packit Service |
bcdfb1 |
"kernel",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
bootloaderPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-generic",
|
|
Packit Service |
509fd4 |
"grub2-pc",
|
|
Packit Service |
509fd4 |
"grub2-efi-x64",
|
|
Packit Service |
509fd4 |
"shim-x64",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"aic94xx-firmware",
|
|
Packit Service |
509fd4 |
"alsa-firmware",
|
|
Packit Service |
509fd4 |
"alsa-lib",
|
|
Packit Service |
509fd4 |
"alsa-tools-firmware",
|
|
Packit Service |
509fd4 |
"biosdevname",
|
|
Packit Service |
509fd4 |
"dracut-config-rescue",
|
|
Packit Service |
509fd4 |
"firewalld",
|
|
Packit Service |
509fd4 |
"iprutils",
|
|
Packit Service |
509fd4 |
"ivtv-firmware",
|
|
Packit Service |
509fd4 |
"iwl1000-firmware",
|
|
Packit Service |
509fd4 |
"iwl100-firmware",
|
|
Packit Service |
509fd4 |
"iwl105-firmware",
|
|
Packit Service |
509fd4 |
"iwl135-firmware",
|
|
Packit Service |
509fd4 |
"iwl2000-firmware",
|
|
Packit Service |
509fd4 |
"iwl2030-firmware",
|
|
Packit Service |
509fd4 |
"iwl3160-firmware",
|
|
Packit Service |
509fd4 |
"iwl3945-firmware",
|
|
Packit Service |
509fd4 |
"iwl4965-firmware",
|
|
Packit Service |
509fd4 |
"iwl5000-firmware",
|
|
Packit Service |
509fd4 |
"iwl5150-firmware",
|
|
Packit Service |
509fd4 |
"iwl6000-firmware",
|
|
Packit Service |
509fd4 |
"iwl6000g2a-firmware",
|
|
Packit Service |
509fd4 |
"iwl6000g2b-firmware",
|
|
Packit Service |
509fd4 |
"iwl6050-firmware",
|
|
Packit Service |
509fd4 |
"iwl7260-firmware",
|
|
Packit Service |
509fd4 |
"libertas-sd8686-firmware",
|
|
Packit Service |
509fd4 |
"libertas-sd8787-firmware",
|
|
Packit Service |
509fd4 |
"libertas-usb8388-firmware",
|
|
Packit Service |
509fd4 |
"plymouth",
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// TODO this cannot be removed, because the kernel (?)
|
|
Packit Service |
509fd4 |
// depends on it. The ec2 kickstart force-removes it.
|
|
Packit Service |
509fd4 |
// "linux-firmware",
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// TODO setfiles failes because of usr/sbin/timedatex. Exlude until
|
|
Packit Service |
509fd4 |
// https://errata.devel.redhat.com/advisory/47339 lands
|
|
Packit Service |
509fd4 |
"timedatex",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
bootable: true,
|
|
Packit Service |
bcdfb1 |
rhelOnlyBasePackages: []string{
|
|
Packit Service |
bcdfb1 |
"insights-client",
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "openstack",
|
|
Packit Service |
509fd4 |
basePackages: []string{
|
|
Packit Service |
509fd4 |
// Defaults
|
|
Packit Service |
509fd4 |
"@Core",
|
|
Packit Service |
509fd4 |
"langpacks-en",
|
|
Packit Service |
509fd4 |
// From the lorax kickstart
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted",
|
|
Packit Service |
509fd4 |
"cloud-init",
|
|
Packit Service |
509fd4 |
"qemu-guest-agent",
|
|
Packit Service |
509fd4 |
"spice-vdagent",
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
// Default from Blueprint
|
|
Packit Service |
bcdfb1 |
"kernel",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
bootloaderPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-generic",
|
|
Packit Service |
509fd4 |
"grub2-pc",
|
|
Packit Service |
509fd4 |
"grub2-efi-x64",
|
|
Packit Service |
509fd4 |
"shim-x64",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-rescue",
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
bootable: true,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
for _, dist := range rhelFamilyDistros {
|
|
Packit Service |
bcdfb1 |
t.Run(dist.name, func(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
arch, err := dist.distro.GetArch("x86_64")
|
|
Packit Service |
bcdfb1 |
assert.NoError(t, err)
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
for _, pkgMap := range pkgMaps {
|
|
Packit Service |
bcdfb1 |
imgType, err := arch.GetImageType(pkgMap.name)
|
|
Packit Service |
bcdfb1 |
assert.NoError(t, err)
|
|
Packit Service |
15f37d |
packages := imgType.PackageSets(blueprint.Blueprint{})["packages"]
|
|
Packit Service |
15f37d |
assert.NotNil(t, packages)
|
|
Packit Service |
bcdfb1 |
expectedPackages := append(pkgMap.basePackages, pkgMap.bootloaderPackages...)
|
|
Packit Service |
bcdfb1 |
if dist.name == "rhel" {
|
|
Packit Service |
bcdfb1 |
expectedPackages = append(expectedPackages, pkgMap.rhelOnlyBasePackages...)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
assert.ElementsMatchf(
|
|
Packit Service |
bcdfb1 |
t,
|
|
Packit Service |
bcdfb1 |
expectedPackages,
|
|
Packit Service |
15f37d |
packages.Include,
|
|
Packit Service |
bcdfb1 |
"image type: %s",
|
|
Packit Service |
bcdfb1 |
pkgMap.name,
|
|
Packit Service |
bcdfb1 |
)
|
|
Packit Service |
15f37d |
assert.Equalf(t, pkgMap.excludedPackages, packages.Exclude, "image type: %s", pkgMap.name)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
})
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func TestDistro_Manifest(t *testing.T) {
|
|
Packit Service |
509fd4 |
distro_test_common.TestDistro_Manifest(t, "../../../test/data/manifests/", "rhel_84*", rhel84.New())
|
|
Packit Service |
bcdfb1 |
distro_test_common.TestDistro_Manifest(t, "../../../test/data/manifests/", "centos_8*", rhel84.NewCentos())
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
// Check that Manifest() function returns an error for unsupported
|
|
Packit Service |
bcdfb1 |
// configurations.
|
|
Packit Service |
bcdfb1 |
func TestDistro_ManifestError(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
// Currently, the only unsupported configuration is OSTree commit types
|
|
Packit Service |
bcdfb1 |
// with Kernel boot options
|
|
Packit Service |
bcdfb1 |
r8distro := rhel84.New()
|
|
Packit Service |
bcdfb1 |
bp := blueprint.Blueprint{
|
|
Packit Service |
bcdfb1 |
Customizations: &blueprint.Customizations{
|
|
Packit Service |
bcdfb1 |
Kernel: &blueprint.KernelCustomization{
|
|
Packit Service |
bcdfb1 |
Append: "debug",
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
for _, archName := range r8distro.ListArches() {
|
|
Packit Service |
bcdfb1 |
arch, _ := r8distro.GetArch(archName)
|
|
Packit Service |
bcdfb1 |
for _, imgTypeName := range arch.ListImageTypes() {
|
|
Packit Service |
bcdfb1 |
if archName == "s390x" && imgTypeName == "tar" {
|
|
Packit Service |
bcdfb1 |
// broken arch-imgType combination; see
|
|
Packit Service |
bcdfb1 |
// https://github.com/osbuild/osbuild-composer/issues/1220
|
|
Packit Service |
bcdfb1 |
continue
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
imgType, _ := arch.GetImageType(imgTypeName)
|
|
Packit Service |
bcdfb1 |
imgOpts := distro.ImageOptions{
|
|
Packit Service |
bcdfb1 |
Size: imgType.Size(0),
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
15f37d |
_, err := imgType.Manifest(bp.Customizations, imgOpts, nil, nil, 0)
|
|
Packit Service |
15f37d |
if imgTypeName == "rhel-edge-commit" || imgTypeName == "rhel-edge-container" {
|
|
Packit Service |
bcdfb1 |
assert.EqualError(t, err, "kernel boot parameter customizations are not supported for ostree types")
|
|
Packit Service |
15f37d |
} else if imgTypeName == "rhel-edge-installer" {
|
|
Packit Service |
15f37d |
assert.EqualError(t, err, "boot ISO image type \"rhel-edge-installer\" requires specifying a URL from which to retrieve the OSTree commit")
|
|
Packit Service |
bcdfb1 |
} else {
|
|
Packit Service |
bcdfb1 |
assert.NoError(t, err)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
func TestArchitecture_ListImageTypes(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
imgMap := []struct {
|
|
Packit Service |
bcdfb1 |
arch string
|
|
Packit Service |
bcdfb1 |
imgNames []string
|
|
Packit Service |
bcdfb1 |
rhelAdditionalImageTypes []string
|
|
Packit Service |
bcdfb1 |
}{
|
|
Packit Service |
bcdfb1 |
{
|
|
Packit Service |
bcdfb1 |
arch: "x86_64",
|
|
Packit Service |
bcdfb1 |
imgNames: []string{
|
|
Packit Service |
bcdfb1 |
"ami",
|
|
Packit Service |
bcdfb1 |
"qcow2",
|
|
Packit Service |
bcdfb1 |
"openstack",
|
|
Packit Service |
bcdfb1 |
"tar",
|
|
Packit Service |
bcdfb1 |
"vhd",
|
|
Packit Service |
bcdfb1 |
"vmdk",
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
15f37d |
rhelAdditionalImageTypes: []string{"rhel-edge-commit", "rhel-edge-container", "rhel-edge-installer"},
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
{
|
|
Packit Service |
bcdfb1 |
arch: "aarch64",
|
|
Packit Service |
bcdfb1 |
imgNames: []string{
|
|
Packit Service |
bcdfb1 |
"ami",
|
|
Packit Service |
bcdfb1 |
"qcow2",
|
|
Packit Service |
bcdfb1 |
"openstack",
|
|
Packit Service |
bcdfb1 |
"tar",
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
15f37d |
rhelAdditionalImageTypes: []string{"rhel-edge-commit", "rhel-edge-container"},
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
{
|
|
Packit Service |
bcdfb1 |
arch: "ppc64le",
|
|
Packit Service |
bcdfb1 |
imgNames: []string{
|
|
Packit Service |
bcdfb1 |
"qcow2",
|
|
Packit Service |
bcdfb1 |
"tar",
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
{
|
|
Packit Service |
bcdfb1 |
arch: "s390x",
|
|
Packit Service |
bcdfb1 |
imgNames: []string{
|
|
Packit Service |
bcdfb1 |
"qcow2",
|
|
Packit Service |
bcdfb1 |
"tar",
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
for _, dist := range rhelFamilyDistros {
|
|
Packit Service |
bcdfb1 |
t.Run(dist.name, func(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
for _, mapping := range imgMap {
|
|
Packit Service |
bcdfb1 |
if mapping.arch == "s390x" && dist.name == "centos" {
|
|
Packit Service |
bcdfb1 |
continue
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
arch, err := dist.distro.GetArch(mapping.arch)
|
|
Packit Service |
bcdfb1 |
require.NoError(t, err)
|
|
Packit Service |
bcdfb1 |
imageTypes := arch.ListImageTypes()
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
var expectedImageTypes []string
|
|
Packit Service |
bcdfb1 |
expectedImageTypes = append(expectedImageTypes, mapping.imgNames...)
|
|
Packit Service |
bcdfb1 |
if dist.name == "rhel" {
|
|
Packit Service |
bcdfb1 |
expectedImageTypes = append(expectedImageTypes, mapping.rhelAdditionalImageTypes...)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
require.ElementsMatch(t, expectedImageTypes, imageTypes)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
})
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func TestRhel84_ListArches(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
arches := rhel84.New().ListArches()
|
|
Packit Service |
509fd4 |
assert.Equal(t, []string{"aarch64", "ppc64le", "s390x", "x86_64"}, arches)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
func TestCentos_ListArches(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
arches := rhel84.NewCentos().ListArches()
|
|
Packit Service |
bcdfb1 |
assert.Equal(t, []string{"aarch64", "ppc64le", "x86_64"}, arches)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
func TestRhel84_GetArch(t *testing.T) {
|
|
Packit Service |
509fd4 |
arches := []struct {
|
|
Packit Service |
bcdfb1 |
name string
|
|
Packit Service |
bcdfb1 |
errorExpected bool
|
|
Packit Service |
bcdfb1 |
errorExpectedInCentos bool
|
|
Packit Service |
509fd4 |
}{
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "x86_64",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "aarch64",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "ppc64le",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
bcdfb1 |
name: "s390x",
|
|
Packit Service |
bcdfb1 |
errorExpectedInCentos: true,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
name: "foo-arch",
|
|
Packit Service |
509fd4 |
errorExpected: true,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
for _, dist := range rhelFamilyDistros {
|
|
Packit Service |
bcdfb1 |
t.Run(dist.name, func(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
for _, a := range arches {
|
|
Packit Service |
bcdfb1 |
actualArch, err := dist.distro.GetArch(a.name)
|
|
Packit Service |
bcdfb1 |
if a.errorExpected || (a.errorExpectedInCentos && dist.name == "centos") {
|
|
Packit Service |
bcdfb1 |
assert.Nil(t, actualArch)
|
|
Packit Service |
bcdfb1 |
assert.Error(t, err)
|
|
Packit Service |
bcdfb1 |
} else {
|
|
Packit Service |
bcdfb1 |
assert.Equal(t, a.name, actualArch.Name())
|
|
Packit Service |
bcdfb1 |
assert.NoError(t, err)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
})
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func TestRhel84_Name(t *testing.T) {
|
|
Packit Service |
509fd4 |
distro := rhel84.New()
|
|
Packit Service |
509fd4 |
assert.Equal(t, "rhel-84", distro.Name())
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
func TestCentos_Name(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
distro := rhel84.NewCentos()
|
|
Packit Service |
bcdfb1 |
assert.Equal(t, "centos-8", distro.Name())
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
func TestRhel84_ModulePlatformID(t *testing.T) {
|
|
Packit Service |
509fd4 |
distro := rhel84.New()
|
|
Packit Service |
509fd4 |
assert.Equal(t, "platform:el8", distro.ModulePlatformID())
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
centos := rhel84.NewCentos()
|
|
Packit Service |
bcdfb1 |
assert.Equal(t, "platform:el8", centos.ModulePlatformID())
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
func TestRhel84_KernelOption(t *testing.T) {
|
|
Packit Service |
bcdfb1 |
distro_test_common.TestDistro_KernelOption(t, rhel84.New())
|
|
Packit Service |
509fd4 |
}
|