You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by re...@apache.org on 2015/12/07 21:19:00 UTC

[5/7] git commit: updated refs/heads/4.6 to 6d3fffa

CLOUDSTACK-9106 - Adds a test to cover the changes in the applyVpnUsers() method

   - Changed the NetworkTopologyContext class just to make the private member accessible from the test
   - Added a test class to cover the positive scenario of the VpcVirtualRouterElementTest.applyVpnUsers() method.
   - Covering when there is either no VPC or no routers.


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

Branch: refs/heads/4.6
Commit: 5973f4ea77ed3328e74c79069dcf5b1eff2f049f
Parents: 13eb789
Author: Wilder Rodrigues <wr...@schubergphilis.com>
Authored: Mon Dec 7 13:42:29 2015 +0100
Committer: Wilder Rodrigues <wr...@schubergphilis.com>
Committed: Mon Dec 7 13:42:29 2015 +0100

----------------------------------------------------------------------
 .../topology/NetworkTopologyContext.java        |  16 ++
 .../element/VpcVirtualRouterElementTest.java    | 188 +++++++++++++++++++
 2 files changed, 204 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5973f4ea/server/src/org/apache/cloudstack/network/topology/NetworkTopologyContext.java
----------------------------------------------------------------------
diff --git a/server/src/org/apache/cloudstack/network/topology/NetworkTopologyContext.java b/server/src/org/apache/cloudstack/network/topology/NetworkTopologyContext.java
index 8ddc836..473770c 100644
--- a/server/src/org/apache/cloudstack/network/topology/NetworkTopologyContext.java
+++ b/server/src/org/apache/cloudstack/network/topology/NetworkTopologyContext.java
@@ -49,4 +49,20 @@ public class NetworkTopologyContext {
         }
         return _flyweight.get(dc.getNetworkType());
     }
