add alarm synchronization related operation
[holmes/engine-management.git] / engine-d / src / test / java / org / onap / holmes / engine / manager / DroolsEngineTest.java
index 885b5e4..71ef172 100644 (file)
 \r
 package org.onap.holmes.engine.manager;\r
 \r
-import static org.easymock.EasyMock.anyInt;\r
-import static org.easymock.EasyMock.expect;\r
-\r
-import java.lang.reflect.Method;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import java.util.Locale;\r
-import org.drools.KnowledgeBase;\r
-import org.drools.KnowledgeBaseConfiguration;\r
-import org.drools.KnowledgeBaseFactory;\r
-import org.drools.conf.EventProcessingOption;\r
-import org.drools.runtime.StatefulKnowledgeSession;\r
+import org.easymock.EasyMock;\r
 import org.junit.Before;\r
 import org.junit.Rule;\r
 import org.junit.Test;\r
 import org.junit.rules.ExpectedException;\r
-import org.onap.holmes.common.api.stat.VesAlarm;\r
-import org.onap.holmes.engine.request.DeployRuleRequest;\r
+import org.kie.api.KieBase;\r
+import org.kie.api.KieServices;\r
+import org.kie.api.builder.KieBuilder;\r
+import org.kie.api.builder.KieFileSystem;\r
+import org.kie.api.builder.KieRepository;\r
+import org.kie.api.io.KieResources;\r
+import org.kie.api.runtime.KieContainer;\r
+import org.kie.api.runtime.KieSession;\r
+import org.onap.holmes.common.api.entity.AlarmInfo;\r
 import org.onap.holmes.common.api.entity.CorrelationRule;\r
+import org.onap.holmes.common.api.stat.VesAlarm;\r
 import org.onap.holmes.common.constant.AlarmConst;\r
 import org.onap.holmes.common.exception.CorrelationException;\r
+import org.onap.holmes.common.utils.DbDaoUtil;\r
+import org.onap.holmes.engine.db.AlarmInfoDao;\r
+import org.onap.holmes.engine.request.DeployRuleRequest;\r
 import org.onap.holmes.engine.wrapper.RuleMgtWrapper;\r
 import org.powermock.api.easymock.PowerMock;\r
-import org.powermock.modules.junit4.rule.PowerMockRule;\r
 import org.powermock.reflect.Whitebox;\r
 \r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Locale;\r
+\r
+import static org.hamcrest.CoreMatchers.is;\r
+import static org.hamcrest.core.IsEqual.equalTo;\r
+import static org.junit.Assert.assertThat;\r
+\r
 public class DroolsEngineTest {\r
 \r
     @Rule\r
     public ExpectedException thrown = ExpectedException.none();\r
 \r
-    @Rule\r
-    public PowerMockRule powerMockRule = new PowerMockRule();\r
-\r
     private RuleMgtWrapper ruleMgtWrapper;\r
 \r
-    private KnowledgeBase kbase;\r
-\r
-    private KnowledgeBaseConfiguration kconf;\r
-\r
-    private StatefulKnowledgeSession ksession;\r
+    private KieBase kieBase;\r
+    private KieSession kieSession;\r
+    private KieContainer kieContainer;\r
+    private KieFileSystem kfs;\r
+    private KieServices ks;\r
+    private KieBuilder kieBuilder;\r
+    private KieResources resources;\r
+    private KieRepository kieRepository;\r
 \r
+    private AlarmInfoDao alarmInfoDaoMock;\r
 \r
     private DroolsEngine droolsEngine;\r
 \r
+    private DbDaoUtil dbDaoUtilMock;\r
+\r
     @Before\r
-    public void setUp() {\r
+    public void setUp() throws Exception {\r
         droolsEngine = new DroolsEngine();\r
 \r
-        this.kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();\r
-        this.kconf.setOption(EventProcessingOption.STREAM);\r
-        this.kconf.setProperty("drools.assertBehaviour", "equality");\r
-        this.kbase = KnowledgeBaseFactory.newKnowledgeBase("D-ENGINE", this.kconf);\r
-        this.ksession = kbase.newStatefulKnowledgeSession();\r
+        ks = KieServices.Factory.get();\r
+        resources = ks.getResources();\r
+        kieRepository = ks.getRepository();\r
+        kfs = Whitebox.invokeMethod(droolsEngine, "createKieFileSystemWithKProject", ks);\r
+        kieBuilder = ks.newKieBuilder(kfs).buildAll();\r
+        kieContainer = ks.newKieContainer(kieRepository.getDefaultReleaseId());\r
+        kieBase = kieContainer.getKieBase();\r
+        kieSession = kieContainer.newKieSession();\r
 \r
-        ruleMgtWrapper = PowerMock.createMock(RuleMgtWrapper.class);\r
+        alarmInfoDaoMock = PowerMock.createMock(AlarmInfoDao.class);\r
+        dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class);\r
 \r
-        Whitebox.setInternalState(droolsEngine, "ruleMgtWrapper", ruleMgtWrapper);\r
 \r
-        Whitebox.setInternalState(droolsEngine, "kconf", kconf);\r
-        Whitebox.setInternalState(droolsEngine, "kbase", kbase);\r
-        Whitebox.setInternalState(droolsEngine, "ksession", ksession);\r
+        Whitebox.setInternalState(droolsEngine, "kieBase", kieBase);\r
+        Whitebox.setInternalState(droolsEngine, "kieSession", kieSession);\r
+        Whitebox.setInternalState(droolsEngine, "kieContainer", kieContainer);\r
+        Whitebox.setInternalState(droolsEngine, "kfs", kfs);\r
+        Whitebox.setInternalState(droolsEngine, "ks", ks);\r
+        Whitebox.setInternalState(droolsEngine, "kieBuilder", kieBuilder);\r
+        Whitebox.setInternalState(droolsEngine, "resources", resources);\r
+        Whitebox.setInternalState(droolsEngine, "kieRepository", kieRepository);\r
+\r
+        Whitebox.setInternalState(droolsEngine, "daoUtil", dbDaoUtilMock);\r
+        Whitebox.setInternalState(droolsEngine, "alarmInfoDao", alarmInfoDaoMock);\r
 \r
         PowerMock.resetAll();\r
     }\r
@@ -87,16 +108,17 @@ public class DroolsEngineTest {
 \r
         List<CorrelationRule> rules = new ArrayList<CorrelationRule>();\r
         CorrelationRule rule = new CorrelationRule();\r
-        rule.setContent("content");\r
+        rule.setContent("package content");\r
+        rule.setClosedControlLoopName("test");\r
+        rule.setPackageName("org.onap.holmes");\r
         rules.add(rule);\r
 \r
-        expect(ruleMgtWrapper.queryRuleByEnable(anyInt())).andReturn(rules);\r
+//        expect(ruleMgtWrapper.queryRuleByEnable(anyInt())).andReturn(rules);\r
+        List<AlarmInfo> alarmInfoList = new ArrayList<AlarmInfo>();\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(AlarmInfoDao.class)).andReturn(alarmInfoDaoMock).anyTimes();\r
+        EasyMock.expect(alarmInfoDaoMock.queryAllAlarm()).andReturn(alarmInfoList).anyTimes();\r
         PowerMock.replayAll();\r
 \r
-        Method method = DroolsEngine.class.getDeclaredMethod("init");\r
-        method.setAccessible(true);\r
-        method.invoke(droolsEngine);\r
-\r
         PowerMock.verifyAll();\r
     }\r
 \r
