@Test
public void testUpdateVmDevicesBootOrder() {
Map<VmDeviceId, DiskVmElement> idToDiskElement = new HashMap<>();
List<VmNetworkInterface> interfaces = new LinkedList<>();
VmDevice nic1 = createNetworkInterface(true, NIC_1_NAME, interfaces);
VmDevice unmanagedNic = createUnmanagedNetworkInterface(true);
VmDevice nic2 = createNetworkInterface(true, NIC_2_NAME, interfaces);
VmDevice nonBootableNic = createNetworkInterface(false, "", interfaces);
VmDevice bootableDisk = createDiskDevice(true, idToDiskElement);
VmDevice nonBootableDisk = createDiskDevice(false, idToDiskElement);
VmDevice cd = createCdRomDevice();
doReturn(BootSequence.DNC).when(vm).getDefaultBootSequence();
VmDeviceCommonUtils.updateVmDevicesBootOrder(
vm.getDefaultBootSequence(),
Arrays.asList(bootableDisk, nic2, cd, nic1, nonBootableDisk, unmanagedNic),
interfaces,
idToDiskElement);
int index = 1;
assertEquals(index++, cd.getBootOrder(), "Wrong boot order for CD");
assertEquals(index++, nic1.getBootOrder(), "Wrong boot order for nic1");
assertEquals(index++, nic2.getBootOrder(), "Wrong boot order for nic2");
assertEquals(0, nonBootableNic.getBootOrder(), "Wrong boot order for non bootable nic");
assertEquals(0, unmanagedNic.getBootOrder(), "Wrong boot order for unmanaged nic");
assertEquals(index++, bootableDisk.getBootOrder(), "Wrong boot order for bootable disk");
assertEquals(0, nonBootableDisk.getBootOrder(), "Wrong boot order for non bootable disk");
}