\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.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.Alarm;\r
-import org.onap.holmes.common.config.MQConfig;\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
-\r
- private IterableProvider<MQConfig> mqConfigProvider;\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 ConnectionFactory connectionFactory;\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
+ alarmInfoDaoMock = PowerMock.createMock(AlarmInfoDao.class);\r
+ dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class);\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
+ 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
\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
+// 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
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
+ 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
- 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
+ public void stop() throws Exception {\r
+ droolsEngine.stop();\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
+ 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
-\r
- listener.receive();\r
-\r
+ VesAlarm vesAlarm = Whitebox.invokeMethod(droolsEngine,"convertAlarmInfo2VesAlarm",alarmInfo);\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
- }\r
\r
- @Test\r
- public void stop() throws Exception {\r
- droolsEngine.stop();\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