* See the License for the specific language governing permissions and\r
* limitations under the License.\r
*/\r
+\r
package org.openo.holmes.engine.manager;\r
\r
+import static org.easymock.EasyMock.anyBoolean;\r
+import static org.easymock.EasyMock.anyInt;\r
+import static org.easymock.EasyMock.anyLong;\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.Collection;\r
+import java.util.Iterator;\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.ObjectMessage;\r
+import javax.jms.Session;\r
+import javax.jms.Topic;\r
import org.drools.KnowledgeBase;\r
import org.drools.KnowledgeBaseConfiguration;\r
import org.drools.builder.KnowledgeBuilder;\r
import org.junit.Rule;\r
import org.junit.Test;\r
import org.junit.rules.ExpectedException;\r
-import org.junit.runner.RunWith;\r
import org.openo.holmes.common.api.entity.CorrelationRule;\r
import org.openo.holmes.common.api.stat.Alarm;\r
import org.openo.holmes.common.config.MQConfig;\r
import org.openo.holmes.common.exception.CorrelationException;\r
-import org.openo.holmes.common.exception.EngineException;\r
import org.openo.holmes.engine.request.DeployRuleRequest;\r
import org.openo.holmes.engine.wrapper.RuleMgtWrapper;\r
import org.powermock.api.easymock.PowerMock;\r
-import org.powermock.core.classloader.annotations.PrepareForTest;\r
-import org.powermock.modules.junit4.PowerMockRunner;\r
+import org.powermock.modules.junit4.rule.PowerMockRule;\r
import org.powermock.reflect.Whitebox;\r
\r
-import javax.jms.*;\r
-import java.lang.reflect.Method;\r
-import java.util.*;\r
-\r
-import static org.easymock.EasyMock.*;\r
-\r
-/**\r
- * Created by Administrator on 2017/2/20.\r
- */\r
-@RunWith(PowerMockRunner.class)\r
-@PrepareForTest(DroolsEngine.class)\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
@Before\r
public void setUp() {\r
- droolsEngine = new DroolsEngine();\r
+ droolsEngine = new DroolsEngine();\r
\r
ruleMgtWrapper = PowerMock.createMock(RuleMgtWrapper.class);\r
kbase = PowerMock.createMock(KnowledgeBase.class);\r
mqConfigProvider = PowerMock.createMock(IterableProvider.class);\r
connectionFactory = PowerMock.createMock(ConnectionFactory.class);\r
\r
- Whitebox.setInternalState(droolsEngine,"ruleMgtWrapper",ruleMgtWrapper);\r
- Whitebox.setInternalState(droolsEngine,"kbase",kbase);\r
- Whitebox.setInternalState(droolsEngine,"kconf",kconf);\r
- Whitebox.setInternalState(droolsEngine,"ksession",ksession);\r
- Whitebox.setInternalState(droolsEngine,"kbuilder",kbuilder);\r
- Whitebox.setInternalState(droolsEngine,"mqConfigProvider",mqConfigProvider);\r
- Whitebox.setInternalState(droolsEngine,"connectionFactory",connectionFactory);\r
+ Whitebox.setInternalState(droolsEngine, "ruleMgtWrapper", ruleMgtWrapper);\r
+ Whitebox.setInternalState(droolsEngine, "kbase", kbase);\r
+ Whitebox.setInternalState(droolsEngine, "kconf", kconf);\r
+ Whitebox.setInternalState(droolsEngine, "ksession", ksession);\r
+ Whitebox.setInternalState(droolsEngine, "kbuilder", kbuilder);\r
+ Whitebox.setInternalState(droolsEngine, "mqConfigProvider", mqConfigProvider);\r
+ Whitebox.setInternalState(droolsEngine, "connectionFactory", connectionFactory);\r
\r
PowerMock.resetAll();\r
}\r
mqConfig.brokerPort = 4567;\r
mqConfig.brokerUsername = "admin";\r
mqConfig.brokerPassword = "admin";\r
- expect(mqConfigProvider.get()).andReturn(mqConfig).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
- @Test\r
- public void initDeployRule_exception() throws Exception {\r
- thrown.expect(EngineException.class);\r
-\r
List<CorrelationRule> rules = new ArrayList<CorrelationRule>();\r
CorrelationRule rule = new CorrelationRule();\r
rule.setContent("content");\r
rules.add(rule);\r
- expect(ruleMgtWrapper.queryRuleByEnable(anyInt())).andReturn(rules);\r
- kbuilder.add(anyObject(Resource.class), anyObject(ResourceType.class));\r
- expect(kbuilder.getKnowledgePackages()).andReturn(new ArrayList<KnowledgePackage>());\r
- kbase.addKnowledgePackages(anyObject(Collection.class));\r
- expectLastCall().andThrow(new RuntimeException(""));\r
- PowerMock.replayAll();\r
-\r
- Method method = DroolsEngine.class.getDeclaredMethod("initDeployRule");\r
- method.setAccessible(true);\r
- method.invoke(droolsEngine);\r
-\r
- PowerMock.verifyAll();\r
- }\r
\r
- @Test\r
- public void initDeployRule_normal() throws Exception {\r
- List<CorrelationRule> rules = new ArrayList<CorrelationRule>();\r
- CorrelationRule rule = new CorrelationRule();\r
- rule.setContent("content");\r
- rules.add(rule);\r
+ expect(mqConfigProvider.get()).andReturn(mqConfig).anyTimes();\r
expect(ruleMgtWrapper.queryRuleByEnable(anyInt())).andReturn(rules);\r
- kbuilder.add(anyObject(Resource.class), anyObject(ResourceType.class));\r
- expect(kbuilder.getKnowledgePackages()).andReturn(new ArrayList<KnowledgePackage>());\r
- kbase.addKnowledgePackages(anyObject(Collection.class));\r
- expect(ksession.fireAllRules()).andReturn(1);\r
PowerMock.replayAll();\r
\r
- Method method = DroolsEngine.class.getDeclaredMethod("initDeployRule");\r
+ Method method = DroolsEngine.class.getDeclaredMethod("init");\r
method.setAccessible(true);\r
method.invoke(droolsEngine);\r
\r
}\r
\r
@Test\r
- public void deployRule_rull_is_null() throws CorrelationException {\r
+ public void deployRule_rule_is_null() throws CorrelationException {\r
Locale locale = PowerMock.createMock(Locale.class);\r
\r
thrown.expect(NullPointerException.class);\r
kbuilder.add(anyObject(Resource.class), anyObject(ResourceType.class));\r
expect(kbuilder.hasErrors()).andReturn(true);\r
expect(kbuilder.getErrors()).andReturn(errors);\r
+\r
PowerMock.replayAll();\r
+\r
droolsEngine.deployRule(rule, locale);\r
+\r
PowerMock.verifyAll();\r
}\r
\r
expect(builderColl.iterator()).andReturn(iterator);\r
expect(iterator.next()).andReturn(kPackage);\r
expect(kbase.getKnowledgePackages()).andReturn(baseColl);\r
+\r
PowerMock.replayAll();\r
+\r
droolsEngine.deployRule(rule, locale);\r
+\r
PowerMock.verifyAll();\r
}\r
\r
expect(kbase.getKnowledgePackages()).andReturn(baseColl);\r
kbase.addKnowledgePackages(anyObject(Collection.class));\r
EasyMock.expectLastCall().andThrow(new RuntimeException(""));\r
+\r
PowerMock.replayAll();\r
+\r
droolsEngine.deployRule(rule, locale);\r
+\r
PowerMock.verifyAll();\r
}\r
\r
expect(kPackage.getName()).andReturn(pkgName);\r
\r
PowerMock.replayAll();\r
+\r
String resultPkgName = droolsEngine.deployRule(rule, locale);\r
- PowerMock.verifyAll();\r
Assert.assertThat(resultPkgName, IsEqual.equalTo(pkgName));\r
+\r
+ PowerMock.verifyAll();\r
+\r
}\r
\r
@Test\r
thrown.expect(CorrelationException.class);\r
\r
expect(kbase.getKnowledgePackage(anyObject(String.class))).andReturn(null);\r
+\r
PowerMock.replayAll();\r
- droolsEngine.undeployRule(packageName,locale);\r
+\r
+ droolsEngine.undeployRule(packageName, locale);\r
+\r
PowerMock.verifyAll();\r
}\r
\r
expect(pkg.getName()).andReturn("");\r
kbase.removeKnowledgePackage(anyObject(String.class));\r
EasyMock.expectLastCall().andThrow(new RuntimeException(""));\r
+\r
PowerMock.replayAll();\r
- droolsEngine.undeployRule(packageName,locale);\r
+\r
+ droolsEngine.undeployRule(packageName, locale);\r
+\r
PowerMock.verifyAll();\r
}\r
\r
expect(kbase.getKnowledgePackage(anyObject(String.class))).andReturn(pkg);\r
expect(pkg.getName()).andReturn("");\r
kbase.removeKnowledgePackage(anyObject(String.class));\r
+\r
PowerMock.replayAll();\r
- droolsEngine.undeployRule(packageName,locale);\r
+\r
+ droolsEngine.undeployRule(packageName, locale);\r
+\r
PowerMock.verifyAll();\r
}\r
\r
kbuilder.add(anyObject(Resource.class), anyObject(ResourceType.class));\r
expect(kbuilder.hasErrors()).andReturn(true);\r
expect(kbuilder.getErrors()).andReturn(errors);\r
+\r
PowerMock.replayAll();\r
- droolsEngine.compileRule(content,locale);\r
+\r
+ droolsEngine.compileRule(content, locale);\r
+\r
PowerMock.verifyAll();\r
}\r
\r
\r
kbuilder.add(anyObject(Resource.class), anyObject(ResourceType.class));\r
expect(kbuilder.hasErrors()).andReturn(false);\r
+\r
PowerMock.replayAll();\r
- droolsEngine.compileRule(content,locale);\r
+\r
+ droolsEngine.compileRule(content, locale);\r
+\r
PowerMock.verifyAll();\r
}\r
\r
@Test\r
public void putRaisedIntoStream_facthandle_is_null() {\r
- Alarm raiseAlarm = new Alarm();\r
-\r
expect(ksession.getFactHandle(anyObject(Alarm.class))).andReturn(null);\r
expect(ksession.insert(anyObject(Alarm.class))).andReturn(null);\r
expect(ksession.fireAllRules()).andReturn(0);\r
+\r
PowerMock.replayAll();\r
- droolsEngine.putRaisedIntoStream(raiseAlarm);\r
+\r
+ droolsEngine.putRaisedIntoStream(new Alarm());\r
+\r
PowerMock.verifyAll();\r
}\r
\r
@Test\r
public void putRaisedIntoStream_factHandle_is_not_null() {\r
- Alarm raiseAlarm = new Alarm();\r
FactHandle factHandle = PowerMock.createMock(FactHandle.class);\r
expect(ksession.getFactHandle(anyObject(Alarm.class))).andReturn(factHandle);\r
ksession.retract(anyObject(FactHandle.class));\r
expect(ksession.insert(anyObject(Alarm.class))).andReturn(null);\r
expect(ksession.fireAllRules()).andReturn(0);\r
+\r
PowerMock.replayAll();\r
- droolsEngine.putRaisedIntoStream(raiseAlarm);\r
+\r
+ droolsEngine.putRaisedIntoStream(new Alarm());\r
+\r
PowerMock.verifyAll();\r
}\r
\r
expect(messageConsumer.receive(anyLong())).andReturn(null);\r
\r
PowerMock.replayAll();\r
+\r
listener.run();\r
+\r
PowerMock.verifyAll();\r
}\r
\r
Destination destination = PowerMock.createMock(Topic.class);\r
MessageConsumer messageConsumer = PowerMock.createMock(MessageConsumer.class);\r
ObjectMessage objMessage = PowerMock.createMock(ObjectMessage.class);\r
- Alarm raiseAlarm = new Alarm();\r
\r
FactHandle factHandle = PowerMock.createMock(FactHandle.class);\r
\r
expect(session.createTopic(anyObject(String.class))).andReturn((Topic) destination);\r
expect(session.createConsumer(anyObject(Destination.class))).andReturn(messageConsumer);\r
expect(messageConsumer.receive(anyLong())).andReturn(objMessage);\r
- expect(objMessage.getObject()).andReturn(raiseAlarm);\r
+ expect(objMessage.getObject()).andReturn(new Alarm());\r
\r
expect(ksession.getFactHandle(anyObject(Alarm.class))).andReturn(factHandle);\r
ksession.retract(anyObject(FactHandle.class));\r
expect(messageConsumer.receive(anyLong())).andReturn(null);\r
\r
PowerMock.replayAll();\r
+\r
listener.run();\r
+\r
PowerMock.verifyAll();\r
}\r
\r
@Test\r
public void stop() throws Exception {\r
- ksession.dispose();\r
- PowerMock.replayAll();\r
droolsEngine.stop();\r
- PowerMock.verifyAll();\r
}\r
}\r