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/08 01:41:18 UTC
[31/54] [abbrv] 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-quick-view-v2
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 {