@@ -166,17 +188,19 @@ public class DroolsEngineTest {
     }\r
 \r
     @Test\r
-    public void putRaisedIntoStream_facthandle_is_null() {\r
+    public void putRaisedIntoStream_facthandle_is_not_null() {\r
         VesAlarm raiseAlarm = new VesAlarm();\r
-        raiseAlarm.setVersion((long) 245235);\r
+        raiseAlarm.setSourceId("11111");\r
+        raiseAlarm.setEventName("alarm");\r
         droolsEngine.putRaisedIntoStream(raiseAlarm);\r
         droolsEngine.putRaisedIntoStream(raiseAlarm);\r
     }\r
 \r
     @Test\r
-    public void putRaisedIntoStream_factHandle_is_not_null() {\r
+    public void putRaisedIntoStream_factHandle_is_null() {\r
         VesAlarm raiseAlarm = new VesAlarm();\r
-        raiseAlarm.setVersion((long) 245235);\r
+        raiseAlarm.setSourceId("11111");\r
+        raiseAlarm.setEventName("alarm");\r
         droolsEngine.putRaisedIntoStream(raiseAlarm);\r
     }\r
 \r
@@ -184,4 +208,30 @@ public class DroolsEngineTest {
     public void stop() throws Exception {\r
         droolsEngine.stop();\r
     }\r
+\r
+    @Test\r
+    public void testConvertAlarmInfo2VesAlarm() throws Exception {\r
+        AlarmInfo alarmInfo = new AlarmInfo();\r
+        alarmInfo.setEventId("eventId");\r
+        alarmInfo.setEventName("eventName");\r
+        alarmInfo.setStartEpochMicroSec(1L);\r
+        alarmInfo.setLastEpochMicroSec(1L);\r
+        alarmInfo.setSourceId("sourceId");\r
+        alarmInfo.setSourceName("sourceName");\r
+        alarmInfo.setRootFlag(0);\r
+        alarmInfo.setAlarmIsCleared(1);\r
+\r
+        PowerMock.replayAll();\r
+        VesAlarm vesAlarm = Whitebox.invokeMethod(droolsEngine,"convertAlarmInfo2VesAlarm",alarmInfo);\r
+        PowerMock.verifyAll();\r
+\r
+        assertThat(vesAlarm.getAlarmIsCleared(), is(1));\r
+        assertThat(vesAlarm.getSourceName(), equalTo("sourceName"));\r
+        assertThat(vesAlarm.getSourceId(), equalTo("sourceId"));\r
+        assertThat(vesAlarm.getStartEpochMicrosec(), is(1L));\r
+        assertThat(vesAlarm.getLastEpochMicrosec(), is(1L));\r
+        assertThat(vesAlarm.getEventName(), equalTo("eventName"));\r
+        assertThat(vesAlarm.getEventId(), equalTo("eventId"));\r
+        assertThat(vesAlarm.getRootFlag(), is(0));\r
+    }\r
 }\r