package org.ovirt.engine.core.bll.storage.disk.lun; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.ovirt.engine.core.bll.AbstractQueryTest; import org.ovirt.engine.core.common.businessentities.storage.LUNs; import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend; import org.ovirt.engine.core.common.queries.GetDeviceListQueryParameters; import org.ovirt.engine.core.common.vdscommands.GetDeviceListVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.LunDao; public class GetDeviceListQueryTest extends AbstractQueryTest<GetDeviceListQueryParameters, GetDeviceListQuery<GetDeviceListQueryParameters>> { @Mock private LunDao lunDaoMock; @Mock private VDSBrokerFrontend vdsBrokerFrontendMock; // LUNs list retrieved from DB private List<LUNs> lunsFromDb; // LUNs list retrieved from VDSM private List<LUNs> lunsInput; // LUNs list returned by query private List<LUNs> lunsExpected; /** * Test query execution when LUNs filtering is disabled */ @Test public void testExecuteQueryWithFilteringLUNsDisabled() { // Create expected result lunsExpected = lunsInput; internalExecuteQuery(); } /** * Test query execution */ private void internalExecuteQuery() { // Run 'GetDeviceList' command VDSReturnValue returnValue = new VDSReturnValue(); returnValue.setSucceeded(true); returnValue.setReturnValue(lunsInput); when(vdsBrokerFrontendMock.runVdsCommand(eq(VDSCommandType.GetDeviceList), any(GetDeviceListVDSCommandParameters.class))).thenReturn(returnValue); // Return 'lunsFromDb' when(lunDaoMock.getAll()).thenReturn(lunsFromDb); // Execute command getQuery().executeQueryCommand(); // Assert the query's results List<LUNs> lunsActual = getQuery().getQueryReturnValue().getReturnValue(); assertEquals(lunsExpected, lunsActual); } /** * Create the input list of LUNs */ private void createInputLUNs() { LUNs lunWithVG = new LUNs(); lunWithVG.setLUNId(Guid.newGuid().toString()); lunWithVG.setVolumeGroupId(Guid.newGuid().toString()); LUNs lunExistsInDB = new LUNs(); lunExistsInDB.setLUNId(Guid.newGuid().toString()); lunsInput = new ArrayList<>(); lunsInput.add(lunWithVG); lunsInput.add(lunExistsInDB); lunsFromDb = new ArrayList<>(); lunsFromDb.add(lunExistsInDB); } @Override @Before public void setUp() throws Exception { super.setUp(); createInputLUNs(); } }