| // 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 org.apache.cloudstack.region.gslb; |
| |
| import static org.mockito.Matchers.any; |
| import static org.mockito.Matchers.anyInt; |
| import static org.mockito.Matchers.anyLong; |
| import static org.mockito.Mockito.when; |
| |
| import java.lang.reflect.Field; |
| import java.util.ArrayList; |
| import java.util.List; |
| import java.util.UUID; |
| |
| import com.cloud.user.User; |
| import junit.framework.Assert; |
| import junit.framework.TestCase; |
| |
| import org.apache.log4j.Logger; |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.mockito.Mockito; |
| |
| import org.apache.cloudstack.api.command.user.region.ha.gslb.AssignToGlobalLoadBalancerRuleCmd; |
| import org.apache.cloudstack.api.command.user.region.ha.gslb.CreateGlobalLoadBalancerRuleCmd; |
| import org.apache.cloudstack.api.command.user.region.ha.gslb.DeleteGlobalLoadBalancerRuleCmd; |
| import org.apache.cloudstack.api.command.user.region.ha.gslb.RemoveFromGlobalLoadBalancerRuleCmd; |
| import org.apache.cloudstack.context.CallContext; |
| import org.apache.cloudstack.framework.config.dao.ConfigurationDao; |
| import org.apache.cloudstack.region.RegionVO; |
| import org.apache.cloudstack.region.dao.RegionDao; |
| |
| import com.cloud.agent.AgentManager; |
| import com.cloud.exception.InvalidParameterValueException; |
| import com.cloud.network.dao.IPAddressDao; |
| import com.cloud.network.dao.IPAddressVO; |
| import com.cloud.network.dao.LoadBalancerDao; |
| import com.cloud.network.dao.LoadBalancerVO; |
| import com.cloud.network.dao.NetworkDao; |
| import com.cloud.network.dao.NetworkVO; |
| import com.cloud.network.rules.FirewallRule; |
| import com.cloud.network.rules.RulesManager; |
| import com.cloud.region.ha.GlobalLoadBalancerRule; |
| import com.cloud.user.Account; |
| import com.cloud.user.AccountManager; |
| import com.cloud.user.AccountVO; |
| import com.cloud.user.UserVO; |
| import com.cloud.utils.db.TransactionLegacy; |
| import com.cloud.utils.net.Ip; |
| |
| public class GlobalLoadBalancingRulesServiceImplTest extends TestCase { |
| |
| private static final Logger s_logger = Logger.getLogger(GlobalLoadBalancingRulesServiceImplTest.class); |
| |
| @Override |
| @Before |
| public void setUp() { |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| |
| UserVO user = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString(), User.Source.UNKNOWN); |
| |
| CallContext.register(user, account); |
| } |
| |
| @Override |
| @After |
| public void tearDown() { |
| CallContext.unregister(); |
| } |
| |
| @Test |
| public void testCreateGlobalLoadBalancerRule() throws Exception { |
| |
| s_logger.info("Running tests for CreateGlobalLoadBalancerRule() service API"); |
| |
| /* |
| * TEST 1: given valid parameters CreateGlobalLoadBalancerRule should succeed |
| */ |
| runCreateGlobalLoadBalancerRulePostiveTest(); |
| |
| /* |
| * TEST 2: given invalid algorithm CreateGlobalLoadBalancerRule should fail |
| */ |
| runCreateGlobalLoadBalancerRuleInvalidAlgorithm(); |
| |
| /* |
| * TEST 3: given invalid persistence method CreateGlobalLoadBalancerRule should fail |
| */ |
| runCreateGlobalLoadBalancerRuleInvalidStickyMethod(); |
| |
| /* |
| * TEST 4: given invalid service type CreateGlobalLoadBalancerRule should fail |
| */ |
| runCreateGlobalLoadBalancerRuleInvalidServiceType(); |
| |
| /* |
| * TEST 5: given 'domain name' that is already used by a different GSLB rule CreateGlobalLoadBalancerRule should fail |
| */ |
| runCreateGlobalLoadBalancerRuleInvalidDomainName(); |
| } |
| |
| @Test |
| public void testAssignToGlobalLoadBalancerRule() throws Exception { |
| |
| s_logger.info("Running tests for AssignToGlobalLoadBalancerRule() service API"); |
| |
| /* |
| * TEST 1: given valid gslb rule id, valid lb rule id, and caller has access to both the rules |
| * assignToGlobalLoadBalancerRule service API should succeed |
| */ |
| runAssignToGlobalLoadBalancerRuleTest(); |
| |
| /* |
| * TEST 2: given valid gslb rule id, two valid Lb rules but both belong to same zone then |
| * assignToGlobalLoadBalancerRule service API should fail |
| */ |
| runAssignToGlobalLoadBalancerRuleTestSameZoneLb(); |
| |
| /* |
| * TEST 3: if gslb rule is in revoke state assignToGlobalLoadBalancerRule service API should fail |
| */ |
| runAssignToGlobalLoadBalancerRuleTestRevokedState(); |
| } |
| |
| @Test |
| public void testRemoveFromGlobalLoadBalancerRule() throws Exception { |
| |
| s_logger.info("Running tests for RemoveFromGlobalLoadBalancerRule() service API"); |
| |
| /* |
| * TEST 1: given valid gslb rule id, valid lb rule id and is assigned to given gslb rule id |
| * then RemoveFromGlobalLoadBalancerRule service API should succeed |
| */ |
| runRemoveFromGlobalLoadBalancerRuleTest(); |
| |
| /* |
| * TEST 2: given valid gslb rule id, valid lb rule id but NOT assigned to given gslb rule id |
| * then RemoveFromGlobalLoadBalancerRule service API should fail |
| */ |
| runRemoveFromGlobalLoadBalancerRuleTestUnassignedLb(); |
| |
| /* |
| * TEST 3: given valid gslb rule id, INVALID lb rule id then RemoveFromGlobalLoadBalancerRule |
| * service API should fail |
| */ |
| runRemoveFromGlobalLoadBalancerRuleTestInvalidLb(); |
| } |
| |
| @Test |
| public void testDeleteGlobalLoadBalancerRule() throws Exception { |
| |
| s_logger.info("Running tests for DeleteGlobalLoadBalancerRule() service API"); |
| |
| /* |
| * TEST 1: given valid gslb rule id with assigned Lb rules, DeleteGlobalLoadBalancerRule() |
| * call should succeed, and Gslb rule should be set to revoke state |
| */ |
| runDeleteGlobalLoadBalancerRuleTestWithNoLbRules(); |
| |
| /* |
| * TEST 2: given valid gslb rule id with assigned Lb rules, DeleteGlobalLoadBalancerRule() |
| * call should succeed, and Gslb rule should be set to revoke state |
| */ |
| runDeleteGlobalLoadBalancerRuleTestWithLbRules(); |
| |
| } |
| |
| void runCreateGlobalLoadBalancerRulePostiveTest() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runCreateGlobalLoadBalancerRulePostiveTest"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| when(gslbServiceImpl._gslbRuleDao.persist(any(GlobalLoadBalancerRuleVO.class))).thenReturn(new GlobalLoadBalancerRuleVO()); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| RegionVO region = new RegionVO(); |
| region.setGslbEnabled(true); |
| when(gslbServiceImpl._regionDao.findById(anyInt())).thenReturn(region); |
| |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| CreateGlobalLoadBalancerRuleCmd createCmd = new CreateGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = createCmd.getClass().getSuperclass(); |
| |
| Field regionIdField = _class.getDeclaredField("regionId"); |
| regionIdField.setAccessible(true); |
| regionIdField.set(createCmd, new Integer(1)); |
| |
| Field algoField = _class.getDeclaredField("algorithm"); |
| algoField.setAccessible(true); |
| algoField.set(createCmd, "roundrobin"); |
| |
| Field stickyField = _class.getDeclaredField("stickyMethod"); |
| stickyField.setAccessible(true); |
| stickyField.set(createCmd, "sourceip"); |
| |
| Field nameField = _class.getDeclaredField("globalLoadBalancerRuleName"); |
| nameField.setAccessible(true); |
| nameField.set(createCmd, "gslb-rule"); |
| |
| Field descriptionField = _class.getDeclaredField("description"); |
| descriptionField.setAccessible(true); |
| descriptionField.set(createCmd, "testing create gslb-rule"); |
| |
| Field serviceDomainField = _class.getDeclaredField("serviceDomainName"); |
| serviceDomainField.setAccessible(true); |
| serviceDomainField.set(createCmd, "gslb-rule-domain"); |
| |
| Field serviceTypeField = _class.getDeclaredField("serviceType"); |
| serviceTypeField.setAccessible(true); |
| serviceTypeField.set(createCmd, "tcp"); |
| |
| try { |
| gslbServiceImpl.createGlobalLoadBalancerRule(createCmd); |
| } catch (Exception e) { |
| s_logger.info("exception in testing runCreateGlobalLoadBalancerRulePostiveTest message: " + e.toString()); |
| } |
| } |
| |
| void runCreateGlobalLoadBalancerRuleInvalidAlgorithm() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runCreateGlobalLoadBalancerRulePostiveTest"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| when(gslbServiceImpl._gslbRuleDao.persist(any(GlobalLoadBalancerRuleVO.class))).thenReturn(new GlobalLoadBalancerRuleVO()); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| RegionVO region = new RegionVO(); |
| region.setGslbEnabled(true); |
| when(gslbServiceImpl._regionDao.findById(anyInt())).thenReturn(region); |
| |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| CreateGlobalLoadBalancerRuleCmd createCmd = new CreateGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = createCmd.getClass().getSuperclass(); |
| |
| Field regionIdField = _class.getDeclaredField("regionId"); |
| regionIdField.setAccessible(true); |
| regionIdField.set(createCmd, new Integer(1)); |
| |
| Field algoField = _class.getDeclaredField("algorithm"); |
| algoField.setAccessible(true); |
| algoField.set(createCmd, "invalidalgo"); |
| |
| Field stickyField = _class.getDeclaredField("stickyMethod"); |
| stickyField.setAccessible(true); |
| stickyField.set(createCmd, "sourceip"); |
| |
| Field nameField = _class.getDeclaredField("globalLoadBalancerRuleName"); |
| nameField.setAccessible(true); |
| nameField.set(createCmd, "gslb-rule"); |
| |
| Field descriptionField = _class.getDeclaredField("description"); |
| descriptionField.setAccessible(true); |
| descriptionField.set(createCmd, "testing create gslb-rule"); |
| |
| Field serviceDomainField = _class.getDeclaredField("serviceDomainName"); |
| serviceDomainField.setAccessible(true); |
| serviceDomainField.set(createCmd, "gslb-rule-domain"); |
| |
| Field serviceTypeField = _class.getDeclaredField("serviceType"); |
| serviceTypeField.setAccessible(true); |
| serviceTypeField.set(createCmd, "tcp"); |
| |
| try { |
| gslbServiceImpl.createGlobalLoadBalancerRule(createCmd); |
| } catch (InvalidParameterValueException e) { |
| Assert.assertTrue(e.getMessage().contains("Invalid Algorithm")); |
| } |
| } |
| |
| void runCreateGlobalLoadBalancerRuleInvalidStickyMethod() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runCreateGlobalLoadBalancerRulePostiveTest"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| when(gslbServiceImpl._gslbRuleDao.persist(any(GlobalLoadBalancerRuleVO.class))).thenReturn(new GlobalLoadBalancerRuleVO()); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| RegionVO region = new RegionVO(); |
| region.setGslbEnabled(true); |
| when(gslbServiceImpl._regionDao.findById(anyInt())).thenReturn(region); |
| |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| CreateGlobalLoadBalancerRuleCmd createCmd = new CreateGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = createCmd.getClass().getSuperclass(); |
| |
| Field regionIdField = _class.getDeclaredField("regionId"); |
| regionIdField.setAccessible(true); |
| regionIdField.set(createCmd, new Integer(1)); |
| |
| Field algoField = _class.getDeclaredField("algorithm"); |
| algoField.setAccessible(true); |
| algoField.set(createCmd, "roundrobin"); |
| |
| Field stickyField = _class.getDeclaredField("stickyMethod"); |
| stickyField.setAccessible(true); |
| stickyField.set(createCmd, "ivalidstickymethod"); |
| |
| Field nameField = _class.getDeclaredField("globalLoadBalancerRuleName"); |
| nameField.setAccessible(true); |
| nameField.set(createCmd, "gslb-rule"); |
| |
| Field descriptionField = _class.getDeclaredField("description"); |
| descriptionField.setAccessible(true); |
| descriptionField.set(createCmd, "testing create gslb-rule"); |
| |
| Field serviceDomainField = _class.getDeclaredField("serviceDomainName"); |
| serviceDomainField.setAccessible(true); |
| serviceDomainField.set(createCmd, "gslb-rule-domain"); |
| |
| Field serviceTypeField = _class.getDeclaredField("serviceType"); |
| serviceTypeField.setAccessible(true); |
| serviceTypeField.set(createCmd, "tcp"); |
| |
| try { |
| gslbServiceImpl.createGlobalLoadBalancerRule(createCmd); |
| } catch (InvalidParameterValueException e) { |
| Assert.assertTrue(e.getMessage().contains("Invalid persistence")); |
| } |
| } |
| |
| void runCreateGlobalLoadBalancerRuleInvalidServiceType() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runCreateGlobalLoadBalancerRulePostiveTest"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| when(gslbServiceImpl._gslbRuleDao.persist(any(GlobalLoadBalancerRuleVO.class))).thenReturn(new GlobalLoadBalancerRuleVO()); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| RegionVO region = new RegionVO(); |
| region.setGslbEnabled(true); |
| when(gslbServiceImpl._regionDao.findById(anyInt())).thenReturn(region); |
| |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| CreateGlobalLoadBalancerRuleCmd createCmd = new CreateGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = createCmd.getClass().getSuperclass(); |
| |
| Field regionIdField = _class.getDeclaredField("regionId"); |
| regionIdField.setAccessible(true); |
| regionIdField.set(createCmd, new Integer(1)); |
| |
| Field algoField = _class.getDeclaredField("algorithm"); |
| algoField.setAccessible(true); |
| algoField.set(createCmd, "roundrobin"); |
| |
| Field stickyField = _class.getDeclaredField("stickyMethod"); |
| stickyField.setAccessible(true); |
| stickyField.set(createCmd, "sourceip"); |
| |
| Field nameField = _class.getDeclaredField("globalLoadBalancerRuleName"); |
| nameField.setAccessible(true); |
| nameField.set(createCmd, "gslb-rule"); |
| |
| Field descriptionField = _class.getDeclaredField("description"); |
| descriptionField.setAccessible(true); |
| descriptionField.set(createCmd, "testing create gslb-rule"); |
| |
| Field serviceDomainField = _class.getDeclaredField("serviceDomainName"); |
| serviceDomainField.setAccessible(true); |
| serviceDomainField.set(createCmd, "gslb-rule-domain"); |
| |
| Field serviceTypeField = _class.getDeclaredField("serviceType"); |
| serviceTypeField.setAccessible(true); |
| serviceTypeField.set(createCmd, "invalidtcp"); |
| |
| try { |
| gslbServiceImpl.createGlobalLoadBalancerRule(createCmd); |
| } catch (InvalidParameterValueException e) { |
| Assert.assertTrue(e.getMessage().contains("Invalid service type")); |
| } |
| } |
| |
| void runCreateGlobalLoadBalancerRuleInvalidDomainName() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runCreateGlobalLoadBalancerRulePostiveTest"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| RegionVO region = new RegionVO(); |
| region.setGslbEnabled(true); |
| when(gslbServiceImpl._regionDao.findById(anyInt())).thenReturn(region); |
| |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| CreateGlobalLoadBalancerRuleCmd createCmd = new CreateGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = createCmd.getClass().getSuperclass(); |
| |
| Field regionIdField = _class.getDeclaredField("regionId"); |
| regionIdField.setAccessible(true); |
| regionIdField.set(createCmd, new Integer(1)); |
| |
| Field algoField = _class.getDeclaredField("algorithm"); |
| algoField.setAccessible(true); |
| algoField.set(createCmd, "roundrobin"); |
| |
| Field stickyField = _class.getDeclaredField("stickyMethod"); |
| stickyField.setAccessible(true); |
| stickyField.set(createCmd, "sourceip"); |
| |
| Field nameField = _class.getDeclaredField("globalLoadBalancerRuleName"); |
| nameField.setAccessible(true); |
| nameField.set(createCmd, "gslb-rule"); |
| |
| Field descriptionField = _class.getDeclaredField("description"); |
| descriptionField.setAccessible(true); |
| descriptionField.set(createCmd, "testing create gslb-rule"); |
| |
| Field serviceDomainField = _class.getDeclaredField("serviceDomainName"); |
| serviceDomainField.setAccessible(true); |
| serviceDomainField.set(createCmd, "gslb-rule-domain"); |
| GlobalLoadBalancerRuleVO gslbRule = new GlobalLoadBalancerRuleVO(); |
| when(gslbServiceImpl._gslbRuleDao.findByDomainName("gslb-rule-domain")).thenReturn(gslbRule); |
| |
| Field serviceTypeField = _class.getDeclaredField("serviceType"); |
| serviceTypeField.setAccessible(true); |
| serviceTypeField.set(createCmd, "tcp"); |
| |
| try { |
| gslbServiceImpl.createGlobalLoadBalancerRule(createCmd); |
| } catch (InvalidParameterValueException e) { |
| Assert.assertTrue(e.getMessage().contains("Domain name " + "gslb-rule-domain" + "is in use")); |
| } |
| } |
| |
| void runAssignToGlobalLoadBalancerRuleTest() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runAssignToGlobalLoadBalancerRuleTest"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| AssignToGlobalLoadBalancerRuleCmd assignCmd = new AssignToGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = assignCmd.getClass().getSuperclass(); |
| |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| Field gslbRuleId = _class.getDeclaredField("id"); |
| gslbRuleId.setAccessible(true); |
| gslbRuleId.set(assignCmd, new Long(1)); |
| |
| GlobalLoadBalancerRuleVO gslbRule = |
| new GlobalLoadBalancerRuleVO("test-gslb-rule", "test-gslb-rule", "test-domain", "roundrobin", "sourceip", "tcp", 1, 1, 1, GlobalLoadBalancerRule.State.Active); |
| when(gslbServiceImpl._gslbRuleDao.findById(new Long(1))).thenReturn(gslbRule); |
| |
| LoadBalancerVO lbRule = new LoadBalancerVO(); |
| lbRule.setState(FirewallRule.State.Active); |
| Field networkIdField = LoadBalancerVO.class.getSuperclass().getDeclaredField("networkId"); |
| networkIdField.setAccessible(true); |
| networkIdField.set(lbRule, new Long(1)); |
| Field sourceIpAddressId = LoadBalancerVO.class.getSuperclass().getDeclaredField("sourceIpAddressId"); |
| sourceIpAddressId.setAccessible(true); |
| sourceIpAddressId.set(lbRule, new Long(1)); |
| |
| when(gslbServiceImpl._lbDao.findById(new Long(1))).thenReturn(lbRule); |
| Field lbRules = _class.getDeclaredField("loadBalancerRulesIds"); |
| lbRules.setAccessible(true); |
| List<Long> lbRuleIds = new ArrayList<Long>(); |
| lbRuleIds.add(new Long(1)); |
| lbRules.set(assignCmd, lbRuleIds); |
| |
| NetworkVO networkVo = new NetworkVO(); |
| Field dcID = NetworkVO.class.getDeclaredField("dataCenterId"); |
| dcID.setAccessible(true); |
| dcID.set(networkVo, new Long(1)); |
| when(gslbServiceImpl._networkDao.findById(new Long(1))).thenReturn(networkVo); |
| |
| IPAddressVO ip = new IPAddressVO(new Ip("10.1.1.1"), 1, 1, 1, true); |
| when(gslbServiceImpl._ipAddressDao.findById(new Long(1))).thenReturn(ip); |
| |
| try { |
| gslbServiceImpl.assignToGlobalLoadBalancerRule(assignCmd); |
| } catch (Exception e) { |
| s_logger.info("exception in testing runAssignToGlobalLoadBalancerRuleTest message: " + e.toString()); |
| } |
| } |
| |
| void runAssignToGlobalLoadBalancerRuleTestSameZoneLb() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runAssignToGlobalLoadBalancerRuleTestSameZoneLb"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| AssignToGlobalLoadBalancerRuleCmd assignCmd = new AssignToGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = assignCmd.getClass().getSuperclass(); |
| |
| Account account = new AccountVO("testaccount", 3, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| Field gslbRuleId = _class.getDeclaredField("id"); |
| gslbRuleId.setAccessible(true); |
| gslbRuleId.set(assignCmd, new Long(1)); |
| |
| GlobalLoadBalancerRuleVO gslbRule = |
| new GlobalLoadBalancerRuleVO("test-gslb-rule", "test-gslb-rule", "test-domain", "roundrobin", "sourceip", "tcp", 1, 3, 1, GlobalLoadBalancerRule.State.Active); |
| when(gslbServiceImpl._gslbRuleDao.findById(new Long(1))).thenReturn(gslbRule); |
| |
| LoadBalancerVO lbRule1 = new LoadBalancerVO(); |
| lbRule1.setState(FirewallRule.State.Active); |
| Field networkIdField1 = LoadBalancerVO.class.getSuperclass().getDeclaredField("networkId"); |
| Field accountIdField1 = LoadBalancerVO.class.getSuperclass().getDeclaredField("accountId"); |
| Field domainIdField1 = LoadBalancerVO.class.getSuperclass().getDeclaredField("domainId"); |
| networkIdField1.setAccessible(true); |
| accountIdField1.setAccessible(true); |
| domainIdField1.setAccessible(true); |
| networkIdField1.set(lbRule1, new Long(1)); |
| accountIdField1.set(lbRule1, new Long(3)); |
| domainIdField1.set(lbRule1, new Long(1)); |
| Field idField1 = LoadBalancerVO.class.getSuperclass().getDeclaredField("id"); |
| idField1.setAccessible(true); |
| idField1.set(lbRule1, new Long(1)); |
| |
| LoadBalancerVO lbRule2 = new LoadBalancerVO(); |
| lbRule2.setState(FirewallRule.State.Active); |
| Field networkIdField2 = LoadBalancerVO.class.getSuperclass().getDeclaredField("networkId"); |
| Field accountIdField2 = LoadBalancerVO.class.getSuperclass().getDeclaredField("accountId"); |
| Field domainIdField2 = LoadBalancerVO.class.getSuperclass().getDeclaredField("domainId"); |
| networkIdField2.setAccessible(true); |
| accountIdField2.setAccessible(true); |
| domainIdField2.setAccessible(true); |
| networkIdField2.set(lbRule2, new Long(1)); |
| accountIdField2.set(lbRule2, new Long(3)); |
| domainIdField2.set(lbRule2, new Long(1)); |
| Field idField2 = LoadBalancerVO.class.getSuperclass().getDeclaredField("id"); |
| idField2.setAccessible(true); |
| idField2.set(lbRule2, new Long(2)); |
| |
| when(gslbServiceImpl._lbDao.findById(new Long(1))).thenReturn(lbRule1); |
| when(gslbServiceImpl._lbDao.findById(new Long(2))).thenReturn(lbRule2); |
| |
| Field lbRules = _class.getDeclaredField("loadBalancerRulesIds"); |
| lbRules.setAccessible(true); |
| List<Long> lbRuleIds = new ArrayList<Long>(); |
| lbRuleIds.add(new Long(1)); |
| lbRuleIds.add(new Long(2)); |
| lbRules.set(assignCmd, lbRuleIds); |
| |
| NetworkVO networkVo = new NetworkVO(); |
| Field dcID = NetworkVO.class.getDeclaredField("dataCenterId"); |
| dcID.setAccessible(true); |
| dcID.set(networkVo, new Long(1)); |
| when(gslbServiceImpl._networkDao.findById(new Long(1))).thenReturn(networkVo); |
| |
| try { |
| gslbServiceImpl.assignToGlobalLoadBalancerRule(assignCmd); |
| } catch (InvalidParameterValueException e) { |
| s_logger.info(e.getMessage()); |
| Assert.assertTrue(e.getMessage().contains("Load balancer rule specified should be in unique zone")); |
| } |
| } |
| |
| void runAssignToGlobalLoadBalancerRuleTestRevokedState() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runAssignToGlobalLoadBalancerRuleTestRevokedState"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| AssignToGlobalLoadBalancerRuleCmd assignCmd = new AssignToGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = assignCmd.getClass().getSuperclass(); |
| |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| Field gslbRuleId = _class.getDeclaredField("id"); |
| gslbRuleId.setAccessible(true); |
| gslbRuleId.set(assignCmd, new Long(1)); |
| |
| GlobalLoadBalancerRuleVO gslbRule = |
| new GlobalLoadBalancerRuleVO("test-gslb-rule", "test-gslb-rule", "test-domain", "roundrobin", "sourceip", "tcp", 1, 1, 1, GlobalLoadBalancerRule.State.Revoke); |
| when(gslbServiceImpl._gslbRuleDao.findById(new Long(1))).thenReturn(gslbRule); |
| |
| LoadBalancerVO lbRule = new LoadBalancerVO(); |
| lbRule.setState(FirewallRule.State.Active); |
| Field networkIdField = LoadBalancerVO.class.getSuperclass().getDeclaredField("networkId"); |
| networkIdField.setAccessible(true); |
| networkIdField.set(lbRule, new Long(1)); |
| |
| when(gslbServiceImpl._lbDao.findById(new Long(1))).thenReturn(lbRule); |
| Field lbRules = _class.getDeclaredField("loadBalancerRulesIds"); |
| lbRules.setAccessible(true); |
| List<Long> lbRuleIds = new ArrayList<Long>(); |
| lbRuleIds.add(new Long(1)); |
| lbRules.set(assignCmd, lbRuleIds); |
| |
| NetworkVO networkVo = new NetworkVO(); |
| Field dcID = NetworkVO.class.getDeclaredField("dataCenterId"); |
| dcID.setAccessible(true); |
| dcID.set(networkVo, new Long(1)); |
| when(gslbServiceImpl._networkDao.findById(new Long(1))).thenReturn(networkVo); |
| |
| try { |
| gslbServiceImpl.assignToGlobalLoadBalancerRule(assignCmd); |
| } catch (InvalidParameterValueException e) { |
| Assert.assertTrue(e.getMessage().contains("revoked state")); |
| } |
| } |
| |
| void runRemoveFromGlobalLoadBalancerRuleTest() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runRemoveFromGlobalLoadBalancerRuleTest"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| List<GslbServiceProvider> mockGslbProviders = new ArrayList<GslbServiceProvider>(); |
| mockGslbProviders.add(Mockito.mock(GslbServiceProvider.class)); |
| gslbServiceImpl._gslbProviders = mockGslbProviders; |
| |
| RemoveFromGlobalLoadBalancerRuleCmd removeFromGslbCmd = new RemoveFromGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = removeFromGslbCmd.getClass().getSuperclass(); |
| |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| Field gslbRuleId = _class.getDeclaredField("id"); |
| gslbRuleId.setAccessible(true); |
| gslbRuleId.set(removeFromGslbCmd, new Long(1)); |
| |
| GlobalLoadBalancerRuleVO gslbRule = |
| new GlobalLoadBalancerRuleVO("test-gslb-rule", "test-gslb-rule", "test-domain", "roundrobin", "sourceip", "tcp", 1, 1, 1, GlobalLoadBalancerRule.State.Active); |
| when(gslbServiceImpl._gslbRuleDao.findById(new Long(1))).thenReturn(gslbRule); |
| |
| LoadBalancerVO lbRule = new LoadBalancerVO(); |
| lbRule.setState(FirewallRule.State.Active); |
| Field networkIdField = LoadBalancerVO.class.getSuperclass().getDeclaredField("networkId"); |
| networkIdField.setAccessible(true); |
| networkIdField.set(lbRule, new Long(1)); |
| Field idField = LoadBalancerVO.class.getSuperclass().getDeclaredField("id"); |
| idField.setAccessible(true); |
| idField.set(lbRule, new Long(1)); |
| Field sourceIpAddressId = LoadBalancerVO.class.getSuperclass().getDeclaredField("sourceIpAddressId"); |
| sourceIpAddressId.setAccessible(true); |
| sourceIpAddressId.set(lbRule, new Long(1)); |
| |
| when(gslbServiceImpl._lbDao.findById(new Long(1))).thenReturn(lbRule); |
| Field lbRules = _class.getDeclaredField("loadBalancerRulesIds"); |
| lbRules.setAccessible(true); |
| List<Long> lbRuleIds = new ArrayList<Long>(); |
| lbRuleIds.add(new Long(1)); |
| lbRules.set(removeFromGslbCmd, lbRuleIds); |
| |
| NetworkVO networkVo = new NetworkVO(); |
| Field dcID = NetworkVO.class.getDeclaredField("dataCenterId"); |
| dcID.setAccessible(true); |
| dcID.set(networkVo, new Long(1)); |
| Field phyNetworkId = NetworkVO.class.getDeclaredField("physicalNetworkId"); |
| phyNetworkId.setAccessible(true); |
| phyNetworkId.set(networkVo, new Long(200)); |
| when(gslbServiceImpl._networkDao.findById(new Long(1))).thenReturn(networkVo); |
| |
| GlobalLoadBalancerLbRuleMapVO gslbLbMap = new GlobalLoadBalancerLbRuleMapVO(1, 1, 1); |
| List<GlobalLoadBalancerLbRuleMapVO> listSslbLbMap = new ArrayList<GlobalLoadBalancerLbRuleMapVO>(); |
| listSslbLbMap.add(gslbLbMap); |
| when(gslbServiceImpl._gslbLbMapDao.listByGslbRuleId(new Long(1))).thenReturn(listSslbLbMap); |
| |
| when(gslbServiceImpl._gslbLbMapDao.findByGslbRuleIdAndLbRuleId(new Long(1), new Long(1))).thenReturn(gslbLbMap); |
| |
| IPAddressVO ip = new IPAddressVO(new Ip("10.1.1.1"), 1, 1, 1, true); |
| when(gslbServiceImpl._ipAddressDao.findById(new Long(1))).thenReturn(ip); |
| |
| gslbServiceImpl.removeFromGlobalLoadBalancerRule(removeFromGslbCmd); |
| } |
| |
| void runRemoveFromGlobalLoadBalancerRuleTestUnassignedLb() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runRemoveFromGlobalLoadBalancerRuleTestUnassignedLb"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| RemoveFromGlobalLoadBalancerRuleCmd removeFromGslbCmd = new RemoveFromGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = removeFromGslbCmd.getClass().getSuperclass(); |
| |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| Field gslbRuleId = _class.getDeclaredField("id"); |
| gslbRuleId.setAccessible(true); |
| gslbRuleId.set(removeFromGslbCmd, new Long(1)); |
| |
| GlobalLoadBalancerRuleVO gslbRule = |
| new GlobalLoadBalancerRuleVO("test-gslb-rule", "test-gslb-rule", "test-domain", "roundrobin", "sourceip", "tcp", 1, 1, 1, GlobalLoadBalancerRule.State.Active); |
| when(gslbServiceImpl._gslbRuleDao.findById(new Long(1))).thenReturn(gslbRule); |
| |
| LoadBalancerVO lbRule = new LoadBalancerVO(); |
| lbRule.setState(FirewallRule.State.Active); |
| Field networkIdField = LoadBalancerVO.class.getSuperclass().getDeclaredField("networkId"); |
| networkIdField.setAccessible(true); |
| networkIdField.set(lbRule, new Long(1)); |
| Field idField = LoadBalancerVO.class.getSuperclass().getDeclaredField("id"); |
| idField.setAccessible(true); |
| idField.set(lbRule, new Long(1)); |
| |
| when(gslbServiceImpl._lbDao.findById(new Long(1))).thenReturn(lbRule); |
| |
| Field lbRules = _class.getDeclaredField("loadBalancerRulesIds"); |
| lbRules.setAccessible(true); |
| List<Long> lbRuleIds = new ArrayList<Long>(); |
| lbRuleIds.add(new Long(1)); |
| lbRules.set(removeFromGslbCmd, lbRuleIds); |
| |
| NetworkVO networkVo = new NetworkVO(); |
| Field dcID = NetworkVO.class.getDeclaredField("dataCenterId"); |
| dcID.setAccessible(true); |
| dcID.set(networkVo, new Long(1)); |
| when(gslbServiceImpl._networkDao.findById(new Long(1))).thenReturn(networkVo); |
| |
| try { |
| gslbServiceImpl.removeFromGlobalLoadBalancerRule(removeFromGslbCmd); |
| } catch (InvalidParameterValueException e) { |
| Assert.assertTrue(e.getMessage().contains("not assigned to global load balancer rule")); |
| } |
| } |
| |
| void runRemoveFromGlobalLoadBalancerRuleTestInvalidLb() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runRemoveFromGlobalLoadBalancerRuleTestInvalidLb"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| RemoveFromGlobalLoadBalancerRuleCmd removeFromGslbCmd = new RemoveFromGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = removeFromGslbCmd.getClass().getSuperclass(); |
| |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| Field gslbRuleId = _class.getDeclaredField("id"); |
| gslbRuleId.setAccessible(true); |
| gslbRuleId.set(removeFromGslbCmd, new Long(1)); |
| |
| GlobalLoadBalancerRuleVO gslbRule = |
| new GlobalLoadBalancerRuleVO("test-gslb-rule", "test-gslb-rule", "test-domain", "roundrobin", "sourceip", "tcp", 1, 1, 1, GlobalLoadBalancerRule.State.Active); |
| when(gslbServiceImpl._gslbRuleDao.findById(new Long(1))).thenReturn(gslbRule); |
| |
| Field lbRules = _class.getDeclaredField("loadBalancerRulesIds"); |
| lbRules.setAccessible(true); |
| List<Long> lbRuleIds = new ArrayList<Long>(); |
| lbRuleIds.add(new Long(1)); |
| lbRules.set(removeFromGslbCmd, lbRuleIds); |
| |
| try { |
| gslbServiceImpl.removeFromGlobalLoadBalancerRule(removeFromGslbCmd); |
| } catch (InvalidParameterValueException e) { |
| Assert.assertTrue(e.getMessage().contains("load balancer rule ID does not exist")); |
| } |
| } |
| |
| void runDeleteGlobalLoadBalancerRuleTestWithNoLbRules() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runDeleteGlobalLoadBalancerRuleTestWithNoLbRules"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| DeleteGlobalLoadBalancerRuleCmd deleteCmd = new DeleteGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = deleteCmd.getClass().getSuperclass(); |
| |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| Field gslbRuleId = _class.getDeclaredField("id"); |
| gslbRuleId.setAccessible(true); |
| gslbRuleId.set(deleteCmd, new Long(1)); |
| |
| GlobalLoadBalancerRuleVO gslbRule = |
| new GlobalLoadBalancerRuleVO("test-gslb-rule", "test-gslb-rule", "test-domain", "roundrobin", "sourceip", "tcp", 1, 1, 1, GlobalLoadBalancerRule.State.Active); |
| when(gslbServiceImpl._gslbRuleDao.findById(new Long(1))).thenReturn(gslbRule); |
| |
| GlobalLoadBalancerLbRuleMapVO gslbLbMap = new GlobalLoadBalancerLbRuleMapVO(); |
| gslbLbMap.setGslbLoadBalancerId(1); |
| gslbLbMap.setLoadBalancerId(1); |
| List<GlobalLoadBalancerLbRuleMapVO> gslbLbMapList = new ArrayList<GlobalLoadBalancerLbRuleMapVO>(); |
| gslbLbMapList.add(gslbLbMap); |
| when(gslbServiceImpl._gslbLbMapDao.listByGslbRuleId(new Long(1))).thenReturn(gslbLbMapList); |
| |
| try { |
| gslbServiceImpl.deleteGlobalLoadBalancerRule(deleteCmd); |
| Assert.assertTrue(gslbRule.getState() == GlobalLoadBalancerRule.State.Revoke); |
| } catch (Exception e) { |
| s_logger.info("exception in testing runDeleteGlobalLoadBalancerRuleTestWithNoLbRules. " + e.toString()); |
| } |
| } |
| |
| void runDeleteGlobalLoadBalancerRuleTestWithLbRules() throws Exception { |
| |
| TransactionLegacy txn = TransactionLegacy.open("runDeleteGlobalLoadBalancerRuleTestWithLbRules"); |
| |
| GlobalLoadBalancingRulesServiceImpl gslbServiceImpl = new GlobalLoadBalancingRulesServiceImpl(); |
| |
| gslbServiceImpl._accountMgr = Mockito.mock(AccountManager.class); |
| gslbServiceImpl._gslbRuleDao = Mockito.mock(GlobalLoadBalancerRuleDao.class); |
| gslbServiceImpl._gslbLbMapDao = Mockito.mock(GlobalLoadBalancerLbRuleMapDao.class); |
| gslbServiceImpl._regionDao = Mockito.mock(RegionDao.class); |
| gslbServiceImpl._rulesMgr = Mockito.mock(RulesManager.class); |
| gslbServiceImpl._lbDao = Mockito.mock(LoadBalancerDao.class); |
| gslbServiceImpl._networkDao = Mockito.mock(NetworkDao.class); |
| gslbServiceImpl._globalConfigDao = Mockito.mock(ConfigurationDao.class); |
| gslbServiceImpl._ipAddressDao = Mockito.mock(IPAddressDao.class); |
| gslbServiceImpl._agentMgr = Mockito.mock(AgentManager.class); |
| |
| DeleteGlobalLoadBalancerRuleCmd deleteCmd = new DeleteGlobalLoadBalancerRuleCmdExtn(); |
| Class<?> _class = deleteCmd.getClass().getSuperclass(); |
| |
| Account account = new AccountVO("testaccount", 1, "networkdomain", (short)0, UUID.randomUUID().toString()); |
| when(gslbServiceImpl._accountMgr.getAccount(anyLong())).thenReturn(account); |
| |
| Field gslbRuleId = _class.getDeclaredField("id"); |
| gslbRuleId.setAccessible(true); |
| gslbRuleId.set(deleteCmd, new Long(1)); |
| |
| GlobalLoadBalancerRuleVO gslbRule = |
| new GlobalLoadBalancerRuleVO("test-gslb-rule", "test-gslb-rule", "test-domain", "roundrobin", "sourceip", "tcp", 1, 1, 1, GlobalLoadBalancerRule.State.Active); |
| when(gslbServiceImpl._gslbRuleDao.findById(new Long(1))).thenReturn(gslbRule); |
| |
| GlobalLoadBalancerLbRuleMapVO gslbLmMap = new GlobalLoadBalancerLbRuleMapVO(1, 1, 1); |
| List<GlobalLoadBalancerLbRuleMapVO> gslbLbMapVos = new ArrayList<GlobalLoadBalancerLbRuleMapVO>(); |
| gslbLbMapVos.add(gslbLmMap); |
| when(gslbServiceImpl._gslbLbMapDao.listByGslbRuleId(new Long(1))).thenReturn(gslbLbMapVos); |
| |
| try { |
| gslbServiceImpl.deleteGlobalLoadBalancerRule(deleteCmd); |
| Assert.assertTrue(gslbRule.getState() == GlobalLoadBalancerRule.State.Revoke); |
| Assert.assertTrue(gslbLmMap.isRevoke() == true); |
| } catch (Exception e) { |
| s_logger.info("exception in testing runDeleteGlobalLoadBalancerRuleTestWithLbRules. " + e.toString()); |
| } |
| } |
| |
| public class CreateGlobalLoadBalancerRuleCmdExtn extends CreateGlobalLoadBalancerRuleCmd { |
| @Override |
| public long getEntityOwnerId() { |
| return 1; |
| } |
| } |
| |
| public class AssignToGlobalLoadBalancerRuleCmdExtn extends AssignToGlobalLoadBalancerRuleCmd { |
| @Override |
| public long getEntityOwnerId() { |
| return 1; |
| } |
| } |
| |
| public class RemoveFromGlobalLoadBalancerRuleCmdExtn extends RemoveFromGlobalLoadBalancerRuleCmd { |
| @Override |
| public long getEntityOwnerId() { |
| return 1; |
| } |
| } |
| |
| public class DeleteGlobalLoadBalancerRuleCmdExtn extends DeleteGlobalLoadBalancerRuleCmd { |
| @Override |
| public long getEntityOwnerId() { |
| return 1; |
| } |
| } |
| } |