Package com.vmware.bdd.service.resmgmt.impl

Source Code of com.vmware.bdd.service.resmgmt.impl.ResourceInitializerServiceTest

/***************************************************************************
* Copyright (c) 2012-2014 VMware, Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package com.vmware.bdd.service.resmgmt.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import mockit.Mock;
import mockit.MockUp;
import mockit.Tested;

import org.apache.log4j.Logger;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import com.vmware.bdd.apitypes.Datastore.DatastoreType;
import com.vmware.bdd.dal.IDatastoreDAO;
import com.vmware.bdd.dal.INetworkDAO;
import com.vmware.bdd.dal.IResourcePoolDAO;
import com.vmware.bdd.dal.IServerInfoDAO;
import com.vmware.bdd.entity.NetworkEntity;
import com.vmware.bdd.entity.ServerInfoEntity;
import com.vmware.bdd.entity.VcDatastoreEntity;
import com.vmware.bdd.entity.VcResourcePoolEntity;
import com.vmware.bdd.service.resmgmt.IDatastoreService;
import com.vmware.bdd.service.resmgmt.INetworkService;
import com.vmware.bdd.service.resmgmt.IResourceInitializerService;
import com.vmware.bdd.service.resmgmt.IResourcePoolService;

/**
* @author Jarred Li
* @since 0.8
* @version 0.8
*
*/
public class ResourceInitializerServiceTest extends BaseResourceTest{

   private static final Logger logger = Logger
         .getLogger(ResourceInitializerServiceTest.class);

   @Tested
   private ResourceInitializerService service;

   private IServerInfoDAO serverInfoDao;
   private IResourcePoolService rpSvc;
   private IDatastoreService dsSvc;
   private INetworkService networkSvc;

   @BeforeClass
   public void beforeClass() {
      service = new ResourceInitializerService();
   }


   @Test(groups = { "res-mgmt"})
   public void isResoruceInitialized() {
      serverInfoDao = new MockUp<IServerInfoDAO>() {
         @Mock
         List<ServerInfoEntity> findAll() {
            List<ServerInfoEntity> serverInfos =
                  new ArrayList<ServerInfoEntity>();
            ServerInfoEntity serverInfo = new ServerInfoEntity();
            serverInfo.setResourceInitialized(true);
            serverInfos.add(serverInfo);
            return serverInfos;
         }
      }.getMockInstance();
      service.setServerInfoDao(serverInfoDao);
      boolean result = service.isResourceInitialized();
      Assert.assertEquals(result, true);
   }

   @Test(groups = { "res-mgmt"})
   public void isResoruceInitialized_WithoutInitialization() {
      serverInfoDao = new MockUp<IServerInfoDAO>() {
         @Mock
         List<ServerInfoEntity> findAll() {
            List<ServerInfoEntity> serverInfos =
                  new ArrayList<ServerInfoEntity>();
            ServerInfoEntity serverInfo = new ServerInfoEntity();
            serverInfo.setResourceInitialized(false);
            serverInfos.add(serverInfo);
            return serverInfos;
         }
      }.getMockInstance();
      service.setServerInfoDao(serverInfoDao);
      boolean result = service.isResourceInitialized();
      Assert.assertEquals(result, false);
   }

   @Test(groups = { "res-mgmt"})
   public void isResoruceInitialized_WithoutInitializationEntity() {
      serverInfoDao = new MockUp<IServerInfoDAO>() {
         @Mock
         List<ServerInfoEntity> findAll() {
            List<ServerInfoEntity> serverInfos =
                  new ArrayList<ServerInfoEntity>();
            return serverInfos;
         }
      }.getMockInstance();
      service.setServerInfoDao(serverInfoDao);
      boolean result = service.isResourceInitialized();
      Assert.assertEquals(result, false);
   }


   @Test(groups = { "res-mgmt"})
   public void updateServerInfo() {
      serverInfoDao = new MockUp<IServerInfoDAO>() {
         @Mock
         List<ServerInfoEntity> findAll() {
            List<ServerInfoEntity> serverInfos =
                  new ArrayList<ServerInfoEntity>();
            ServerInfoEntity serverInfo = new ServerInfoEntity();
            serverInfo.setResourceInitialized(false);
            serverInfos.add(serverInfo);
            return serverInfos;
         }

         @Mock(invocations = 1)
         void update(ServerInfoEntity serverInfo) {
            logger.info("mock update server info");
         }

      }.getMockInstance();
      service.setServerInfoDao(serverInfoDao);
      service.updateOrInsertServerInfo();
   }

