Summary: Unittest for nicira plugin

More unittests for the Guru

Add unittests for the Element

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

Branch: refs/heads/ui-plugins
Commit: 282eb5fcf514cb4e885cf30ec9a31156f8fb8c9f
Parents: 0084748
Author: Hugo Trippaers <[email protected]>
Authored: Thu Jan 3 11:50:30 2013 +0100
Committer: Hugo Trippaers <[email protected]>
Committed: Thu Jan 3 11:57:14 2013 +0100

----------------------------------------------------------------------
 .../network/element/NiciraNvpElementTest.java      |  119 +++++++++++++++
 .../guru/NiciraNvpGuestNetworkGuruTest.java        |  114 ++++++++++++++
 2 files changed, 233 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/282eb5fc/plugins/network-elements/nicira-nvp/test/com/cloud/network/element/NiciraNvpElementTest.java
----------------------------------------------------------------------
diff --git 
a/plugins/network-elements/nicira-nvp/test/com/cloud/network/element/NiciraNvpElementTest.java
 
b/plugins/network-elements/nicira-nvp/test/com/cloud/network/element/NiciraNvpElementTest.java
new file mode 100644
index 0000000..acfd3bc
--- /dev/null
+++ 
b/plugins/network-elements/nicira-nvp/test/com/cloud/network/element/NiciraNvpElementTest.java
@@ -0,0 +1,119 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you 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.cloud.network.element;
+
+import java.util.Collections;
+
+import javax.naming.ConfigurationException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.cloud.deploy.DeployDestination;
+import com.cloud.domain.Domain;
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.network.Network;
+import com.cloud.network.Network.GuestType;
+import com.cloud.network.Network.Provider;
+import com.cloud.network.Network.Service;
+import com.cloud.network.NetworkManager;
+import com.cloud.network.Networks.BroadcastDomainType;
+import com.cloud.network.Networks.TrafficType;
+import com.cloud.network.dao.NetworkServiceMapDao;
+import com.cloud.offering.NetworkOffering;
+import com.cloud.resource.ResourceManager;
+import com.cloud.user.Account;
+import com.cloud.vm.ReservationContext;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+public class NiciraNvpElementTest {
+       
+       NiciraNvpElement _element = new NiciraNvpElement();
+       NetworkManager _networkManager = mock(NetworkManager.class);
+       NetworkServiceMapDao _ntwkSrvcDao = mock (NetworkServiceMapDao.class);
+       
+       @Before
+       public void setUp() throws ConfigurationException {
+               _element._resourceMgr = mock(ResourceManager.class);
+               _element._networkManager = _networkManager;
+               _element._ntwkSrvcDao = _ntwkSrvcDao;
+               
+               // Standard responses
+               when(_networkManager.isProviderForNetwork(Provider.NiciraNvp, 
42L)).thenReturn(true);
+               
+               _element.configure("NiciraNvpTestElement", Collections.<String, 
Object> emptyMap());
+       }
+
+       @Test
+       public void canHandleTest() {
+               Network net = mock(Network.class);
+               
when(net.getBroadcastDomainType()).thenReturn(BroadcastDomainType.Lswitch);
+               when(net.getId()).thenReturn(42L);
+               
+               when(_ntwkSrvcDao.canProviderSupportServiceInNetwork(42L, 
Service.Connectivity, Provider.NiciraNvp)).thenReturn(true);  
+               //  Golden path
+               assertTrue(_element.canHandle(net, Service.Connectivity));
+               
+               
when(net.getBroadcastDomainType()).thenReturn(BroadcastDomainType.Vlan);
+               // Only broadcastdomaintype lswitch is supported
+               assertFalse(_element.canHandle(net, Service.Connectivity));
+               
+               
when(net.getBroadcastDomainType()).thenReturn(BroadcastDomainType.Lswitch);
+               when(_ntwkSrvcDao.canProviderSupportServiceInNetwork(42L, 
Service.Connectivity, Provider.NiciraNvp)).thenReturn(false);
+               // No nvp provider in the network
+               assertFalse(_element.canHandle(net, Service.Connectivity));
+               
+               when(_networkManager.isProviderForNetwork(Provider.NiciraNvp, 
42L)).thenReturn(false);
+               when(_ntwkSrvcDao.canProviderSupportServiceInNetwork(42L, 
Service.Connectivity, Provider.NiciraNvp)).thenReturn(true);
+               // NVP provider does not provide Connectivity for this network
+               assertFalse(_element.canHandle(net, Service.Connectivity));
+               
+               when(_networkManager.isProviderForNetwork(Provider.NiciraNvp, 
42L)).thenReturn(true);
+               // Only service Connectivity is supported
+               assertFalse(_element.canHandle(net, Service.Dhcp));
+               
+       }
+       
+       @Test
+       public void implementTest() throws ConcurrentOperationException, 
ResourceUnavailableException, InsufficientCapacityException {
+               Network network = mock(Network.class);
+               
when(network.getBroadcastDomainType()).thenReturn(BroadcastDomainType.Lswitch);
+               when(network.getId()).thenReturn(42L);
+               
+               NetworkOffering offering = mock(NetworkOffering.class);
+               when(offering.getId()).thenReturn(42L);
+               when(offering.getTrafficType()).thenReturn(TrafficType.Guest);
+               when(offering.getGuestType()).thenReturn(GuestType.Isolated);
+               
+               DeployDestination dest = mock(DeployDestination.class);
+               
+               Domain dom = mock(Domain.class);
+               when(dom.getName()).thenReturn("domain");
+               Account acc = mock(Account.class);
+               when(acc.getAccountName()).thenReturn("accountname");
+               ReservationContext context = mock(ReservationContext.class);
+               when(context.getDomain()).thenReturn(dom);
+               when(context.getAccount()).thenReturn(acc);
+               
+               //assertTrue(_element.implement(network, offering, dest, 
context));
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/282eb5fc/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java
----------------------------------------------------------------------
diff --git 
a/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java
 
