use of il.ac.bgu.cs.bp.bpjs.model.BEvent in project BPjs by bThink-BGU.
the class EventsWithDataTest method testEventsWithData.
@Test
public void testEventsWithData() throws Exception {
BProgram bpr = new SingleResourceBProgram("EventsWithData.js", "programName", new SimpleEventSelectionStrategy(99l));
BProgramRunner rnr = new BProgramRunner(bpr);
rnr.addListener(new PrintBProgramRunnerListener());
InMemoryEventLoggingListener events = rnr.addListener(new InMemoryEventLoggingListener());
rnr.run();
assertEquals(Arrays.asList("e1", "e2", "e1e2"), events.getEvents().stream().map(BEvent::getName).collect(toList()));
}
use of il.ac.bgu.cs.bp.bpjs.model.BEvent in project BPjs by bThink-BGU.
the class ExternalEventsTest method superStepTest.
@Test
public void superStepTest() throws InterruptedException {
final BEvent in1a = new BEvent("in1a");
final BEvent ext1 = new BEvent("ext1");
final BEvent in1b = new BEvent("in1b");
final SingleResourceBProgram bprog = new SingleResourceBProgram("ExternalEvents.js");
bprog.setEventSelectionStrategy(new LoggingEventSelectionStrategyDecorator(bprog.getEventSelectionStrategy()));
final BProgramRunner sut = new BProgramRunner(bprog);
sut.addListener(new PrintBProgramRunnerListener());
InMemoryEventLoggingListener eventLogger = sut.addListener(new InMemoryEventLoggingListener());
sut.getBProgram().enqueueExternalEvent(ext1);
sut.run();
eventLogger.getEvents().forEach(e -> System.out.println(e));
EventPattern expected = new EventPattern().append(in1a).append(ext1).append(in1b);
assertTrue(expected.matches(eventLogger.getEvents()));
}
use of il.ac.bgu.cs.bp.bpjs.model.BEvent in project BPjs by bThink-BGU.
the class ContinuationProgramStateTest method testInequalityLoop.
@Test
public void testInequalityLoop() throws Exception {
// Generate snapshot 1
BProgram bprog = new StringBProgram(SRC_LOOP_UPDATED_VAR);
BProgramSyncSnapshot cur = bprog.setup();
cur = cur.start(exSvc);
BThreadSyncSnapshot snapshot = cur.getBThreadSnapshots().iterator().next();
NativeContinuation nc = (NativeContinuation) snapshot.getContinuation();
ContinuationProgramState sut1 = new ContinuationProgramState(nc);
assertEquals(1.0, sut1.getVisibleVariables().get("dbl"));
assertEquals("a", sut1.getVisibleVariables().get("str"));
// Generate snapshot 2, pre-loop
cur = cur.triggerEvent(new BEvent("e"), exSvc, emptySet());
snapshot = cur.getBThreadSnapshots().iterator().next();
nc = (NativeContinuation) snapshot.getContinuation();
ContinuationProgramState sut2 = new ContinuationProgramState(nc);
assertEquals("b", sut2.getVisibleVariables().get("str"));
assertEquals(42.0, sut2.getVisibleVariables().get("dbl"));
// Generate snapshot 3, first loop
cur = cur.triggerEvent(new BEvent("e"), exSvc, emptySet());
snapshot = cur.getBThreadSnapshots().iterator().next();
nc = (NativeContinuation) snapshot.getContinuation();
ContinuationProgramState sut3 = new ContinuationProgramState(nc);
assertEquals(47.0, sut3.getVisibleVariables().get("dbl"));
assertEquals("ba", sut3.getVisibleVariables().get("str"));
// Generate snapshot 4, second loop
cur = cur.triggerEvent(new BEvent("e"), exSvc, emptySet());
snapshot = cur.getBThreadSnapshots().iterator().next();
nc = (NativeContinuation) snapshot.getContinuation();
ContinuationProgramState sut4 = new ContinuationProgramState(nc);
assertEquals(52.0, sut4.getVisibleVariables().get("dbl"));
assertEquals("baa", sut4.getVisibleVariables().get("str"));
assertFalse(sut2.equals(sut1));
}
use of il.ac.bgu.cs.bp.bpjs.model.BEvent in project BPjs by bThink-BGU.
the class ExternalEventsDaemonTest method superStepTest.
@Test
public void superStepTest() throws InterruptedException {
BProgramRunner sut = new BProgramRunner(new SingleResourceBProgram("ExternalEventsDaemon.js"));
sut.addListener(new PrintBProgramRunnerListener());
InMemoryEventLoggingListener eventLogger = sut.addListener(new InMemoryEventLoggingListener());
new Thread(() -> {
try {
for (int i = 0; i < 4; i++) {
Thread.sleep(500);
sut.getBProgram().enqueueExternalEvent(new BEvent("ext1"));
}
} catch (InterruptedException ex) {
Logger.getLogger(ExternalEventsDaemonTest.class.getName()).log(Level.SEVERE, null, ex);
}
}).start();
sut.run();
assertTrue(sut.getBProgram().getFromGlobalScope("internalDaemonMode", Boolean.class).get());
eventLogger.getEvents().forEach(e -> System.out.println(e));
final BEvent in1a = new BEvent("in1a");
final BEvent in1b = new BEvent("in1b");
final BEvent ext1 = new BEvent("ext1");
EventPattern expected = new EventPattern().append(ext1).append(in1a).append(in1b).append(ext1).append(in1a).append(in1b).append(ext1).append(in1a).append(in1b);
assertTrue(expected.matches(eventLogger.getEvents()));
}
use of il.ac.bgu.cs.bp.bpjs.model.BEvent in project BPjs by bThink-BGU.
the class PushingExternalEventTest method externalEventsFromABthread.
@Test
public void externalEventsFromABthread() throws InterruptedException {
BProgramRunner sut = new BProgramRunner(new SingleResourceBProgram("PushingExternalEvent.js"));
sut.addListener(new PrintBProgramRunnerListener());
InMemoryEventLoggingListener eventLogger = sut.addListener(new InMemoryEventLoggingListener());
sut.run();
eventLogger.getEvents().forEach(e -> System.out.println(e));
EventPattern expected = new EventPattern().append(new BEvent("start")).append(new BEvent("external")).append(new BEvent("done"));
assertTrue(expected.matches(eventLogger.getEvents()));
}
Aggregations