diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java index f253ee32550..1de5dbc186e 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -963,6 +963,7 @@ public class VpcManagerImpl implements VpcManager, Manager{ throw new InvalidParameterValueException("Only networks of type " + GuestType.Isolated + " with service " + Service.SourceNat + " can be added as a part of VPC"); + } //3) No redundant router support diff --git a/server/test/com/cloud/vpc/VpcApiUnitTest.java b/server/test/com/cloud/vpc/VpcApiUnitTest.java index 8563b464501..a7500bc1877 100644 --- a/server/test/com/cloud/vpc/VpcApiUnitTest.java +++ b/server/test/com/cloud/vpc/VpcApiUnitTest.java @@ -49,7 +49,6 @@ public class VpcApiUnitTest extends TestCase{ MockComponentLocator _locator; VpcManager _vpcService; - @Override @Before public void setUp() throws Exception { @@ -94,53 +93,76 @@ public class VpcApiUnitTest extends TestCase{ try { _vpcService.validateNtkwOffForVpc(1, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1"); result = true; - s_logger.debug("Test1 passed, the offering is valid for vpc creation"); + s_logger.debug("Test passed: the offering is valid for vpc creation"); } catch (Exception ex) { - s_logger.warn("Test1 failed due to exc ", ex); + s_logger.warn("TEST FAILED due to exc ", ex); } //2) invalid offering - source nat is not included result = false; + String msg = null; try { _vpcService.validateNtkwOffForVpc(2, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1"); result = true; } catch (InvalidParameterValueException ex) { + msg = ex.getMessage(); } finally { if (!result) { - s_logger.debug("Test2 passed, can't use network offering without SourceNat service"); + s_logger.debug("Test passed: " + msg); } else { - s_logger.warn("Test2 failed, can't use network offering without SourceNat service"); + s_logger.warn("TEST FAILED, can't use network offering without SourceNat service"); } } //3) invalid offering - conserve mode is off result = false; + msg = null; try { _vpcService.validateNtkwOffForVpc(3, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1"); result = true; } catch (InvalidParameterValueException ex) { + msg = ex.getMessage(); } finally { if (!result) { - s_logger.debug("Test3 passed, can't use network offering without conserve mode = true"); + s_logger.debug("Test passed: " + msg); } else { - s_logger.warn("Test3 failed, can't use network offering without conserve mode = true"); + s_logger.warn("TEST FAILED, can't use network offering without conserve mode = true"); } } - //3) invalid offering - guest type shared + //4) invalid offering - guest type shared result = false; try { _vpcService.validateNtkwOffForVpc(4, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1"); result = true; - } catch (InvalidParameterValueException ex) { + } catch (InvalidParameterValueException ex) { + msg = ex.getMessage(); } finally { if (!result) { - s_logger.debug("Test4 passed, can't use network offering with guest type = Shared"); + s_logger.debug("Test passed: " + msg); } else { - s_logger.warn("Test4 failed, can't use network offering with guest type = Shared"); + s_logger.warn("TEST FAILED, can't use network offering with guest type = Shared"); } } + + //5) Invalid offering - no redundant router supportresult = false; + try { + _vpcService.validateNtkwOffForVpc(5, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1"); + result = true; + } catch (InvalidParameterValueException ex) { + msg = ex.getMessage(); + } finally { + if (!result) { + s_logger.debug("Test passed: " + msg); + } else { + s_logger.warn("TEST FAILED, can't use network offering with guest type = Shared"); + } + } + + //6) Only one network in the VPC can support LB service - positive scenario + + //7) Only one netowrk in the VPC can support LB service - negative scenario } } diff --git a/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java b/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java new file mode 100644 index 00000000000..0038403e0b4 --- /dev/null +++ b/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java @@ -0,0 +1,339 @@ +// Copyright 2012 Citrix Systems, Inc. Licensed under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. Citrix Systems, Inc. +// reserves all rights not expressly granted by 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. +// +// Automatically generated by addcopyright.py at 04/03/2012 +package com.cloud.vpc.dao; + +import java.util.List; +import java.util.Map; + +import javax.ejb.Local; + +import com.cloud.network.Network.GuestType; +import com.cloud.network.NetworkAccountVO; +import com.cloud.network.NetworkVO; +import com.cloud.network.Networks.TrafficType; +import com.cloud.network.dao.NetworkDao; +import com.cloud.utils.db.DB; +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchBuilder; + +@Local(value = NetworkDao.class) +@DB(txn = false) +public class MockNetworkDaoImpl extends GenericDaoBase implements NetworkDao{ + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listByOwner(long) + */ + @Override + public List listByOwner(long ownerId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listBy(long, long, long) + */ + @Override + public List listBy(long accountId, long offeringId, long dataCenterId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listBy(long, long, java.lang.String, boolean) + */ + @Override + public List listBy(long accountId, long dataCenterId, String cidr, boolean skipVpc) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listByZoneAndGuestType(long, long, com.cloud.network.Network.GuestType, java.lang.Boolean) + */ + @Override + public List listByZoneAndGuestType(long accountId, long dataCenterId, GuestType type, Boolean isSystem) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#persist(com.cloud.network.NetworkVO, boolean, java.util.Map) + */ + @Override + public NetworkVO persist(NetworkVO network, boolean gc, Map serviceProviderMap) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#createSearchBuilderForAccount() + */ + @Override + public SearchBuilder createSearchBuilderForAccount() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#getNetworksForOffering(long, long, long) + */ + @Override + public List getNetworksForOffering(long offeringId, long dataCenterId, long accountId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#getNextAvailableMacAddress(long) + */ + @Override + public String getNextAvailableMacAddress(long networkConfigId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listBy(long, long) + */ + @Override + public List listBy(long accountId, long networkId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#countByZoneAndUri(long, java.lang.String) + */ + @Override + public long countByZoneAndUri(long zoneId, String broadcastUri) { + // TODO Auto-generated method stub + return 0; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#countByZoneUriAndGuestType(long, java.lang.String, com.cloud.network.Network.GuestType) + */ + @Override + public long countByZoneUriAndGuestType(long zoneId, String broadcastUri, GuestType guestType) { + // TODO Auto-generated method stub + return 0; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listByZone(long) + */ + @Override + public List listByZone(long zoneId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#changeActiveNicsBy(long, int) + */ + @Override + public void changeActiveNicsBy(long networkId, int nicsCount) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#getActiveNicsIn(long) + */ + @Override + public int getActiveNicsIn(long networkId) { + // TODO Auto-generated method stub + return 0; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#findNetworksToGarbageCollect() + */ + @Override + public List findNetworksToGarbageCollect() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#clearCheckForGc(long) + */ + @Override + public void clearCheckForGc(long networkId) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listByZoneSecurityGroup(java.lang.Long) + */ + @Override + public List listByZoneSecurityGroup(Long zoneId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#addDomainToNetwork(long, long, java.lang.Boolean) + */ + @Override + public void addDomainToNetwork(long networkId, long domainId, Boolean subdomainAccess) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listByPhysicalNetwork(long) + */ + @Override + public List listByPhysicalNetwork(long physicalNetworkId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listSecurityGroupEnabledNetworks() + */ + @Override + public List listSecurityGroupEnabledNetworks() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listByPhysicalNetworkTrafficType(long, com.cloud.network.Networks.TrafficType) + */ + @Override + public List listByPhysicalNetworkTrafficType(long physicalNetworkId, TrafficType trafficType) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listBy(long, long, com.cloud.network.Network.GuestType, com.cloud.network.Networks.TrafficType) + */ + @Override + public List listBy(long accountId, long dataCenterId, GuestType type, TrafficType trafficType) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listByPhysicalNetworkAndProvider(long, java.lang.String) + */ + @Override + public List listByPhysicalNetworkAndProvider(long physicalNetworkId, String providerName) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#persistNetworkServiceProviders(long, java.util.Map) + */ + @Override + public void persistNetworkServiceProviders(long networkId, Map serviceProviderMap) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#update(java.lang.Long, com.cloud.network.NetworkVO, java.util.Map) + */ + @Override + public boolean update(Long networkId, NetworkVO network, Map serviceProviderMap) { + // TODO Auto-generated method stub + return false; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listByZoneAndTrafficType(long, com.cloud.network.Networks.TrafficType) + */ + @Override + public List listByZoneAndTrafficType(long zoneId, TrafficType trafficType) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#setCheckForGc(long) + */ + @Override + public void setCheckForGc(long networkId) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#getNetworkCountByNetworkOffId(long) + */ + @Override + public int getNetworkCountByNetworkOffId(long networkOfferingId) { + // TODO Auto-generated method stub + return 0; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#countNetworksUserCanCreate(long) + */ + @Override + public long countNetworksUserCanCreate(long ownerId) { + // TODO Auto-generated method stub + return 0; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listSourceNATEnabledNetworks(long, long, com.cloud.network.Network.GuestType) + */ + @Override + public List listSourceNATEnabledNetworks(long accountId, long dataCenterId, GuestType type) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#getNetworkCountByVpcId(long) + */ + @Override + public int getNetworkCountByVpcId(long vpcId) { + // TODO Auto-generated method stub + return 0; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#listByVpc(long) + */ + @Override + public List listByVpc(long vpcId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#getPrivateNetwork(java.lang.String, java.lang.String, long, long) + */ + @Override + public NetworkVO getPrivateNetwork(String broadcastUri, String cidr, long accountId, long zoneId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.dao.NetworkDao#countVpcNetworks(long) + */ + @Override + public long countVpcNetworks(long vpcId) { + // TODO Auto-generated method stub + return 0; + } + +} diff --git a/server/test/com/cloud/vpc/dao/MockNetworkOfferingDaoImpl.java b/server/test/com/cloud/vpc/dao/MockNetworkOfferingDaoImpl.java index 0595dcbd047..833bbd9d9df 100644 --- a/server/test/com/cloud/vpc/dao/MockNetworkOfferingDaoImpl.java +++ b/server/test/com/cloud/vpc/dao/MockNetworkOfferingDaoImpl.java @@ -98,19 +98,6 @@ public class MockNetworkOfferingDaoImpl extends GenericDaoBase c = vo.getClass(); - - try { - Field f = c.getDeclaredField("id"); - f.setAccessible(true); - f.setLong(vo, 1L); - } catch (NoSuchFieldException ex) { - s_logger.warn(ex); - return null; - } catch (IllegalAccessException ex) { - s_logger.warn(ex); - return null; - } } else if (id.longValue() == 2) { //invalid offering - source nat is not included vo = new NetworkOfferingVO("vpc", "vpc", TrafficType.Guest, false, true, null, null, false, @@ -123,9 +110,36 @@ public class MockNetworkOfferingDaoImpl extends GenericDaoBase c = voToReturn.getClass(); + try { + Field f = c.getDeclaredField("id"); + f.setAccessible(true); + f.setLong(voToReturn, id); + } catch (NoSuchFieldException ex) { + s_logger.warn(ex); + return null; + } catch (IllegalAccessException ex) { + s_logger.warn(ex); + return null; + } + + return voToReturn; + } } diff --git a/server/test/com/cloud/vpc/dao/MockNetworkOfferingServiceMapDaoImpl.java b/server/test/com/cloud/vpc/dao/MockNetworkOfferingServiceMapDaoImpl.java index 292b913091f..ac913590fb1 100644 --- a/server/test/com/cloud/vpc/dao/MockNetworkOfferingServiceMapDaoImpl.java +++ b/server/test/com/cloud/vpc/dao/MockNetworkOfferingServiceMapDaoImpl.java @@ -14,9 +14,7 @@ package com.cloud.vpc.dao; import javax.ejb.Local; -import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; -import com.cloud.offerings.NetworkOfferingServiceMapVO; import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; import com.cloud.offerings.dao.NetworkOfferingServiceMapDaoImpl; import com.cloud.utils.db.DB; @@ -26,20 +24,12 @@ import com.cloud.utils.db.DB; public class MockNetworkOfferingServiceMapDaoImpl extends NetworkOfferingServiceMapDaoImpl{ @Override - public NetworkOfferingServiceMapVO findById(Long id) { - NetworkOfferingServiceMapVO vo = null; - System.out.println("hello alena"); - if (id.longValue() == 0) { - vo = new NetworkOfferingServiceMapVO(1, Service.SourceNat, Provider.VPCVirtualRouter); - } else if (id.longValue() == 2) { - vo = new NetworkOfferingServiceMapVO(2, Service.Firewall, Provider.VirtualRouter); - } else if (id.longValue() == 3) { - vo = new NetworkOfferingServiceMapVO(3, Service.SourceNat, Provider.VPCVirtualRouter); - } else if (id.longValue() == 4) { - vo = new NetworkOfferingServiceMapVO(4, Service.SourceNat, Provider.VPCVirtualRouter); + public boolean areServicesSupportedByNetworkOffering(long networkOfferingId, Service... services) { + if (services.length > 0 && services[0] == Service.SourceNat && networkOfferingId != 2) { + return true; + } else if (services.length > 0 && services[0] == Service.Lb && networkOfferingId != 2) { + return true; } - - return vo; + return false; } - } diff --git a/server/test/com/cloud/vpc/dao/MockNetworkServiceMapDaoImpl.java b/server/test/com/cloud/vpc/dao/MockNetworkServiceMapDaoImpl.java index 6b6d9fb1de3..c4ac17d732f 100644 --- a/server/test/com/cloud/vpc/dao/MockNetworkServiceMapDaoImpl.java +++ b/server/test/com/cloud/vpc/dao/MockNetworkServiceMapDaoImpl.java @@ -89,20 +89,4 @@ public class MockNetworkServiceMapDaoImpl extends GenericDaoBase - +