X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=engine-d%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fholmes%2Fengine%2Fmanager%2FDroolsEngineTest.java;h=f7b7fbd5d6bf0484c56734680408dcd77e8f9851;hb=c4dc95bc729afd91c00cab49d0a69bceb102eed9;hp=71ef1721b51e1af7025f31ccf677312aa7cef05c;hpb=43f5b3a0ddb7f22b3c29a4f042991155a46e41d6;p=holmes%2Fengine-management.git
diff --git a/engine-d/src/test/java/org/onap/holmes/engine/manager/DroolsEngineTest.java b/engine-d/src/test/java/org/onap/holmes/engine/manager/DroolsEngineTest.java
index 71ef172..f7b7fbd 100644
--- a/engine-d/src/test/java/org/onap/holmes/engine/manager/DroolsEngineTest.java
+++ b/engine-d/src/test/java/org/onap/holmes/engine/manager/DroolsEngineTest.java
@@ -1,12 +1,12 @@
/**
* Copyright 2017 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.
@@ -16,23 +16,14 @@
package org.onap.holmes.engine.manager;
-import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import org.kie.api.KieBase;
-import org.kie.api.KieServices;
-import org.kie.api.builder.KieBuilder;
-import org.kie.api.builder.KieFileSystem;
-import org.kie.api.builder.KieRepository;
-import org.kie.api.io.KieResources;
-import org.kie.api.runtime.KieContainer;
-import org.kie.api.runtime.KieSession;
import org.onap.holmes.common.api.entity.AlarmInfo;
import org.onap.holmes.common.api.entity.CorrelationRule;
import org.onap.holmes.common.api.stat.VesAlarm;
-import org.onap.holmes.common.constant.AlarmConst;
+import org.onap.holmes.common.dmaap.store.ClosedLoopControlNameCache;
import org.onap.holmes.common.exception.CorrelationException;
import org.onap.holmes.common.utils.DbDaoUtil;
import org.onap.holmes.engine.db.AlarmInfoDao;
@@ -43,7 +34,8 @@ import org.powermock.reflect.Whitebox;
import java.util.ArrayList;
import java.util.List;
-import java.util.Locale;
+import java.util.UUID;
+import java.util.stream.Collectors;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.core.IsEqual.equalTo;
@@ -56,135 +48,111 @@ public class DroolsEngineTest {
private RuleMgtWrapper ruleMgtWrapper;
- private KieBase kieBase;
- private KieSession kieSession;
- private KieContainer kieContainer;
- private KieFileSystem kfs;
- private KieServices ks;
- private KieBuilder kieBuilder;
- private KieResources resources;
- private KieRepository kieRepository;
+ private DroolsEngine droolsEngine;
- private AlarmInfoDao alarmInfoDaoMock;
+ private DbDaoUtil dbDaoUtilStub;
- private DroolsEngine droolsEngine;
+ private ClosedLoopControlNameCache closedLoopControlNameCache;
- private DbDaoUtil dbDaoUtilMock;
+ public DroolsEngineTest() throws Exception {
+ droolsEngine = new DroolsEngine();
+ ruleMgtWrapper = new RuleMgtWrapperStub();
+ dbDaoUtilStub = new DbDaoUtilStub();
+ closedLoopControlNameCache = new ClosedLoopControlNameCache();
+ droolsEngine.setClosedLoopControlNameCache(closedLoopControlNameCache);
+ droolsEngine.setDaoUtil(dbDaoUtilStub);
+ droolsEngine.setRuleMgtWrapper(ruleMgtWrapper);
+
+ Whitebox.invokeMethod(droolsEngine, "init");
+ }
@Before
public void setUp() throws Exception {
- droolsEngine = new DroolsEngine();
-
- ks = KieServices.Factory.get();
- resources = ks.getResources();
- kieRepository = ks.getRepository();
- kfs = Whitebox.invokeMethod(droolsEngine, "createKieFileSystemWithKProject", ks);
- kieBuilder = ks.newKieBuilder(kfs).buildAll();
- kieContainer = ks.newKieContainer(kieRepository.getDefaultReleaseId());
- kieBase = kieContainer.getKieBase();
- kieSession = kieContainer.newKieSession();
-
- alarmInfoDaoMock = PowerMock.createMock(AlarmInfoDao.class);
- dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class);
-
-
- Whitebox.setInternalState(droolsEngine, "kieBase", kieBase);
- Whitebox.setInternalState(droolsEngine, "kieSession", kieSession);
- Whitebox.setInternalState(droolsEngine, "kieContainer", kieContainer);
- Whitebox.setInternalState(droolsEngine, "kfs", kfs);
- Whitebox.setInternalState(droolsEngine, "ks", ks);
- Whitebox.setInternalState(droolsEngine, "kieBuilder", kieBuilder);
- Whitebox.setInternalState(droolsEngine, "resources", resources);
- Whitebox.setInternalState(droolsEngine, "kieRepository", kieRepository);
-
- Whitebox.setInternalState(droolsEngine, "daoUtil", dbDaoUtilMock);
- Whitebox.setInternalState(droolsEngine, "alarmInfoDao", alarmInfoDaoMock);
-
PowerMock.resetAll();
}
@Test
- public void init() throws Exception {
-
- List rules = new ArrayList();
- CorrelationRule rule = new CorrelationRule();
- rule.setContent("package content");
- rule.setClosedControlLoopName("test");
- rule.setPackageName("org.onap.holmes");
- rules.add(rule);
-
-// expect(ruleMgtWrapper.queryRuleByEnable(anyInt())).andReturn(rules);
- List alarmInfoList = new ArrayList();
- EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(AlarmInfoDao.class)).andReturn(alarmInfoDaoMock).anyTimes();
- EasyMock.expect(alarmInfoDaoMock.queryAllAlarm()).andReturn(alarmInfoList).anyTimes();
- PowerMock.replayAll();
-
- PowerMock.verifyAll();
+ public void deployRule_rule_is_null() throws CorrelationException {
+ thrown.expect(NullPointerException.class);
+ droolsEngine.deployRule(null);
}
@Test
- public void deployRule_rule_is_null() throws CorrelationException {
- Locale locale = PowerMock.createMock(Locale.class);
-
- thrown.expect(NullPointerException.class);
+ public void deployRule_invalid_rule_no_pkg_name() throws CorrelationException {
+ DeployRuleRequest rule = new DeployRuleRequest();
+ rule.setContent("rule123;");
+ thrown.expect(CorrelationException.class);
+ thrown.expectMessage("The package name can not be empty.");
- droolsEngine.deployRule(null, locale);
+ droolsEngine.deployRule(rule);
}
@Test
- public void deployRule_kbuilder_has_errors() throws CorrelationException {
+ public void deployRule_invalid_rule_illegal_contents() throws CorrelationException {
DeployRuleRequest rule = new DeployRuleRequest();
- rule.setContent("rule123");
- Locale locale = new Locale(AlarmConst.I18N_EN);
-
+ rule.setContent("package rule123; a random string");
thrown.expect(CorrelationException.class);
- droolsEngine.deployRule(rule, locale);
+ droolsEngine.deployRule(rule);
}
@Test
public void deployRule_package_name_repeat() throws CorrelationException {
DeployRuleRequest rule = new DeployRuleRequest();
rule.setContent("package rule123");
- Locale locale = new Locale(AlarmConst.I18N_EN);
thrown.expect(CorrelationException.class);
-
- droolsEngine.deployRule(rule, locale);
- droolsEngine.deployRule(rule, locale);
+ thrown.expectMessage("A rule with the same package name already exists in the system.");
+ droolsEngine.deployRule(rule);
+ droolsEngine.deployRule(rule);
}
@Test
public void undeployRule_package_name_is_null() throws CorrelationException {
String packageName = null;
- Locale locale = new Locale(AlarmConst.I18N_EN);
-
thrown.expect(CorrelationException.class);
+ thrown.expectMessage("The package name should not be null.");
- droolsEngine.undeployRule(packageName, locale);
+ droolsEngine.undeployRule(packageName);
}
@Test
public void undeployRule_normal() throws CorrelationException {
- Locale locale = new Locale(AlarmConst.I18N_EN);
-
DeployRuleRequest rule = new DeployRuleRequest();
rule.setContent("package rule123");
- droolsEngine.deployRule(rule, locale);
+ droolsEngine.deployRule(rule);
+ droolsEngine.undeployRule("rule123");
+ }
- String packageName = "rule123";
+ @Test
+ public void compileRule_compilation_failure() throws CorrelationException {
+ String content = "invalid contents";
- droolsEngine.undeployRule(packageName, locale);
+ thrown.expect(CorrelationException.class);
+
+ droolsEngine.compileRule(content);
}
@Test
- public void compileRule_kbuilder_has_errors() throws CorrelationException {
- String content = "have error content";
- Locale locale = new Locale(AlarmConst.I18N_EN);
-
+ public void compileRule_compilation_deployed_rule() throws CorrelationException {
+ String content = "package deployed;";
+ DeployRuleRequest rule = new DeployRuleRequest();
+ rule.setContent(content);
+ rule.setLoopControlName(UUID.randomUUID().toString());
thrown.expect(CorrelationException.class);
- droolsEngine.compileRule(content, locale);
+ droolsEngine.deployRule(rule);
+ droolsEngine.compileRule(content);
+ }
+
+ @Test
+ public void compileRule_compilation_normal() throws CorrelationException {
+ String content = "package deployed;";
+ DeployRuleRequest rule = new DeployRuleRequest();
+ rule.setContent(content);
+ rule.setLoopControlName(UUID.randomUUID().toString());
+
+ droolsEngine.compileRule(content);
}
@Test
@@ -221,9 +189,7 @@ public class DroolsEngineTest {
alarmInfo.setRootFlag(0);
alarmInfo.setAlarmIsCleared(1);
- PowerMock.replayAll();
- VesAlarm vesAlarm = Whitebox.invokeMethod(droolsEngine,"convertAlarmInfo2VesAlarm",alarmInfo);
- PowerMock.verifyAll();
+ VesAlarm vesAlarm = Whitebox.invokeMethod(droolsEngine, "convertAlarmInfo2VesAlarm", alarmInfo);
assertThat(vesAlarm.getAlarmIsCleared(), is(1));
assertThat(vesAlarm.getSourceName(), equalTo("sourceName"));
@@ -234,4 +200,115 @@ public class DroolsEngineTest {
assertThat(vesAlarm.getEventId(), equalTo("eventId"));
assertThat(vesAlarm.getRootFlag(), is(0));
}
+
+ @Test
+ public void testConvertVesAlarm2AlarmInfo() throws Exception {
+ VesAlarm vesAlarm = new VesAlarm();
+ vesAlarm.setEventId("eventId");
+ vesAlarm.setEventName("eventName");
+ vesAlarm.setStartEpochMicrosec(1L);
+ vesAlarm.setLastEpochMicrosec(1L);
+ vesAlarm.setSourceId("sourceId");
+ vesAlarm.setSourceName("sourceName");
+ vesAlarm.setRootFlag(0);
+ vesAlarm.setAlarmIsCleared(1);
+
+ AlarmInfo alarmInfo = Whitebox.invokeMethod(droolsEngine, "convertVesAlarm2AlarmInfo", vesAlarm);
+
+ assertThat(alarmInfo.getAlarmIsCleared(), is(1));
+ assertThat(alarmInfo.getSourceName(), equalTo("sourceName"));
+ assertThat(alarmInfo.getSourceId(), equalTo("sourceId"));
+ assertThat(alarmInfo.getStartEpochMicroSec(), is(1L));
+ assertThat(alarmInfo.getLastEpochMicroSec(), is(1L));
+ assertThat(alarmInfo.getEventName(), equalTo("eventName"));
+ assertThat(alarmInfo.getEventId(), equalTo("eventId"));
+ assertThat(alarmInfo.getRootFlag(), is(0));
+ }
+
+ @Test
+ public void testQueryPackagesFromEngine() throws CorrelationException {
+
+ DeployRuleRequest rule = new DeployRuleRequest();
+ rule.setContent("package packageCheck; rule \"test\" when eval(1==1) then System.out.println(1); end");
+ rule.setLoopControlName(UUID.randomUUID().toString());
+
+ droolsEngine.deployRule(rule);
+
+ List packages = droolsEngine.queryPackagesFromEngine();
+
+ assertThat(packages.contains("packageCheck"), is(true));
+ }
+}
+
+class RuleMgtWrapperStub extends RuleMgtWrapper {
+ private List rules;
+
+ public RuleMgtWrapperStub() {
+ rules = new ArrayList<>();
+ CorrelationRule rule = new CorrelationRule();
+ rule.setEnabled(1);
+ rule.setContent("package org.onap.holmes;");
+ rule.setPackageName("UT");
+ rule.setClosedControlLoopName(UUID.randomUUID().toString());
+ rules.add(rule);
+ }
+
+ public List getRules() {
+ return rules;
+ }
+
+ public void setRules(List rules) {
+ this.rules = rules;
+ }
+
+ @Override
+ public List queryRuleByEnable(int enabled) throws CorrelationException {
+ return rules.stream().filter(rule -> rule.getEnabled() == enabled).collect(Collectors.toList());
+ }
+}
+
+class AlarmInfoDaoStub extends AlarmInfoDao {
+
+ private List alarms;
+
+ public AlarmInfoDaoStub() {
+ alarms = new ArrayList<>();
+ AlarmInfo info = new AlarmInfo();
+ info.setEventId("eventId");
+ info.setEventName("eventName");
+ info.setStartEpochMicroSec(1L);
+ info.setLastEpochMicroSec(1L);
+ info.setSourceId("sourceId");
+ info.setSourceName("sourceName");
+ info.setRootFlag(0);
+ info.setAlarmIsCleared(1);
+ alarms.add(info);
+ }
+
+ @Override
+ protected String addAlarm(AlarmInfo alarmInfo) {
+ alarms.add(alarmInfo);
+ return null;
+ }
+
+ @Override
+ protected List queryAlarm() {
+ return alarms;
+ }
+
+ @Override
+ protected int deleteAlarmByAlarmIsCleared(String alarmName, String sourceName, String sourceId) {
+ return 1;
+ }
+}
+
+class DbDaoUtilStub extends DbDaoUtil {
+ private AlarmInfoDao dao = new AlarmInfoDaoStub();
+
+ @Override
+ public T getJdbiDaoByOnDemand(Class daoClazz) {
+
+ return (T) dao;
+
+ }
}