/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.wordpress.salaboy; import com.wordpress.salaboy.messaging.MessageConsumer; import com.wordpress.salaboy.messaging.MessageFactory; import com.wordpress.salaboy.messaging.MessageProducer; import com.wordpress.salaboy.messaging.MessageServerSingleton; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactory; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.io.impl.ByteArrayResource; import org.drools.runtime.StatefulKnowledgeSession; import org.hornetq.api.core.HornetQException; import org.hornetq.core.server.HornetQServer; import org.jgroups.protocols.MFC; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; /** * * @author salaboy */ public class HornetQMessageTest { private HornetQServer server; private MessageConsumer consumer; public HornetQMessageTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() throws Exception { //Server Configuration MessageServerSingleton.getInstance().start(); //Consumer Configuration consumer = MessageFactory.createMessageConsumer("IncomingCall"); } @After public void tearDown() throws Exception { consumer.stop(); MessageServerSingleton.getInstance().stop(); } @Test public void hornetQSimple() throws HornetQException { MessageProducer producer = MessageFactory.createMessageProducer(); String message = "Hello HornetQ!"; producer.sendMessage(message); System.out.println(">> Sending Message: " + message); producer.stop(); Object object = consumer.receiveMessage(); Assert.assertNotNull(object); Assert.assertEquals(message, object.toString()); } @Test public void messagingWithRulesTest() throws HornetQException { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); String rules = "package org.test;\n" + "import com.wordpress.salaboy.messaging.MessageProducer;" + "global MessageProducer messageProducer;\n" + "rule \"test messageProducer as global\"\n" + " when\n" + " eval(true)\n" + " then\n" + " messageProducer.sendMessage(\"Hello Message Producer\");\n" + "end\n"; kbuilder.add(new ByteArrayResource(rules.getBytes()), ResourceType.DRL); if (kbuilder.getErrors().size() > 0) { throw new IllegalStateException("Error = " + kbuilder.getErrors().iterator().next().getMessage()); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); MessageProducer producer = MessageFactory.createMessageProducer(); ksession.setGlobal("messageProducer", producer); ksession.fireAllRules(); producer.stop(); Object object = consumer.receiveMessage(); Assert.assertNotNull(object); Assert.assertEquals("Hello Message Producer", object.toString()); } }