use of won.bot.integrationtest.failsim.ConstantNewAtomURIDecorator in project webofneeds by researchstudio-sat.
the class DuplicateAtomURIFailureBot method initializeEventListeners.
@Override
protected void initializeEventListeners() {
EventListenerContext ctx = getEventListenerContext();
EventBus bus = getEventBus();
// create atoms every trigger execution until 2 atoms are created
bus.subscribe(ActEvent.class, new ActionOnEventListener(ctx, new CreateAtomWithSocketsAction(// message
new ConstantNewAtomURIDecorator(ctx, "constantAtomURI" + System.currentTimeMillis()), getBotContextWrapper().getAtomCreateListName()), 2));
// log error if we can create 2 atoms
bus.subscribe(AtomCreatedEvent.class, new ActionOnceAfterNEventsListener(ctx, 2, new MultipleActions(ctx, new LogErrorAction(ctx, "Should not have been able to create 2 atoms with identical URI"), new PublishEventAction(ctx, new TestFailedEvent(this, "Should not have been able to create 2 atoms with identical URI")))));
// log success if we could create 1 atom
bus.subscribe(AtomCreatedEvent.class, new ActionOnFirstNEventsListener(ctx, 1, new MultipleActions(ctx, new LogAction(ctx, "Good: could create one atom"), new PublishEventAction(ctx, new SuccessEvent()))));
// log success if we got an error for 2nd atom
bus.subscribe(AtomCreationFailedEvent.class, new ActionOnFirstNEventsListener(ctx, 1, new MultipleActions(ctx, new LogAction(ctx, "Good: atom creation failed for 2nd atom."), new PublishEventAction(ctx, new SuccessEvent()))));
// when we have 2 SuccessEvents, we're done. Deactivate the atoms and signal
// we're finished
bus.subscribe(SuccessEvent.class, new ActionOnceAfterNEventsListener(ctx, 2, new MultipleActions(ctx, new LogAction(ctx, "Test passed."), new PublishEventAction(ctx, new TestPassedEvent(this)), new DeactivateAllAtomsAction(ctx))));
// when we have a FailureEvent, we're done, too. Deactivate the atoms and signal
// we're finished
bus.subscribe(TestFailedEvent.class, new ActionOnceAfterNEventsListener(ctx, 1, new MultipleActions(ctx, new LogAction(ctx, "Test failed."), new DeactivateAllAtomsAction(ctx))));
// wait for the atomDeactivated event, then say we're done.
bus.subscribe(AtomDeactivatedEvent.class, new ActionOnceAfterNEventsListener(ctx, 1, new SignalWorkDoneAction(ctx, this)));
// TODO: fix: bot runs forever even if test fails.
// TODO: fix: atom 1 is not deactivated if test fails.
}
Aggregations