package org.ovirt.engine.core.dao; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.network; import org.ovirt.engine.core.common.businessentities.network_cluster; import org.ovirt.engine.core.compat.Guid; public class NetworkClusterDAOTest extends BaseDAOTestCase { private static final int NETWORK_CLUSTER_COUNT = 2; private NetworkClusterDAO dao; private VDSGroup cluster; private network network; private network_cluster newNetworkCluster; private network networkNoCluster; private network_cluster existingNetworkCluster; private VDSGroup freeCluster; @Override public void setUp() throws Exception { super.setUp(); dao = prepareDAO(dbFacade.getNetworkClusterDAO()); VdsGroupDAO vdsGroupDAO = prepareDAO(dbFacade.getVdsGroupDAO()); cluster = vdsGroupDAO.get(new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1")); freeCluster = vdsGroupDAO.get(new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d3")); NetworkDAO networkDAO = prepareDAO(dbFacade.getNetworkDAO()); network = networkDAO.getByName("engine"); networkNoCluster = networkDAO.getByName("engine3"); newNetworkCluster = new network_cluster(); newNetworkCluster.setnetwork_id(networkNoCluster.getId()); newNetworkCluster.setcluster_id(freeCluster.getID()); existingNetworkCluster = dao.getAll().get(0); } /** * Ensures that retrieving all instances works as expected. */ @Test public void testGetAll() { List<network_cluster> result = dao.getAll(); assertNotNull(result); assertFalse(result.isEmpty()); assertEquals(NETWORK_CLUSTER_COUNT, result.size()); } /** * Ensures that an empty collection is returned when the cluster specified doesn't have any networks. */ @Test public void testGetAllForClusterWithInvalidCluster() { List<network_cluster> result = dao.getAllForCluster(Guid.NewGuid()); assertNotNull(result); assertTrue(result.isEmpty()); } /** * Ensures that retrieving all for a specific cluster works as expected. */ @Test public void testGetAllForCluster() { List<network_cluster> result = dao.getAllForCluster(cluster.getID()); assertNotNull(result); assertFalse(result.isEmpty()); for (network_cluster thiscluster : result) { assertEquals(cluster.getID(), thiscluster.getcluster_id()); } } /** * Ensures that an empty collection is returned if the network has no clusters. */ @Test public void testGetAllForNetworkWithInvalidNetwork() { List<network_cluster> result = dao.getAllForNetwork(networkNoCluster.getId()); assertNotNull(result); assertTrue(result.isEmpty()); } /** * Ensures that the right set is returned for the specified network. */ @Test public void testGetAllForNetwork() { List<network_cluster> result = dao.getAllForNetwork(network.getId()); assertNotNull(result); assertFalse(result.isEmpty()); for (network_cluster cluster : result) { assertEquals(network.getId(), cluster.getnetwork_id()); } } /** * Ensures that saving a cluster works as expected. */ @Test public void testSave() { List<network_cluster> before = dao.getAllForNetwork(networkNoCluster.getId()); // ensure that we have nothing to start assertTrue(before.isEmpty()); dao.save(newNetworkCluster); List<network_cluster> after = dao.getAllForNetwork(networkNoCluster.getId()); assertFalse(after.isEmpty()); assertEquals(newNetworkCluster, after.get(0)); } /** * Ensures that updating a cluster works as expected. */ @Test public void testUpdate() { existingNetworkCluster.setstatus(existingNetworkCluster.getstatus() * 2); dao.update(existingNetworkCluster); List<network_cluster> result = dao.getAll(); boolean itworked = false; for (network_cluster thiscluster : result) { itworked |= (thiscluster.getcluster_id().equals(existingNetworkCluster.getcluster_id())) && (thiscluster.getnetwork_id().equals(existingNetworkCluster.getnetwork_id())) && (thiscluster.getstatus() == existingNetworkCluster.getstatus()); } assert (itworked); } /** * Ensures that updating a cluster status works as expected. */ @Test public void testUpdateStatus() { existingNetworkCluster.setstatus(existingNetworkCluster.getstatus() * 2); dao.updateStatus(existingNetworkCluster); List<network_cluster> result = dao.getAll(); boolean itworked = false; for (network_cluster thiscluster : result) { itworked |= (thiscluster.getcluster_id().equals(existingNetworkCluster.getcluster_id())) && (thiscluster.getnetwork_id().equals(existingNetworkCluster.getnetwork_id())) && (thiscluster.getstatus() == existingNetworkCluster.getstatus()); } assert (itworked); } /** * Ensures that removing a network cluster works. */ @Test public void testRemove() { int before = dao.getAll().size(); dao.remove(existingNetworkCluster.getcluster_id(), existingNetworkCluster.getnetwork_id()); int after = dao.getAll().size(); assertEquals(before - 1, after); } }