diff --git a/proxmox/config_qemu_test.go b/proxmox/config_qemu_test.go index e98f3c8b..e0b264c9 100644 --- a/proxmox/config_qemu_test.go +++ b/proxmox/config_qemu_test.go @@ -6121,1427 +6121,1527 @@ func Test_ConfigQemu_Validate(t *testing.T) { err error version Version } + type testType struct { + create []test + createUpdate []test // value of currentConfig wil be used for update and ignored for create + update []test + } tests := []struct { category string - valid []test - invalid []test + valid testType + invalid testType }{ {category: `Agent`, - valid: []test{ - {input: baseConfig(ConfigQemu{Agent: &QemuGuestAgent{Type: util.Pointer(QemuGuestAgentType("isa"))}})}}, - invalid: []test{ - {input: baseConfig(ConfigQemu{Agent: &QemuGuestAgent{Type: util.Pointer(QemuGuestAgentType("test"))}}), - err: errors.New(QemuGuestAgentType_Error_Invalid)}}}, - {category: `CPU`, - valid: []test{ - {name: `Cores`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Cores: util.Pointer(QemuCpuCores(1))}})}, - {name: `Maximum`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{ - Cores: util.Pointer(QemuCpuCores(128)), - Sockets: util.Pointer(QemuCpuSockets(4)), - VirtualCores: util.Pointer(CpuVirtualCores(512))}})}, - {name: `Minimum`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{ - Cores: util.Pointer(QemuCpuCores(128)), - Sockets: util.Pointer(QemuCpuSockets(4)), - VirtualCores: util.Pointer(CpuVirtualCores(0))}})}, - {name: `Update`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{}}), - current: &ConfigQemu{CPU: &QemuCPU{}}}, - {name: `Flags all set`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - AES: util.Pointer(TriBoolFalse), - AmdNoSSB: util.Pointer(TriBoolNone), - AmdSSBD: util.Pointer(TriBoolTrue), - HvEvmcs: util.Pointer(TriBoolFalse), - HvTlbFlush: util.Pointer(TriBoolNone), - Ibpb: util.Pointer(TriBoolTrue), - MdClear: util.Pointer(TriBoolFalse), - PCID: util.Pointer(TriBoolNone), - Pdpe1GB: util.Pointer(TriBoolTrue), - SSBD: util.Pointer(TriBoolFalse), - SpecCtrl: util.Pointer(TriBoolNone), - VirtSSBD: util.Pointer(TriBoolTrue)}}})}, - {name: `Flags all nil`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{}}})}, - {name: `Flags mixed`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - AmdNoSSB: util.Pointer(TriBoolTrue), - AmdSSBD: util.Pointer(TriBoolFalse), - HvTlbFlush: util.Pointer(TriBoolTrue), - Ibpb: util.Pointer(TriBoolFalse), - MdClear: util.Pointer(TriBoolNone), - PCID: util.Pointer(TriBoolTrue), - Pdpe1GB: util.Pointer(TriBoolFalse), - SpecCtrl: util.Pointer(TriBoolTrue)}}})}, - {name: `Limit maximum`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Limit: util.Pointer(CpuLimit(128))}})}, - {name: `Limit minimum`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Limit: util.Pointer(CpuLimit(0))}})}, - {name: `Sockets`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Sockets: util.Pointer(QemuCpuSockets(1))}})}, - {name: `Type empty`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Type: util.Pointer(CpuType(""))}})}, - {name: `Type host`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Type: util.Pointer(CpuType_Host)}})}, - {name: `Units Minimum`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Units: util.Pointer(CpuUnits(0))}})}, - {name: `Units Maximum`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Units: util.Pointer(CpuUnits(262144))}})}}, - invalid: []test{ - {name: `Create erross.New(ConfigQemu_Error_CpuRequired)`, - err: errors.New(ConfigQemu_Error_CpuRequired)}, - {name: `errors.New(CpuLimit_Error_Maximum)`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Limit: util.Pointer(CpuLimit(129))}}), - err: errors.New(CpuLimit_Error_Maximum)}, - {name: `errors.New(CpuUnits_Error_Maximum)`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Units: util.Pointer(CpuUnits(262145))}}), - err: errors.New(CpuUnits_Error_Maximum)}, - {name: `errors.New(QemuCpuCores_Error_LowerBound)`, - input: ConfigQemu{CPU: &QemuCPU{Cores: util.Pointer(QemuCpuCores(0))}}, - err: errors.New(QemuCpuCores_Error_LowerBound)}, - {name: `errors.New(QemuCPU_Error_CoresRequired)`, - input: ConfigQemu{CPU: &QemuCPU{}}, - err: errors.New(QemuCPU_Error_CoresRequired)}, - {name: `errors.New(QemuCpuSockets_Error_LowerBound)`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{ - Cores: util.Pointer(QemuCpuCores(1)), - Sockets: util.Pointer(QemuCpuSockets(0))}}), - err: errors.New(QemuCpuSockets_Error_LowerBound)}, - {name: `CpuVirtualCores(1).Error() 1 1`, - input: ConfigQemu{CPU: &QemuCPU{ - Cores: util.Pointer(QemuCpuCores(1)), - Sockets: util.Pointer(QemuCpuSockets(1)), - VirtualCores: util.Pointer(CpuVirtualCores(2))}}, - err: CpuVirtualCores(1).Error()}, - {name: `Invalid AES`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - AES: util.Pointer(TriBool(-2))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid AmdNoSSB`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - AmdNoSSB: util.Pointer(TriBool(2))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid AmdSSBD`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - AmdSSBD: util.Pointer(TriBool(-27))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid HvEvmcs`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - HvEvmcs: util.Pointer(TriBool(32))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid HvTlbFlush`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - HvTlbFlush: util.Pointer(TriBool(-2))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid Ibpb`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - Ibpb: util.Pointer(TriBool(52))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid MdClear`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - MdClear: util.Pointer(TriBool(-52))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid PCID`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - PCID: util.Pointer(TriBool(82))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid Pdpe1GB`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - Pdpe1GB: util.Pointer(TriBool(-2))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid SSBD`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - SSBD: util.Pointer(TriBool(3))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid SpecCtrl`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - SpecCtrl: util.Pointer(TriBool(-2))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Invalid VirtSSBD`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ - VirtSSBD: util.Pointer(TriBool(2))}}}), - err: errors.New(TriBool_Error_Invalid)}, - {name: `Type`, - input: baseConfig(ConfigQemu{CPU: &QemuCPU{Type: util.Pointer(CpuType("invalid"))}}), - version: Version{}.max(), - err: CpuType("").Error(Version{}.max())}}}, + valid: testType{ + createUpdate: []test{ + {input: baseConfig(ConfigQemu{Agent: &QemuGuestAgent{Type: util.Pointer(QemuGuestAgentType("isa"))}}), + current: &ConfigQemu{Agent: &QemuGuestAgent{Type: util.Pointer(QemuGuestAgentType_VirtIO)}}}}}, + invalid: testType{ + createUpdate: []test{ + {input: baseConfig(ConfigQemu{Agent: &QemuGuestAgent{Type: util.Pointer(QemuGuestAgentType("test"))}}), + current: &ConfigQemu{Agent: &QemuGuestAgent{Type: util.Pointer(QemuGuestAgentType_VirtIO)}}, + err: errors.New(QemuGuestAgentType_Error_Invalid)}}}}, {category: `CloudInit`, - valid: []test{ - {name: `All v7`, - version: Version{Major: 7, Minor: 255, Patch: 255}, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{ - Custom: &CloudInitCustom{ - Meta: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Legal())}, - Network: &CloudInitSnippet{FilePath: ""}, - User: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Legal())}, - Vendor: &CloudInitSnippet{FilePath: ""}}, - NetworkInterfaces: CloudInitNetworkInterfaces{ - QemuNetworkInterfaceID0: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR("192.168.45.1/24"))})}, - QemuNetworkInterfaceID1: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR(""))})}, - QemuNetworkInterfaceID2: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{ - Address: util.Pointer(IPv4CIDR("")), - DHCP: true})}, - QemuNetworkInterfaceID3: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{ - Gateway: util.Pointer(IPv4Address("")), - DHCP: true})}, - QemuNetworkInterfaceID4: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address("192.168.45.1"))})}, - QemuNetworkInterfaceID5: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address(""))})}, - QemuNetworkInterfaceID9: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR("2001:0db8:85a3::/64"))})}, - QemuNetworkInterfaceID10: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR(""))})}, - QemuNetworkInterfaceID11: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Address: util.Pointer(IPv6CIDR("")), - DHCP: true})}, - QemuNetworkInterfaceID12: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Gateway: util.Pointer(IPv6Address("")), - DHCP: true})}, - QemuNetworkInterfaceID13: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc"))})}, - QemuNetworkInterfaceID14: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address(""))})}, - QemuNetworkInterfaceID15: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Address: util.Pointer(IPv6CIDR("")), - SLAAC: true})}, - QemuNetworkInterfaceID16: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Gateway: util.Pointer(IPv6Address("")), - SLAAC: true})}}, - UpgradePackages: util.Pointer(false)}})}, - {name: `All v8`, - version: Version{Major: 8}, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{ - Custom: &CloudInitCustom{ - Meta: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Legal())}, - Network: &CloudInitSnippet{FilePath: ""}, - User: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Legal())}, - Vendor: &CloudInitSnippet{FilePath: ""}}, - NetworkInterfaces: CloudInitNetworkInterfaces{ - QemuNetworkInterfaceID0: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR("192.168.45.1/24"))})}, - QemuNetworkInterfaceID1: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR(""))})}, - QemuNetworkInterfaceID2: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{ - Address: util.Pointer(IPv4CIDR("")), - DHCP: true})}, - QemuNetworkInterfaceID3: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{ - Gateway: util.Pointer(IPv4Address("")), - DHCP: true})}, - QemuNetworkInterfaceID4: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address("192.168.45.1"))})}, - QemuNetworkInterfaceID5: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address(""))})}, - QemuNetworkInterfaceID9: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR("2001:0db8:85a3::/64"))})}, - QemuNetworkInterfaceID10: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR(""))})}, - QemuNetworkInterfaceID11: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Address: util.Pointer(IPv6CIDR("")), - DHCP: true})}, - QemuNetworkInterfaceID12: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Gateway: util.Pointer(IPv6Address("")), - DHCP: true})}, - QemuNetworkInterfaceID13: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc"))})}, - QemuNetworkInterfaceID14: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address(""))})}, - QemuNetworkInterfaceID15: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Address: util.Pointer(IPv6CIDR("")), - SLAAC: true})}, - QemuNetworkInterfaceID16: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Gateway: util.Pointer(IPv6Address("")), - SLAAC: true})}}, - UpgradePackages: util.Pointer(true)}})}}, - invalid: []test{ - {name: `errors.New(CloudInit_Error_UpgradePackagesPre8)`, - version: Version{Major: 7, Minor: 255, Patch: 255}, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{UpgradePackages: util.Pointer(true)}}), - err: errors.New(CloudInit_Error_UpgradePackagesPre8)}, - {name: `errors.New(CloudInitSnippetPath_Error_InvalidCharacters)`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{Custom: &CloudInitCustom{Meta: &CloudInitSnippet{ - FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Character_Illegal()[0])}}}}), - err: errors.New(CloudInitSnippetPath_Error_InvalidCharacters)}, - {name: `errors.New(CloudInitSnippetPath_Error_InvalidPath)`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{Custom: &CloudInitCustom{Network: &CloudInitSnippet{ - FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_InvalidPath())}}}}), - err: errors.New(CloudInitSnippetPath_Error_InvalidPath)}, - {name: `errors.New(CloudInitSnippetPath_Error_MaxLength)`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{Custom: &CloudInitCustom{User: &CloudInitSnippet{ - FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Illegal())}}}}), - err: errors.New(CloudInitSnippetPath_Error_MaxLength)}, - {name: `errors.New(CloudInitSnippetPath_Error_Relative)`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{Custom: &CloudInitCustom{Vendor: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Relative())}}}}), - err: errors.New(CloudInitSnippetPath_Error_Relative)}, - {name: `errors.New(QemuNetworkInterfaceID_Error_Invalid)`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{ - 32: CloudInitNetworkConfig{}}}}), - err: errors.New(QemuNetworkInterfaceID_Error_Invalid)}, - {name: `CloudInitNetworkInterfaces IPv4 Address Mutually exclusive with DHCP`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID5: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{ - Address: util.Pointer(IPv4CIDR("192.168.45.1/24")), - DHCP: true})}}}}), - err: errors.New(CloudInitIPv4Config_Error_DhcpAddressMutuallyExclusive)}, - {name: `CloudInitNetworkInterfaces IPv4 Gateway Mutually exclusive with DHCP`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID6: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{ - Gateway: util.Pointer(IPv4Address("192.168.45.1")), - DHCP: true})}}}}), - err: errors.New(CloudInitIPv4Config_Error_DhcpGatewayMutuallyExclusive)}, - {name: `CloudInitNetworkInterfaces IPv4 Address errors.New(IPv4CIDR_Error_Invalid)`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID7: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR("192.168.45.1"))})}}}}), - err: errors.New(IPv4CIDR_Error_Invalid)}, - {name: `CloudInitNetworkInterfaces IPv4 Gateway errors.New(IPv4Address_Error_Invalid)`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID8: CloudInitNetworkConfig{ - IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address("192.168.45.1/24"))})}}}}), - err: errors.New(IPv4Address_Error_Invalid)}, - {name: `CloudInitNetworkInterfaces IPv6 Address Mutually exclusive with DHCP`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID17: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Address: util.Pointer(IPv6CIDR("2001:0db8:85a3::/64")), - DHCP: true})}}}}), - err: errors.New(CloudInitIPv6Config_Error_DhcpAddressMutuallyExclusive)}, - {name: `CloudInitNetworkInterfaces IPv6 Address Mutually exclusive with SLAAC`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID18: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Address: util.Pointer(IPv6CIDR("2001:0db8:85a3::/64")), - SLAAC: true})}}}}), - err: errors.New(CloudInitIPv6Config_Error_SlaacAddressMutuallyExclusive)}, - {name: `CloudInitNetworkInterfaces IPv6 DHCP Mutually exclusive with SLAAC`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID19: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - DHCP: true, - SLAAC: true})}}}}), - err: errors.New(CloudInitIPv6Config_Error_DhcpSlaacMutuallyExclusive)}, - {name: `CloudInitNetworkInterfaces IPv6 Gateway Mutually exclusive with DHCP`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID20: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Gateway: util.Pointer(IPv6Address("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc")), - DHCP: true})}}}}), - err: errors.New(CloudInitIPv6Config_Error_DhcpGatewayMutuallyExclusive)}, - {name: `CloudInitNetworkInterfaces IPv6 Gateway Mutually exclusive with SLAAC`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID21: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{ - Gateway: util.Pointer(IPv6Address("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc")), - SLAAC: true})}}}}), - err: errors.New(CloudInitIPv6Config_Error_SlaacGatewayMutuallyExclusive)}, - {name: `CloudInitNetworkInterfaces IPv6 Address errors.New(IPv6CIDR_Error_Invalid)`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID22: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc"))})}}}}), - err: errors.New(IPv6CIDR_Error_Invalid)}, - {name: `CloudInitNetworkInterfaces IPv6 Gateway errors.New(IPv6Address_Error_Invalid)`, - input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID23: CloudInitNetworkConfig{ - IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address("2001:0db8:85a3::/64"))})}}}}), - err: errors.New(IPv6Address_Error_Invalid)}}}, + valid: testType{ + createUpdate: []test{ + {name: `All v7`, + version: Version{Major: 7, Minor: 255, Patch: 255}, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{ + Custom: &CloudInitCustom{ + Meta: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Legal())}, + Network: &CloudInitSnippet{FilePath: ""}, + User: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Legal())}, + Vendor: &CloudInitSnippet{FilePath: ""}}, + NetworkInterfaces: CloudInitNetworkInterfaces{ + QemuNetworkInterfaceID0: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR("192.168.45.1/24"))})}, + QemuNetworkInterfaceID1: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR(""))})}, + QemuNetworkInterfaceID2: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{ + Address: util.Pointer(IPv4CIDR("")), + DHCP: true})}, + QemuNetworkInterfaceID3: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{ + Gateway: util.Pointer(IPv4Address("")), + DHCP: true})}, + QemuNetworkInterfaceID4: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address("192.168.45.1"))})}, + QemuNetworkInterfaceID5: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address(""))})}, + QemuNetworkInterfaceID9: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR("2001:0db8:85a3::/64"))})}, + QemuNetworkInterfaceID10: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR(""))})}, + QemuNetworkInterfaceID11: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Address: util.Pointer(IPv6CIDR("")), + DHCP: true})}, + QemuNetworkInterfaceID12: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Gateway: util.Pointer(IPv6Address("")), + DHCP: true})}, + QemuNetworkInterfaceID13: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc"))})}, + QemuNetworkInterfaceID14: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address(""))})}, + QemuNetworkInterfaceID15: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Address: util.Pointer(IPv6CIDR("")), + SLAAC: true})}, + QemuNetworkInterfaceID16: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Gateway: util.Pointer(IPv6Address("")), + SLAAC: true})}}, + UpgradePackages: util.Pointer(false)}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}}, + {name: `All v8`, + version: Version{Major: 8}, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{ + Custom: &CloudInitCustom{ + Meta: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Legal())}, + Network: &CloudInitSnippet{FilePath: ""}, + User: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Legal())}, + Vendor: &CloudInitSnippet{FilePath: ""}}, + NetworkInterfaces: CloudInitNetworkInterfaces{ + QemuNetworkInterfaceID0: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR("192.168.45.1/24"))})}, + QemuNetworkInterfaceID1: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR(""))})}, + QemuNetworkInterfaceID2: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{ + Address: util.Pointer(IPv4CIDR("")), + DHCP: true})}, + QemuNetworkInterfaceID3: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{ + Gateway: util.Pointer(IPv4Address("")), + DHCP: true})}, + QemuNetworkInterfaceID4: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address("192.168.45.1"))})}, + QemuNetworkInterfaceID5: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address(""))})}, + QemuNetworkInterfaceID9: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR("2001:0db8:85a3::/64"))})}, + QemuNetworkInterfaceID10: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR(""))})}, + QemuNetworkInterfaceID11: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Address: util.Pointer(IPv6CIDR("")), + DHCP: true})}, + QemuNetworkInterfaceID12: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Gateway: util.Pointer(IPv6Address("")), + DHCP: true})}, + QemuNetworkInterfaceID13: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc"))})}, + QemuNetworkInterfaceID14: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address(""))})}, + QemuNetworkInterfaceID15: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Address: util.Pointer(IPv6CIDR("")), + SLAAC: true})}, + QemuNetworkInterfaceID16: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Gateway: util.Pointer(IPv6Address("")), + SLAAC: true})}}, + UpgradePackages: util.Pointer(true)}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}}}}, + invalid: testType{ + createUpdate: []test{ + {name: `errors.New(CloudInit_Error_UpgradePackagesPre8)`, + version: Version{Major: 7, Minor: 255, Patch: 255}, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{UpgradePackages: util.Pointer(true)}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInit_Error_UpgradePackagesPre8)}, + {name: `errors.New(CloudInitSnippetPath_Error_InvalidCharacters)`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{Custom: &CloudInitCustom{Meta: &CloudInitSnippet{ + FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Character_Illegal()[0])}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitSnippetPath_Error_InvalidCharacters)}, + {name: `errors.New(CloudInitSnippetPath_Error_InvalidPath)`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{Custom: &CloudInitCustom{Network: &CloudInitSnippet{ + FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_InvalidPath())}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitSnippetPath_Error_InvalidPath)}, + {name: `errors.New(CloudInitSnippetPath_Error_MaxLength)`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{Custom: &CloudInitCustom{User: &CloudInitSnippet{ + FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Max_Illegal())}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitSnippetPath_Error_MaxLength)}, + {name: `errors.New(CloudInitSnippetPath_Error_Relative)`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{Custom: &CloudInitCustom{Vendor: &CloudInitSnippet{FilePath: CloudInitSnippetPath(test_data_qemu.CloudInitSnippetPath_Relative())}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitSnippetPath_Error_Relative)}, + {name: `errors.New(QemuNetworkInterfaceID_Error_Invalid)`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{ + 32: CloudInitNetworkConfig{}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(QemuNetworkInterfaceID_Error_Invalid)}, + {name: `CloudInitNetworkInterfaces IPv4 Address Mutually exclusive with DHCP`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID5: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{ + Address: util.Pointer(IPv4CIDR("192.168.45.1/24")), + DHCP: true})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitIPv4Config_Error_DhcpAddressMutuallyExclusive)}, + {name: `CloudInitNetworkInterfaces IPv4 Gateway Mutually exclusive with DHCP`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID6: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{ + Gateway: util.Pointer(IPv4Address("192.168.45.1")), + DHCP: true})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitIPv4Config_Error_DhcpGatewayMutuallyExclusive)}, + {name: `CloudInitNetworkInterfaces IPv4 Address errors.New(IPv4CIDR_Error_Invalid)`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID7: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Address: util.Pointer(IPv4CIDR("192.168.45.1"))})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(IPv4CIDR_Error_Invalid)}, + {name: `CloudInitNetworkInterfaces IPv4 Gateway errors.New(IPv4Address_Error_Invalid)`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID8: CloudInitNetworkConfig{ + IPv4: util.Pointer(CloudInitIPv4Config{Gateway: util.Pointer(IPv4Address("192.168.45.1/24"))})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(IPv4Address_Error_Invalid)}, + {name: `CloudInitNetworkInterfaces IPv6 Address Mutually exclusive with DHCP`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID17: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Address: util.Pointer(IPv6CIDR("2001:0db8:85a3::/64")), + DHCP: true})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitIPv6Config_Error_DhcpAddressMutuallyExclusive)}, + {name: `CloudInitNetworkInterfaces IPv6 Address Mutually exclusive with SLAAC`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID18: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Address: util.Pointer(IPv6CIDR("2001:0db8:85a3::/64")), + SLAAC: true})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitIPv6Config_Error_SlaacAddressMutuallyExclusive)}, + {name: `CloudInitNetworkInterfaces IPv6 DHCP Mutually exclusive with SLAAC`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID19: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + DHCP: true, + SLAAC: true})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitIPv6Config_Error_DhcpSlaacMutuallyExclusive)}, + {name: `CloudInitNetworkInterfaces IPv6 Gateway Mutually exclusive with DHCP`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID20: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Gateway: util.Pointer(IPv6Address("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc")), + DHCP: true})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitIPv6Config_Error_DhcpGatewayMutuallyExclusive)}, + {name: `CloudInitNetworkInterfaces IPv6 Gateway Mutually exclusive with SLAAC`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID21: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{ + Gateway: util.Pointer(IPv6Address("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc")), + SLAAC: true})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(CloudInitIPv6Config_Error_SlaacGatewayMutuallyExclusive)}, + {name: `CloudInitNetworkInterfaces IPv6 Address errors.New(IPv6CIDR_Error_Invalid)`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID22: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Address: util.Pointer(IPv6CIDR("3f6d:5b2a:1e4d:7c91:abcd:1234:5678:9abc"))})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(IPv6CIDR_Error_Invalid)}, + {name: `CloudInitNetworkInterfaces IPv6 Gateway errors.New(IPv6Address_Error_Invalid)`, + input: baseConfig(ConfigQemu{CloudInit: &CloudInit{NetworkInterfaces: CloudInitNetworkInterfaces{QemuNetworkInterfaceID23: CloudInitNetworkConfig{ + IPv6: util.Pointer(CloudInitIPv6Config{Gateway: util.Pointer(IPv6Address("2001:0db8:85a3::/64"))})}}}}), + current: &ConfigQemu{CloudInit: &CloudInit{}}, + err: errors.New(IPv6Address_Error_Invalid)}}}}, + {category: `CPU`, + valid: testType{ + createUpdate: []test{ + {name: `Cores`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Cores: util.Pointer(QemuCpuCores(1))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Maximum`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{ + Cores: util.Pointer(QemuCpuCores(128)), + Sockets: util.Pointer(QemuCpuSockets(4)), + VirtualCores: util.Pointer(CpuVirtualCores(512))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Minimum`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{ + Cores: util.Pointer(QemuCpuCores(128)), + Sockets: util.Pointer(QemuCpuSockets(4)), + VirtualCores: util.Pointer(CpuVirtualCores(0))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Flags all set`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + AES: util.Pointer(TriBoolFalse), + AmdNoSSB: util.Pointer(TriBoolNone), + AmdSSBD: util.Pointer(TriBoolTrue), + HvEvmcs: util.Pointer(TriBoolFalse), + HvTlbFlush: util.Pointer(TriBoolNone), + Ibpb: util.Pointer(TriBoolTrue), + MdClear: util.Pointer(TriBoolFalse), + PCID: util.Pointer(TriBoolNone), + Pdpe1GB: util.Pointer(TriBoolTrue), + SSBD: util.Pointer(TriBoolFalse), + SpecCtrl: util.Pointer(TriBoolNone), + VirtSSBD: util.Pointer(TriBoolTrue)}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Flags all nil`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Flags mixed`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + AmdNoSSB: util.Pointer(TriBoolTrue), + AmdSSBD: util.Pointer(TriBoolFalse), + HvTlbFlush: util.Pointer(TriBoolTrue), + Ibpb: util.Pointer(TriBoolFalse), + MdClear: util.Pointer(TriBoolNone), + PCID: util.Pointer(TriBoolTrue), + Pdpe1GB: util.Pointer(TriBoolFalse), + SpecCtrl: util.Pointer(TriBoolTrue)}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Limit maximum`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Limit: util.Pointer(CpuLimit(128))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Limit minimum`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Limit: util.Pointer(CpuLimit(0))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Sockets`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Sockets: util.Pointer(QemuCpuSockets(1))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Type empty`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Type: util.Pointer(CpuType(""))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Type host`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Type: util.Pointer(CpuType_Host)}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Units Minimum`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Units: util.Pointer(CpuUnits(0))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}, + {name: `Units Maximum`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Units: util.Pointer(CpuUnits(262144))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}}, + update: []test{ + {name: `nothing`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{}}), + current: &ConfigQemu{CPU: &QemuCPU{}}}}}, + invalid: testType{ + create: []test{ + {name: `erross.New(ConfigQemu_Error_CpuRequired)`, + err: errors.New(ConfigQemu_Error_CpuRequired)}, + {name: `errors.New(QemuCPU_Error_CoresRequired)`, + input: ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(QemuCPU_Error_CoresRequired)}}, + createUpdate: []test{ + {name: `errors.New(CpuLimit_Error_Maximum)`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Limit: util.Pointer(CpuLimit(129))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(CpuLimit_Error_Maximum)}, + {name: `errors.New(CpuUnits_Error_Maximum)`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Units: util.Pointer(CpuUnits(262145))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(CpuUnits_Error_Maximum)}, + {name: `errors.New(QemuCpuCores_Error_LowerBound)`, + input: ConfigQemu{CPU: &QemuCPU{Cores: util.Pointer(QemuCpuCores(0))}}, + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(QemuCpuCores_Error_LowerBound)}, + {name: `errors.New(QemuCpuSockets_Error_LowerBound)`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{ + Cores: util.Pointer(QemuCpuCores(1)), + Sockets: util.Pointer(QemuCpuSockets(0))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(QemuCpuSockets_Error_LowerBound)}, + {name: `CpuVirtualCores(1).Error() 1 1`, + input: ConfigQemu{CPU: &QemuCPU{ + Cores: util.Pointer(QemuCpuCores(1)), + Sockets: util.Pointer(QemuCpuSockets(1)), + VirtualCores: util.Pointer(CpuVirtualCores(2))}}, + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: CpuVirtualCores(1).Error()}, + {name: `Invalid AES`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + AES: util.Pointer(TriBool(-2))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid AmdNoSSB`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + AmdNoSSB: util.Pointer(TriBool(2))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid AmdSSBD`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + AmdSSBD: util.Pointer(TriBool(-27))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid HvEvmcs`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + HvEvmcs: util.Pointer(TriBool(32))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid HvTlbFlush`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + HvTlbFlush: util.Pointer(TriBool(-2))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid Ibpb`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + Ibpb: util.Pointer(TriBool(52))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid MdClear`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + MdClear: util.Pointer(TriBool(-52))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid PCID`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + PCID: util.Pointer(TriBool(82))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid Pdpe1GB`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + Pdpe1GB: util.Pointer(TriBool(-2))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid SSBD`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + SSBD: util.Pointer(TriBool(3))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid SpecCtrl`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + SpecCtrl: util.Pointer(TriBool(-2))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Invalid VirtSSBD`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Flags: &CpuFlags{ + VirtSSBD: util.Pointer(TriBool(2))}}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + err: errors.New(TriBool_Error_Invalid)}, + {name: `Type`, + input: baseConfig(ConfigQemu{CPU: &QemuCPU{Type: util.Pointer(CpuType("invalid"))}}), + current: &ConfigQemu{CPU: &QemuCPU{}}, + version: Version{}.max(), + err: CpuType("").Error(Version{}.max())}}}}, {category: `Disks`, - valid: []test{ - {name: `Empty 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{}})}, - {name: `Empty 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{ - Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{}}, - Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{}}, - Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{}}, - VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{}}}})}}, - invalid: []test{ - {name: `MutuallyExclusive Ide 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{ - CdRom: &QemuCdRom{}, - Disk: &QemuIdeDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 2`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{ - CdRom: &QemuCdRom{}, - Passthrough: &QemuIdePassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 3`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{ - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuIdeDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 4`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{ - CloudInit: &QemuCloudInitDisk{}, - Passthrough: &QemuIdePassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 5`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{ - Disk: &QemuIdeDisk{}, - Passthrough: &QemuIdePassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 6`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuIdeDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 7`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{ - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuIdeDisk{}, - Passthrough: &QemuIdePassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 8`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{ - CdRom: &QemuCdRom{}, - Disk: &QemuIdeDisk{}, - Passthrough: &QemuIdePassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 9`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Passthrough: &QemuIdePassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Ide 10`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuIdeDisk{}, - Passthrough: &QemuIdePassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{ - CdRom: &QemuCdRom{}, - Disk: &QemuSataDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 2`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{ - CdRom: &QemuCdRom{}, - Passthrough: &QemuSataPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 3`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{ - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuSataDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 4`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{ - CloudInit: &QemuCloudInitDisk{}, - Passthrough: &QemuSataPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 5`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{ - Disk: &QemuSataDisk{}, - Passthrough: &QemuSataPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 6`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuSataDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 7`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{ - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuSataDisk{}, - Passthrough: &QemuSataPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 8`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{ - CdRom: &QemuCdRom{}, - Disk: &QemuSataDisk{}, - Passthrough: &QemuSataPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 9`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Passthrough: &QemuSataPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Sata 10`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuSataDisk{}, - Passthrough: &QemuSataPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{ - CdRom: &QemuCdRom{}, - Disk: &QemuScsiDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 2`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{ - CdRom: &QemuCdRom{}, - Passthrough: &QemuScsiPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 3`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_3: &QemuScsiStorage{ - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuScsiDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 4`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_4: &QemuScsiStorage{ - CloudInit: &QemuCloudInitDisk{}, - Passthrough: &QemuScsiPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 5`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_5: &QemuScsiStorage{ - Disk: &QemuScsiDisk{}, - Passthrough: &QemuScsiPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 6`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_6: &QemuScsiStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuScsiDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 7`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_7: &QemuScsiStorage{ - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuScsiDisk{}, - Passthrough: &QemuScsiPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 8`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_8: &QemuScsiStorage{ - CdRom: &QemuCdRom{}, - Disk: &QemuScsiDisk{}, - Passthrough: &QemuScsiPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 9`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_9: &QemuScsiStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Passthrough: &QemuScsiPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive Scsi 10`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_10: &QemuScsiStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuScsiDisk{}, - Passthrough: &QemuScsiPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{ - CdRom: &QemuCdRom{}, - Disk: &QemuVirtIODisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 2`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{ - CdRom: &QemuCdRom{}, - Passthrough: &QemuVirtIOPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 3`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_3: &QemuVirtIOStorage{ - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuVirtIODisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 4`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_4: &QemuVirtIOStorage{ - CloudInit: &QemuCloudInitDisk{}, - Passthrough: &QemuVirtIOPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 5`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_5: &QemuVirtIOStorage{ - Disk: &QemuVirtIODisk{}, - Passthrough: &QemuVirtIOPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 6`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_6: &QemuVirtIOStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuVirtIODisk{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 7`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_7: &QemuVirtIOStorage{ - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuVirtIODisk{}, - Passthrough: &QemuVirtIOPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 8`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_8: &QemuVirtIOStorage{ - CdRom: &QemuCdRom{}, - Disk: &QemuVirtIODisk{}, - Passthrough: &QemuVirtIOPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 9`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_9: &QemuVirtIOStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Passthrough: &QemuVirtIOPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}, - {name: `MutuallyExclusive VirtIO 10`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_10: &QemuVirtIOStorage{ - CdRom: &QemuCdRom{}, - CloudInit: &QemuCloudInitDisk{}, - Disk: &QemuVirtIODisk{}, - Passthrough: &QemuVirtIOPassthrough{}}}}}), - err: errors.New(Error_QemuDisk_MutuallyExclusive)}}}, + valid: testType{ + create: []test{ + {name: `Empty 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{}})}, + {name: `Empty 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{ + Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{}}, + Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{}}, + Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{}}, + VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{}}}})}}}, + invalid: testType{ + create: []test{ + {name: `MutuallyExclusive Ide 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{ + CdRom: &QemuCdRom{}, + Disk: &QemuIdeDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 2`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{ + CdRom: &QemuCdRom{}, + Passthrough: &QemuIdePassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 3`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{ + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuIdeDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 4`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{ + CloudInit: &QemuCloudInitDisk{}, + Passthrough: &QemuIdePassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 5`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{ + Disk: &QemuIdeDisk{}, + Passthrough: &QemuIdePassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 6`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuIdeDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 7`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{ + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuIdeDisk{}, + Passthrough: &QemuIdePassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 8`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{ + CdRom: &QemuCdRom{}, + Disk: &QemuIdeDisk{}, + Passthrough: &QemuIdePassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 9`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Passthrough: &QemuIdePassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Ide 10`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuIdeDisk{}, + Passthrough: &QemuIdePassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{ + CdRom: &QemuCdRom{}, + Disk: &QemuSataDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 2`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{ + CdRom: &QemuCdRom{}, + Passthrough: &QemuSataPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 3`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{ + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuSataDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 4`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{ + CloudInit: &QemuCloudInitDisk{}, + Passthrough: &QemuSataPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 5`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{ + Disk: &QemuSataDisk{}, + Passthrough: &QemuSataPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 6`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuSataDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 7`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{ + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuSataDisk{}, + Passthrough: &QemuSataPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 8`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{ + CdRom: &QemuCdRom{}, + Disk: &QemuSataDisk{}, + Passthrough: &QemuSataPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 9`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Passthrough: &QemuSataPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Sata 10`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuSataDisk{}, + Passthrough: &QemuSataPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{ + CdRom: &QemuCdRom{}, + Disk: &QemuScsiDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 2`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{ + CdRom: &QemuCdRom{}, + Passthrough: &QemuScsiPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 3`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_3: &QemuScsiStorage{ + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuScsiDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 4`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_4: &QemuScsiStorage{ + CloudInit: &QemuCloudInitDisk{}, + Passthrough: &QemuScsiPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 5`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_5: &QemuScsiStorage{ + Disk: &QemuScsiDisk{}, + Passthrough: &QemuScsiPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 6`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_6: &QemuScsiStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuScsiDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 7`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_7: &QemuScsiStorage{ + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuScsiDisk{}, + Passthrough: &QemuScsiPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 8`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_8: &QemuScsiStorage{ + CdRom: &QemuCdRom{}, + Disk: &QemuScsiDisk{}, + Passthrough: &QemuScsiPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 9`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_9: &QemuScsiStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Passthrough: &QemuScsiPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive Scsi 10`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_10: &QemuScsiStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuScsiDisk{}, + Passthrough: &QemuScsiPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{ + CdRom: &QemuCdRom{}, + Disk: &QemuVirtIODisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 2`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{ + CdRom: &QemuCdRom{}, + Passthrough: &QemuVirtIOPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 3`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_3: &QemuVirtIOStorage{ + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuVirtIODisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 4`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_4: &QemuVirtIOStorage{ + CloudInit: &QemuCloudInitDisk{}, + Passthrough: &QemuVirtIOPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 5`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_5: &QemuVirtIOStorage{ + Disk: &QemuVirtIODisk{}, + Passthrough: &QemuVirtIOPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 6`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_6: &QemuVirtIOStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuVirtIODisk{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 7`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_7: &QemuVirtIOStorage{ + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuVirtIODisk{}, + Passthrough: &QemuVirtIOPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 8`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_8: &QemuVirtIOStorage{ + CdRom: &QemuCdRom{}, + Disk: &QemuVirtIODisk{}, + Passthrough: &QemuVirtIOPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 9`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_9: &QemuVirtIOStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Passthrough: &QemuVirtIOPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}, + {name: `MutuallyExclusive VirtIO 10`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_10: &QemuVirtIOStorage{ + CdRom: &QemuCdRom{}, + CloudInit: &QemuCloudInitDisk{}, + Disk: &QemuVirtIODisk{}, + Passthrough: &QemuVirtIOPassthrough{}}}}}), + err: errors.New(Error_QemuDisk_MutuallyExclusive)}}}}, {category: `Disks CdRom`, - valid: []test{ - {input: baseConfig(ConfigQemu{Disks: &QemuStorages{ - Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CdRom: &QemuCdRom{}}}, - Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}}}}, - Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CdRom: &QemuCdRom{Passthrough: true}}}, - VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}}}}}})}}, - invalid: []test{ - {name: `Ide errors.New(Error_IsoFile_File) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CdRom: &QemuCdRom{Iso: &IsoFile{}}}}}}), - err: errors.New(Error_IsoFile_File)}, - {name: `Ide errors.New(Error_IsoFile_File) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{CdRom: &QemuCdRom{Iso: &IsoFile{Storage: "test"}}}}}}), - err: errors.New(Error_IsoFile_File)}, - {name: `Ide errors.New(Error_IsoFile_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test"}}}}}}), - err: errors.New(Error_IsoFile_Storage)}, - {name: `Ide errors.New(Error_QemuCdRom_MutuallyExclusive)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}, Passthrough: true}}}}}), - err: errors.New(Error_QemuCdRom_MutuallyExclusive)}, - {name: `Sata errors.New(Error_IsoFile_File) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{}}}}}}), - err: errors.New(Error_IsoFile_File)}, - {name: `Sata errors.New(Error_IsoFile_File) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{Storage: "test"}}}}}}), - err: errors.New(Error_IsoFile_File)}, - {name: `Sata errors.New(Error_IsoFile_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test"}}}}}}), - err: errors.New(Error_IsoFile_Storage)}, - {name: `Sata errors.New(Error_QemuCdRom_MutuallyExclusive)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}, Passthrough: true}}}}}), - err: errors.New(Error_QemuCdRom_MutuallyExclusive)}, - {name: `Scsi errors.New(Error_IsoFile_File) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CdRom: &QemuCdRom{Iso: &IsoFile{}}}}}}), - err: errors.New(Error_IsoFile_File)}, - {name: `Scsi errors.New(Error_IsoFile_File) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{CdRom: &QemuCdRom{Iso: &IsoFile{Storage: "test"}}}}}}), - err: errors.New(Error_IsoFile_File)}, - {name: `Scsi errors.New(Error_IsoFile_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test"}}}}}}), - err: errors.New(Error_IsoFile_Storage)}, - {name: `Scsi errors.New(Error_QemuCdRom_MutuallyExclusive)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_3: &QemuScsiStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}, Passthrough: true}}}}}), - err: errors.New(Error_QemuCdRom_MutuallyExclusive)}, - {name: `VirtIO errors.New(Error_IsoFile_File) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{}}}}}}), - err: errors.New(Error_IsoFile_File)}, - {name: `VirtIO errors.New(Error_IsoFile_File) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{Storage: "test"}}}}}}), - err: errors.New(Error_IsoFile_File)}, - {name: `VirtIO errors.New(Error_IsoFile_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test"}}}}}}), - err: errors.New(Error_IsoFile_Storage)}, - {name: `VirtIO errors.New(Error_QemuCdRom_MutuallyExclusive)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_3: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}, Passthrough: true}}}}}), - err: errors.New(Error_QemuCdRom_MutuallyExclusive)}}}, + valid: testType{ + create: []test{ + {input: baseConfig(ConfigQemu{Disks: &QemuStorages{ + Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CdRom: &QemuCdRom{}}}, + Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}}}}, + Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CdRom: &QemuCdRom{Passthrough: true}}}, + VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}}}}}})}}}, + invalid: testType{ + create: []test{ + {name: `Ide errors.New(Error_IsoFile_File) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CdRom: &QemuCdRom{Iso: &IsoFile{}}}}}}), + err: errors.New(Error_IsoFile_File)}, + {name: `Ide errors.New(Error_IsoFile_File) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{CdRom: &QemuCdRom{Iso: &IsoFile{Storage: "test"}}}}}}), + err: errors.New(Error_IsoFile_File)}, + {name: `Ide errors.New(Error_IsoFile_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test"}}}}}}), + err: errors.New(Error_IsoFile_Storage)}, + {name: `Ide errors.New(Error_QemuCdRom_MutuallyExclusive)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}, Passthrough: true}}}}}), + err: errors.New(Error_QemuCdRom_MutuallyExclusive)}, + {name: `Sata errors.New(Error_IsoFile_File) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{}}}}}}), + err: errors.New(Error_IsoFile_File)}, + {name: `Sata errors.New(Error_IsoFile_File) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{Storage: "test"}}}}}}), + err: errors.New(Error_IsoFile_File)}, + {name: `Sata errors.New(Error_IsoFile_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test"}}}}}}), + err: errors.New(Error_IsoFile_Storage)}, + {name: `Sata errors.New(Error_QemuCdRom_MutuallyExclusive)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}, Passthrough: true}}}}}), + err: errors.New(Error_QemuCdRom_MutuallyExclusive)}, + {name: `Scsi errors.New(Error_IsoFile_File) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CdRom: &QemuCdRom{Iso: &IsoFile{}}}}}}), + err: errors.New(Error_IsoFile_File)}, + {name: `Scsi errors.New(Error_IsoFile_File) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{CdRom: &QemuCdRom{Iso: &IsoFile{Storage: "test"}}}}}}), + err: errors.New(Error_IsoFile_File)}, + {name: `Scsi errors.New(Error_IsoFile_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test"}}}}}}), + err: errors.New(Error_IsoFile_Storage)}, + {name: `Scsi errors.New(Error_QemuCdRom_MutuallyExclusive)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_3: &QemuScsiStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}, Passthrough: true}}}}}), + err: errors.New(Error_QemuCdRom_MutuallyExclusive)}, + {name: `VirtIO errors.New(Error_IsoFile_File) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{}}}}}}), + err: errors.New(Error_IsoFile_File)}, + {name: `VirtIO errors.New(Error_IsoFile_File) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{Storage: "test"}}}}}}), + err: errors.New(Error_IsoFile_File)}, + {name: `VirtIO errors.New(Error_IsoFile_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test"}}}}}}), + err: errors.New(Error_IsoFile_Storage)}, + {name: `VirtIO errors.New(Error_QemuCdRom_MutuallyExclusive)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_3: &QemuVirtIOStorage{CdRom: &QemuCdRom{Iso: &IsoFile{File: "test", Storage: "test"}, Passthrough: true}}}}}), + err: errors.New(Error_QemuCdRom_MutuallyExclusive)}}}}, {category: `Disks CloudInit`, - valid: []test{ - {name: `Ide`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CloudInit: &validCloudInit}}}})}, - {name: `Sata`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CloudInit: &validCloudInit}}}})}, - {name: `Scsi`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CloudInit: &validCloudInit}}}})}, - {name: `VirtIO`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CloudInit: &validCloudInit}}}})}}, - invalid: []test{ - {name: `Duplicate errors.New(Error_QemuCloudInitDisk_OnlyOne)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{ - Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CloudInit: &validCloudInit}}, - Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CloudInit: &validCloudInit}}, - Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CloudInit: &validCloudInit}}, - VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CloudInit: &validCloudInit}}}}), - err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, - {name: `Duplicate Ide errors.New(Error_QemuCloudInitDisk_OnlyOne)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{ - Ide: &QemuIdeDisks{ - Disk_0: &QemuIdeStorage{CloudInit: &validCloudInit}, - Disk_1: &QemuIdeStorage{CloudInit: &validCloudInit}}}}), - err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, - {name: `Duplicate Sata errors.New(Error_QemuCloudInitDisk_OnlyOne)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{ - Sata: &QemuSataDisks{ - Disk_0: &QemuSataStorage{CloudInit: &validCloudInit}, - Disk_1: &QemuSataStorage{CloudInit: &validCloudInit}}}}), - err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, - {name: `Duplicate Scsi errors.New(Error_QemuCloudInitDisk_OnlyOne)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{ - Scsi: &QemuScsiDisks{ - Disk_0: &QemuScsiStorage{CloudInit: &validCloudInit}, - Disk_1: &QemuScsiStorage{CloudInit: &validCloudInit}}}}), - err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, - {name: `Duplicate VirtIO errors.New(Error_QemuCloudInitDisk_OnlyOne)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{ - VirtIO: &QemuVirtIODisks{ - Disk_0: &QemuVirtIOStorage{CloudInit: &validCloudInit}, - Disk_1: &QemuVirtIOStorage{CloudInit: &validCloudInit}}}}), - err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, - {name: `Ide QemuDiskFormat("").Error() 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CloudInit: &QemuCloudInitDisk{}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Ide QemuDiskFormat("").Error() 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{CloudInit: &QemuCloudInitDisk{Storage: "test"}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Ide errors.New(Error_QemuCloudInitDisk_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{CloudInit: &QemuCloudInitDisk{Format: QemuDiskFormat_Raw}}}}}), - err: errors.New(Error_QemuCloudInitDisk_Storage)}, - {name: `Sata QemuDiskFormat("").Error() 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CloudInit: &QemuCloudInitDisk{}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Sata QemuDiskFormat("").Error() 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{CloudInit: &QemuCloudInitDisk{Storage: "test"}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Sata errors.New(Error_QemuCloudInitDisk_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{CloudInit: &QemuCloudInitDisk{Format: QemuDiskFormat_Raw}}}}}), - err: errors.New(Error_QemuCloudInitDisk_Storage)}, - {name: `Scsi QemuDiskFormat("").Error() 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CloudInit: &QemuCloudInitDisk{}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Scsi QemuDiskFormat("").Error() 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{CloudInit: &QemuCloudInitDisk{Storage: "test"}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Scsi errors.New(Error_QemuCloudInitDisk_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{CloudInit: &QemuCloudInitDisk{Format: QemuDiskFormat_Raw}}}}}), - err: errors.New(Error_QemuCloudInitDisk_Storage)}, - {name: `VirtIO QemuDiskFormat("").Error() 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CloudInit: &QemuCloudInitDisk{}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `VirtIO QemuDiskFormat("").Error() 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{CloudInit: &QemuCloudInitDisk{Storage: "test"}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `VirtIO errors.New(Error_QemuCloudInitDisk_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{CloudInit: &QemuCloudInitDisk{Format: QemuDiskFormat_Raw}}}}}), - err: errors.New(Error_QemuCloudInitDisk_Storage)}}}, + valid: testType{ + create: []test{ + {name: `Ide`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CloudInit: &validCloudInit}}}})}, + {name: `Sata`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CloudInit: &validCloudInit}}}})}, + {name: `Scsi`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CloudInit: &validCloudInit}}}})}, + {name: `VirtIO`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CloudInit: &validCloudInit}}}})}}}, + invalid: testType{ + create: []test{ + {name: `Duplicate errors.New(Error_QemuCloudInitDisk_OnlyOne)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{ + Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CloudInit: &validCloudInit}}, + Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CloudInit: &validCloudInit}}, + Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CloudInit: &validCloudInit}}, + VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CloudInit: &validCloudInit}}}}), + err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, + {name: `Duplicate Ide errors.New(Error_QemuCloudInitDisk_OnlyOne)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{ + Ide: &QemuIdeDisks{ + Disk_0: &QemuIdeStorage{CloudInit: &validCloudInit}, + Disk_1: &QemuIdeStorage{CloudInit: &validCloudInit}}}}), + err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, + {name: `Duplicate Sata errors.New(Error_QemuCloudInitDisk_OnlyOne)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{ + Sata: &QemuSataDisks{ + Disk_0: &QemuSataStorage{CloudInit: &validCloudInit}, + Disk_1: &QemuSataStorage{CloudInit: &validCloudInit}}}}), + err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, + {name: `Duplicate Scsi errors.New(Error_QemuCloudInitDisk_OnlyOne)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{ + Scsi: &QemuScsiDisks{ + Disk_0: &QemuScsiStorage{CloudInit: &validCloudInit}, + Disk_1: &QemuScsiStorage{CloudInit: &validCloudInit}}}}), + err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, + {name: `Duplicate VirtIO errors.New(Error_QemuCloudInitDisk_OnlyOne)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{ + VirtIO: &QemuVirtIODisks{ + Disk_0: &QemuVirtIOStorage{CloudInit: &validCloudInit}, + Disk_1: &QemuVirtIOStorage{CloudInit: &validCloudInit}}}}), + err: errors.New(Error_QemuCloudInitDisk_OnlyOne)}, + {name: `Ide QemuDiskFormat("").Error() 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{CloudInit: &QemuCloudInitDisk{}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Ide QemuDiskFormat("").Error() 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{CloudInit: &QemuCloudInitDisk{Storage: "test"}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Ide errors.New(Error_QemuCloudInitDisk_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{CloudInit: &QemuCloudInitDisk{Format: QemuDiskFormat_Raw}}}}}), + err: errors.New(Error_QemuCloudInitDisk_Storage)}, + {name: `Sata QemuDiskFormat("").Error() 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{CloudInit: &QemuCloudInitDisk{}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Sata QemuDiskFormat("").Error() 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{CloudInit: &QemuCloudInitDisk{Storage: "test"}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Sata errors.New(Error_QemuCloudInitDisk_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{CloudInit: &QemuCloudInitDisk{Format: QemuDiskFormat_Raw}}}}}), + err: errors.New(Error_QemuCloudInitDisk_Storage)}, + {name: `Scsi QemuDiskFormat("").Error() 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{CloudInit: &QemuCloudInitDisk{}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Scsi QemuDiskFormat("").Error() 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{CloudInit: &QemuCloudInitDisk{Storage: "test"}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Scsi errors.New(Error_QemuCloudInitDisk_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{CloudInit: &QemuCloudInitDisk{Format: QemuDiskFormat_Raw}}}}}), + err: errors.New(Error_QemuCloudInitDisk_Storage)}, + {name: `VirtIO QemuDiskFormat("").Error() 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{CloudInit: &QemuCloudInitDisk{}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `VirtIO QemuDiskFormat("").Error() 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{CloudInit: &QemuCloudInitDisk{Storage: "test"}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `VirtIO errors.New(Error_QemuCloudInitDisk_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{CloudInit: &QemuCloudInitDisk{Format: QemuDiskFormat_Raw}}}}}), + err: errors.New(Error_QemuCloudInitDisk_Storage)}}}}, {category: `Disks Disk`, - valid: []test{ - {input: baseConfig(ConfigQemu{Disks: &QemuStorages{ - Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{ - AsyncIO: QemuDiskAsyncIO_IOuring, - Bandwidth: BandwidthValid0(), - Cache: QemuDiskCache_DirectSync, - Format: QemuDiskFormat_Raw, - SizeInKibibytes: 5748543, - Storage: "test", - WorldWideName: "0x500A1B2C3D4E5F60"}}}, - Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{ - AsyncIO: QemuDiskAsyncIO_Native, - Bandwidth: BandwidthValid1(), - Cache: QemuDiskCache_None, - Format: QemuDiskFormat_Cow, - SizeInKibibytes: 4097, - Storage: "test", - WorldWideName: "0x500F123456789ABC"}}}, - Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{Disk: &QemuScsiDisk{ - AsyncIO: QemuDiskAsyncIO_Threads, - Bandwidth: BandwidthValid2(), - Cache: QemuDiskCache_WriteBack, - Format: QemuDiskFormat_Qcow2, - SizeInKibibytes: 9475478, - Storage: "test", - WorldWideName: "0x5009876543210DEF"}}}, - VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ - AsyncIO: "", - Bandwidth: BandwidthValid3(), - Cache: "", - Format: QemuDiskFormat_Vmdk, - SizeInKibibytes: 18742, - Storage: "test", - WorldWideName: "0x500C0D0E0F101112"}}}}})}}, - invalid: []test{ - {name: `Ide QemuDiskFormat("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Ide QemuDiskAsyncIO("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Disk: &QemuIdeDisk{AsyncIO: "invalid"}}}}}), - err: QemuDiskAsyncIO("").Error()}, - {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Ide QemuDiskCache("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Disk: &QemuIdeDisk{Cache: "invalid"}}}}}), - err: QemuDiskCache("").Error()}, - {name: `Ide QemuDiskFormat("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Disk: &QemuIdeDisk{Format: ""}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Ide errors.New(Error_QemuDiskSerial_IllegalCharacter)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{ - Format: QemuDiskFormat_Raw, - Serial: "!@^$^&$^&"}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, - {name: `Ide errors.New(Error_QemuDiskSerial_IllegalLength)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Disk: &QemuIdeDisk{ - Format: QemuDiskFormat_Raw, - Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalLength)}, - {name: `Ide errors.New(QemuDiskSize_Error_Minimum)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Disk: &QemuIdeDisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: 4096}}}}}), - err: errors.New(QemuDiskSize_Error_Minimum)}, - {name: `Ide errors.New(Error_QemuDisk_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Disk: &QemuIdeDisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: qemuDiskSize_Minimum, - Storage: ""}}}}}), - err: errors.New(Error_QemuDisk_Storage)}, - {name: `Ide errors.New(Error_QemuWorldWideName_Invalid)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: 32, - Storage: "Test", - WorldWideName: "0xG123456789ABCDE"}}}}}), - err: errors.New(Error_QemuWorldWideName_Invalid)}, - {name: `Sata QemuDiskFormat("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Sata QemuDiskAsyncIO("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Disk: &QemuSataDisk{AsyncIO: "invalid"}}}}}), - err: QemuDiskAsyncIO("").Error()}, - {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Sata QemuDiskCache("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{Disk: &QemuSataDisk{Cache: "invalid"}}}}}), - err: QemuDiskCache("").Error()}, - {name: `Sata QemuDiskFormat("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{Disk: &QemuSataDisk{Format: ""}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Sata errors.New(Error_QemuDiskSerial_IllegalCharacter)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{ - Format: QemuDiskFormat_Raw, - Serial: "!@^$^&$^&"}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, - {name: `Sata errors.New(Error_QemuDiskSerial_IllegalLength)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Disk: &QemuSataDisk{ - Format: QemuDiskFormat_Raw, - Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalLength)}, - {name: `Sata errors.New(QemuDiskSize_Error_Minimum)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Disk: &QemuSataDisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: 4096}}}}}), - err: errors.New(QemuDiskSize_Error_Minimum)}, - {name: `Sata errors.New(Error_QemuDisk_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Disk: &QemuSataDisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: qemuDiskSize_Minimum, - Storage: ""}}}}}), - err: errors.New(Error_QemuDisk_Storage)}, - {name: `Sata errors.New(Error_QemuWorldWideName_Invalid)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: 32, - Storage: "Test", - WorldWideName: "500A1B2C3D4E5F60"}}}}}), - err: errors.New(Error_QemuWorldWideName_Invalid)}, - {name: `Scsi QemuDiskFormat("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{Disk: &QemuScsiDisk{}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Scsi QemuDiskAsyncIO("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{Disk: &QemuScsiDisk{AsyncIO: "invalid"}}}}}), - err: QemuDiskAsyncIO("").Error()}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_6: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_7: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_8: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_9: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_3: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_4: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_5: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Scsi QemuDiskCache("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_10: &QemuScsiStorage{Disk: &QemuScsiDisk{Cache: "invalid"}}}}}), - err: QemuDiskCache("").Error()}, - {name: `Scsi QemuDiskFormat("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_11: &QemuScsiStorage{Disk: &QemuScsiDisk{Format: ""}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `Scsi errors.New(Error_QemuDiskSerial_IllegalCharacter)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_12: &QemuScsiStorage{Disk: &QemuScsiDisk{ - Format: QemuDiskFormat_Raw, - Serial: "!@^$^&$^&"}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, - {name: `Scsi errors.New(Error_QemuDiskSerial_IllegalLength)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_13: &QemuScsiStorage{Disk: &QemuScsiDisk{ - Format: QemuDiskFormat_Raw, - Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalLength)}, - {name: `Scsi errors.New(QemuDiskSize_Error_Minimum)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_14: &QemuScsiStorage{Disk: &QemuScsiDisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: 0}}}}}), - err: errors.New(QemuDiskSize_Error_Minimum)}, - {name: `Scsi errors.New(Error_QemuDisk_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_15: &QemuScsiStorage{Disk: &QemuScsiDisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: qemuDiskSize_Minimum, - Storage: ""}}}}}), - err: errors.New(Error_QemuDisk_Storage)}, - {name: `Scsi errors.New(Error_QemuWorldWideName_Invalid)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_16: &QemuScsiStorage{Disk: &QemuScsiDisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: 32, - Storage: "Test", - WorldWideName: "0x5009876543210DEFG"}}}}}), - err: errors.New(Error_QemuWorldWideName_Invalid)}, - {name: `VirtIO QemuDiskFormat("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `VirtIO QemuDiskAsyncIO("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{AsyncIO: "invalid"}}}}}), - err: QemuDiskAsyncIO("").Error()}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_6: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_7: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_8: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_9: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_3: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_4: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_5: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `VirtIO QemuDiskCache("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_10: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Cache: "invalid"}}}}}), - err: QemuDiskCache("").Error()}, - {name: `VirtIO QemuDiskFormat("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_11: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Format: ""}}}}}), - err: QemuDiskFormat("").Error()}, - {name: `VirtIO errors.New(Error_QemuDiskSerial_IllegalCharacter)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_12: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ - Format: QemuDiskFormat_Raw, - Serial: "!@^$^&$^&"}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, - {name: `VirtIO errors.New(Error_QemuDiskSerial_IllegalLength)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_13: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ - Format: QemuDiskFormat_Raw, - Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalLength)}, - {name: `VirtIO errors.New(QemuDiskSize_Error_Minimum)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_14: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: 1024}}}}}), - err: errors.New(QemuDiskSize_Error_Minimum)}, - {name: `VirtIO errors.New(Error_QemuDisk_Storage)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_15: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: qemuDiskSize_Minimum, - Storage: ""}}}}}), - err: errors.New(Error_QemuDisk_Storage)}, - {name: `VirtIO errors.New(Error_QemuWorldWideName_Invalid)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ - Format: QemuDiskFormat_Raw, - SizeInKibibytes: 32, - Storage: "Test", - WorldWideName: "500C0D0E0F10111"}}}}}), - err: errors.New(Error_QemuWorldWideName_Invalid)}}}, + valid: testType{ + create: []test{ + {input: baseConfig(ConfigQemu{Disks: &QemuStorages{ + Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{ + AsyncIO: QemuDiskAsyncIO_IOuring, + Bandwidth: BandwidthValid0(), + Cache: QemuDiskCache_DirectSync, + Format: QemuDiskFormat_Raw, + SizeInKibibytes: 5748543, + Storage: "test", + WorldWideName: "0x500A1B2C3D4E5F60"}}}, + Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{ + AsyncIO: QemuDiskAsyncIO_Native, + Bandwidth: BandwidthValid1(), + Cache: QemuDiskCache_None, + Format: QemuDiskFormat_Cow, + SizeInKibibytes: 4097, + Storage: "test", + WorldWideName: "0x500F123456789ABC"}}}, + Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{Disk: &QemuScsiDisk{ + AsyncIO: QemuDiskAsyncIO_Threads, + Bandwidth: BandwidthValid2(), + Cache: QemuDiskCache_WriteBack, + Format: QemuDiskFormat_Qcow2, + SizeInKibibytes: 9475478, + Storage: "test", + WorldWideName: "0x5009876543210DEF"}}}, + VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ + AsyncIO: "", + Bandwidth: BandwidthValid3(), + Cache: "", + Format: QemuDiskFormat_Vmdk, + SizeInKibibytes: 18742, + Storage: "test", + WorldWideName: "0x500C0D0E0F101112"}}}}})}}}, + invalid: testType{ + create: []test{ + {name: `Ide QemuDiskFormat("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Ide QemuDiskAsyncIO("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Disk: &QemuIdeDisk{AsyncIO: "invalid"}}}}}), + err: QemuDiskAsyncIO("").Error()}, + {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Disk: &QemuIdeDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Ide QemuDiskCache("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Disk: &QemuIdeDisk{Cache: "invalid"}}}}}), + err: QemuDiskCache("").Error()}, + {name: `Ide QemuDiskFormat("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Disk: &QemuIdeDisk{Format: ""}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Ide errors.New(Error_QemuDiskSerial_IllegalCharacter)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{ + Format: QemuDiskFormat_Raw, + Serial: "!@^$^&$^&"}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, + {name: `Ide errors.New(Error_QemuDiskSerial_IllegalLength)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Disk: &QemuIdeDisk{ + Format: QemuDiskFormat_Raw, + Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalLength)}, + {name: `Ide errors.New(QemuDiskSize_Error_Minimum)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Disk: &QemuIdeDisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: 4096}}}}}), + err: errors.New(QemuDiskSize_Error_Minimum)}, + {name: `Ide errors.New(Error_QemuDisk_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Disk: &QemuIdeDisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: qemuDiskSize_Minimum, + Storage: ""}}}}}), + err: errors.New(Error_QemuDisk_Storage)}, + {name: `Ide errors.New(Error_QemuWorldWideName_Invalid)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Disk: &QemuIdeDisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: 32, + Storage: "Test", + WorldWideName: "0xG123456789ABCDE"}}}}}), + err: errors.New(Error_QemuWorldWideName_Invalid)}, + {name: `Sata QemuDiskFormat("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Sata QemuDiskAsyncIO("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Disk: &QemuSataDisk{AsyncIO: "invalid"}}}}}), + err: QemuDiskAsyncIO("").Error()}, + {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{Disk: &QemuSataDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Sata QemuDiskCache("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{Disk: &QemuSataDisk{Cache: "invalid"}}}}}), + err: QemuDiskCache("").Error()}, + {name: `Sata QemuDiskFormat("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{Disk: &QemuSataDisk{Format: ""}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Sata errors.New(Error_QemuDiskSerial_IllegalCharacter)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{ + Format: QemuDiskFormat_Raw, + Serial: "!@^$^&$^&"}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, + {name: `Sata errors.New(Error_QemuDiskSerial_IllegalLength)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Disk: &QemuSataDisk{ + Format: QemuDiskFormat_Raw, + Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalLength)}, + {name: `Sata errors.New(QemuDiskSize_Error_Minimum)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Disk: &QemuSataDisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: 4096}}}}}), + err: errors.New(QemuDiskSize_Error_Minimum)}, + {name: `Sata errors.New(Error_QemuDisk_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Disk: &QemuSataDisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: qemuDiskSize_Minimum, + Storage: ""}}}}}), + err: errors.New(Error_QemuDisk_Storage)}, + {name: `Sata errors.New(Error_QemuWorldWideName_Invalid)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Disk: &QemuSataDisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: 32, + Storage: "Test", + WorldWideName: "500A1B2C3D4E5F60"}}}}}), + err: errors.New(Error_QemuWorldWideName_Invalid)}, + {name: `Scsi QemuDiskFormat("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{Disk: &QemuScsiDisk{}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Scsi QemuDiskAsyncIO("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{Disk: &QemuScsiDisk{AsyncIO: "invalid"}}}}}), + err: QemuDiskAsyncIO("").Error()}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_6: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_7: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_8: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_9: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_3: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_4: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_5: &QemuScsiStorage{Disk: &QemuScsiDisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Scsi QemuDiskCache("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_10: &QemuScsiStorage{Disk: &QemuScsiDisk{Cache: "invalid"}}}}}), + err: QemuDiskCache("").Error()}, + {name: `Scsi QemuDiskFormat("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_11: &QemuScsiStorage{Disk: &QemuScsiDisk{Format: ""}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `Scsi errors.New(Error_QemuDiskSerial_IllegalCharacter)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_12: &QemuScsiStorage{Disk: &QemuScsiDisk{ + Format: QemuDiskFormat_Raw, + Serial: "!@^$^&$^&"}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, + {name: `Scsi errors.New(Error_QemuDiskSerial_IllegalLength)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_13: &QemuScsiStorage{Disk: &QemuScsiDisk{ + Format: QemuDiskFormat_Raw, + Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalLength)}, + {name: `Scsi errors.New(QemuDiskSize_Error_Minimum)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_14: &QemuScsiStorage{Disk: &QemuScsiDisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: 0}}}}}), + err: errors.New(QemuDiskSize_Error_Minimum)}, + {name: `Scsi errors.New(Error_QemuDisk_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_15: &QemuScsiStorage{Disk: &QemuScsiDisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: qemuDiskSize_Minimum, + Storage: ""}}}}}), + err: errors.New(Error_QemuDisk_Storage)}, + {name: `Scsi errors.New(Error_QemuWorldWideName_Invalid)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_16: &QemuScsiStorage{Disk: &QemuScsiDisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: 32, + Storage: "Test", + WorldWideName: "0x5009876543210DEFG"}}}}}), + err: errors.New(Error_QemuWorldWideName_Invalid)}, + {name: `VirtIO QemuDiskFormat("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `VirtIO QemuDiskAsyncIO("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{AsyncIO: "invalid"}}}}}), + err: QemuDiskAsyncIO("").Error()}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_6: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_7: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_8: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_9: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_3: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_4: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_5: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `VirtIO QemuDiskCache("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_10: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Cache: "invalid"}}}}}), + err: QemuDiskCache("").Error()}, + {name: `VirtIO QemuDiskFormat("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_11: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{Format: ""}}}}}), + err: QemuDiskFormat("").Error()}, + {name: `VirtIO errors.New(Error_QemuDiskSerial_IllegalCharacter)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_12: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ + Format: QemuDiskFormat_Raw, + Serial: "!@^$^&$^&"}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, + {name: `VirtIO errors.New(Error_QemuDiskSerial_IllegalLength)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_13: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ + Format: QemuDiskFormat_Raw, + Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalLength)}, + {name: `VirtIO errors.New(QemuDiskSize_Error_Minimum)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_14: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: 1024}}}}}), + err: errors.New(QemuDiskSize_Error_Minimum)}, + {name: `VirtIO errors.New(Error_QemuDisk_Storage)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_15: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: qemuDiskSize_Minimum, + Storage: ""}}}}}), + err: errors.New(Error_QemuDisk_Storage)}, + {name: `VirtIO errors.New(Error_QemuWorldWideName_Invalid)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Disk: &QemuVirtIODisk{ + Format: QemuDiskFormat_Raw, + SizeInKibibytes: 32, + Storage: "Test", + WorldWideName: "500C0D0E0F10111"}}}}}), + err: errors.New(Error_QemuWorldWideName_Invalid)}}}}, {category: `Disks Passthrough`, - valid: []test{ - {input: baseConfig(ConfigQemu{Disks: &QemuStorages{ - Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{ - AsyncIO: QemuDiskAsyncIO_IOuring, - Bandwidth: BandwidthValid3(), - Cache: QemuDiskCache_DirectSync, - File: "test", - WorldWideName: "0x5001A2B3C4D5E6F7"}}}, - Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Passthrough: &QemuSataPassthrough{ - AsyncIO: QemuDiskAsyncIO_Native, - Bandwidth: BandwidthValid2(), - Cache: "", - File: "test", - WorldWideName: "0x500B0A0908070605"}}}, - Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{ - AsyncIO: QemuDiskAsyncIO_Threads, - Bandwidth: BandwidthValid1(), - Cache: QemuDiskCache_WriteBack, - File: "test", - WorldWideName: "0x500F1E2D3C4B5A69"}}}, - VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{ - AsyncIO: "", - Bandwidth: BandwidthValid0(), - Cache: QemuDiskCache_WriteThrough, - File: "test", - WorldWideName: "0x5004A3B2C1D0E0F1"}}}}})}}, - invalid: []test{ - {name: `Ide QemuDiskAsyncIO("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{AsyncIO: "invalid"}}}}}), - err: QemuDiskAsyncIO("").Error()}, - {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Ide QemuDiskCache("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Cache: "invalid"}}}}}), - err: QemuDiskCache("").Error()}, - {name: `Ide errors.New(Error_QemuDisk_File)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{File: ""}}}}}), - err: errors.New(Error_QemuDisk_File)}, - {name: `Ide errors.New(Error_QemuDiskSerial_IllegalCharacter)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{File: "/dev/disk/by-id/scsi1", Serial: "!@^$^&$^&"}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, - {name: `Ide errors.New(Error_QemuDiskSerial_IllegalLength)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{File: "/dev/disk/by-id/scsi1", Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalLength)}, - {name: `Ide errors.New(Error_QemuWorldWideName_Invalid)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{File: "/dev/disk/by-id/scsi1", WorldWideName: "5001A2B3C4D5E6F7"}}}}}), - err: errors.New(Error_QemuWorldWideName_Invalid)}, - {name: `Sata QemuDiskAsyncIO("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Passthrough: &QemuSataPassthrough{AsyncIO: "invalid"}}}}}), - err: QemuDiskAsyncIO("").Error()}, - {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Sata QemuDiskCache("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Cache: "invalid"}}}}}), - err: QemuDiskCache("").Error()}, - {name: `Sata errors.New(Error_QemuDisk_File)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{Passthrough: &QemuSataPassthrough{File: ""}}}}}), - err: errors.New(Error_QemuDisk_File)}, - {name: `Sata errors.New(Error_QemuDiskSerial_IllegalCharacter)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{Passthrough: &QemuSataPassthrough{File: "/dev/disk/by-id/scsi1", Serial: "!@^$^&$^&"}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, - {name: `Sata errors.New(Error_QemuDiskSerial_IllegalLength)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Passthrough: &QemuSataPassthrough{File: "/dev/disk/by-id/scsi1", Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalLength)}, - {name: `Sata errors.New(Error_QemuWorldWideName_Invalid)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Passthrough: &QemuSataPassthrough{File: "/dev/disk/by-id/scsi1", WorldWideName: "0x500B0A09080706050"}}}}}), - err: errors.New(Error_QemuWorldWideName_Invalid)}, - {name: `Scsi QemuDiskAsyncIO("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{AsyncIO: "invalid"}}}}}), - err: QemuDiskAsyncIO("").Error()}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_5: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_6: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_7: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_8: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_3: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_4: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `Scsi QemuDiskCache("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_9: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Cache: "invalid"}}}}}), - err: QemuDiskCache("").Error()}, - {name: `Scsi errors.New(Error_QemuDisk_File)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_10: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{File: ""}}}}}), - err: errors.New(Error_QemuDisk_File)}, - {name: `Scsi errors.New(Error_QemuDiskSerial_IllegalCharacter)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_11: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{File: "/dev/disk/by-id/scsi1", Serial: "!@^$^&$^&"}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, - {name: `Scsi errors.New(Error_QemuDiskSerial_IllegalLength)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_12: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{File: "/dev/disk/by-id/scsi1", Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalLength)}, - {name: `Scsi errors.New(Error_QemuWorldWideName_Invalid)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_13: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{File: "/dev/disk/by-id/scsi1", WorldWideName: "500F1E2D3C4B5A69!"}}}}}), - err: errors.New(Error_QemuWorldWideName_Invalid)}, - {name: `VirtIO QemuDiskAsyncIO("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{AsyncIO: "invalid"}}}}}), - err: QemuDiskAsyncIO("").Error()}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_5: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_6: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_7: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_8: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_3: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, - {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_4: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), - err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, - {name: `VirtIO QemuDiskCache("").Error()`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_9: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Cache: "invalid"}}}}}), - err: QemuDiskCache("").Error()}, - {name: `VirtIO errors.New(Error_QemuDisk_File)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_10: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{File: ""}}}}}), - err: errors.New(Error_QemuDisk_File)}, - {name: `VirtIO errors.New(Error_QemuDiskSerial_IllegalCharacter)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_11: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{File: "/dev/disk/by-id/scsi1", Serial: "!@^$^&$^&"}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, - {name: `VirtIO errors.New(Error_QemuDiskSerial_IllegalLength)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_12: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{File: "/dev/disk/by-id/scsi1", Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), - err: errors.New(Error_QemuDiskSerial_IllegalLength)}, - {name: `VirtIO errors.New(Error_QemuWorldWideName_Invalid)`, - input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_13: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{File: "/dev/disk/by-id/scsi1", WorldWideName: "0x5004A3B2C1D0E0F1#"}}}}}), - err: errors.New(Error_QemuWorldWideName_Invalid)}}}, + valid: testType{ + create: []test{ + {input: baseConfig(ConfigQemu{Disks: &QemuStorages{ + Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{ + AsyncIO: QemuDiskAsyncIO_IOuring, + Bandwidth: BandwidthValid3(), + Cache: QemuDiskCache_DirectSync, + File: "test", + WorldWideName: "0x5001A2B3C4D5E6F7"}}}, + Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Passthrough: &QemuSataPassthrough{ + AsyncIO: QemuDiskAsyncIO_Native, + Bandwidth: BandwidthValid2(), + Cache: "", + File: "test", + WorldWideName: "0x500B0A0908070605"}}}, + Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{ + AsyncIO: QemuDiskAsyncIO_Threads, + Bandwidth: BandwidthValid1(), + Cache: QemuDiskCache_WriteBack, + File: "test", + WorldWideName: "0x500F1E2D3C4B5A69"}}}, + VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{ + AsyncIO: "", + Bandwidth: BandwidthValid0(), + Cache: QemuDiskCache_WriteThrough, + File: "test", + WorldWideName: "0x5004A3B2C1D0E0F1"}}}}})}}}, + invalid: testType{ + create: []test{ + {name: `Ide QemuDiskAsyncIO("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{AsyncIO: "invalid"}}}}}), + err: QemuDiskAsyncIO("").Error()}, + {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Ide errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Ide QemuDiskCache("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{Cache: "invalid"}}}}}), + err: QemuDiskCache("").Error()}, + {name: `Ide errors.New(Error_QemuDisk_File)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_2: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{File: ""}}}}}), + err: errors.New(Error_QemuDisk_File)}, + {name: `Ide errors.New(Error_QemuDiskSerial_IllegalCharacter)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_3: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{File: "/dev/disk/by-id/scsi1", Serial: "!@^$^&$^&"}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, + {name: `Ide errors.New(Error_QemuDiskSerial_IllegalLength)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_0: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{File: "/dev/disk/by-id/scsi1", Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalLength)}, + {name: `Ide errors.New(Error_QemuWorldWideName_Invalid)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Ide: &QemuIdeDisks{Disk_1: &QemuIdeStorage{Passthrough: &QemuIdePassthrough{File: "/dev/disk/by-id/scsi1", WorldWideName: "5001A2B3C4D5E6F7"}}}}}), + err: errors.New(Error_QemuWorldWideName_Invalid)}, + {name: `Sata QemuDiskAsyncIO("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Passthrough: &QemuSataPassthrough{AsyncIO: "invalid"}}}}}), + err: QemuDiskAsyncIO("").Error()}, + {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_2: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Sata errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Sata QemuDiskCache("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_3: &QemuSataStorage{Passthrough: &QemuSataPassthrough{Cache: "invalid"}}}}}), + err: QemuDiskCache("").Error()}, + {name: `Sata errors.New(Error_QemuDisk_File)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_4: &QemuSataStorage{Passthrough: &QemuSataPassthrough{File: ""}}}}}), + err: errors.New(Error_QemuDisk_File)}, + {name: `Sata errors.New(Error_QemuDiskSerial_IllegalCharacter)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_5: &QemuSataStorage{Passthrough: &QemuSataPassthrough{File: "/dev/disk/by-id/scsi1", Serial: "!@^$^&$^&"}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, + {name: `Sata errors.New(Error_QemuDiskSerial_IllegalLength)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_0: &QemuSataStorage{Passthrough: &QemuSataPassthrough{File: "/dev/disk/by-id/scsi1", Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalLength)}, + {name: `Sata errors.New(Error_QemuWorldWideName_Invalid)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Sata: &QemuSataDisks{Disk_1: &QemuSataStorage{Passthrough: &QemuSataPassthrough{File: "/dev/disk/by-id/scsi1", WorldWideName: "0x500B0A09080706050"}}}}}), + err: errors.New(Error_QemuWorldWideName_Invalid)}, + {name: `Scsi QemuDiskAsyncIO("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_0: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{AsyncIO: "invalid"}}}}}), + err: QemuDiskAsyncIO("").Error()}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_5: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_6: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_7: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_8: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_1: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_2: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_3: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `Scsi errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_4: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `Scsi QemuDiskCache("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_9: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{Cache: "invalid"}}}}}), + err: QemuDiskCache("").Error()}, + {name: `Scsi errors.New(Error_QemuDisk_File)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_10: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{File: ""}}}}}), + err: errors.New(Error_QemuDisk_File)}, + {name: `Scsi errors.New(Error_QemuDiskSerial_IllegalCharacter)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_11: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{File: "/dev/disk/by-id/scsi1", Serial: "!@^$^&$^&"}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, + {name: `Scsi errors.New(Error_QemuDiskSerial_IllegalLength)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_12: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{File: "/dev/disk/by-id/scsi1", Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalLength)}, + {name: `Scsi errors.New(Error_QemuWorldWideName_Invalid)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{Scsi: &QemuScsiDisks{Disk_13: &QemuScsiStorage{Passthrough: &QemuScsiPassthrough{File: "/dev/disk/by-id/scsi1", WorldWideName: "500F1E2D3C4B5A69!"}}}}}), + err: errors.New(Error_QemuWorldWideName_Invalid)}, + {name: `VirtIO QemuDiskAsyncIO("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_0: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{AsyncIO: "invalid"}}}}}), + err: QemuDiskAsyncIO("").Error()}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_5: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Burst: 9}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_6: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{ReadLimit: QemuDiskBandwidthIopsLimit{Concurrent: 8}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_7: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Burst: 7}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitBurst)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_8: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{Iops: QemuDiskBandwidthIops{WriteLimit: QemuDiskBandwidthIopsLimit{Concurrent: 6}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthIopsLimitConcurrent)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_1: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 0`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_2: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{ReadLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitBurst) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_3: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Burst: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitBurst)}, + {name: `VirtIO errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent) 1`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_4: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Bandwidth: QemuDiskBandwidth{MBps: QemuDiskBandwidthMBps{WriteLimit: QemuDiskBandwidthMBpsLimit{Concurrent: 0.99}}}}}}}}), + err: errors.New(Error_QemuDiskBandwidthMBpsLimitConcurrent)}, + {name: `VirtIO QemuDiskCache("").Error()`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_9: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{Cache: "invalid"}}}}}), + err: QemuDiskCache("").Error()}, + {name: `VirtIO errors.New(Error_QemuDisk_File)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_10: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{File: ""}}}}}), + err: errors.New(Error_QemuDisk_File)}, + {name: `VirtIO errors.New(Error_QemuDiskSerial_IllegalCharacter)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_11: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{File: "/dev/disk/by-id/scsi1", Serial: "!@^$^&$^&"}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalCharacter)}, + {name: `VirtIO errors.New(Error_QemuDiskSerial_IllegalLength)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_12: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{File: "/dev/disk/by-id/scsi1", Serial: QemuDiskSerial(test_data_qemu.QemuDiskSerial_Max_Illegal())}}}}}), + err: errors.New(Error_QemuDiskSerial_IllegalLength)}, + {name: `VirtIO errors.New(Error_QemuWorldWideName_Invalid)`, + input: baseConfig(ConfigQemu{Disks: &QemuStorages{VirtIO: &QemuVirtIODisks{Disk_13: &QemuVirtIOStorage{Passthrough: &QemuVirtIOPassthrough{File: "/dev/disk/by-id/scsi1", WorldWideName: "0x5004A3B2C1D0E0F1#"}}}}}), + err: errors.New(Error_QemuWorldWideName_Invalid)}}}}, {category: `Memory`, - valid: []test{ - {name: `Create CapacityMiB only`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1024))}})}, - {name: `Update new.CapacityMiB smaller then current.MinimumCapacityMiB`, - input: ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1000))}}, - current: &ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2000))}}}, - {name: `Update new.CapacityMiB smaller then current.MinimumCapacityMiB and MinimumCapacityMiB lowered`, - input: ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1000)), MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}}, - current: &ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2000))}}}, - {name: `Create new.MinimumCapacityMiB`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}})}, - {name: `Update new.CapacityMiB == new.MinimumCapacityMiB && new.CapacityMiB > current.CapacityMiB`, - input: ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(1500)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1500))}}, - current: &ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1000))}}}, - {name: `Update new.MinimumCapacityMiB > current.MinimumCapacityMiB && new.MinimumCapacityMiB < new.CapacityMiB`, - input: ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(3000)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2000))}}, - current: &ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1500))}}}, - {name: `Create new.Shares(qemuMemoryShares_Max) new.CapacityMiB & new.MinimumCapacityMiB`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(1001)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000)), - Shares: util.Pointer(QemuMemoryShares(qemuMemoryShares_Max))}})}, - {name: `Create new.Shares new.MinimumCapacityMiB`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{ - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000)), - Shares: util.Pointer(QemuMemoryShares(0))}})}, - {name: `Create new.Shares(0) new.CapacityMiB & new.MinimumCapacityMiB`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(1001)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000)), - Shares: util.Pointer(QemuMemoryShares(0))}})}, - {name: `Update new.Shares(0) current.CapacityMiB == current.MinimumCapacityMiB`, - input: ConfigQemu{Memory: &QemuMemory{Shares: util.Pointer(QemuMemoryShares(0))}}, - current: &ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(1000)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}}}}, - invalid: []test{ - {name: `Create new.CapacityMiB(0)`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(0))}}), - err: errors.New(QemuMemoryCapacity_Error_Minimum)}, - {name: `Update new.CapacityMiB(0)`, - input: ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(0))}}, - current: &ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1000))}}, - err: errors.New(QemuMemoryCapacity_Error_Minimum)}, - {name: `Create new.CapacityMiB > qemuMemoryCapacity_Max`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(qemuMemoryCapacity_Max + 1))}}), - err: errors.New(QemuMemoryCapacity_Error_Maximum)}, - {name: `Update new.CapacityMiB > qemuMemoryCapacity_Max`, - input: ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(qemuMemoryCapacity_Max + 1))}}, - current: &ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(qemuMemoryCapacity_Max))}}, - err: errors.New(QemuMemoryCapacity_Error_Maximum)}, - {name: `Update new.CapacityMiB(0)`, - input: ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(0))}}, - current: &ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1000))}}, - err: errors.New(QemuMemoryCapacity_Error_Minimum)}, - {name: `Create new.MinimumCapacityMiB to big`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(qemuMemoryBalloonCapacity_Max + 1))}}), - err: errors.New(QemuMemoryBalloonCapacity_Error_Invalid)}, - {name: `Update new.MinimumCapacityMiB to big`, - input: ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(qemuMemoryBalloonCapacity_Max + 1))}}, - current: &ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}}, - err: errors.New(QemuMemoryBalloonCapacity_Error_Invalid)}, - {name: `Create new.MinimumCapacityMiB > new.CapacityMiB`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(1000)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2000))}}), - err: errors.New(QemuMemory_Error_MinimumCapacityMiB_GreaterThan_CapacityMiB)}, - {name: `Create new.Shares(1)`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{Shares: util.Pointer(QemuMemoryShares(1))}}), - err: errors.New(QemuMemory_Error_NoMemoryCapacity)}, - {name: `Create new.Shares() too big and new.CapacityMiB & new.MinimumCapacityMiB`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(1001)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000)), - Shares: util.Pointer(QemuMemoryShares(qemuMemoryShares_Max + 1))}}), - err: errors.New(QemuMemoryShares_Error_Invalid)}, - {name: `Update new.Shares() too big and new.CapacityMiB & new.MinimumCapacityMiB`, - input: ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(1001)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000)), - Shares: util.Pointer(QemuMemoryShares(qemuMemoryShares_Max + 1))}}, - current: &ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(512)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(256)), - Shares: util.Pointer(QemuMemoryShares(1))}}, - err: errors.New(QemuMemoryShares_Error_Invalid)}, - {name: `Create new.Shares(1) when new.CapacityMiB == new.MinimumCapacityMiB`, - input: baseConfig(ConfigQemu{Memory: &QemuMemory{Shares: util.Pointer(QemuMemoryShares(1))}}), - err: errors.New(QemuMemory_Error_NoMemoryCapacity)}, - {name: `Update new.Shares(1) when current.CapacityMiB == current.MinimumCapacityMiB`, - input: ConfigQemu{Memory: &QemuMemory{Shares: util.Pointer(QemuMemoryShares(1))}}, - current: &ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(1000)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}}, - err: errors.New(QemuMemory_Error_SharesHasNoEffectWithoutBallooning)}, - {name: `Update new.Shares(1) new.CapacityMiB == current.MinimumCapacityMiB & MinimumCapacityMiB not updated`, - input: ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(1024)), - Shares: util.Pointer(QemuMemoryShares(1))}}, - current: &ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(2048)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1024))}}, - err: errors.New(QemuMemory_Error_SharesHasNoEffectWithoutBallooning)}, - {name: `Update new.Shares(1) new.MinimumCapacityMiB == current.CapacityMiB & CapacityMiB not updated`, - input: ConfigQemu{Memory: &QemuMemory{ - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2048)), - Shares: util.Pointer(QemuMemoryShares(1))}}, - current: &ConfigQemu{Memory: &QemuMemory{ - CapacityMiB: util.Pointer(QemuMemoryCapacity(2048)), - MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1024))}}, - err: errors.New(QemuMemory_Error_SharesHasNoEffectWithoutBallooning)}}}, + valid: testType{ + create: []test{ + {name: `CapacityMiB only`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1024))}})}, + {name: `new.MinimumCapacityMiB`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}})}, + {name: `new.Shares(qemuMemoryShares_Max) new.CapacityMiB & new.MinimumCapacityMiB`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(1001)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000)), + Shares: util.Pointer(QemuMemoryShares(qemuMemoryShares_Max))}})}, + {name: `new.Shares new.MinimumCapacityMiB`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{ + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000)), + Shares: util.Pointer(QemuMemoryShares(0))}})}, + {name: `new.Shares(0) new.CapacityMiB & new.MinimumCapacityMiB`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(1001)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000)), + Shares: util.Pointer(QemuMemoryShares(0))}})}}, + update: []test{ + {name: `new.CapacityMiB smaller then current.MinimumCapacityMiB`, + input: ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1000))}}, + current: &ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2000))}}}, + {name: `new.CapacityMiB smaller then current.MinimumCapacityMiB and MinimumCapacityMiB lowered`, + input: ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1000)), MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}}, + current: &ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2000))}}}, + {name: `new.CapacityMiB == new.MinimumCapacityMiB && new.CapacityMiB > current.CapacityMiB`, + input: ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(1500)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1500))}}, + current: &ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1000))}}}, + {name: `new.MinimumCapacityMiB > current.MinimumCapacityMiB && new.MinimumCapacityMiB < new.CapacityMiB`, + input: ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(3000)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2000))}}, + current: &ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1500))}}}, + {name: `new.Shares(0) current.CapacityMiB == current.MinimumCapacityMiB`, + input: ConfigQemu{Memory: &QemuMemory{Shares: util.Pointer(QemuMemoryShares(0))}}, + current: &ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(1000)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}}}}}, + invalid: testType{ + create: []test{ + {name: `new.MinimumCapacityMiB > new.CapacityMiB`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(1000)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2000))}}), + err: errors.New(QemuMemory_Error_MinimumCapacityMiB_GreaterThan_CapacityMiB)}, + {name: `new.Shares(1)`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{Shares: util.Pointer(QemuMemoryShares(1))}}), + err: errors.New(QemuMemory_Error_NoMemoryCapacity)}, + {name: `new.Shares(1) when new.CapacityMiB == new.MinimumCapacityMiB`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{Shares: util.Pointer(QemuMemoryShares(1))}}), + err: errors.New(QemuMemory_Error_NoMemoryCapacity)}}, + createUpdate: []test{ + {name: `new.CapacityMiB(0)`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(0))}}), + current: &ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(1000))}}, + err: errors.New(QemuMemoryCapacity_Error_Minimum)}, + {name: `new.CapacityMiB > qemuMemoryCapacity_Max`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(qemuMemoryCapacity_Max + 1))}}), + current: &ConfigQemu{Memory: &QemuMemory{CapacityMiB: util.Pointer(QemuMemoryCapacity(qemuMemoryCapacity_Max))}}, + err: errors.New(QemuMemoryCapacity_Error_Maximum)}, + {name: `new.MinimumCapacityMiB to big`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(qemuMemoryBalloonCapacity_Max + 1))}}), + current: &ConfigQemu{Memory: &QemuMemory{MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}}, + err: errors.New(QemuMemoryBalloonCapacity_Error_Invalid)}, + {name: `new.Shares() too big and new.CapacityMiB & new.MinimumCapacityMiB`, + input: baseConfig(ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(1001)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000)), + Shares: util.Pointer(QemuMemoryShares(qemuMemoryShares_Max + 1))}}), + current: &ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(512)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(256)), + Shares: util.Pointer(QemuMemoryShares(1))}}, + err: errors.New(QemuMemoryShares_Error_Invalid)}}, + update: []test{ + {name: `new.Shares(1) when current.CapacityMiB == current.MinimumCapacityMiB`, + input: ConfigQemu{Memory: &QemuMemory{Shares: util.Pointer(QemuMemoryShares(1))}}, + current: &ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(1000)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1000))}}, + err: errors.New(QemuMemory_Error_SharesHasNoEffectWithoutBallooning)}, + {name: `new.Shares(1) new.CapacityMiB == current.MinimumCapacityMiB & MinimumCapacityMiB not updated`, + input: ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(1024)), + Shares: util.Pointer(QemuMemoryShares(1))}}, + current: &ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(2048)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1024))}}, + err: errors.New(QemuMemory_Error_SharesHasNoEffectWithoutBallooning)}, + {name: `new.Shares(1) new.MinimumCapacityMiB == current.CapacityMiB & CapacityMiB not updated`, + input: ConfigQemu{Memory: &QemuMemory{ + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(2048)), + Shares: util.Pointer(QemuMemoryShares(1))}}, + current: &ConfigQemu{Memory: &QemuMemory{ + CapacityMiB: util.Pointer(QemuMemoryCapacity(2048)), + MinimumCapacityMiB: util.Pointer(QemuMemoryBalloonCapacity(1024))}}, + err: errors.New(QemuMemory_Error_SharesHasNoEffectWithoutBallooning)}}}}, {category: `PoolName`, - valid: []test{ - {name: ``, - input: baseConfig(ConfigQemu{Pool: util.Pointer(PoolName(test_data_pool.PoolName_Legal()))})}, - {name: `Empty`, - input: baseConfig(ConfigQemu{Pool: util.Pointer(PoolName(""))})}}, - invalid: []test{ - {name: `Length`, - input: baseConfig(ConfigQemu{Pool: util.Pointer(PoolName(test_data_pool.PoolName_Max_Illegal()))}), - err: errors.New(PoolName_Error_Length)}, - {name: `Characters`, - input: baseConfig(ConfigQemu{Pool: util.Pointer(PoolName(test_data_pool.PoolName_Error_Characters()[0]))}), - err: errors.New(PoolName_Error_Characters)}}}, + valid: testType{ + createUpdate: []test{ + {name: `normal`, + input: baseConfig(ConfigQemu{Pool: util.Pointer(PoolName(test_data_pool.PoolName_Legal()))}), + current: &ConfigQemu{Pool: util.Pointer(PoolName("test"))}}, + {name: `empty`, + input: baseConfig(ConfigQemu{Pool: util.Pointer(PoolName(""))}), + current: &ConfigQemu{Pool: util.Pointer(PoolName("test"))}}}}, + invalid: testType{ + createUpdate: []test{ + {name: `Length`, + input: baseConfig(ConfigQemu{Pool: util.Pointer(PoolName(test_data_pool.PoolName_Max_Illegal()))}), + current: &ConfigQemu{Pool: util.Pointer(PoolName("test"))}, + err: errors.New(PoolName_Error_Length)}, + {name: `Characters`, + input: baseConfig(ConfigQemu{Pool: util.Pointer(PoolName(test_data_pool.PoolName_Error_Characters()[0]))}), + current: &ConfigQemu{Pool: util.Pointer(PoolName("test"))}, + err: errors.New(PoolName_Error_Characters)}}}}, {category: `Serials`, - valid: []test{ - {name: `all`, - input: baseConfig(ConfigQemu{Serials: SerialInterfaces{ - SerialID0: SerialInterface{Path: "/dev/ttyS0"}, - SerialID1: SerialInterface{Path: "/dev/ttyS1", Delete: true}, - SerialID2: SerialInterface{Socket: true}, - SerialID3: SerialInterface{Socket: true, Delete: true}}})}, - {name: `delete`, - input: baseConfig(ConfigQemu{Serials: SerialInterfaces{ - SerialID3: SerialInterface{Delete: true}}})}}, - invalid: []test{ - {name: `errors.New(SerialID_Errors_Invalid)`, - input: baseConfig(ConfigQemu{Serials: SerialInterfaces{4: SerialInterface{}}}), - err: errors.New(SerialID_Errors_Invalid)}, - {name: `errors.New(SerialInterface_Errors_MutualExclusive)`, - input: baseConfig(ConfigQemu{Serials: SerialInterfaces{SerialID0: SerialInterface{Path: "/dev/ttyS1", Socket: true}}}), - err: errors.New(SerialInterface_Errors_MutualExclusive)}, - {name: `errors.New(SerialInterface_Errors_Empty)`, - input: baseConfig(ConfigQemu{Serials: SerialInterfaces{SerialID1: SerialInterface{}}}), - err: errors.New(SerialInterface_Errors_Empty)}, - {name: `errors.New(SerialPath_Errors_Invalid)`, - input: baseConfig(ConfigQemu{Serials: SerialInterfaces{SerialID2: SerialInterface{Path: "invalid"}}}), - err: errors.New(SerialPath_Errors_Invalid)}}}, + valid: testType{ + createUpdate: []test{ + {name: `all`, + input: baseConfig(ConfigQemu{Serials: SerialInterfaces{ + SerialID0: SerialInterface{Path: "/dev/ttyS0"}, + SerialID1: SerialInterface{Path: "/dev/ttyS1", Delete: true}, + SerialID2: SerialInterface{Socket: true}, + SerialID3: SerialInterface{Socket: true, Delete: true}}}), + current: &ConfigQemu{Serials: SerialInterfaces{SerialID0: SerialInterface{Path: "/dev/ttyS0"}}}}, + {name: `delete`, + input: baseConfig(ConfigQemu{Serials: SerialInterfaces{ + SerialID3: SerialInterface{Delete: true}}}), + current: &ConfigQemu{Serials: SerialInterfaces{SerialID0: SerialInterface{Path: "/dev/ttyS0"}}}}}}, + invalid: testType{ + createUpdate: []test{ + {name: `errors.New(SerialID_Errors_Invalid)`, + input: baseConfig(ConfigQemu{Serials: SerialInterfaces{4: SerialInterface{}}}), + err: errors.New(SerialID_Errors_Invalid), + current: &ConfigQemu{Serials: SerialInterfaces{SerialID0: SerialInterface{Path: "/dev/ttyS0"}}}}, + {name: `errors.New(SerialInterface_Errors_MutualExclusive)`, + input: baseConfig(ConfigQemu{Serials: SerialInterfaces{SerialID0: SerialInterface{Path: "/dev/ttyS1", Socket: true}}}), + err: errors.New(SerialInterface_Errors_MutualExclusive), + current: &ConfigQemu{Serials: SerialInterfaces{SerialID1: SerialInterface{Path: "/dev/ttyS0"}}}}, + {name: `errors.New(SerialInterface_Errors_Empty)`, + input: baseConfig(ConfigQemu{Serials: SerialInterfaces{SerialID1: SerialInterface{}}}), + err: errors.New(SerialInterface_Errors_Empty), + current: &ConfigQemu{Serials: SerialInterfaces{SerialID2: SerialInterface{Path: "/dev/ttyS0"}}}}, + {name: `errors.New(SerialPath_Errors_Invalid)`, + input: baseConfig(ConfigQemu{Serials: SerialInterfaces{SerialID2: SerialInterface{Path: "invalid"}}}), + err: errors.New(SerialPath_Errors_Invalid), + current: &ConfigQemu{Serials: SerialInterfaces{SerialID3: SerialInterface{Path: "/dev/ttyS0"}}}}}}}, {category: `Tags`, - valid: []test{ - {input: baseConfig(ConfigQemu{Tags: util.Pointer(validTags())})}}, - invalid: []test{ - {name: `errors.New(Tag_Error_Invalid)`, - input: baseConfig(ConfigQemu{Tags: util.Pointer([]Tag{Tag(test_data_tag.Tag_Illegal())})}), - err: errors.New(Tag_Error_Invalid)}, - {name: `errors.New(Tag_Error_Duplicate)`, - input: baseConfig(ConfigQemu{Tags: util.Pointer([]Tag{Tag(test_data_tag.Tag_Max_Legal()), Tag(test_data_tag.Tag_Max_Legal())})}), - err: errors.New(Tag_Error_Duplicate)}, - {name: `errors.New(Tag_Error_Empty)`, - input: baseConfig(ConfigQemu{Tags: util.Pointer([]Tag{Tag(test_data_tag.Tag_Empty())})}), - err: errors.New(Tag_Error_Empty)}, - {name: `errors.New(Tag_Error_MaxLength)`, - input: baseConfig(ConfigQemu{Tags: util.Pointer([]Tag{Tag(test_data_tag.Tag_Max_Illegal())})}), - err: errors.New(Tag_Error_MaxLength)}}}, + valid: testType{ + create: []test{ + {name: `normal`, + input: baseConfig(ConfigQemu{Tags: util.Pointer(validTags())}), + current: &ConfigQemu{Tags: util.Pointer([]Tag{"a", "b"})}}}}, + invalid: testType{ + createUpdate: []test{ + {name: `errors.New(Tag_Error_Invalid)`, + input: baseConfig(ConfigQemu{Tags: util.Pointer([]Tag{Tag(test_data_tag.Tag_Illegal())})}), + current: &ConfigQemu{Tags: util.Pointer([]Tag{"a", "b"})}, + err: errors.New(Tag_Error_Invalid)}, + {name: `errors.New(Tag_Error_Duplicate)`, + input: baseConfig(ConfigQemu{Tags: util.Pointer([]Tag{Tag(test_data_tag.Tag_Max_Legal()), Tag(test_data_tag.Tag_Max_Legal())})}), + current: &ConfigQemu{Tags: util.Pointer([]Tag{"a", "b"})}, + err: errors.New(Tag_Error_Duplicate)}, + {name: `errors.New(Tag_Error_Empty)`, + input: baseConfig(ConfigQemu{Tags: util.Pointer([]Tag{Tag(test_data_tag.Tag_Empty())})}), + current: &ConfigQemu{Tags: util.Pointer([]Tag{"a", "b"})}, + err: errors.New(Tag_Error_Empty)}, + {name: `errors.New(Tag_Error_MaxLength)`, + input: baseConfig(ConfigQemu{Tags: util.Pointer([]Tag{Tag(test_data_tag.Tag_Max_Illegal())})}), + current: &ConfigQemu{Tags: util.Pointer([]Tag{"a", "b"})}, + err: errors.New(Tag_Error_MaxLength)}}}}, {category: `TPM`, - valid: []test{ - {name: `Create`, - input: baseConfig(ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion("v2.0"))}})}, - {name: `Update`, - input: ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion("v2.0"))}}, - current: &ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion("v1.2"))}}}, - {name: `Update Version=nil`, - input: ConfigQemu{TPM: &TpmState{Storage: "test"}}, - current: &ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion("v1.2"))}}}}, - invalid: []test{ - {name: `errors.New(storage is required) Create`, - input: baseConfig(ConfigQemu{TPM: &TpmState{Storage: ""}}), - err: errors.New("storage is required")}, - {name: `errors.New(storage is required) Update`, - input: ConfigQemu{TPM: &TpmState{Storage: ""}}, - current: &ConfigQemu{TPM: &TpmState{}}, - err: errors.New("storage is required")}, - {name: `errors.New(TmpState_Error_VersionRequired) Create`, - input: baseConfig(ConfigQemu{TPM: &TpmState{Storage: "test", Version: nil}}), - err: errors.New(TmpState_Error_VersionRequired)}, - {name: `errors.New(TmpVersion_Error_Invalid) Create`, - input: baseConfig(ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion(""))}}), - err: errors.New(TpmVersion_Error_Invalid)}, - {name: `errors.New(TmpVersion_Error_Invalid) Update`, - input: ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion(""))}}, - current: &ConfigQemu{TPM: &TpmState{}}, - err: errors.New(TpmVersion_Error_Invalid)}}}} + valid: testType{ + createUpdate: []test{ + {name: `normal`, + input: baseConfig(ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion("v2.0"))}}), + current: &ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion("v1.2"))}}}}, + update: []test{ + {name: `Version=nil`, + input: ConfigQemu{TPM: &TpmState{Storage: "test"}}, + current: &ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion("v1.2"))}}}}}, + invalid: testType{ + create: []test{ + {name: `errors.New(TmpState_Error_VersionRequired) Create`, + input: baseConfig(ConfigQemu{TPM: &TpmState{Storage: "test", Version: nil}}), + err: errors.New(TmpState_Error_VersionRequired)}}, + createUpdate: []test{ + {name: `errors.New(storage is required)`, + input: baseConfig(ConfigQemu{TPM: &TpmState{Storage: ""}}), + current: &ConfigQemu{TPM: &TpmState{}}, + err: errors.New("storage is required")}, + {name: `errors.New(TmpVersion_Error_Invalid) Update`, + input: baseConfig(ConfigQemu{TPM: &TpmState{Storage: "test", Version: util.Pointer(TpmVersion(""))}}), + current: &ConfigQemu{TPM: &TpmState{}}, + err: errors.New(TpmVersion_Error_Invalid)}}}}, + } for _, test := range tests { - for _, subTest := range test.valid { - name := test.category + "/Valid" - if len(test.valid) > 1 { + for _, subTest := range append(test.valid.create, test.valid.createUpdate...) { + name := test.category + "/Valid/Create" + if len(test.valid.create)+len(test.valid.createUpdate) > 1 { + name += "/" + subTest.name + } + t.Run(name, func(*testing.T) { + require.Equal(t, subTest.err, subTest.input.Validate(nil, subTest.version), name) + }) + } + for _, subTest := range append(test.valid.update, test.valid.createUpdate...) { + name := test.category + "/Valid/Update" + if len(test.valid.update)+len(test.valid.createUpdate) > 1 { + name += "/" + subTest.name + } + t.Run(name, func(*testing.T) { + require.NotNil(t, subTest.current) + require.Equal(t, subTest.err, subTest.input.Validate(subTest.current, subTest.version), name) + }) + } + for _, subTest := range append(test.invalid.create, test.invalid.createUpdate...) { + name := test.category + "/Invalid/Create" + if len(test.invalid.create)+len(test.invalid.createUpdate) > 1 { name += "/" + subTest.name } t.Run(name, func(*testing.T) { - require.Equal(t, subTest.input.Validate(subTest.current, subTest.version), subTest.err, name) + require.Equal(t, subTest.err, subTest.input.Validate(nil, subTest.version), name) }) } - for _, subTest := range test.invalid { - name := test.category + "/Invalid" - if len(test.invalid) > 1 { + for _, subTest := range append(test.invalid.update, test.invalid.createUpdate...) { + name := test.category + "/Invalid/Update" + if len(test.invalid.update)+len(test.invalid.createUpdate) > 1 { name += "/" + subTest.name } t.Run(name, func(*testing.T) { - require.Equal(t, subTest.input.Validate(subTest.current, subTest.version), subTest.err, name) + require.NotNil(t, subTest.current) + require.Equal(t, subTest.err, subTest.input.Validate(subTest.current, subTest.version), name) }) } }