   @Test(groups = { "res-mgmt"})
   public void insertServerInfo() {
      serverInfoDao = new MockUp<IServerInfoDAO>() {
         @Mock
         List<ServerInfoEntity> findAll() {
            List<ServerInfoEntity> serverInfos =
                  new ArrayList<ServerInfoEntity>();
            return serverInfos;
         }

         @Mock(invocations = 1)
         void insert(ServerInfoEntity serverInfo) {
            logger.info("mock insert server info");
         }

      }.getMockInstance();
      service.setServerInfoDao(serverInfoDao);
      service.updateOrInsertServerInfo();
   }

   @Test(groups = { "res-mgmt"})
   public void noOperationForServerInfo() {
      serverInfoDao = new MockUp<IServerInfoDAO>() {
         @Mock
         List<ServerInfoEntity> findAll() {
            List<ServerInfoEntity> serverInfos =
                  new ArrayList<ServerInfoEntity>();
            ServerInfoEntity serverInfo = new ServerInfoEntity();
            serverInfo.setResourceInitialized(true);
            serverInfos.add(serverInfo);
            return serverInfos;
         }

         @Mock(invocations = 0)
         void insert(ServerInfoEntity serverInfo) {
            logger.info("mock insert server info");
         }
      }.getMockInstance();
      service.setServerInfoDao(serverInfoDao);
      service.updateOrInsertServerInfo();
   }

   @Test(groups = { "res-mgmt"})
   public void addResourceIntoDB() {
      rpSvc = new MockUp<IResourcePoolService>() {
         @Mock
         void addResourcePool(String rpName, String vcClusterName,
               String vcResourcePool) {
            logger.info("mock rp service to add rp");
            Assert.assertEquals(rpName, "defaultRP");
            Assert.assertEquals(vcClusterName, "testCluster");
            Assert.assertEquals(vcResourcePool, "serengetiRP");
         }
      }.getMockInstance();
      dsSvc = new MockUp<IDatastoreService>() {
         @Mock
         void addDatastores(String name, DatastoreType type, List<String> spec, boolean regex) {
            logger.info("mock datastore service to add ds");
            Assert.assertEquals(name, "defaultDSShared");
            Assert.assertEquals(type, DatastoreType.SHARED);
            Assert.assertEquals(spec.size(), 1);
            Assert.assertEquals(regex, false);
         }
      }.getMockInstance();
      networkSvc = new MockUp<INetworkService>() {
         @Mock
         NetworkEntity addDhcpNetwork(final String name, final String portGroup) {
            Assert.assertEquals(name, "defaultNetwork");
            Assert.assertEquals(portGroup, "serengetiNet");
            return new NetworkEntity();
         }
      }.getMockInstance();
      service.setRpSvc(rpSvc);
      service.setDsSvc(dsSvc);
      service.setNetworkSvc(networkSvc);
      Map<DatastoreType, List<String>> dsMaps = new HashMap<DatastoreType, List<String>>();
      List<String> dsNames = new ArrayList<String>();
      dsNames.add("datastore1");
      dsMaps.put(DatastoreType.SHARED, dsNames);
      service.addResourceIntoDB("testCluster", "serengetiRP", "serengetiNet",
            dsMaps);
   }

   @Test(groups={"res-mgmt","dependsOnVC","dependsOnDB"})
   public void initResource(){
      super.init();
      IResourceInitializerService svc = ctx.getBean(IResourceInitializerService.class);

      IResourcePoolDAO rpDao = ctx.getBean(IResourcePoolDAO.class);
      IDatastoreDAO dsDao = ctx.getBean(IDatastoreDAO.class);
      INetworkDAO networkDao = ctx.getBean(INetworkDAO.class);
      VcResourcePoolEntity rpEntity = rpDao.findByName(ResourceInitializerService.DEFAULT_RP);
      if(rpEntity != null){
         rpDao.delete(rpEntity);
      }
      List<VcDatastoreEntity> dss = dsDao.findByName(ResourceInitializerService.DEFAULT_DS_SHARED);
      if(dss != null && dss.size() > 0){
         for(VcDatastoreEntity ds : dss){
            dsDao.delete(ds);
         }
      }
      dss = dsDao.findByName(ResourceInitializerService.DEFAULT_DS_LOCAL);
      if(dss != null && dss.size() > 0){
         for(VcDatastoreEntity ds : dss){
            dsDao.delete(ds);
         }
      }
      NetworkEntity network = networkDao.findNetworkByName(ResourceInitializerService.DEFAULT_NETWORK);
      if(network != null){
         networkDao.delete(network);
      }
      svc.initResource();

   }

}
TOP

Related Classes of com.vmware.bdd.service.resmgmt.impl.ResourceInitializerServiceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.