+
+    /**
+     * Method used for tests purpose only. Please do not use it to set the AdvanceNetworkTopology and it is managed by Spring.
+     * @param advancedNetworkTopology
+     */
+    public void setAdvancedNetworkTopology(final AdvancedNetworkTopology advancedNetworkTopology) {
+        _advancedNetworkTopology = advancedNetworkTopology;
+    }
+
+    /**
+     *  Method used for tests purpose only. Please do not use it to set the BasicNetworkTopology and it is managed by Spring.
+     * @param basicNetworkTopology
+     */
+    public void setBasicNetworkTopology(final BasicNetworkTopology basicNetworkTopology) {
+        _basicNetworkTopology = basicNetworkTopology;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5973f4ea/server/test/com/cloud/network/element/VpcVirtualRouterElementTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/network/element/VpcVirtualRouterElementTest.java b/server/test/com/cloud/network/element/VpcVirtualRouterElementTest.java
new file mode 100644
index 0000000..d044f5b
--- /dev/null
+++ b/server/test/com/cloud/network/element/VpcVirtualRouterElementTest.java
@@ -0,0 +1,188 @@
+// 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 static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.cloudstack.network.topology.AdvancedNetworkTopology;
+import org.apache.cloudstack.network.topology.BasicNetworkTopology;
+import org.apache.cloudstack.network.topology.NetworkTopologyContext;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import com.cloud.dc.DataCenterVO;
+import com.cloud.dc.dao.DataCenterDao;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.network.RemoteAccessVpn;
+import com.cloud.network.VpnUser;
+import com.cloud.network.router.VpcVirtualNetworkApplianceManagerImpl;
+import com.cloud.network.vpc.Vpc;
+import com.cloud.utils.db.EntityManager;
+import com.cloud.vm.DomainRouterVO;
+import com.cloud.vm.dao.DomainRouterDao;
+
+@RunWith(MockitoJUnitRunner.class)
+public class VpcVirtualRouterElementTest {
+    @Mock
+    DataCenterDao _dcDao;
+    @Mock private DomainRouterDao _routerDao;
+
+    @Mock
+    EntityManager _entityMgr;
+
+    @Mock
+    NetworkTopologyContext networkTopologyContext;
+
+    @InjectMocks
+    VpcVirtualNetworkApplianceManagerImpl _vpcRouterMgr;
+
+    @InjectMocks
+    VpcVirtualRouterElement vpcVirtualRouterElement;
+
+
+    @Test
+    public void testApplyVpnUsers() {
+        vpcVirtualRouterElement._vpcRouterMgr = _vpcRouterMgr;
+
+        final AdvancedNetworkTopology advancedNetworkTopology = Mockito.mock(AdvancedNetworkTopology.class);
+        final BasicNetworkTopology basicNetworkTopology = Mockito.mock(BasicNetworkTopology.class);
+
+        networkTopologyContext.setAdvancedNetworkTopology(advancedNetworkTopology);
+        networkTopologyContext.setBasicNetworkTopology(basicNetworkTopology);
+        networkTopologyContext.init();
+
+        final Vpc vpc = Mockito.mock(Vpc.class);
+        final DataCenterVO dataCenterVO = Mockito.mock(DataCenterVO.class);
+        final RemoteAccessVpn remoteAccessVpn = Mockito.mock(RemoteAccessVpn.class);
+        final DomainRouterVO domainRouterVO1 = Mockito.mock(DomainRouterVO.class);
+        final DomainRouterVO domainRouterVO2 = Mockito.mock(DomainRouterVO.class);
+        final VpnUser vpnUser1 = Mockito.mock(VpnUser.class);
+        final VpnUser vpnUser2 = Mockito.mock(VpnUser.class);
+
+        final List<VpnUser> users = new ArrayList<VpnUser>();
+        users.add(vpnUser1);
+        users.add(vpnUser2);
+
+        final List<DomainRouterVO> routers = new ArrayList<DomainRouterVO>();
+        routers.add(domainRouterVO1);
+        routers.add(domainRouterVO2);
+
+        final Long vpcId = new Long(1l);
+        final Long zoneId = new Long(1l);
+
+        when(remoteAccessVpn.getVpcId()).thenReturn(vpcId);
+        when(_vpcRouterMgr.getVpcRouters(vpcId)).thenReturn(routers);
+        when(_entityMgr.findById(Vpc.class, vpcId)).thenReturn(vpc);
+        when(vpc.getZoneId()).thenReturn(zoneId);
+        when(_dcDao.findById(zoneId)).thenReturn(dataCenterVO);
+        when(networkTopologyContext.retrieveNetworkTopology(dataCenterVO)).thenReturn(advancedNetworkTopology);
+
+        try {
+            when(advancedNetworkTopology.applyVpnUsers(remoteAccessVpn, users, domainRouterVO1)).thenReturn(new String[]{"user1", "user2"});
+            when(advancedNetworkTopology.applyVpnUsers(remoteAccessVpn, users, domainRouterVO2)).thenReturn(new String[]{"user3", "user4"});
+        } catch (final ResourceUnavailableException e) {
+            fail(e.getMessage());
+        }
+
+        try {
+            final String [] results = vpcVirtualRouterElement.applyVpnUsers(remoteAccessVpn, users);
+
+            assertNotNull(results);
+            assertEquals(results[0], "user1");
+            assertEquals(results[1], "user2");
+            assertEquals(results[2], "user3");
+            assertEquals(results[3], "user4");
+        } catch (final ResourceUnavailableException e) {
+            fail(e.getMessage());
+        }
+
+        verify(remoteAccessVpn, times(1)).getVpcId();
+        verify(vpc, times(1)).getZoneId();
+        verify(_dcDao, times(1)).findById(zoneId);
+        verify(networkTopologyContext, times(1)).retrieveNetworkTopology(dataCenterVO);
+    }
+
+    @Test
+    public void testApplyVpnUsersException1() {
+        vpcVirtualRouterElement._vpcRouterMgr = _vpcRouterMgr;
+
+        final AdvancedNetworkTopology advancedNetworkTopology = Mockito.mock(AdvancedNetworkTopology.class);
+        final BasicNetworkTopology basicNetworkTopology = Mockito.mock(BasicNetworkTopology.class);
+
+        networkTopologyContext.setAdvancedNetworkTopology(advancedNetworkTopology);
+        networkTopologyContext.setBasicNetworkTopology(basicNetworkTopology);
+        networkTopologyContext.init();
+
+        final RemoteAccessVpn remoteAccessVpn = Mockito.mock(RemoteAccessVpn.class);
+        final List<VpnUser> users = new ArrayList<VpnUser>();
+
+        when(remoteAccessVpn.getVpcId()).thenReturn(null);
+
+        try {
+            final String [] results = vpcVirtualRouterElement.applyVpnUsers(remoteAccessVpn, users);
+            assertNull(results);
+        } catch (final ResourceUnavailableException e) {
+            fail(e.getMessage());
+        }
+
+        verify(remoteAccessVpn, times(1)).getVpcId();
+    }
+
+    @Test
+    public void testApplyVpnUsersException2() {
+        vpcVirtualRouterElement._vpcRouterMgr = _vpcRouterMgr;
+
+        final AdvancedNetworkTopology advancedNetworkTopology = Mockito.mock(AdvancedNetworkTopology.class);
+        final BasicNetworkTopology basicNetworkTopology = Mockito.mock(BasicNetworkTopology.class);
+
+        networkTopologyContext.setAdvancedNetworkTopology(advancedNetworkTopology);
+        networkTopologyContext.setBasicNetworkTopology(basicNetworkTopology);
+        networkTopologyContext.init();
+
+        final RemoteAccessVpn remoteAccessVpn = Mockito.mock(RemoteAccessVpn.class);
+
+        final List<VpnUser> users = new ArrayList<VpnUser>();
+
+        final Long vpcId = new Long(1l);
+
+        when(remoteAccessVpn.getVpcId()).thenReturn(vpcId);
+        when(_vpcRouterMgr.getVpcRouters(vpcId)).thenReturn(null);
+
+        try {
+            final String [] results = vpcVirtualRouterElement.applyVpnUsers(remoteAccessVpn, users);
+
+            assertNull(results);
+        } catch (final ResourceUnavailableException e) {
+            fail(e.getMessage());
+        }
+
+        verify(remoteAccessVpn, times(1)).getVpcId();
+    }
+}
\ No newline at end of file