From e742bf9b8d1bc5ee7a97586510643db6fd3174f2 Mon Sep 17 00:00:00 2001 From: Martin Date: Mon, 18 Nov 2019 14:53:44 +0100 Subject: Implement basic API (#15) --- .../pl/edu/mimuw/cloudatlas/agent/AgentTest.java | 106 +++++++++++++++++++-- 1 file changed, 96 insertions(+), 10 deletions(-) (limited to 'src/test') diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/agent/AgentTest.java b/src/test/java/pl/edu/mimuw/cloudatlas/agent/AgentTest.java index 24924a7..8c9c495 100644 --- a/src/test/java/pl/edu/mimuw/cloudatlas/agent/AgentTest.java +++ b/src/test/java/pl/edu/mimuw/cloudatlas/agent/AgentTest.java @@ -4,6 +4,9 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; +import static org.junit.Assert.assertThat; +import static org.hamcrest.CoreMatchers.hasItems; + import java.lang.Runtime; import java.lang.Process; @@ -11,6 +14,8 @@ import java.lang.Thread; import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; import java.util.Set; import java.rmi.registry.LocateRegistry; @@ -19,17 +24,33 @@ import java.rmi.registry.Registry; import java.math.BigDecimal; import pl.edu.mimuw.cloudatlas.api.Api; +import pl.edu.mimuw.cloudatlas.model.AttributesMap; +import pl.edu.mimuw.cloudatlas.model.TypePrimitive; +import pl.edu.mimuw.cloudatlas.model.Value; +import pl.edu.mimuw.cloudatlas.model.ValueDouble; +import pl.edu.mimuw.cloudatlas.model.ValueInt; +import pl.edu.mimuw.cloudatlas.model.ValueList; +import pl.edu.mimuw.cloudatlas.model.ValueNull; +import pl.edu.mimuw.cloudatlas.model.ValueQuery; +import pl.edu.mimuw.cloudatlas.model.ValueString; +import pl.edu.mimuw.cloudatlas.model.ValueTime; public class AgentTest { private static Process registryProcess; private static Process agentProcess; + private static Registry registry; + private static Api api; + @BeforeClass public static void bindApi() throws Exception { registryProcess = Runtime.getRuntime().exec("./scripts/registry"); Thread.sleep(10000); agentProcess = Runtime.getRuntime().exec("./gradlew runAgent"); Thread.sleep(10000); + + registry = LocateRegistry.getRegistry("localhost"); + api = (Api) registry.lookup("Api"); } @AfterClass @@ -43,15 +64,80 @@ public class AgentTest { } @Test - public void testGetZoneSet() { - try { - Registry registry = LocateRegistry.getRegistry("localhost"); - Api api = (Api) registry.lookup("Api"); - Set set = api.getZoneSet(); - assertEquals(null, set); - } catch (Exception e) { - e.printStackTrace(); - assertTrue(false); - } + public void testGetZoneSet() throws Exception { + Set set = api.getZoneSet(); + assertEquals(8, set.size()); + assertThat(set, hasItems("/")); + assertThat(set, hasItems("/uw")); + assertThat(set, hasItems("/uw/violet07", "/uw/khaki31", "/uw/khaki13")); + assertThat(set, hasItems("/pjwstk")); + assertThat(set, hasItems("/pjwstk/whatever01", "/pjwstk/whatever02")); + } + + @Test + public void testRootGetZoneAttributeValue() throws Exception { + AttributesMap rootAttributes = api.getZoneAttributeValues("/"); + assertEquals(new ValueInt(0l), rootAttributes.get("level")); + assertEquals(ValueNull.getInstance(), rootAttributes.get("name")); + } + + @Test + public void testIntermediateGetZoneAttributeValue() throws Exception { + AttributesMap attributes = api.getZoneAttributeValues("/uw"); + assertEquals(new ValueInt(1l), attributes.get("level")); + assertEquals(new ValueString("uw"), attributes.get("name")); + } + + @Test + public void testLeafGetZoneAttributeValue() throws Exception { + AttributesMap attributes = api.getZoneAttributeValues("/pjwstk/whatever01"); + assertEquals(new ValueInt(2l), attributes.get("level")); + assertEquals(new ValueString("whatever01"), attributes.get("name")); + assertEquals(new ValueString("/pjwstk/whatever01"), attributes.get("owner")); + assertEquals(new ValueTime("2012/11/09 21:12:00.000"), attributes.get("timestamp")); + assertEquals(new ValueInt(1l), attributes.get("cardinality")); + assertEquals(new ValueTime("2012/10/18 07:03:00.000"), attributes.get("creation")); + assertEquals(new ValueDouble(0.1), attributes.get("cpu_usage")); + assertEquals(new ValueInt(7l), attributes.get("num_cores")); + assertEquals(new ValueInt(215l), attributes.get("num_processes")); + + List phpModules = new ArrayList(); + phpModules.add(new ValueString("rewrite")); + assertEquals(new ValueList(phpModules, TypePrimitive.STRING), attributes.get("php_modules")); + } + + @Test + public void testInstallQuery() throws Exception { + String name = "&query"; + String queryCode = "SELECT 1 AS one"; + api.installQuery(name, queryCode); + AttributesMap attributes = api.getZoneAttributeValues("/pjwstk"); + assertEquals(new ValueQuery(queryCode), attributes.get(name)); + } + + @Test + public void testUninstallQuery() throws Exception { + String name = "&query"; + String queryCode = "SELECT 1 AS one"; + api.installQuery(name, queryCode); + api.uninstallQuery(name); + AttributesMap attributes = api.getZoneAttributeValues("/pjwstk"); + assertNull(attributes.getOrNull(name)); + } + + @Test + public void testSetAttributeValueChange() throws Exception { + Value numProcesses = new ValueInt(42l); + api.setAttributeValue("/uw/khaki13", "num_processes", numProcesses); + AttributesMap attributes = api.getZoneAttributeValues("/uw/khaki13"); + assertEquals(numProcesses, attributes.get("num_processes")); + } + + @Test + public void testSetAttributeValueAdd() throws Exception { + Value numProcesses = new ValueInt(42l); + api.setAttributeValue("/uw/khaki13", "an_attribute", numProcesses); + AttributesMap attributes = api.getZoneAttributeValues("/uw/khaki13"); + assertEquals(numProcesses, attributes.get("an_attribute")); } } -- cgit v1.2.3