Update the Drools Engine to Version 6.5.0
[holmes/engine-management.git] / engine-d / src / test / java / org / onap / holmes / engine / manager / DroolsEngineTest.java
index 5487177..3325efa 100644 (file)
 \r
 package org.onap.holmes.engine.manager;\r
 \r
-import static org.easymock.EasyMock.anyBoolean;\r
 import static org.easymock.EasyMock.anyInt;\r
-import static org.easymock.EasyMock.anyObject;\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 javax.jms.Connection;\r
-import javax.jms.ConnectionFactory;\r
-import javax.jms.Destination;\r
-import javax.jms.JMSException;\r
-import javax.jms.MessageConsumer;\r
-import javax.jms.Session;\r
-import javax.jms.Topic;\r
-import org.apache.activemq.command.ActiveMQObjectMessage;\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.glassfish.hk2.api.IterableProvider;\r
 import org.junit.Before;\r
 import org.junit.Rule;\r
 import org.junit.Test;\r
 import org.junit.rules.ExpectedException;\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.stat.VesAlarm;\r
 import org.onap.holmes.engine.request.DeployRuleRequest;\r
 import org.onap.holmes.common.api.entity.CorrelationRule;\r
-import org.onap.holmes.common.api.stat.Alarm;\r
-import org.onap.holmes.common.config.MQConfig;\r
 import org.onap.holmes.common.constant.AlarmConst;\r
 import org.onap.holmes.common.exception.CorrelationException;\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
 public class DroolsEngineTest {\r
@@ -60,60 +49,59 @@ public class DroolsEngineTest {
     @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 IterableProvider<MQConfig> mqConfigProvider;\r
-\r
-    private ConnectionFactory connectionFactory;\r
 \r
     private DroolsEngine droolsEngine;\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
-        mqConfigProvider = PowerMock.createMock(IterableProvider.class);\r
-        connectionFactory = PowerMock.createMock(ConnectionFactory.class);\r
 \r
         Whitebox.setInternalState(droolsEngine, "ruleMgtWrapper", ruleMgtWrapper);\r
-        Whitebox.setInternalState(droolsEngine, "mqConfigProvider", mqConfigProvider);\r
-        Whitebox.setInternalState(droolsEngine, "kconf", kconf);\r
-        Whitebox.setInternalState(droolsEngine, "kbase", kbase);\r
-        Whitebox.setInternalState(droolsEngine, "ksession", ksession);\r
-        Whitebox.setInternalState(droolsEngine, "connectionFactory", connectionFactory);\r
+\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
         PowerMock.resetAll();\r
     }\r
 \r
     @Test\r
     public void init() throws Exception {\r
-        MQConfig mqConfig = new MQConfig();\r
-        mqConfig.brokerIp = "127.0.0.1";\r
-        mqConfig.brokerPort = 4567;\r
-        mqConfig.brokerUsername = "admin";\r
-        mqConfig.brokerPassword = "admin";\r
+\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(mqConfigProvider.get()).andReturn(mqConfig).anyTimes();\r
         expect(ruleMgtWrapper.queryRuleByEnable(anyInt())).andReturn(rules);\r
         PowerMock.replayAll();\r
 \r
@@ -189,128 +177,21 @@ public class DroolsEngineTest {
         droolsEngine.compileRule(content, locale);\r
     }\r
 \r
-\r
     @Test\r
-    public void putRaisedIntoStream_facthandle_is_null() {\r
-        Alarm raiseAlarm = new Alarm();\r
+    public void putRaisedIntoStream_facthandle_is_not_null() {\r
+        VesAlarm raiseAlarm = new VesAlarm();\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
-        droolsEngine.putRaisedIntoStream(new Alarm());\r
-    }\r
-\r
-\r
-    @Test\r
-    public void listener_receive() throws JMSException {\r
-        DroolsEngine.AlarmMqMessageListener listener = droolsEngine.new AlarmMqMessageListener();\r
-\r
-        Connection connection = PowerMock.createMock(Connection.class);\r
-        Session session = PowerMock.createMock(Session.class);\r
-        Destination destination = PowerMock.createMock(Topic.class);\r
-        MessageConsumer consumer = PowerMock.createMock(MessageConsumer.class);\r
-\r
-        Whitebox.setInternalState(listener, "connection", connection);\r
-        Whitebox.setInternalState(listener, "session", session);\r
-        Whitebox.setInternalState(listener, "destination", destination);\r
-        Whitebox.setInternalState(listener, "consumer", consumer);\r
-\r
-        PowerMock.reset();\r
-\r
-        expect(connectionFactory.createConnection()).andReturn(connection);\r
-        connection.start();\r
-        expect(connection.createSession(anyBoolean(), anyInt())).andReturn(session);\r
-        expect(session.createTopic(anyObject(String.class))).andReturn((Topic) destination);\r
-        expect(session.createConsumer(anyObject(Destination.class))).andReturn(consumer);\r
-        consumer.setMessageListener(listener);\r
-\r
-        PowerMock.replayAll();\r
-\r
-        listener.receive();\r
-\r
-        PowerMock.verifyAll();\r
-    }\r
-\r
-    @Test\r
-    public void listener_exception() throws JMSException {\r
-        DroolsEngine.AlarmMqMessageListener listener = droolsEngine.new AlarmMqMessageListener();\r
-\r
-        Connection connection = PowerMock.createMock(Connection.class);\r
-        Session session = PowerMock.createMock(Session.class);\r
-        Destination destination = PowerMock.createMock(Topic.class);\r
-        MessageConsumer consumer = PowerMock.createMock(MessageConsumer.class);\r
-\r
-        Whitebox.setInternalState(listener, "connection", connection);\r
-        Whitebox.setInternalState(listener, "session", session);\r
-        Whitebox.setInternalState(listener, "destination", destination);\r
-        Whitebox.setInternalState(listener, "consumer", consumer);\r
-\r
-        PowerMock.reset();\r
-\r
-        expect(connectionFactory.createConnection()).andReturn(connection);\r
-        connection.start();\r
-        expect(connection.createSession(anyBoolean(), anyInt())).andReturn(session);\r
-        expect(session.createTopic(anyObject(String.class))).andReturn((Topic) destination);\r
-        expect(session.createConsumer(anyObject(Destination.class))).andReturn(consumer);\r
-        consumer.setMessageListener(listener);\r
-        EasyMock.expectLastCall().andThrow(new JMSException(""));\r
-\r
-        consumer.close();\r
-        session.close();\r
-        connection.close();\r
-\r
-        PowerMock.replayAll();\r
-\r
-        listener.receive();\r
-\r
-        PowerMock.verifyAll();\r
-    }\r
-\r
-    @Test\r
-    public void listener_close_exception() throws JMSException {\r
-        DroolsEngine.AlarmMqMessageListener listener = droolsEngine.new AlarmMqMessageListener();\r
-\r
-        Connection connection = PowerMock.createMock(Connection.class);\r
-        Session session = PowerMock.createMock(Session.class);\r
-        Destination destination = PowerMock.createMock(Topic.class);\r
-        MessageConsumer consumer = PowerMock.createMock(MessageConsumer.class);\r
-\r
-        Whitebox.setInternalState(listener, "connection", connection);\r
-        Whitebox.setInternalState(listener, "session", session);\r
-        Whitebox.setInternalState(listener, "destination", destination);\r
-        Whitebox.setInternalState(listener, "consumer", consumer);\r
-\r
-        PowerMock.reset();\r
-\r
-        expect(connectionFactory.createConnection()).andReturn(connection);\r
-        connection.start();\r
-        expect(connection.createSession(anyBoolean(), anyInt())).andReturn(session);\r
-        expect(session.createTopic(anyObject(String.class))).andReturn((Topic) destination);\r
-        expect(session.createConsumer(anyObject(Destination.class))).andReturn(consumer);\r
-        consumer.setMessageListener(listener);\r
-        EasyMock.expectLastCall().andThrow(new JMSException(""));\r
-\r
-        consumer.close();\r
-        EasyMock.expectLastCall().andThrow(new JMSException(""));\r
-\r
-        PowerMock.replayAll();\r
-\r
-        listener.receive();\r
-\r
-        PowerMock.verifyAll();\r
-    }\r
-\r
-    @Test\r
-    public void listener_on_message() throws JMSException {\r
-        DroolsEngine.AlarmMqMessageListener listener = droolsEngine.new AlarmMqMessageListener();\r
-        Alarm alarm = new Alarm();\r
-        alarm.setAlarmKey("alarmKey");\r
-        ActiveMQObjectMessage objectMessage = new ActiveMQObjectMessage();\r
-        objectMessage.setObject(alarm);\r
-\r
-        listener.onMessage(objectMessage);\r
+    public void putRaisedIntoStream_factHandle_is_null() {\r
+        VesAlarm raiseAlarm = new VesAlarm();\r
+        raiseAlarm.setSourceId("11111");\r
+        raiseAlarm.setEventName("alarm");\r
+        droolsEngine.putRaisedIntoStream(raiseAlarm);\r
     }\r
 \r
     @Test\r