From 348ce6e112876f552a939e58d74376704537344e Mon Sep 17 00:00:00 2001 From: tang peng Date: Sat, 10 Oct 2020 11:19:22 +0800 Subject: Fixed MSB Invocation Issues Issue-ID: HOLMES-365 Signed-off-by: tang peng Change-Id: Ibae0924268e25f0af5f13ded1e2e1be51e8106d8 --- .../org/onap/holmes/rulemgt/RuleAllocatorTest.java | 169 +++++++++++++++++ .../holmes/rulemgt/send/RuleAllocatorTest.java | 210 --------------------- .../holmes/rulemgt/wrapper/RuleMgtWrapperTest.java | 10 +- 3 files changed, 174 insertions(+), 215 deletions(-) create mode 100644 rulemgt/src/test/java/org/onap/holmes/rulemgt/RuleAllocatorTest.java delete mode 100644 rulemgt/src/test/java/org/onap/holmes/rulemgt/send/RuleAllocatorTest.java (limited to 'rulemgt/src/test/java') diff --git a/rulemgt/src/test/java/org/onap/holmes/rulemgt/RuleAllocatorTest.java b/rulemgt/src/test/java/org/onap/holmes/rulemgt/RuleAllocatorTest.java new file mode 100644 index 0000000..04be2e0 --- /dev/null +++ b/rulemgt/src/test/java/org/onap/holmes/rulemgt/RuleAllocatorTest.java @@ -0,0 +1,169 @@ +/** + * Copyright 2017-2020 ZTE Corporation. + *

+ * Licensed 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.onap.holmes.rulemgt; + + +import org.glassfish.hk2.api.ServiceLocator; +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.holmes.common.api.entity.CorrelationRule; +import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder; +import org.onap.holmes.common.utils.DbDaoUtil; +import org.onap.holmes.rulemgt.bolt.enginebolt.EngineWrapper; +import org.onap.holmes.rulemgt.db.CorrelationRuleDao; +import org.onap.holmes.rulemgt.tools.EngineTools; +import org.onap.holmes.rulemgt.wrapper.RuleMgtWrapper; +import org.onap.holmes.rulemgt.wrapper.RuleQueryWrapper; +import org.powermock.api.easymock.PowerMock; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.reflect.Whitebox; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; +import java.util.stream.Collectors; + +import static org.easymock.EasyMock.*; +import static org.onap.holmes.rulemgt.RuleAllocator.ENABLE; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({ServiceLocator.class, RuleMgtWrapper.class, RuleQueryWrapper.class, EngineWrapper.class, + EngineTools.class, DbDaoUtil.class, ServiceLocatorHolder.class}) +public class RuleAllocatorTest { + + private RuleMgtWrapper ruleMgtWrapperMock; + private RuleQueryWrapper ruleQueryWrapperMock; + private EngineWrapper engineWrapperMock; + private EngineTools engineToolsMock; + private DbDaoUtil dbDaoUtilMock; + private CorrelationRuleDao correlationRuleDaoMock; + + private List rules; + private List existingIps; + + @Before + public void before() { + ruleMgtWrapperMock = PowerMock.createMock(RuleMgtWrapper.class); + ruleQueryWrapperMock = PowerMock.createMock(RuleQueryWrapper.class); + engineWrapperMock = PowerMock.createMock(EngineWrapper.class); + engineToolsMock = PowerMock.createMock(EngineTools.class); + dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class); + correlationRuleDaoMock = PowerMock.createMock(CorrelationRuleDao.class); + + rules = new ArrayList<>(); + for (int i = 0; i < 20; ++i) { + CorrelationRule rule = new CorrelationRule(); + rule.setRid("rid-" + i); + rule.setName("rule-" + i); + rule.setDescription("desc-" + i); + rule.setEnabled(1); + rule.setTemplateID((long) i); + rule.setEngineID("engine-" + i); + rule.setCreateTime(Calendar.getInstance().getTime()); + rule.setUpdateTime(Calendar.getInstance().getTime()); + rule.setPackageName("package-" + i); + rule.setClosedControlLoopName("CL-" + i); + rule.setEngineInstance("10.15.3." + (i % 10)); + rules.add(rule); + } + + existingIps = new ArrayList<>(); + for (int i = 0; i < 10; ++i) { + existingIps.add("10.15.3." + i); + } + } + + @After + public void after() { + PowerMock.resetAll(); + } + + @Test + public void allocateRuleTest_engine_scaled_out() throws Exception { + + List newEngineInstances = new ArrayList(); + newEngineInstances.add("127.0.0.1"); + newEngineInstances.add("10.23.0.72"); + + List ipListFromMsb = new ArrayList(); + ipListFromMsb.addAll(newEngineInstances); + ipListFromMsb.addAll(existingIps); + + expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(correlationRuleDaoMock); + expect(engineToolsMock.getInstanceList()).andReturn(ipListFromMsb); + expect(engineToolsMock.getLegacyEngineInstances()).andReturn(existingIps); + expect(ruleQueryWrapperMock.queryRuleByEnable(ENABLE)).andReturn(rules.stream() + .filter(r -> r.getEnabled() == ENABLE).collect(Collectors.toList())); + for (String ip : existingIps) { + expect(ruleQueryWrapperMock.queryRuleByEngineInstance(ip)) + .andReturn(rules.stream().filter(r -> r.getEngineInstance().equals(ip)).collect(Collectors.toList())); + + } + expect(engineWrapperMock.deleteRuleFromEngine(anyObject(String.class), + anyObject(String.class))).andReturn(true).anyTimes(); + expect(ruleQueryWrapperMock.queryRuleByEngineInstance(anyObject(String.class))) + .andReturn(new ArrayList<>()).times(2); + + expect(ruleMgtWrapperMock.deployRule2Engine(anyObject(CorrelationRule.class), + anyObject(String.class))).andReturn("").anyTimes(); + correlationRuleDaoMock.updateRule(anyObject(CorrelationRule.class)); + expectLastCall().anyTimes(); + + PowerMock.replayAll(); + + RuleAllocator ruleAllocator = new RuleAllocator(ruleMgtWrapperMock, ruleQueryWrapperMock, + engineWrapperMock, engineToolsMock, dbDaoUtilMock); + ruleAllocator.allocateRules(); + + PowerMock.verifyAll(); + + } + + @Test + public void allocateRuleTest_engine_scaled_in() throws Exception { + + List ipListFromMsb = new ArrayList<>(); + ipListFromMsb.addAll(existingIps); + ipListFromMsb.remove(0); + + expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(correlationRuleDaoMock); + expect(engineToolsMock.getInstanceList()).andReturn(ipListFromMsb); + expect(engineToolsMock.getLegacyEngineInstances()).andReturn(existingIps); + for (String ip : existingIps) { + expect(ruleQueryWrapperMock.queryRuleByEngineInstance(anyObject(String.class))) + .andReturn(rules.stream().filter(r -> r.getEngineInstance().equals(ip)).collect(Collectors.toList())); + + } + expect(ruleMgtWrapperMock.deployRule2Engine(anyObject(CorrelationRule.class), anyString())).andReturn("anyId").times(2); + correlationRuleDaoMock.updateRule(anyObject(CorrelationRule.class)); + expectLastCall().times(2); + + PowerMock.replayAll(); + + RuleAllocator ruleAllocator = new RuleAllocator(ruleMgtWrapperMock, ruleQueryWrapperMock, + engineWrapperMock, engineToolsMock, dbDaoUtilMock); + + ruleAllocator.allocateRules(); + + PowerMock.verifyAll(); + + } +} diff --git a/rulemgt/src/test/java/org/onap/holmes/rulemgt/send/RuleAllocatorTest.java b/rulemgt/src/test/java/org/onap/holmes/rulemgt/send/RuleAllocatorTest.java deleted file mode 100644 index 09fcf93..0000000 --- a/rulemgt/src/test/java/org/onap/holmes/rulemgt/send/RuleAllocatorTest.java +++ /dev/null @@ -1,210 +0,0 @@ -/** - * Copyright 2017-2020 ZTE Corporation. - *

- * Licensed 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.onap.holmes.rulemgt.send; - - -import org.easymock.EasyMock; -import org.glassfish.hk2.api.ServiceLocator; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.onap.holmes.common.api.entity.CorrelationRule; -import org.onap.holmes.common.dropwizard.ioc.utils.ServiceLocatorHolder; -import org.onap.holmes.common.utils.DbDaoUtil; -import org.onap.holmes.rulemgt.bolt.enginebolt.EngineWrapper; -import org.onap.holmes.rulemgt.db.CorrelationRuleDao; -import org.onap.holmes.rulemgt.msb.EngineInsQueryTool; -import org.onap.holmes.rulemgt.wrapper.RuleMgtWrapper; -import org.onap.holmes.rulemgt.wrapper.RuleQueryWrapper; -import org.powermock.api.easymock.PowerMock; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -import static org.onap.holmes.rulemgt.send.RuleAllocator.ENABLE; - -@RunWith(PowerMockRunner.class) -@PrepareForTest({ServiceLocator.class, RuleMgtWrapper.class, RuleQueryWrapper.class, EngineWrapper.class, - EngineInsQueryTool.class, DbDaoUtil.class, ServiceLocatorHolder.class}) -public class RuleAllocatorTest { - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - private RuleMgtWrapper ruleMgtWrapperMock; - private RuleQueryWrapper ruleQueryWrapperMock; - private EngineWrapper engineWrapperMock; - private EngineInsQueryTool engineInsQueryToolMock; - private DbDaoUtil dbDaoUtilMock; - private CorrelationRuleDao correlationRuleDaoMock; - - private List rules; - private List existingIps; - - @Before - public void before() { - PowerMock.mockStatic(ServiceLocatorHolder.class); - ServiceLocator locator = PowerMock.createMock(ServiceLocator.class); - EasyMock.expect(ServiceLocatorHolder.getLocator()).andReturn(locator); - - ruleMgtWrapperMock = PowerMock.createMock(RuleMgtWrapper.class); - ruleQueryWrapperMock = PowerMock.createMock(RuleQueryWrapper.class); - engineWrapperMock = PowerMock.createMock(EngineWrapper.class); - engineInsQueryToolMock = PowerMock.createMock(EngineInsQueryTool.class); - dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class); - correlationRuleDaoMock = PowerMock.createMock(CorrelationRuleDao.class); - - EasyMock.expect(locator.getService(RuleMgtWrapper.class)).andReturn(ruleMgtWrapperMock); - EasyMock.expect(locator.getService(RuleQueryWrapper.class)).andReturn(ruleQueryWrapperMock); - EasyMock.expect(locator.getService(EngineWrapper.class)).andReturn(engineWrapperMock); - EasyMock.expect(locator.getService(EngineInsQueryTool.class)).andReturn(engineInsQueryToolMock); - EasyMock.expect(locator.getService(DbDaoUtil.class)).andReturn(dbDaoUtilMock); - EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(correlationRuleDaoMock); - - rules = new ArrayList<>(); - for (int i = 0; i < 20; ++i) { - CorrelationRule rule = new CorrelationRule(); - rule.setRid("rid-" + i); - rule.setName("rule-" + i); - rule.setDescription("desc-" + i); - rule.setEnabled(1); - rule.setTemplateID((long) i); - rule.setEngineID("engine-" + i); - rule.setCreateTime(Calendar.getInstance().getTime()); - rule.setUpdateTime(Calendar.getInstance().getTime()); - rule.setPackageName("package-" + i); - rule.setClosedControlLoopName("CL-" + i); - rule.setEngineInstance("10.15.3." + (i % 10)); - rules.add(rule); - } - - existingIps = new ArrayList<>(); - for (int i = 0; i < 10; ++i) { - existingIps.add("10.15.3." + i); - } - } - - @After - public void after() { - PowerMock.resetAll(); - } - - @Test - public void allocateRuleTest_engine_scaled_out() throws Exception { - - List ipListFromMsb = new ArrayList<>(); - ipListFromMsb.add("127.0.0.1"); - ipListFromMsb.add("10.23.0.72"); - ipListFromMsb.addAll(existingIps); - - EasyMock.expect(engineInsQueryToolMock.getInstanceList()).andReturn(existingIps); - EasyMock.expect(ruleQueryWrapperMock.queryRuleByEnable(ENABLE)).andReturn(rules.stream() - .filter(r -> r.getEnabled() == ENABLE).collect(Collectors.toList())); - for (String ip : existingIps) { - EasyMock.expect(ruleQueryWrapperMock.queryRuleByEngineInstance(EasyMock.anyObject(String.class))) - .andReturn(rules.stream().filter(r -> r.getEngineInstance().equals(ip)).collect(Collectors.toList())); - - } - EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(EasyMock.anyObject(String.class), - EasyMock.anyObject(String.class))).andReturn(true).anyTimes(); - EasyMock.expect(ruleQueryWrapperMock.queryRuleByEngineInstance(EasyMock.anyObject(String.class))) - .andReturn(new ArrayList<>()).times(2); - - EasyMock.expect(ruleMgtWrapperMock.deployRule2Engine(EasyMock.anyObject(CorrelationRule.class), - EasyMock.anyObject(String.class))).andReturn("").anyTimes(); - correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class)); - EasyMock.expectLastCall().anyTimes(); - - PowerMock.replayAll(); - - RuleAllocator ruleAllocator = new RuleAllocator(); - ruleAllocator.allocateRules(ipListFromMsb); - - PowerMock.verifyAll(); - - } - - @Test - public void allocateRuleTest_engine_scaled_in() throws Exception { - - List ipListFromMsb = new ArrayList<>(); - ipListFromMsb.addAll(existingIps); - ipListFromMsb.remove(0); - - List rules = new ArrayList<>(); - - - EasyMock.expect(engineInsQueryToolMock.getInstanceList()).andReturn(existingIps); - for (String ip : existingIps) { - EasyMock.expect(ruleQueryWrapperMock.queryRuleByEngineInstance(EasyMock.anyObject(String.class))) - .andReturn(rules.stream().filter(r -> r.getEngineInstance().equals(ip)).collect(Collectors.toList())); - - } - EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(EasyMock.anyObject(String.class), - EasyMock.anyObject(String.class))).andReturn(true).anyTimes(); - - PowerMock.replayAll(); - - RuleAllocator ruleAllocator = new RuleAllocator(); - ruleAllocator.allocateRules(ipListFromMsb); - - PowerMock.verifyAll(); - - } - - @Test - public void allocateRuleTest_empty_param() throws Exception { - - EasyMock.expect(engineInsQueryToolMock.getInstanceList()).andReturn(Collections.emptyList()); - - thrown.expect(NullPointerException.class); - - PowerMock.replayAll(); - - RuleAllocator ruleAllocator = new RuleAllocator(); - ruleAllocator.allocateRules(null); - - PowerMock.verifyAll(); - - } - - @Test - public void allocateRuleTest_equal_engine_instance_num() throws Exception { - - List ipListFromMsb = new ArrayList<>(); - ipListFromMsb.addAll(existingIps); - - EasyMock.expect(engineInsQueryToolMock.getInstanceList()).andReturn(existingIps); - - PowerMock.replayAll(); - - RuleAllocator ruleAllocator = new RuleAllocator(); - ruleAllocator.allocateRules(ipListFromMsb); - - PowerMock.verifyAll(); - - } - -} diff --git a/rulemgt/src/test/java/org/onap/holmes/rulemgt/wrapper/RuleMgtWrapperTest.java b/rulemgt/src/test/java/org/onap/holmes/rulemgt/wrapper/RuleMgtWrapperTest.java index 7033aff..ef26936 100644 --- a/rulemgt/src/test/java/org/onap/holmes/rulemgt/wrapper/RuleMgtWrapperTest.java +++ b/rulemgt/src/test/java/org/onap/holmes/rulemgt/wrapper/RuleMgtWrapperTest.java @@ -32,7 +32,7 @@ import org.onap.holmes.rulemgt.bean.response.RuleQueryListResponse; import org.onap.holmes.rulemgt.bolt.enginebolt.EngineWrapper; import org.onap.holmes.rulemgt.db.CorrelationRuleDao; import org.onap.holmes.rulemgt.db.CorrelationRuleQueryDao; -import org.onap.holmes.rulemgt.send.Ip4AddingRule; +import org.onap.holmes.rulemgt.tools.EngineTools; import org.powermock.api.easymock.PowerMock; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.reflect.Whitebox; @@ -61,7 +61,7 @@ public class RuleMgtWrapperTest { private CorrelationRuleDao correlationRuleDaoMock; - private Ip4AddingRule ip4AddingRuleMock; + private EngineTools engineToolsMock; private static final String USER_NAME = "admin"; @@ -74,13 +74,13 @@ public class RuleMgtWrapperTest { correlationRuleQueryDaoMock = PowerMock.createMock(CorrelationRuleQueryDao.class); dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class); correlationRuleDaoMock = PowerMock.createMock(CorrelationRuleDao.class); - ip4AddingRuleMock = PowerMock.createMock(Ip4AddingRule.class); + engineToolsMock = PowerMock.createMock(EngineTools.class); Whitebox.setInternalState(ruleMgtWrapper, "daoUtil", dbDaoUtilMock); Whitebox.setInternalState(ruleMgtWrapper, "correlationRuleQueryDao", correlationRuleQueryDaoMock); Whitebox.setInternalState(ruleMgtWrapper, "engineWarpper", engineWrapperMock); Whitebox.setInternalState(ruleMgtWrapper, "correlationRuleDao", correlationRuleDaoMock); - Whitebox.setInternalState(ruleMgtWrapper,"ip4AddingRule", ip4AddingRuleMock); + Whitebox.setInternalState(ruleMgtWrapper,"engineTools", engineToolsMock); PowerMock.resetAll(); } @@ -166,7 +166,7 @@ public class RuleMgtWrapperTest { correlationRuleRet.setRid("rule_" + System.currentTimeMillis()); EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null); - EasyMock.expect(ip4AddingRuleMock.getEngineIp4AddRule()).andReturn("10.96.33.34"); + EasyMock.expect(engineToolsMock.getEngineWithLeastRules()).andReturn("10.96.33.34"); EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class) , EasyMock.anyObject(String.class))) .andReturn(true); -- cgit 1.2.3-korg