You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2016/09/28 09:46:16 UTC

[25/50] [abbrv] git commit: updated refs/heads/4.9-bountycastle-daan to b9ee34f

CLOUDSTACK-8751 Added tests


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f4163329
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f4163329
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f4163329

Branch: refs/heads/4.9-bountycastle-daan
Commit: f416332994f28c2158b17ee80e2e03f5a69c22c2
Parents: 75f89c7
Author: Bharat Kumar <bh...@citrix.com>
Authored: Thu Aug 20 17:21:20 2015 +0530
Committer: Bharat Kumar <bh...@Bharat.local>
Committed: Mon Sep 12 15:24:47 2016 +0530

----------------------------------------------------------------------
 .../element/VirtualRouterElementTest.java       | 151 ++++++++++++++++++-
 1 file changed, 150 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f4163329/server/test/com/cloud/network/element/VirtualRouterElementTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/network/element/VirtualRouterElementTest.java b/server/test/com/cloud/network/element/VirtualRouterElementTest.java
index 6592778..4fbc28e 100644
--- a/server/test/com/cloud/network/element/VirtualRouterElementTest.java
+++ b/server/test/com/cloud/network/element/VirtualRouterElementTest.java
@@ -19,6 +19,7 @@ package com.cloud.network.element;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Matchers.anyList;
 import static org.mockito.Matchers.anyLong;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.when;
@@ -26,6 +27,11 @@ import static org.mockito.Mockito.when;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.cloud.exception.AgentUnavailableException;
+import com.cloud.network.dao.NetworkDetailVO;
+import com.cloud.network.dao.NetworkDetailsDao;
+import com.cloud.network.router.VirtualRouter;
+import com.cloud.utils.exception.CloudRuntimeException;
 import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
 import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 import org.cloud.network.router.deployment.RouterDeploymentDefinitionBuilder;
@@ -35,6 +41,8 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Matchers;
 import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
 import org.mockito.runners.MockitoJUnitRunner;
 
 import com.cloud.cluster.dao.ManagementServerHostDao;
@@ -111,6 +119,7 @@ import com.cloud.vm.dao.NicIpAliasDao;
 import com.cloud.vm.dao.UserVmDao;
 import com.cloud.vm.dao.UserVmDetailsDao;
 import com.cloud.vm.dao.VMInstanceDao;
