package oncue.tests.clients; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import oncue.client.AkkaClient; import oncue.common.messages.EnqueueJob; import oncue.common.messages.Job; import oncue.tests.base.ActorSystemTest; import oncue.tests.workers.TestWorker; import org.junit.Test; import akka.actor.ActorRef; import akka.testkit.JavaTestKit; public class AkkaClientTest extends ActorSystemTest { @Test public void enqueueJobWithWorkerTypeAndMapOfParamsEnqueuesAJob() throws Exception { new JavaTestKit(system) { { final JavaTestKit schedulerProbe = new JavaTestKit(system) { { new IgnoreMsg() { protected boolean ignore(Object message) { if (message instanceof EnqueueJob) return false; else return true; } }; } }; ActorRef scheduler = createScheduler(system, schedulerProbe.getRef()); final String workerType = "oncue.tests.workers.TestWorker"; final Map<String, String> jobParams = new HashMap<>(); jobParams.put("A", "B"); AkkaClient client = new AkkaClient(system, scheduler); client.enqueueJob(workerType, jobParams); EnqueueJob job = schedulerProbe .expectMsgClass(EnqueueJob.class); assertEquals(workerType, job.getWorkerType()); assertEquals(jobParams, job.getParams()); } }; } @Test public void enqueueJobWithWorkerTypeEnqueuesAJob() throws Exception { new JavaTestKit(system) { { final JavaTestKit schedulerProbe = new JavaTestKit(system) { { new IgnoreMsg() { protected boolean ignore(Object message) { if (message instanceof EnqueueJob) return false; else return true; } }; } }; ActorRef scheduler = createScheduler(system, schedulerProbe.getRef()); final String workerType = "oncue.tests.workers.TestWorker"; AkkaClient client = new AkkaClient(system, scheduler); client.enqueueJob(workerType); EnqueueJob job = schedulerProbe .expectMsgClass(EnqueueJob.class); assertEquals(workerType, job.getWorkerType()); assertEquals(new HashMap<String, String>(), job.getParams()); } }; } @Test public void getJobsReturnsAllJobsKnownToTheScheduler() throws Exception { new JavaTestKit(system) { { ActorRef scheduler = createScheduler(system); final Map<String, String> job1Params = new HashMap<>(); job1Params.put("A", "B"); scheduler.tell(new EnqueueJob(TestWorker.class.getName(), job1Params), getRef()); Job expectedJob = expectMsgClass(Job.class); AkkaClient client = new AkkaClient(system, scheduler); Collection<Job> jobs = client.getJobs(); assertNotNull(jobs); assertEquals(1, jobs.size()); Iterator<Job> jobsIterator = jobs.iterator(); Job actualJob = jobsIterator.next(); assertEquals(expectedJob.getWorkerType(), actualJob.getWorkerType()); assertEquals(expectedJob.getParams(), actualJob.getParams()); } }; } }