package io.urmia.md.model; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonParser; import io.urmia.md.model.job.JobDefinition; import org.junit.Assert; import org.junit.Test; public class JobDefinitionTest { private static final Gson gson = new Gson(); // http://apidocs.joyent.com/manta/jobs-reference.html @Test public void testParseJson_01() { String json = "{" + "\"phases\": [ " + "{\"exec\": \"grep -w main\"}, " + "{" + " \"type\": \"reduce\"," + " \"exec\": \"/var/tmp/stackvis/bin/stackvis\"," + " \"count\": 2," + " \"image\": \">=13.1.0\"," + " \"assets\": [ \"/:login/stor/stackvis.tgz\" ]," + " \"init\": \"cd /var/tmp && tar xzf /assets/:login/stor/stackvis.tgz\"," + " \"memory\": 2048," + " \"disk\": 16" + "} ]\n" + "}"; System.out.println("json = " + json); JsonParser parser = new JsonParser(); JsonElement root = parser.parse(json); System.out.println("root = " + root); JsonElement phases = root.getAsJsonObject().get("phases"); System.out.println("phases = " + phases); System.out.println("phases size = " + phases.getAsJsonArray().size()); } @Test public void testParseJob_01() { String json = "{phases: [{exec:\"ls\"}]}"; JobDefinition job = new JobDefinition("u1", json); Assert.assertFalse(job.getPhases().isEmpty()); Assert.assertEquals(1, job.getPhases().size()); JobDefinition.Phase phase = job.getPhases().get(0); Assert.assertEquals(phase.type, JobDefinition.Phase.Type.MAP); Assert.assertNotNull(phase.exec); Assert.assertEquals(job.getOwner(), "u1"); } @Test public void testParseJob_02() { String json = "{" + "\"phases\": [ " + "{\"exec\": \"grep -w main\"}, " + "{" + " \"type\": \"reduce\"," + " \"exec\": \"/var/tmp/stackvis/bin/stackvis\"," + " \"count\": 2," + " \"image\": \">=13.1.0\"," + " \"assets\": [ \"/:login/stor/stackvis.tgz\" ]," + " \"init\": \"cd /var/tmp && tar xzf /assets/:login/stor/stackvis.tgz\"," + " \"memory\": 2048," + " \"disk\": 16" + "} ]\n" + "}"; JobDefinition job = new JobDefinition("u2", json); Assert.assertFalse(job.getPhases().isEmpty()); Assert.assertEquals(2, job.getPhases().size()); JobDefinition.Phase phase1 = job.getPhases().get(0); Assert.assertEquals(phase1.type, JobDefinition.Phase.Type.MAP); Assert.assertNotNull(phase1.exec); Assert.assertEquals(job.getOwner(), "u2"); } }