You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/01/04 23:47:38 UTC

[7/18] git commit: Summary: Unittest for nicira plugin

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 <ht...@schubergphilis.com>
Authored: Thu Jan 3 11:50:30 2013 +0100
Committer: Hugo Trippaers <ht...@schubergphilis.com>
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 {