package sushi.correlation; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Before; import org.junit.Test; import sushi.event.SushiEvent; import sushi.event.SushiEventType; import sushi.event.attribute.SushiAttribute; import sushi.event.attribute.SushiAttributeTypeEnum; import sushi.persistence.Persistor; import sushi.process.SushiProcess; import sushi.process.SushiProcessInstance; import sushi.util.SushiTestHelper; /** * @author micha * */ public class CorrelationWithAttributesTest { @Before public void setup(){ Persistor.useTestEnviroment(); } @Test public void testCorrelator(){ assertNumberOfDataSets(0, 0, 0, 0); //EventTyp anlegen List<SushiEventType> eventTypes = SushiTestHelper.createEventTypes(); SushiEventType kinoEventType = null; for(SushiEventType eventType : eventTypes){ eventType.save(); if(eventType.getTypeName().equals("Kino")){ kinoEventType = eventType; } } assertNotNull(kinoEventType); assertNumberOfDataSets(0, 2, 0, 0); //Events reinladen List<SushiEvent> events = SushiTestHelper.createEvents(kinoEventType); for(SushiEvent event : events){ event.save(); } List<SushiEventType> correlationEventTypes = new ArrayList<SushiEventType>(); correlationEventTypes.add(kinoEventType); assertNumberOfDataSets(3, 2, 0, 0); //Process anlegen SushiProcess process = SushiTestHelper.createProcess(Arrays.asList(kinoEventType)); process.save(); process.save(); assertNumberOfDataSets(3, 2, 1, 0); //Korrelieren SushiAttribute correlationAttribute = new SushiAttribute("Location", SushiAttributeTypeEnum.INTEGER); AttributeCorrelator.correlate(correlationEventTypes, Arrays.asList(correlationAttribute), process, null); //Prüfen, gleiche Anzahl Events, EventTypen, Prozesse und richtige Anzahl Prozessinstanzen assertNumberOfDataSets(3, 2, 1, 3); } @Test public void testCorrelatorWithOutEvents(){ assertNumberOfDataSets(0, 0, 0, 0); //EventTyp anlegen List<SushiEventType> eventTypes = SushiTestHelper.createEventTypes(); SushiEventType kinoEventType = null; for(SushiEventType eventType : eventTypes){ eventType.save(); if(eventType.getTypeName().equals("Kino")){ kinoEventType = eventType; } } assertNotNull(kinoEventType); assertNumberOfDataSets(0, 2, 0, 0); List<SushiEventType> correlationEventTypes = new ArrayList<SushiEventType>(); correlationEventTypes.add(kinoEventType); //Process anlegen SushiProcess process = SushiTestHelper.createProcess(Arrays.asList(kinoEventType)); process.save(); assertNumberOfDataSets(0, 2, 1, 0); assertTrue(SushiProcess.findByName(process.getName()).size() == 1); SushiProcess processFromDataBase = SushiProcess.findByName(process.getName()).get(0); processFromDataBase.save(); processFromDataBase.save(); assertNumberOfDataSets(0, 2, 1, 0); //Korrelieren SushiAttribute correlationAttribute = new SushiAttribute("Location", SushiAttributeTypeEnum.INTEGER); AttributeCorrelator.correlate(correlationEventTypes, Arrays.asList(correlationAttribute), processFromDataBase, null); //Prüfen, gleiche Anzahl Events, EventTypen, Prozesse und richtige Anzahl Prozessinstanzen assertNumberOfDataSets(0, 2, 1, 0); } private void assertNumberOfDataSets(int events, int eventTypes, int processes, int processInstances) { assertTrue("Number of events must be " + events + " but was " + SushiEvent.findAll().size(), SushiEvent.findAll().size() == events); assertTrue("Number of event types must be " + eventTypes + " but was " + SushiEventType.findAll().size(), SushiEventType.findAll().size() == eventTypes); assertTrue("Number of processes must be " + processes + " but was " + SushiProcess.findAll().size(), SushiProcess.findAll().size() == processes); assertTrue("Number of process instances must be " + processInstances + " but was " + SushiProcessInstance.findAll().size(), SushiProcessInstance.findAll().size() == processInstances); } }