Yevgeny Zaspitsky has uploaded a new change for review. Change subject: engine: Add ManagementNetworkUtil ......................................................................
engine: Add ManagementNetworkUtil Add ManagementNetworkUtil + its test. Change-Id: I4117f9e97e721c847f5192e1ab724c8d231ce4f3 Signed-off-by: Yevgeny Zaspitsky <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtil.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtilImpl.java A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtilImplTest.java 3 files changed, 213 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/92/32992/9 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtil.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtil.java new file mode 100644 index 0000000..0f9b0e2 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtil.java @@ -0,0 +1,39 @@ +package org.ovirt.engine.core.bll.network.cluster; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.compat.Guid; + +public interface ManagementNetworkUtil { + + /** + * The method retrieves the management network for the given cluster. + * + * @param clusterId + * the given cluster id + * @return {@link Network} that is defined as the management one in the given cluster + */ + Network getManagementNetwork(Guid clusterId); + + /** + * The method checks if the given network is defined as the management network for any cluster. + * + * @param networkId + * the given network id + * @return true if exists a cluster where the network is defined as the management one, + * false otherwise + */ + boolean isManagementNetwork(Guid networkId); + + /** + * The method checks if the given network is defined as the management network for the given cluster cluster. + * + * @param networkId + * the given network id + * @param clusterId + * the given cluster id + * @return true if the network is defined as the management one for the given cluster, + * false otherwise + */ + boolean isManagementNetwork(Guid networkId, Guid clusterId); + +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtilImpl.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtilImpl.java new file mode 100644 index 0000000..0ca2efd --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtilImpl.java @@ -0,0 +1,51 @@ +package org.ovirt.engine.core.bll.network.cluster; + +import java.util.List; + +import javax.inject.Singleton; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; +import org.ovirt.engine.core.common.businessentities.network.NetworkClusterId; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.dbbroker.DbFacadeLocator; +import org.ovirt.engine.core.dao.network.NetworkClusterDao; +import org.ovirt.engine.core.dao.network.NetworkDao; +import org.ovirt.engine.core.utils.linq.LinqUtils; +import org.ovirt.engine.core.utils.linq.Predicate; + +@Singleton +final class ManagementNetworkUtilImpl implements ManagementNetworkUtil { + + @Override + public Network getManagementNetwork(Guid clusterId) { + return getNetworkDao().getManagementNetwork(clusterId); + } + + @Override + public boolean isManagementNetwork(Guid networkId) { + final List<NetworkCluster> networkClusters = getNetworkClusterDao().getAllForNetwork(networkId); + final NetworkCluster managementNetworkCluster = + LinqUtils.firstOrNull(networkClusters, new Predicate<NetworkCluster>() { + @Override + public boolean eval(NetworkCluster networkCluster) { + return networkCluster.isManagement(); + } + }); + return managementNetworkCluster != null; + } + + @Override + public boolean isManagementNetwork(Guid networkId, Guid clusterId) { + final NetworkCluster networkCluster = getNetworkClusterDao().get(new NetworkClusterId(clusterId, networkId)); + return networkCluster != null && networkCluster.isManagement(); + } + + private NetworkClusterDao getNetworkClusterDao() { + return DbFacadeLocator.getDbFacade().getNetworkClusterDao(); + } + + private NetworkDao getNetworkDao() { + return DbFacadeLocator.getDbFacade().getNetworkDao(); + } +} diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtilImplTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtilImplTest.java new file mode 100644 index 0000000..360aca3 --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/cluster/ManagementNetworkUtilImplTest.java @@ -0,0 +1,123 @@ +package org.ovirt.engine.core.bll.network.cluster; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.Collections; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; +import org.ovirt.engine.core.common.businessentities.network.NetworkClusterId; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.dal.dbbroker.DbFacadeLocator; +import org.ovirt.engine.core.dao.network.NetworkClusterDao; +import org.ovirt.engine.core.dao.network.NetworkDao; + +@RunWith(MockitoJUnitRunner.class) +public class ManagementNetworkUtilImplTest { + + private static final Guid TEST_CLUSTER_ID = Guid.newGuid(); + private static final Guid TEST_NETWORK_ID = Guid.newGuid(); + private static final NetworkClusterId TEST_NETWORK_CLUSTER_ID = + new NetworkClusterId(TEST_CLUSTER_ID, TEST_NETWORK_ID); + + private ManagementNetworkUtil underTest; + + @Mock + private DbFacade mockDbFacade; + @Mock + private NetworkDao mockNetworkDao; + @Mock + private NetworkClusterDao mockNetworkClusterDao; + + @Mock + private Network mockNetwork; + @Mock + private NetworkCluster mockNetworkCluster; + + @Before + public void setUp() throws Exception { + when(mockDbFacade.getNetworkDao()).thenReturn(mockNetworkDao); + when(mockDbFacade.getNetworkClusterDao()).thenReturn(mockNetworkClusterDao); + + DbFacadeLocator.setDbFacade(mockDbFacade); + + underTest = new ManagementNetworkUtilImpl(); + } + + /** + * Test method for {@link ManagementNetworkUtilImpl#getManagementNetwork(Guid)} . + */ + @Test + public void testGetManagementNetwork() { + when(mockNetworkDao.getManagementNetwork(TEST_CLUSTER_ID)).thenReturn(mockNetwork); + + final Network actual = underTest.getManagementNetwork(TEST_CLUSTER_ID); + + assertSame(mockNetwork, actual); + + verify(mockNetworkDao).getManagementNetwork(TEST_CLUSTER_ID); + } + + /** + * Test method for {@link ManagementNetworkUtilImpl#isManagementNetwork(Guid)} . + */ + @Test + public void testIsManagementNetworkInAClusterPositive() throws Exception { + testIsManagementNetworkInAClusterCommon(true); + } + + /** + * Test method for {@link ManagementNetworkUtilImpl#isManagementNetwork(Guid)} . + */ + @Test + public void testIsManagementNetworkInAClusterNegative() throws Exception { + testIsManagementNetworkInAClusterCommon(false); + } + + private void testIsManagementNetworkInAClusterCommon(boolean expectedResult) { + when(mockNetworkCluster.isManagement()).thenReturn(expectedResult); + when(mockNetworkClusterDao.getAllForNetwork(TEST_NETWORK_ID)) + .thenReturn(Collections.singletonList(mockNetworkCluster)); + + final boolean actual = underTest.isManagementNetwork(TEST_NETWORK_ID); + + assertEquals(expectedResult, actual); + + verify(mockNetworkClusterDao).getAllForNetwork(TEST_NETWORK_ID); + } + + /** + * Test method for {@link ManagementNetworkUtilImpl#isManagementNetwork(Guid, Guid)} . + */ + @Test + public void testIsManagementNetworkInGivenClusterPositive() throws Exception { + testIsManagementNetworkInGivenClusterCommon(true); + } + + /** + * Test method for {@link ManagementNetworkUtilImpl#isManagementNetwork(Guid, Guid)} . + */ + @Test + public void testIsManagementNetworkInGivenClusterNegative() throws Exception { + testIsManagementNetworkInGivenClusterCommon(false); + } + + private void testIsManagementNetworkInGivenClusterCommon(boolean expectedResult) { + when(mockNetworkClusterDao.get(eq(TEST_NETWORK_CLUSTER_ID))).thenReturn(mockNetworkCluster); + when(mockNetworkCluster.isManagement()).thenReturn(expectedResult); + + final boolean actual = underTest.isManagementNetwork(TEST_NETWORK_ID, TEST_CLUSTER_ID); + + assertEquals(expectedResult, actual); + } +} -- To view, visit http://gerrit.ovirt.org/32992 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4117f9e97e721c847f5192e1ab724c8d231ce4f3 Gerrit-PatchSet: 9 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yevgeny Zaspitsky <[email protected]> Gerrit-Reviewer: Alona Kaplan <[email protected]> Gerrit-Reviewer: Yevgeny Zaspitsky <[email protected]> Gerrit-Reviewer: [email protected] Gerrit-Reviewer: oVirt Jenkins CI Server _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
