public class TestFusionBackEndRuntimeFactory extends TestCase {
public void testFusionBackEndRuntimeFacotry() {
CEPBackEndRuntimeFactory factory = new FusionBackEndRuntimeFactory();
CEPBackEndRuntime cepBackEndRuntime = factory.createCEPBackEndRuntime(null, null,0);
Expression expression = new Expression();
expression.setText("package org.wso2.carbon.cep.fusion;\n" +
"\n" +
"import java.util.Map;\n" +
"import java.util.HashMap;\n" +
"\n" +
"global org.wso2.carbon.cep.fusion.listener.FusionEventListener fusionListener;\n" +
"\n" +
"declare HashMap\n" +
" @role( event )\n" +
"end\n" +
"\n" +
"rule InvokeIBM\n" +
"\n" +
"when\n" +
" $stockQuote : HashMap($symbol : this[\"symbol\"], $stockPrice : this[\"price\"], this[\"picked\"] != \"true\") over window:time(2m) from entry-point \"allStockQuotes\";\n" +
" $average : Double() from accumulate(HashMap(this[\"symbol\"] == $symbol,$price : this[\"price\"]) over window:time(2m) from entry-point \"allStockQuotes\" , average( $price));\n" +
" eval((Double)$stockPrice > $average * 1.01);\n" +
"then\n" +
" $stockQuote.put(\"picked\",\"true\");\n" +
" update($stockQuote);\n" +
" Map $fastMovingStock = new HashMap();\n" +
" $fastMovingStock.put(\"price\",$stockPrice);\n" +
" $fastMovingStock.put(\"symbol\",$symbol);\n" +
" $fastMovingStock.put(\"average\",$average);\n" +
" fusionListener.onEvent($fastMovingStock);\n" +
"end");
expression.setType(CEPConstants.CEP_CONF_EXPRESSION_INLINE);
try {
CEPEventListener cepEventListener = new CEPEventListener(null, 0, CarbonConstants.REGISTRY_SYSTEM_USERNAME){
public void onComplexEvent(List events) {
for (Object event : events){
Map eventMap = (Map) event;
System.out.println(" Stock price " + eventMap.get("price")
+ " symbol " + eventMap.get("symbol")
+ " average " + eventMap.get("average"));
}
}
};
cepBackEndRuntime.addQuery("testQuery", expression, cepEventListener);
Mapping mapping = new Mapping();
mapping.setStream("allStockQuotes");
Map symbolMap = null;
symbolMap = new HashMap();
symbolMap.put("symbol","IBM");
symbolMap.put("price", 143.80);
cepBackEndRuntime.insertEvent(symbolMap, mapping);
symbolMap = new HashMap();
symbolMap.put("symbol","IBM");
symbolMap.put("price", 160.80);
cepBackEndRuntime.insertEvent(symbolMap, mapping);
/* symbolMap = new HashMap();
symbolMap.put("symbol","SUN");
symbolMap.put("price", 30.00);