private List<GlusterClientInfo> getClientList(int listSize) { ArrayList<GlusterClientInfo> list = new ArrayList<>(); for (int i = 0; i < listSize; i++) { GlusterClientInfo clientInfo = new GlusterClientInfo(); clientInfo.setBytesRead(RandomUtils.instance().nextLong()); clientInfo.setBytesWritten(RandomUtils.instance().nextLong()); clientInfo.setClientPort(RandomUtils.instance().nextInt()); clientInfo.setHostname(RandomUtils.instance().nextString(7)); list.add(clientInfo); } return list; }
@Test public void testUpdateStatusAndReasons() { VdsDynamic before = dao.get(existingVds.getId()); before.setStatus(RandomUtils.instance().nextEnum(VDSStatus.class)); before.setNonOperationalReason(RandomUtils.instance().nextEnum(NonOperationalReason.class)); before.setMaintenanceReason(RandomUtils.instance().nextString(50)); dao.updateStatusAndReasons(before); VdsDynamic after = dao.get(existingVds.getId()); assertEquals(before, after); assertEquals(before.getStatus(), after.getStatus()); assertEquals(before.getNonOperationalReason(), after.getNonOperationalReason()); assertEquals(before.getMaintenanceReason(), after.getMaintenanceReason()); }
private static VmNetworkInterface createNewViewableInterface(boolean plugged) { VmNetworkInterface iface = new VmNetworkInterface(); iface.setId(Guid.newGuid()); iface.setMacAddress(RandomUtils.instance().nextString(10)); iface.setPlugged(plugged); return iface; }
/** @return A new interface that can be used in tests. */ private static VmNic createNewInterface() { VmNic iface = new VmNic(); iface.setId(Guid.newGuid()); iface.setMacAddress(RandomUtils.instance().nextString(10)); return iface; }
@Test public void testRemoveImageFromSnapshotConfiguration() throws OvfReaderException { Guid vmId = Guid.newGuid(); VM vm = new VM(); vm.setId(vmId); vm.setStoragePoolId(Guid.newGuid()); vm.setVmtName(RandomUtils.instance().nextString(10)); vm.setOrigin(OriginType.OVIRT); vm.setDbGeneration(1L); Guid vmSnapshotId = Guid.newGuid(); DiskImage disk1 = addTestDisk(vm, vmSnapshotId); DiskImage disk2 = addTestDisk(vm, vmSnapshotId); OvfManager ovfManager = new OvfManager(); ArrayList<DiskImage> disks = new ArrayList<DiskImage>(Arrays.asList(disk1, disk2)); String ovf = ovfManager.ExportVm(vm, disks, Version.v3_1); Snapshot snap = new Snapshot(); snap.setVmConfiguration(ovf); snap.setId(vmSnapshotId); when(snapshotDAO.get(vmSnapshotId)).thenReturn(snap); doReturn(disk2).when(cmd).getDiskImage(); doReturn(disk2).when(cmd).getImage(); doReturn(disk2.getId()).when(cmd).getImageId(); Snapshot actual = cmd.prepareSnapshotConfigWithoutImageSingleImage(vmSnapshotId, disk2.getImageId()); String actualOvf = actual.getVmConfiguration(); ArrayList<DiskImage> actualImages = new ArrayList<DiskImage>(); ovfManager.ImportVm(actualOvf, new VM(), actualImages, new ArrayList<VmNetworkInterface>()); assertEquals("Wrong number of disks", 1, actualImages.size()); assertEquals("Wrong disk", disk1, actualImages.get(0)); }
private MemoryStatus getMemoryStatus(int listSize) { MemoryStatus memStatus = new MemoryStatus(); memStatus.setMallInfo(new MallInfo()); memStatus.getMallInfo().setArena(RandomUtils.instance().nextInt()); memStatus.getMallInfo().setUordblks(RandomUtils.instance().nextInt()); ArrayList<Mempool> memPoolsList = new ArrayList<>(); for (int i = 0; i < listSize; i++) { Mempool pool = new Mempool(); pool.setAllocCount(RandomUtils.instance().nextInt()); pool.setHotCount(0); pool.setName(RandomUtils.instance().nextString(5)); memPoolsList.add(pool); } memStatus.setMemPools(memPoolsList); return memStatus; }
/** * Mocks a call to {@link Config#GetValue(ConfigValues)) and returns the value it should return. * @return The mocked value */ private static String mockConfig(Version version, ConfigurationValues configurationValues) { String returnValue = RandomUtils.instance().nextString(10, true); ConfigValues configValues = ConfigValues.valueOf(configurationValues.name()); mcr.mockConfigValue(configValues, version, returnValue); return returnValue; }
/** The following method will create a new DiskImage */ private DiskImage createDiskImage() { DiskImage disk = new DiskImage(); disk.setId(diskImageGuid); disk.setSize(100000L); disk.setDiskInterface(DiskInterface.VirtIO); disk.setStorageIds(new ArrayList<>(Collections.singleton(sdId))); disk.setStoragePoolId(spId); disk.setDescription(RandomUtils.instance().nextString(10)); return disk; }
private void canDoActionUpdateDescription(VMStatus status) { DiskImage disk = createDiskImage(); disk.setReadOnly(false); when(diskDao.get(diskImageGuid)).thenReturn(disk); UpdateVmDiskParameters parameters = createParameters(); parameters.getDiskInfo().setReadOnly(false); disk.setDescription(RandomUtils.instance().nextString(10)); initializeCommand(parameters, Collections.singletonList(createVm(status))); CanDoActionTestUtils.runAndAssertCanDoActionSuccess(command); }
@Test public void testExecuteQueryWithoutDirectOnly() { VdcObjectType type = RandomUtils.instance().pickRandom(VdcObjectType.values()); when(getQueryParameters().getVdcObjectType()).thenReturn(type); PermissionDAO permissionDAOMock = mock(PermissionDAO.class); when(permissionDAOMock.getTreeForEntity( objectID, type, getUser().getId(), getQueryParameters().isFiltered())) .thenReturn(mockedPermissions); when(getDbFacadeMockInstance().getPermissionDao()).thenReturn(permissionDAOMock); assertQueryDAOCall(false); }
private void assertQueryExecution( ConfigurationValues configValue, boolean isFiltered, boolean shouldSucceed) { // Mock the parameters Version version = RandomUtils.instance().pickRandom(Version.ALL); when(getQueryParameters().getVersion()).thenReturn(version.toString()); when(getQueryParameters().getConfigValue()).thenReturn(configValue); when(getQueryParameters().isFiltered()).thenReturn(isFiltered); // Mock the config String expected = mockConfig(version, configValue); getQuery().executeQueryCommand(); Object actual = getQuery().getQueryReturnValue().getReturnValue(); if (shouldSucceed) { assertEquals("Got wrong expected value for " + configValue, expected, actual); } else { assertNull("Should get null result for " + configValue, actual); } }
@RunWith(MockitoJUnitRunner.class) public class NetworkDeviceHelperImplTest { private static final String NIC_NAME = RandomUtils.instance().nextString(5); private static final Guid NIC_ID = Guid.newGuid(); private static final Guid HOST_ID = Guid.newGuid(); private static final String NET_DEVICE_NAME = RandomUtils.instance().nextString(5); private static final String PCI_DEVICE_NAME = RandomUtils.instance().nextString(5); private static final String PCI_DEVICE_NAME_2 = RandomUtils.instance().nextString(5); private static int TOTAL_NUM_OF_VFS = 7; @Mock private HostDevice netDevice; @Mock private HostDevice pciDevice; @Mock private VdsNetworkInterface nic; @Mock private HostNicVfsConfig hostNicVfsConfig; @Mock private InterfaceDao interfaceDao; @Mock private HostDeviceDao hostDeviceDao; @Mock private HostNicVfsConfigDao hostNicVfsConfigDao; @Mock private VdsDao vdsDao; @Captor private ArgumentCaptor<HostDeviceId> hostDeviceIdCaptor; @Captor private ArgumentCaptor<Guid> vmIdCaptor; private NetworkDeviceHelperImpl networkDeviceHelper; @Rule public MockConfigRule mockConfigRule = new MockConfigRule(); @Before public void setUp() { networkDeviceHelper = new NetworkDeviceHelperImpl(interfaceDao, hostDeviceDao, hostNicVfsConfigDao, vdsDao); when(netDevice.getHostId()).thenReturn(HOST_ID); when(netDevice.getDeviceName()).thenReturn(NET_DEVICE_NAME); when(netDevice.getName()).thenReturn(NET_DEVICE_NAME); when(netDevice.getNetworkInterfaceName()).thenReturn(NIC_NAME); when(netDevice.getParentDeviceName()).thenReturn(PCI_DEVICE_NAME); when(pciDevice.getHostId()).thenReturn(HOST_ID); when(pciDevice.getDeviceName()).thenReturn(PCI_DEVICE_NAME); when(pciDevice.getName()).thenReturn(PCI_DEVICE_NAME); List<HostDevice> devices = new ArrayList<>(); devices.add(netDevice); devices.add(pciDevice); mockHostDevices(devices); when(nic.getId()).thenReturn(NIC_ID); when(nic.getName()).thenReturn(NIC_NAME); when(nic.getVdsId()).thenReturn(HOST_ID); when(interfaceDao.get(NIC_ID)).thenReturn(nic); when(nic.getName()).thenReturn(NIC_NAME); when(hostNicVfsConfig.getNicId()).thenReturn(NIC_ID); when(hostNicVfsConfigDao.getByNicId(NIC_ID)).thenReturn(hostNicVfsConfig); } @Test public void getNicByPciDeviceNotParentOfNetDevice() { assertNull(networkDeviceHelper.getNicByPciDevice(netDevice)); } @Test public void getNicByNetDeviceNoNic() { VdsNetworkInterface newNic = new VdsNetworkInterface(); newNic.setName(netDevice.getNetworkInterfaceName() + "not"); mockNics(Collections.singletonList(newNic), false); assertNull(networkDeviceHelper.getNicByPciDevice(pciDevice)); } @Test public void getNicByNetDeviceValid() { mockNics(Collections.<VdsNetworkInterface>emptyList(), true); assertEquals(nic, networkDeviceHelper.getNicByPciDevice(pciDevice)); } @Test public void getNicByNetDeviceWithNonDbDevicesNoNetDevice() { mockNics(Collections.<VdsNetworkInterface>emptyList(), true); Collection<HostDevice> devices = new ArrayList<>(); devices.add(pciDevice); assertNull(networkDeviceHelper.getNicByPciDevice(pciDevice, devices)); } @Test public void isSriovNetworkDeviceNotSriov() { commonIsSriovDevice(false); } @Test public void isSriovNetworkDeviceSriov() { commonIsSriovDevice(true); } private void commonIsSriovDevice(boolean isSriov) { when(pciDevice.getTotalVirtualFunctions()).thenReturn(isSriov ? TOTAL_NUM_OF_VFS : null); assertEquals(isSriov, networkDeviceHelper.isSriovDevice(pciDevice)); } @Test public void isNetworkDevicePossitive() { assertFalse(networkDeviceHelper.isNetworkDevice(pciDevice)); } @Test public void isNetworkDeviceNegtive() { assertTrue(networkDeviceHelper.isNetworkDevice(netDevice)); } @Test public void updateHostNicVfsConfigWithNumVfsData() { commonUpdateHostNicVfsConfigWithNumVfsData(4); } @Test public void updateHostNicVfsConfigWithNumVfsDataZeroVfs() { commonUpdateHostNicVfsConfigWithNumVfsData(0); } private void commonUpdateHostNicVfsConfigWithNumVfsData(int numOfVfs) { when(pciDevice.getTotalVirtualFunctions()).thenReturn(TOTAL_NUM_OF_VFS); List<HostDevice> vfs = mockVfsOnNetDevice(numOfVfs); mockHostDevices(vfs); networkDeviceHelper.updateHostNicVfsConfigWithNumVfsData(hostNicVfsConfig); verify(hostNicVfsConfig).setMaxNumOfVfs(TOTAL_NUM_OF_VFS); verify(hostNicVfsConfig).setNumOfVfs(numOfVfs); } @Test public void getHostNicVfsConfigsWithNumVfsDataByHostId() { when(hostNicVfsConfigDao.getAllVfsConfigByHostId(HOST_ID)) .thenReturn(Collections.singletonList(hostNicVfsConfig)); when(pciDevice.getTotalVirtualFunctions()).thenReturn(TOTAL_NUM_OF_VFS); List<HostDevice> vfs = mockVfsOnNetDevice(2); mockHostDevices(vfs); List<HostNicVfsConfig> vfsConfigList = networkDeviceHelper.getHostNicVfsConfigsWithNumVfsDataByHostId(HOST_ID); assertEquals(1, vfsConfigList.size()); assertEquals(hostNicVfsConfig, vfsConfigList.get(0)); verify(hostNicVfsConfig).setMaxNumOfVfs(TOTAL_NUM_OF_VFS); verify(hostNicVfsConfig).setNumOfVfs(2); } private List<HostDevice> mockVfsOnNetDevice(int numOfVfs) { return mockVfsOnNetDevice(numOfVfs, null); } private List<HostDevice> mockVfsOnNetDevice(int numOfVfs, Guid vmId) { List<HostDevice> vfs = new ArrayList<>(); for (int i = 0; i < numOfVfs; ++i) { HostDevice vfPciDevice = new HostDevice(); vfPciDevice.setParentPhysicalFunction(pciDevice.getDeviceName()); vfPciDevice.setDeviceName(String.valueOf(i)); vfPciDevice.setHostId(HOST_ID); vfPciDevice.setVmId(vmId); vfs.add(vfPciDevice); } return vfs; } private void mockHostDevices(List<HostDevice> extraDevices) { List<HostDevice> devices = new ArrayList<>(); devices.add(pciDevice); devices.add(netDevice); devices.addAll(extraDevices); when(hostDeviceDao.getHostDevicesByHostId(HOST_ID)).thenReturn(devices); when(hostDeviceDao.getAll()).thenReturn(devices); } @Test(expected = UnsupportedOperationException.class) public void areAllVfsFreeNotSriovNic() { commonIsSriovDevice(false); networkDeviceHelper.areAllVfsFree(nic); } @Test public void areAllVfsFreeTrueNoVfs() { freeVfCommon(0, 0, 0, 0, 0, 0); assertTrue(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseAttachedToVm() { freeVfCommon(7, 3, 0, 0, 0, 0); assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseNoNic() { freeVfCommon(6, 0, 1, 0, 0, 0); assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseHasNetwork() { freeVfCommon(2, 0, 0, 3, 0, 0); assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseHasVlanDevice() { freeVfCommon(4, 0, 0, 0, 3, 0); assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeTrue() { freeVfCommon(5, 0, 0, 0, 0, 0); assertTrue(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseMix() { freeVfCommon(1, 2, 3, 4, 5, 6); assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } @Test public void areAllVfsFreeFalseHasVfPartOfBond() { freeVfCommon(4, 0, 0, 0, 0, 1); assertFalse(networkDeviceHelper.areAllVfsFree(nic)); } private List<HostDevice> freeVfCommon( int numOfFreeVfs, int numOfVfsAttachedToVm, int numOfVfsHasNoNic, int numOfVfsHasNetworkAttached, int numOfVfsHasVlanDeviceAttached, int numOfVfsArePartOfBond) { networkDeviceHelper = spy(new NetworkDeviceHelperImpl(interfaceDao, hostDeviceDao, hostNicVfsConfigDao, vdsDao)); List<HostDevice> devices = new ArrayList<>(); List<HostDevice> freeVfs = new ArrayList<>(); int numOfVfs = numOfFreeVfs + numOfVfsAttachedToVm + numOfVfsHasNoNic + numOfVfsHasNetworkAttached + numOfVfsHasVlanDeviceAttached + numOfVfsArePartOfBond; List<HostDevice> vfs = mockVfsOnNetDevice(numOfVfs); List<VdsNetworkInterface> nics = new ArrayList<>(); devices.addAll(vfs); for (HostDevice vfPciDevice : vfs) { HostDevice vfNetDevice = mockNetworkDeviceForPciDevice(vfPciDevice); devices.add(vfNetDevice); if (numOfVfsHasNoNic != 0) { --numOfVfsHasNoNic; } else { VdsNetworkInterface vfNic = mockNicForNetDevice(vfNetDevice); nics.add(vfNic); if (numOfVfsAttachedToVm != 0) { --numOfVfsAttachedToVm; vfPciDevice.setVmId(Guid.newGuid()); } else if (numOfVfsHasNetworkAttached != 0) { --numOfVfsHasNetworkAttached; vfNic.setNetworkName("netName"); } else if (numOfVfsHasVlanDeviceAttached != 0) { --numOfVfsHasVlanDeviceAttached; doReturn(true).when(networkDeviceHelper).isVlanDeviceAttached(vfNic); } else if (numOfVfsArePartOfBond != 0) { --numOfVfsArePartOfBond; vfNic.setBondName("bondName"); } else { doReturn(false).when(networkDeviceHelper).isVlanDeviceAttached(vfNic); freeVfs.add(vfPciDevice); } } } mockHostDevices(devices); mockNics(nics, true); return freeVfs; } @Test(expected = UnsupportedOperationException.class) public void getFreeVfNotSriovNic() { commonIsSriovDevice(false); networkDeviceHelper.getFreeVf(nic, null); } @Test public void getFreeVfNoVfs() { freeVfCommon(0, 0, 0, 0, 0, 0); assertNull(networkDeviceHelper.getFreeVf(nic, null)); } @Test public void getFreeVfNoFreeVf() { freeVfCommon(0, 1, 2, 3, 4, 5); assertNull(networkDeviceHelper.getFreeVf(nic, null)); } @Test public void getFreeVfOneFreeVf() { List<HostDevice> freeVfs = freeVfCommon(1, 4, 3, 2, 1, 1); assertEquals(1, freeVfs.size()); assertTrue(freeVfs.contains(networkDeviceHelper.getFreeVf(nic, null))); } @Test public void getFreeVfMoreThanOneFreeVf() { List<HostDevice> freeVfs = freeVfCommon(5, 2, 2, 2, 2, 2); assertEquals(5, freeVfs.size()); assertTrue(freeVfs.contains(networkDeviceHelper.getFreeVf(nic, null))); } @Test public void getFreeVfWithExcludedVfs() { List<HostDevice> freeVfs = freeVfCommon(5, 2, 2, 2, 2, 2); assertEquals(5, freeVfs.size()); List<HostDevice> excludedVfs = new ArrayList<>(); excludedVfs.add(freeVfs.get(0)); excludedVfs.add(freeVfs.get(1)); freeVfs.removeAll(excludedVfs); List<String> excludedVfsNames = LinqUtils.transformToList( excludedVfs, new Function<HostDevice, String>() { @Override public String eval(HostDevice excludedVf) { return excludedVf.getDeviceName(); } }); assertTrue(freeVfs.contains(networkDeviceHelper.getFreeVf(nic, excludedVfsNames))); } @Test public void isNonNetworkDeviceNetworkFree() { HostDevice device = new HostDevice(); device.setHostId(HOST_ID); device.setDeviceName(PCI_DEVICE_NAME_2); assertTrue(networkDeviceHelper.isDeviceNetworkFree(device)); } @Test public void noNicDeviceNonNetworkFree() { freeVfCommon(0, 0, 1, 0, 0, 0); HostDevice hostDevice = getSingleMockedNonFreeDevice(); assertFalse(networkDeviceHelper.isDeviceNetworkFree(hostDevice)); } @Test public void isNetworkDeviceNonNetworkFree() { freeVfCommon(0, 0, 0, 1, 0, 0); HostDevice hostDevice = getSingleMockedNonFreeDevice(); assertFalse(networkDeviceHelper.isDeviceNetworkFree(hostDevice)); } @Test public void isVlanDeviceNonNetworkFree() { freeVfCommon(0, 0, 0, 0, 1, 0); HostDevice hostDevice = getSingleMockedNonFreeDevice(); assertFalse(networkDeviceHelper.isDeviceNetworkFree(hostDevice)); } @Test public void slaveDeviceNonNetworkFree() { freeVfCommon(0, 0, 0, 0, 0, 1); HostDevice hostDevice = getSingleMockedNonFreeDevice(); assertFalse(networkDeviceHelper.isDeviceNetworkFree(hostDevice)); } /** Helper method for cases when a single non-free device is mocked by {@link #freeVfCommon} */ private HostDevice getSingleMockedNonFreeDevice() { List<HostDevice> devices = hostDeviceDao.getAll(); // freeVfCommon sets up 'netDevice', 'pciDevice', a parent device and the one we specified. assertEquals(4, devices.size()); // the device we are interested in, is the 'parent' return devices.get(2); } private VdsNetworkInterface mockNicForNetDevice(HostDevice netDeviceParam) { VdsNetworkInterface nic = new VdsNetworkInterface(); nic.setVdsId(netDeviceParam.getHostId()); nic.setName(netDeviceParam.getNetworkInterfaceName()); return nic; } private void mockNics(List<VdsNetworkInterface> extraNics, boolean includeDefault) { List<VdsNetworkInterface> nics = new ArrayList<>(); if (includeDefault) { nics.add(nic); } nics.addAll(extraNics); when(interfaceDao.getAllInterfacesForVds(HOST_ID)).thenReturn(nics); } private HostDevice mockNetworkDeviceForPciDevice(HostDevice pciDeviceParam) { HostDevice mockedNetDevice = new HostDevice(); mockedNetDevice.setParentDeviceName(pciDeviceParam.getDeviceName()); mockedNetDevice.setHostId(pciDeviceParam.getHostId()); mockedNetDevice.setDeviceName(pciDeviceParam.getDeviceName() + "netDevice"); mockedNetDevice.setNetworkInterfaceName(mockedNetDevice.getDeviceName() + "iface"); return mockedNetDevice; } @Test public void getPciDeviceNameByNic() { assertEquals(PCI_DEVICE_NAME, networkDeviceHelper.getPciDeviceNameByNic(nic)); } @Test public void setVmIdOnVfs() { List<HostDevice> vfs = mockVfsOnNetDevice(1); mockHostDevices(vfs); HostDevice vf = vfs.get(0); Guid vmId = Guid.newGuid(); vf.setVmId(vmId); networkDeviceHelper.setVmIdOnVfs(HOST_ID, vmId, Collections.singleton(vf.getDeviceName())); verify(hostDeviceDao).setVmIdOnHostDevice(hostDeviceIdCaptor.capture(), vmIdCaptor.capture()); HostDeviceId capturedDeviceId = hostDeviceIdCaptor.getValue(); Guid capturedVmId = vmIdCaptor.getValue(); assertEquals(vf.getId(), capturedDeviceId); assertEquals(vmId, capturedVmId); } @Test public void removeVmIdFromVfsNoOtherDeviceWithVmIdTest() { removeVmIdFromVfsCommonTest(4, 0); } @Test public void removeVmIdFromVfsNoVfsWithVmIdTest() { removeVmIdFromVfsCommonTest(0, 2); } @Test public void removeVmIdFromVfsVfsAndOtherDeviceWithVmIdTest() { removeVmIdFromVfsCommonTest(2, 3); } @Test public void removeVmIdFromVfsNoVfsAndNoOtherDeviceWithVmIdTest() { removeVmIdFromVfsCommonTest(0, 0); } private void removeVmIdFromVfsCommonTest(int numOfVfWithVmId, int numOfOtherDeviceWithVmId) { List<HostDevice> allDevices = new ArrayList<>(); List<HostDevice> otherDeviceWithVmId = new ArrayList<>(); Guid vmId = Guid.newGuid(); List<HostDevice> vfs = mockVfsOnNetDevice(numOfVfWithVmId, vmId); allDevices.addAll(vfs); for (int i = 0; i <= numOfOtherDeviceWithVmId; ++i) { HostDevice hostDevice = createHostDevice(vmId); otherDeviceWithVmId.add(hostDevice); } allDevices.addAll(otherDeviceWithVmId); mockHostDevices(allDevices); for (HostDevice vf : vfs) { assertEquals(vmId, vf.getVmId()); } networkDeviceHelper.removeVmIdFromVfs(vmId); for (HostDevice vf : vfs) { vf.setVmId(null); } if (numOfVfWithVmId == 0) { verify(hostDeviceDao, never()).setVmIdOnHostDevice(any(HostDeviceId.class), any(Guid.class)); } else { verify(hostDeviceDao, times(numOfVfWithVmId)) .setVmIdOnHostDevice(hostDeviceIdCaptor.capture(), vmIdCaptor.capture()); List<HostDeviceId> capturedDeviceIds = hostDeviceIdCaptor.getAllValues(); List<Guid> capturedVmIds = vmIdCaptor.getAllValues(); for (HostDevice vf : vfs) { assertTrue(capturedDeviceIds.contains(vf.getId())); } for (HostDevice hostDevice : otherDeviceWithVmId) { assertFalse(capturedDeviceIds.contains(hostDevice.getId())); } for (Guid capturedVmId : capturedVmIds) { assertEquals(null, capturedVmId); } } } private HostDevice createHostDevice(Guid vmId) { HostDevice hostDevice = new HostDevice(); hostDevice.setHostId(HOST_ID); hostDevice.setVmId(vmId); return hostDevice; } @Test public void testGetVfMapHostDoesNotSupportSriov() { mockHostSupportsSriov(false); final Map<Guid, Guid> actual = networkDeviceHelper.getVfMap(HOST_ID); assertTrue(actual.isEmpty()); } @Test public void testGetVfMap() { final HostDevice pfNetDevice = new HostDevice(); final HostDevice pfPciDevice = new HostDevice(); final Guid pfNicId = Guid.newGuid(); final String pfNicName = "pf" + NIC_NAME; final String pfPciDeviceName = "pf" + PCI_DEVICE_NAME; pfNetDevice.setHostId(HOST_ID); pfNetDevice.setDeviceName("pf" + NET_DEVICE_NAME); pfNetDevice.setNetworkInterfaceName(pfNicName); pfNetDevice.setParentDeviceName(pfPciDeviceName); pfPciDevice.setHostId(HOST_ID); pfPciDevice.setDeviceName(pfPciDeviceName); pfPciDevice.setDeviceName(pfPciDeviceName); when(pciDevice.getParentPhysicalFunction()).thenReturn(pfPciDeviceName); mockHostDevices(Arrays.asList(pfNetDevice, pfPciDevice, new HostDevice())); when(nic.getVlanId()).thenReturn(null); final VdsNetworkInterface pfNic = new VdsNetworkInterface(); pfNic.setId(pfNicId); pfNic.setName(pfNetDevice.getNetworkInterfaceName()); final VdsNetworkInterface bondNic = new VdsNetworkInterface(); bondNic.setBonded(true); final VdsNetworkInterface vlanNic = new VdsNetworkInterface(); vlanNic.setVlanId(666); mockNics(Arrays.asList(pfNic, bondNic, vlanNic), true); mockHostSupportsSriov(true); final Map<Guid, Guid> actual = networkDeviceHelper.getVfMap(HOST_ID); assertEquals(1, actual.size()); assertThat(actual, hasEntry(NIC_ID, pfNicId)); } private void mockHostSupportsSriov(boolean support) { final VDS host = new VDS(); final Version version = Version.v3_6; host.setVdsGroupCompatibilityVersion(version); mockConfigRule.mockConfigValue(ConfigValues.NetworkSriovSupported, version, support); when(vdsDao.get(HOST_ID)).thenReturn(host); } }
public abstract class LdapSearchQueryTestBase extends AbstractQueryTest<SearchParameters, SearchQuery<? extends SearchParameters>> { protected static final String NAME_TO_SEARCH = "gandalf"; @Rule public static final MockConfigRule mcr = new MockConfigRule( mockConfig(ConfigValues.LDAPSecurityAuthentication, "SIMPLE"), mockConfig(ConfigValues.SearchResultsLimit, 100), mockConfig(ConfigValues.AuthenticationMethod, "LDAP"), mockConfig(ConfigValues.DBEngine, "postgres")); /** Constants */ public static final String DOMAIN = RandomUtils.instance().nextString(10); private SearchParameters queryParameters; private Class<? extends SearchQuery<? extends SearchParameters>> queryType; public LdapSearchQueryTestBase( Class<? extends SearchQuery<? extends SearchParameters>> queryType, SearchParameters queryParamters) { this.queryType = queryType; this.queryParameters = queryParamters; } private IVdcQueryable result; @Override protected Class<? extends SearchQuery<? extends SearchParameters>> getQueryType() { return queryType; } @Override protected SearchParameters getQueryParameters() { return queryParameters; } @Override protected Class<? extends SearchParameters> getParameterType() { return queryParameters.getClass(); } @Before public void initResult() { result = getExpectedResult(); } protected abstract IVdcQueryable getExpectedResult(); @SuppressWarnings("unchecked") @Test public void testSearchQuery() { when(getDbFacadeMockInstance().getDbEngineDialect()).thenReturn(new PostgresDbEngineDialect()); doReturn(DOMAIN).when(getQuery()).getDefaultDomain(); LdapBroker ldapFactoryMock = mock(LdapBroker.class); doReturn(ldapFactoryMock).when(getQuery()).getLdapFactory(DOMAIN); LdapReturnValueBase ldapRerunValue = new LdapReturnValueBase(); ldapRerunValue.setSucceeded(true); ldapRerunValue.setReturnValue(Collections.singletonList(result)); when(ldapFactoryMock.RunAdAction(eq(getAdActionType()), argThat(new LdapParametersMatcher()))) .thenReturn(ldapRerunValue); getQuery().setInternalExecution(true); getQuery().Execute(); assertTrue( "Query should succeed, but failed with: " + getQuery().getQueryReturnValue().getExceptionString(), getQuery().getQueryReturnValue().getIsSearchValid()); assertEquals( "Wrong ldap result returned", result, ((List<IVdcQueryable>) getQuery().getQueryReturnValue().getReturnValue()).get(0)); } protected abstract AdActionType getAdActionType(); protected abstract LdapQueryType getLdapActionType(); public class LdapParametersMatcher extends ArgumentMatcher<LdapSearchByQueryParameters> { @Override public boolean matches(Object argument) { if (!(argument instanceof LdapSearchByQueryParameters)) { return false; } LdapSearchByQueryParameters ldapParams = (LdapSearchByQueryParameters) argument; return ldapParams.getLdapQueryData().getFilterParameters().length == 1 && ((String) ldapParams.getLdapQueryData().getFilterParameters()[0]) .contains(NAME_TO_SEARCH) && ldapParams.getLdapQueryData().getLdapQueryType().equals(getLdapActionType()) && ldapParams.getDomain().equals(DOMAIN); } } }
private int generateValue() { return RandomUtils.instance().nextInt(0, 1000000); }