summaryrefslogtreecommitdiffstats
path: root/src/test/java/org/openslx/firmware/QemuFirmwareUtilTest.java
blob: 75ce2867fe055f3cdec1370da1cc56458fffe0a2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package org.openslx.firmware;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

import java.nio.file.Paths;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.openslx.libvirt.domain.Domain;
import org.openslx.libvirt.domain.DomainTest;

public class QemuFirmwareUtilTest
{
	@Test
	@DisplayName( "Test that lookup of OS loader from Libvirt domain file succeeds" )
	public void testQemuFirmwareUtilLookupTargetOsLoaderValid() throws FirmwareException
	{
		final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();
		final Domain config = DomainTest
				.getDomain( "qemu-kvm_default-ubuntu-20-04-vm_transform-non-persistent_uefi.xml" );

		final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath, config.getOsLoader(),
				config.getOsArch(), config.getOsMachine() );

		assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
	}

	@Test
	@DisplayName( "Test that lookup of OS loader from Archlinux path succeeds" )
	public void testQemuFirmwareUtilLookupTargetOsLoaderValidArchlinux() throws FirmwareException
	{
		final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();

		final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
				"/usr/share/edk2-ovmf/x64/OVMF_CODE.fd", "x86_64", "pc-q35-5.0" );

		assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
	}

	@Test
	@DisplayName( "Test that lookup of OS loader from Debian path succeeds" )
	public void testQemuFirmwareUtilLookupTargetOsLoaderValidDebian() throws FirmwareException
	{
		final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();

		final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
				"/usr/share/OVMF/OVMF_CODE.fd", "x86_64", "pc-q35-5.0" );

		assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
	}

	@Test
	@DisplayName( "Test that lookup of OS loader from CentOS path succeeds" )
	public void testQemuFirmwareUtilLookupTargetOsLoaderValidCentOs() throws FirmwareException
	{
		final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();

		final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
				"/usr/share/edk2/ovmf/OVMF_CODE.cc.fd", "x86_64", "pc-q35-5.0" );

		assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
	}

	@Test
	@DisplayName( "Test that lookup of OS loader from OpenSUSE path succeeds" )
	public void testQemuFirmwareUtilLookupTargetOsLoaderValidOpenSuse() throws FirmwareException
	{
		final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();

		final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
				"/usr/share/qemu/ovmf-x86_64-4m-code.bin", "x86_64", "pc-q35-5.0" );

		assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
	}

	@Test
	@DisplayName( "Test that lookup of OS loader from Ubuntu path succeeds" )
	public void testQemuFirmwareUtilLookupTargetOsLoaderValidUbuntu() throws FirmwareException
	{
		final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();

		final String targetOsLoader = QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
				"/usr/share/OVMF/OVMF_CODE_4M.fd", "x86_64", "pc-q35-5.0" );

		assertEquals( Paths.get( "/usr/share/qemu/edk2-x86_64-code.fd" ).toString(), targetOsLoader );
	}

	@Test
	@DisplayName( "Test that lookup of non-existent OS loader for non-existent architecture fails" )
	public void testQemuFirmwareUtilLookupTargetOsLoaderInvalid() throws FirmwareException
	{
		final String fwSpecPath = QemuFirmwareTestResources.getQemuFirmwareSpecPath();

		assertThrows( FirmwareException.class, () -> QemuFirmwareUtil.lookupTargetOsLoader( fwSpecPath,
				Paths.get( "/non/existent/loader.fd" ).toString(), "x87", "pc-q35-6.0" ) );
	}
}