package sushi.querymonitoring;
import static org.junit.Assert.assertTrue;
import java.util.Date;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import sushi.esper.SushiStreamProcessingAdapter;
import sushi.event.SushiEvent;
import sushi.event.SushiEventType;
import sushi.event.attribute.SushiAttribute;
import sushi.event.attribute.SushiAttributeTree;
import sushi.event.attribute.SushiAttributeTypeEnum;
import sushi.event.collection.SushiMapTree;
import sushi.eventhandling.Broker;
import sushi.monitoring.QueryMonitoringPoint;
import sushi.persistence.Persistor;
import sushi.process.SushiProcess;
import sushi.process.SushiProcessInstance;
import sushi.query.SushiQuery;
import sushi.query.SushiQueryTypeEnum;
public class ProcessMonitoringViaQueries {
private SushiQuery query1;
private SushiProcess process1;
private SushiProcessInstance processInstance1;
@Before
public void setup() {
Persistor.useTestEnviroment();
}
@Test
public void monitoringTest(){
SushiAttribute attribute = new SushiAttribute("TestAttribute", SushiAttributeTypeEnum.STRING);
SushiAttributeTree attributes = new SushiAttributeTree(attribute);
SushiEventType eventType = new SushiEventType("TestType", attributes);
Broker.send(eventType);
query1 = new SushiQuery("NotifyTestType", "Select * from TestType", SushiQueryTypeEnum.LIVE);
query1.save();
query1.addToEsper();
process1 = new SushiProcess("process1");
process1.save();
QueryMonitoringPoint.removeAll();
QueryMonitoringPoint point = new QueryMonitoringPoint(process1, query1, 40, false);
point.save();
assertTrue(QueryMonitoringPoint.findAll().size() == 1);
SushiMapTree tree = new SushiMapTree(attribute.getAttributeExpression(), "Wert");
SushiEvent event = new SushiEvent(eventType, new Date(), tree);
event.save();
processInstance1 = new SushiProcessInstance();
processInstance1.addEvent(event);
processInstance1.save();
event.addProcessInstance(processInstance1);
event.merge();
SushiStreamProcessingAdapter.getInstance().addEvent(event);
assertTrue(SushiProcessInstance.findByID(processInstance1.getID()).getProgress() == 40);
}
}