CLOUDSTACK-8751 Added tests

This commit is contained in:
Bharat Kumar 2015-08-20 17:21:20 +05:30 committed by Bharat Kumar
parent 75f89c7676
commit f416332994
1 changed files with 150 additions and 1 deletions

View File

@ -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);
}
}