package org.ovirt.engine.core.bll; import static org.mockito.Mockito.when; import static org.powermock.api.mockito.PowerMockito.mock; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.LUN_storage_server_connection_map; import org.ovirt.engine.core.common.businessentities.LUNs; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.storage_server_connections; import org.ovirt.engine.core.common.queries.GetLunsByVgIdParameters; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dao.LunDAO; import org.ovirt.engine.core.dao.StorageServerConnectionDAO; import org.ovirt.engine.core.dao.StorageServerConnectionLunMapDAO; public class GetLunsByVgIdTest extends BaseMockitoTest { private static final String VG_ID = GUIDS[0].toString(); private static final String ADDRESS = "foo.bar.com"; private static final String PORT = "123456"; private static final String[] IQNS = new String[] { ADDRESS + ":1", ADDRESS + ":2", ADDRESS + ":3" }; @Test public void testQuery() { DbFacade db = setUpDB(); expectGetLunsForVg(db, VG_ID); StorageServerConnectionLunMapDAO lunMapDAO = setUpStorageServerConnectionLunMapDAO(db); StorageServerConnectionDAO cnxDAO = setUpStorageServerConnectionDAO(db); expectGetLunsMap(lunMapDAO); expectGetConnections(cnxDAO); GetLunsByVgIdQuery query = new GetLunsByVgIdQuery(getParams()); query.ExecuteCommand(); checkSucceeded(query, true); checkReturnValue(query); } protected StorageServerConnectionDAO setUpStorageServerConnectionDAO(DbFacade db) { StorageServerConnectionDAO dao = mock(StorageServerConnectionDAO.class); when(db.getStorageServerConnectionDAO()).thenReturn(dao); return dao; } protected StorageServerConnectionLunMapDAO setUpStorageServerConnectionLunMapDAO(DbFacade db) { StorageServerConnectionLunMapDAO dao = mock(StorageServerConnectionLunMapDAO.class); when(db.getStorageServerConnectionLunMapDAO()).thenReturn(dao); return dao; } protected void expectGetLunsForVg(DbFacade db, String vgId) { LunDAO dao = mock(LunDAO.class); when(db.getLunDAO()).thenReturn(dao); when(dao.getAllForVolumeGroup(vgId)).thenReturn(setUpLuns()); } protected void expectGetLunsMap(StorageServerConnectionLunMapDAO dao) { for (int i = 0; i < GUIDS.length; i++) { expectGetLunsMap(dao, GUIDS[i].toString(), GUIDS[i].toString()); } } protected void expectGetLunsMap(StorageServerConnectionLunMapDAO dao, String lunId, String cnxId) { List<LUN_storage_server_connection_map> ret = new ArrayList<LUN_storage_server_connection_map>(); LUN_storage_server_connection_map map = new LUN_storage_server_connection_map(); map.setLunId(lunId); map.setstorage_server_connection(cnxId); ret.add(map); when(dao.getAll(lunId)).thenReturn(ret); } protected void expectGetConnections(StorageServerConnectionDAO dao) { for (int i = 0; i < GUIDS.length; i++) { when(dao.get(GUIDS[i].toString())).thenReturn(setUpConnection(i)); } } protected List<LUNs> setUpLuns() { List<LUNs> luns = new ArrayList<LUNs>(); for (int i = 0; i < GUIDS.length; i++) { LUNs lun = new LUNs(); lun.setLUN_id(GUIDS[i].toString()); luns.add(lun); } return luns; } protected storage_server_connections setUpConnection(int idx) { return new storage_server_connections(ADDRESS, GUIDS[idx].toString(), IQNS[idx], null, StorageType.ISCSI, null, PORT, null); } protected GetLunsByVgIdParameters getParams() { return new GetLunsByVgIdParameters(VG_ID); } @SuppressWarnings("unchecked") protected void checkReturnValue(QueriesCommandBase<?> query) { assertNotNull(query.getQueryReturnValue().getReturnValue()); assertTrue(List.class.isInstance(query.getQueryReturnValue().getReturnValue())); List<LUNs> luns = (List<LUNs>) query.getQueryReturnValue().getReturnValue(); assertEquals(GUIDS.length, luns.size()); for (int i = 0; i < GUIDS.length; i++) { LUNs lun = luns.get(i); assertNotNull(lun); assertEquals(GUIDS[i].toString(), lun.getLUN_id()); assertNotNull(lun.getLunConnections()); assertEquals(1, lun.getLunConnections().size()); storage_server_connections cnx = lun.getLunConnections().get(0); assertEquals(ADDRESS, cnx.getconnection()); assertEquals(PORT, cnx.getport()); assertEquals(GUIDS[i].toString(), cnx.getid()); assertEquals(IQNS[i], cnx.getiqn()); assertEquals(StorageType.ISCSI, cnx.getstorage_type()); } } }