+import org.mockito.stubbing.Answer;
 
 @RunWith(MockitoJUnitRunner.class)
 public class VirtualRouterElementTest {
@@ -127,6 +136,7 @@ public class VirtualRouterElementTest {
     @Mock private ManagementServerHostDao _msHostDao;
     @Mock private NetworkDao _networkDao;
     @Mock private NetworkOfferingDao _networkOfferingDao;
+    @Mock private NetworkDetailsDao _networkDetailsDao;
     @Mock private NicDao _nicDao;
     @Mock private NicIpAliasDao _nicIpAliasDao;
     @Mock private OpRouterMonitorServiceDao _opRouterMonitorServiceDao;
@@ -225,6 +235,62 @@ public class VirtualRouterElementTest {
 
     }
 
+    @Test
+    public void testGetRouters1(){
+        Network networkUpdateInprogress=new NetworkVO(1l,null,null,null,1l,1l,1l,1l,"d","d","d",null,1l,1l,null,true,null,true);
+        mockDAOs((NetworkVO)networkUpdateInprogress,testOffering);
+        //getRoutes should always return the router that is updating.
+        List<DomainRouterVO> routers=virtualRouterElement.getRouters(networkUpdateInprogress);
+        assertTrue(routers.size()==1);
+        assertTrue(routers.get(0).getUpdateState()== VirtualRouter.UpdateState.UPDATE_IN_PROGRESS);
+    }
+
+    @Test
+    public void testGetRouters2(){
+        Network networkUpdateInprogress=new NetworkVO(2l,null,null,null,1l,1l,1l,1l,"d","d","d",null,1l,1l,null,true,null,true);
+        mockDAOs((NetworkVO)networkUpdateInprogress,testOffering);
+        //alwyas return backup routers first when both master and backup need update.
+        List<DomainRouterVO> routers=virtualRouterElement.getRouters(networkUpdateInprogress);
+        assertTrue(routers.size()==1);
+        assertTrue(routers.get(0).getRedundantState()==RedundantState.BACKUP && routers.get(0).getUpdateState()==VirtualRouter.UpdateState.UPDATE_IN_PROGRESS);
+    }
+
+    @Test
+    public void testGetRouters3(){
+        Network network=new NetworkVO(3l,null,null,null,1l,1l,1l,1l,"d","d","d",null,1l,1l,null,true,null,true);
+        mockDAOs((NetworkVO)network,testOffering);
+        //alwyas return backup routers first when both master and backup need update.
+        List<DomainRouterVO> routers=virtualRouterElement.getRouters(network);
+        assertTrue(routers.size()==4);
+    }
+
+    @Test
+    public void getResourceCountTest(){
+        Network network=new NetworkVO(3l,null,null,null,1l,1l,1l,1l,"d","d","d",null,1l,1l,null,true,null,true);
+        mockDAOs((NetworkVO)network,testOffering);
+        int routers=virtualRouterElement.getResourceCount(network);
+        assertTrue(routers==4);
+    }
+
+    @Test
+    public void completeAggregationCommandTest1() throws AgentUnavailableException,ResourceUnavailableException {
+        virtualRouterElement._routerMgr = Mockito.mock(VpcVirtualNetworkApplianceManagerImpl.class);
+        virtualRouterElement.routerDeploymentDefinitionBuilder = routerDeploymentDefinitionBuilder;
+        Network network = new NetworkVO(6l, null, null, null, 1l, 1l, 1l, 1l, "d", "d", "d", null, 1l, 1l, null, true, null, true);
+        when(virtualRouterElement._routerMgr.completeAggregatedExecution(any(Network.class), anyList())).thenReturn(true);
+        mockDAOs((NetworkVO) network, testOffering);
+        when(virtualRouterElement._routerDao.persist(any(DomainRouterVO.class))).thenAnswer(new Answer<Object>() {
+            @Override
+            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+                Object args[] = invocationOnMock.getArguments();
+                DomainRouterVO router = (DomainRouterVO) args[0];
+                if (router.getUpdateState() != VirtualRouter.UpdateState.UPDATE_COMPLETE) {
+                    throw new CloudRuntimeException("TestFailed: completeAggregationCommandTest1 failed");
+                } else return null;
+            }
+        });
+        virtualRouterElement.completeAggregatedExecution(network, testDestination);
+    }
     /**
      * @param networks
      * @param offerings
@@ -293,11 +359,94 @@ public class VirtualRouterElementTest {
                 /* haEnabled */ false,
                 /* stopPending */ false,
                 /* vpcId */ null);