b/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java
index f8d9652..e37b2f4 100644
--- 
a/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java
+++ 
b/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java
@@ -272,12 +272,126 @@ public class NiciraNvpGuestNetworkGuruTest {
                
                CreateLogicalSwitchAnswer answer = 
mock(CreateLogicalSwitchAnswer.class);
                when(answer.getResult()).thenReturn(true);
+               when(answer.getLogicalSwitchUuid()).thenReturn("aaaaa");
                when(agentmgr.easySend(eq(42L), 
(Command)any())).thenReturn(answer);            
 
                Network implementednetwork = guru.implement(network, offering, 
dest, res);
                assertTrue(implementednetwork != null);         
                verify(agentmgr, times(1)).easySend(eq(42L), (Command)any());
        }
+
+       @Test
+       public void testImplementWithCidr() throws 
InsufficientVirtualNetworkCapcityException {
+               PhysicalNetworkVO physnet = mock(PhysicalNetworkVO.class);
+               when(physnetdao.findById((Long) any())).thenReturn(physnet);
+               
when(physnet.getIsolationMethods()).thenReturn(Arrays.asList(new String[] { 
"STT" }));
+               when(physnet.getId()).thenReturn(42L);
+               
+               NiciraNvpDeviceVO device = mock(NiciraNvpDeviceVO.class);
+               
when(nvpdao.listByPhysicalNetwork(42L)).thenReturn(Arrays.asList(new 
NiciraNvpDeviceVO[] { device }));
+               when(device.getId()).thenReturn(1L);
+               
+               NetworkOffering offering = mock(NetworkOffering.class);
+               when(offering.getId()).thenReturn(42L);
+               when(offering.getTrafficType()).thenReturn(TrafficType.Guest);
+               when(offering.getGuestType()).thenReturn(GuestType.Isolated);
+               
+               when(nosd.areServicesSupportedByNetworkOffering(42L, 
Service.Connectivity)).thenReturn(false);
+               
+               DeploymentPlan plan = mock(DeploymentPlan.class);
+               
+               NetworkVO network = mock(NetworkVO.class);
+               when(network.getName()).thenReturn("testnetwork");
+               when(network.getState()).thenReturn(State.Implementing);
+               when(network.getGateway()).thenReturn("10.1.1.1");
+               when(network.getCidr()).thenReturn("10.1.1.0/24");
+               
+               
+               DeployDestination dest = mock(DeployDestination.class);
+               
+               DataCenter dc = mock(DataCenter.class);
+               when(dest.getDataCenter()).thenReturn(dc);
+               
+               HostVO niciraHost = mock(HostVO.class);
+               when(hostdao.findById(anyLong())).thenReturn(niciraHost);
+               
when(niciraHost.getDetail("transportzoneuuid")).thenReturn("aaaa");
+               
when(niciraHost.getDetail("transportzoneisotype")).thenReturn("stt");
+               when(niciraHost.getId()).thenReturn(42L);
+               
+               when(netmgr.findPhysicalNetworkId(anyLong(), (String) any(), 
(TrafficType) any())).thenReturn(42L);
+               Domain dom = mock(Domain.class);
+               when(dom.getName()).thenReturn("domain");
+               Account acc = mock(Account.class);
+               when(acc.getAccountName()).thenReturn("accountname");
+               ReservationContext res = mock(ReservationContext.class);
+               when(res.getDomain()).thenReturn(dom);
+               when(res.getAccount()).thenReturn(acc);
+               
+               CreateLogicalSwitchAnswer answer = 
mock(CreateLogicalSwitchAnswer.class);
+               when(answer.getResult()).thenReturn(true);
+               when(answer.getLogicalSwitchUuid()).thenReturn("aaaaa");
+               when(agentmgr.easySend(eq(42L), 
(Command)any())).thenReturn(answer);            
+
+               Network implementednetwork = guru.implement(network, offering, 
dest, res);
+               assertTrue(implementednetwork != null);         
+               assertTrue(implementednetwork.getCidr().equals("10.1.1.0/24"));
+               assertTrue(implementednetwork.getGateway().equals("10.1.1.1"));
+               verify(agentmgr, times(1)).easySend(eq(42L), (Command)any());
+       }
+       
+       @Test
+       public void testImplementURIException() throws 
InsufficientVirtualNetworkCapcityException {
+               PhysicalNetworkVO physnet = mock(PhysicalNetworkVO.class);
+               when(physnetdao.findById((Long) any())).thenReturn(physnet);
+               
when(physnet.getIsolationMethods()).thenReturn(Arrays.asList(new String[] { 
"STT" }));
+               when(physnet.getId()).thenReturn(42L);
+               
+               NiciraNvpDeviceVO device = mock(NiciraNvpDeviceVO.class);
+               
when(nvpdao.listByPhysicalNetwork(42L)).thenReturn(Arrays.asList(new 
NiciraNvpDeviceVO[] { device }));
+               when(device.getId()).thenReturn(1L);
+               
+               NetworkOffering offering = mock(NetworkOffering.class);
+               when(offering.getId()).thenReturn(42L);
+               when(offering.getTrafficType()).thenReturn(TrafficType.Guest);
+               when(offering.getGuestType()).thenReturn(GuestType.Isolated);
+               
+               when(nosd.areServicesSupportedByNetworkOffering(42L, 
Service.Connectivity)).thenReturn(false);
+               
+               DeploymentPlan plan = mock(DeploymentPlan.class);
+               
+               NetworkVO network = mock(NetworkVO.class);
+               when(network.getName()).thenReturn("testnetwork");
+               when(network.getState()).thenReturn(State.Implementing);
+               
+               DeployDestination dest = mock(DeployDestination.class);
+               
+               DataCenter dc = mock(DataCenter.class);
+               when(dest.getDataCenter()).thenReturn(dc);
+               
+               HostVO niciraHost = mock(HostVO.class);
+               when(hostdao.findById(anyLong())).thenReturn(niciraHost);
+               
when(niciraHost.getDetail("transportzoneuuid")).thenReturn("aaaa");
+               
when(niciraHost.getDetail("transportzoneisotype")).thenReturn("stt");
+               when(niciraHost.getId()).thenReturn(42L);
+               
+               when(netmgr.findPhysicalNetworkId(anyLong(), (String) any(), 
(TrafficType) any())).thenReturn(42L);
+               Domain dom = mock(Domain.class);
+               when(dom.getName()).thenReturn("domain");
+               Account acc = mock(Account.class);
+               when(acc.getAccountName()).thenReturn("accountname");
+               ReservationContext res = mock(ReservationContext.class);
+               when(res.getDomain()).thenReturn(dom);
+               when(res.getAccount()).thenReturn(acc);
+               
+               CreateLogicalSwitchAnswer answer = 
mock(CreateLogicalSwitchAnswer.class);
+               when(answer.getResult()).thenReturn(true);
+               //when(answer.getLogicalSwitchUuid()).thenReturn("aaaaa");
+               when(agentmgr.easySend(eq(42L), 
(Command)any())).thenReturn(answer);            
+
+               Network implementednetwork = guru.implement(network, offering, 
dest, res);
+               assertTrue(implementednetwork == null);         
+               verify(agentmgr, times(1)).easySend(eq(42L), (Command)any());
+       }
        
        @Test
        public void testShutdown() throws 
InsufficientVirtualNetworkCapcityException, URISyntaxException {

Reply via email to