package org.atomnuke; import java.util.Collections; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import org.atomnuke.examples.eventlets.CounterEventlet; import org.atomnuke.examples.source.EventGenerator; import org.atomnuke.fallout.service.gc.FalloutReclamationService; import org.atomnuke.sink.eps.EventletChainSink; import org.atomnuke.plugin.context.NopInstanceContext; import org.atomnuke.plugin.proxy.japi.JapiProxyFactory; import org.atomnuke.service.RuntimeServiceManager; import org.atomnuke.service.Service; import org.atomnuke.service.ServiceManager; import org.atomnuke.service.introspection.ServicesInterrogatorImpl; import org.atomnuke.task.atom.AtomTask; import org.atomnuke.task.context.TaskContextImpl; import org.atomnuke.util.TimeValue; import org.junit.Test; import org.slf4j.LoggerFactory; /** * * @author zinic */ public class NukeKernelTest { @Test public void nukeShakedownTest() throws Exception { final NukeKernel nukeKernel = new NukeKernel(); final AtomicLong eventsProcessed = new AtomicLong(0); for (int taskId = 1; taskId <= 30; taskId++) { final AtomTask task = nukeKernel.follow(new EventGenerator("Task " + taskId, true), new TimeValue(1000 * taskId, TimeUnit.NANOSECONDS)); final EventletChainSink relay = new EventletChainSink(); final ServiceManager svcManager = new RuntimeServiceManager(StaticNukeEnvironment.get(), new JapiProxyFactory()); svcManager.submit(new NopInstanceContext<Service>(new FalloutReclamationService())); svcManager.resolve(); relay.init(new TaskContextImpl(StaticNukeEnvironment.get(), LoggerFactory.getLogger(NukeKernelTest.class), Collections.EMPTY_MAP, new ServicesInterrogatorImpl(svcManager), null, "test")); relay.enlistHandler(new CounterEventlet(eventsProcessed, false)); relay.enlistHandler(new CounterEventlet(eventsProcessed, false)); relay.enlistHandler(new CounterEventlet(eventsProcessed, false)); relay.enlistHandler(new CounterEventlet(eventsProcessed, false)); relay.enlistHandler(new CounterEventlet(eventsProcessed, false)); task.addSink(relay); } nukeKernel.start(); Thread.sleep(1000); nukeKernel.destroy(); System.out.println("Processed " + eventsProcessed.get() + " entry events in one second."); } }