-
+        final DomainRouterVO routerNeedUpdateBackup = new DomainRouterVO(/* id */ 2L,
+                /* serviceOfferingId */ 1L,
+                /* elementId */ 0L,
+                "name",
+                /* templateId */0L,
+                HypervisorType.XenServer,
+                /* guestOSId */ 0L,
+                /* domainId */ 0L,
+                /* accountId */ 1L,
+                /* userId */ 1L,
+                /* isRedundantRouter */ false,
+                RedundantState.BACKUP,
+                /* haEnabled */ false,
+                /* stopPending */ false,
+                /* vpcId */ null);
+                routerNeedUpdateBackup.setUpdateState(VirtualRouter.UpdateState.UPDATE_NEEDED);
+        final DomainRouterVO routerNeedUpdateMaster = new DomainRouterVO(/* id */ 3L,
+                /* serviceOfferingId */ 1L,
+                /* elementId */ 0L,
+                "name",
+                /* templateId */0L,
+                HypervisorType.XenServer,
+                /* guestOSId */ 0L,
+                /* domainId */ 0L,
+                /* accountId */ 1L,
+                /* userId */ 1L,
+                /* isRedundantRouter */ false,
+                RedundantState.MASTER,
+                /* haEnabled */ false,
+                /* stopPending */ false,
+                /* vpcId */ null);
+        routerNeedUpdateMaster.setUpdateState(VirtualRouter.UpdateState.UPDATE_NEEDED);
+        final DomainRouterVO routerUpdateComplete = new DomainRouterVO(/* id */ 4L,
+                /* serviceOfferingId */ 1L,
+                /* elementId */ 0L,
+                "name",
+                /* templateId */0L,
+                HypervisorType.XenServer,
+                /* guestOSId */ 0L,
+                /* domainId */ 0L,
+                /* accountId */ 1L,
+                /* userId */ 1L,
+                /* isRedundantRouter */ false,
+                RedundantState.UNKNOWN,
+                /* haEnabled */ false,
+                /* stopPending */ false,
+                /* vpcId */ null);
+                routerUpdateComplete.setUpdateState(VirtualRouter.UpdateState.UPDATE_COMPLETE);
+        final DomainRouterVO routerUpdateInProgress = new DomainRouterVO(/* id */ 5L,
+                /* serviceOfferingId */ 1L,
+                /* elementId */ 0L,
+                "name",
+                /* templateId */0L,
+                HypervisorType.XenServer,
+                /* guestOSId */ 0L,
+                /* domainId */ 0L,
+                /* accountId */ 1L,
+                /* userId */ 1L,
+                /* isRedundantRouter */ false,
+                RedundantState.UNKNOWN,
+                /* haEnabled */ false,
+                /* stopPending */ false,
+                /* vpcId */ null);
+                routerUpdateInProgress.setUpdateState(VirtualRouter.UpdateState.UPDATE_IN_PROGRESS);
+        List<DomainRouterVO> routerList1=new ArrayList<>();
+        routerList1.add(routerUpdateComplete);
+        routerList1.add(routerNeedUpdateBackup);
+        routerList1.add(routerNeedUpdateMaster);
+        routerList1.add(routerUpdateInProgress);
+        List<DomainRouterVO> routerList2=new ArrayList<>();
+        routerList2.add(routerUpdateComplete);
+        routerList2.add(routerNeedUpdateBackup);
+        routerList2.add(routerNeedUpdateMaster);
+        List<DomainRouterVO> routerList3=new ArrayList<>();
+        routerList3.add(routerUpdateComplete);
+        routerList3.add(routerUpdateInProgress);
         when(_routerDao.getNextInSequence(Long.class, "id")).thenReturn(1L);
         when(_templateDao.findRoutingTemplate(HypervisorType.XenServer, "SystemVM Template (XenServer)")).thenReturn(new VMTemplateVO());
         when(_routerDao.persist(any(DomainRouterVO.class))).thenReturn(router);
         when(_routerDao.findById(router.getId())).thenReturn(router);
+        when(_routerDao.listByNetworkAndRole(1l, VirtualRouter.Role.VIRTUAL_ROUTER)).thenReturn(routerList1);
+        when(_routerDao.listByNetworkAndRole(2l, VirtualRouter.Role.VIRTUAL_ROUTER)).thenReturn(routerList2);
+        when(_routerDao.listByNetworkAndRole(3l, VirtualRouter.Role.VIRTUAL_ROUTER)).thenReturn(routerList1);
+        when(_routerDao.listByNetworkAndRole(6l, VirtualRouter.Role.VIRTUAL_ROUTER)).thenReturn(routerList3);
+        when(_networkDetailsDao.findDetail(1l, Network.updatingInSequence)).thenReturn(new NetworkDetailVO(1l,Network.updatingInSequence,"true",true));
+        when(_networkDetailsDao.findDetail(2l, Network.updatingInSequence)).thenReturn(new NetworkDetailVO(2l,Network.updatingInSequence,"true",true));
+        when(_networkDetailsDao.findDetail(6l, Network.updatingInSequence)).thenReturn(new NetworkDetailVO(2l,Network.updatingInSequence,"true",true));
+        when(_routerDao.persist(any(DomainRouterVO.class))).thenReturn(router);
     }
 
 }