You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/07/14 17:36:04 UTC

[08/11] git commit: Move catalog YAML test from rest-server to brooklyn-camp.

Move catalog YAML test from rest-server to brooklyn-camp.

The test doesn't rely on REST in any way.


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/aff8601a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/aff8601a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/aff8601a

Branch: refs/heads/master
Commit: aff8601aebb86c8225d7c1e875a73fb38dce59c5
Parents: d767d78
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Fri Jul 11 13:56:02 2014 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Fri Jul 11 13:56:02 2014 +0300

----------------------------------------------------------------------
 .../camp/brooklyn/AbstractYamlTest.java         |   5 +
 .../brooklyn/camp/brooklyn/CatalogYamlTest.java | 138 ++++++++++++++
 .../resources/CatalogBundleResourceTest.java    | 178 -------------------
 3 files changed, 143 insertions(+), 178 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aff8601a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/AbstractYamlTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/AbstractYamlTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/AbstractYamlTest.java
index 012eccf..95d655e 100644
--- a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/AbstractYamlTest.java
+++ b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/AbstractYamlTest.java
@@ -22,6 +22,7 @@ import io.brooklyn.camp.spi.Assembly;
 import io.brooklyn.camp.spi.AssemblyTemplate;
 
 import java.io.Reader;
+import java.io.StringReader;
 import java.util.Set;
 
 import org.slf4j.Logger;
@@ -91,6 +92,10 @@ public abstract class AbstractYamlTest {
             builder.append("\n").append(l);
         return createAndStartApplication(Streams.newReaderWithContents(builder.toString()));
     }
+    
+    protected Entity createAndStartApplication(String input) throws Exception {
+        return createAndStartApplication(new StringReader(input));
+    }
 
     protected Entity createAndStartApplication(Reader input) throws Exception {
         AssemblyTemplate at = platform.pdp().registerDeploymentPlan(input);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aff8601a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/CatalogYamlTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/CatalogYamlTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/CatalogYamlTest.java
new file mode 100644
index 0000000..f6486fc
--- /dev/null
+++ b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/CatalogYamlTest.java
@@ -0,0 +1,138 @@
+package io.brooklyn.camp.brooklyn;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
+
+import org.testng.annotations.Test;
+
+import brooklyn.catalog.CatalogItem;
+import brooklyn.entity.Entity;
+import brooklyn.management.osgi.OsgiStandaloneTest;
+
+import com.google.common.collect.Iterables;
+
+
+public class CatalogYamlTest extends AbstractYamlTest {
+    private static final String SIMPLE_ENTITY_TYPE = "brooklyn.osgi.tests.SimpleEntity";
+
+    @Test
+    public void testAddCatalogItem() throws Exception {
+        String registeredTypeName = "my.catalog.app.id.load";
+        addCatalogOSGiEntity(registeredTypeName);
+        
+        CatalogItem<?, ?> item = mgmt().getCatalog().getCatalogItem(registeredTypeName);
+        assertEquals(item.getRegisteredTypeName(), registeredTypeName);
+        
+    }
+
+    @Test
+    public void testLaunchApplicationReferencingCatalog() throws Exception {
+        String registeredTypeName = "my.catalog.app.id.launch";
+        registerAndLaunchAndAssertSimpleEntity(registeredTypeName, SIMPLE_ENTITY_TYPE);
+    }
+
+    @Test
+    public void testLaunchApplicationWithCatalogReferencingOtherCatalog() throws Exception {
+        String referencedRegisteredTypeName = "my.catalog.app.id.referenced";
+        String referrerRegisteredTypeName = "my.catalog.app.id.referring";
+        addCatalogOSGiEntity(referencedRegisteredTypeName, SIMPLE_ENTITY_TYPE);
+        addCatalogOSGiEntity(referrerRegisteredTypeName, referencedRegisteredTypeName);
+
+        String yaml = "name: simple-app-yaml\n" +
+                      "location: localhost\n" +
+                      "services: \n" +
+                      "  - serviceType: "+referrerRegisteredTypeName;
+        Entity app = createAndStartApplication(yaml);
+        
+        Entity simpleEntity = Iterables.getOnlyElement(app.getChildren());
+        assertEquals(simpleEntity.getEntityType().getName(), SIMPLE_ENTITY_TYPE);
+    }
+
+    @Test
+    public void testLaunchApplicationWithTypeUsingJavaColonPrefix() throws Exception {
+        String registeredTypeName = SIMPLE_ENTITY_TYPE;
+        String serviceName = "java:"+SIMPLE_ENTITY_TYPE;
+        registerAndLaunchAndAssertSimpleEntity(registeredTypeName, serviceName);
+    }
+
+    @Test
+    public void testLaunchApplicationLoopWithJavaTypeName() throws Exception {
+        String registeredTypeName = SIMPLE_ENTITY_TYPE;
+        String serviceName = SIMPLE_ENTITY_TYPE;
+        registerAndLaunchAndAssertSimpleEntity(registeredTypeName, serviceName);
+    }
+
+    @Test
+    public void testLaunchApplicationLoopCatalogIdFails() throws Exception {
+        String registeredTypeName = "self.referencing.type";
+        registerAndLaunchFailsWithRecursionError(registeredTypeName, registeredTypeName);
+    }
+
+    private void registerAndLaunchAndAssertSimpleEntity(String registeredTypeName, String serviceType) throws Exception {
+        addCatalogOSGiEntity(registeredTypeName, serviceType);
+        try {
+            String yaml = "name: simple-app-yaml\n" +
+                          "location: localhost\n" +
+                          "services: \n" +
+                          "  - serviceType: "+registeredTypeName;
+            Entity app = createAndStartApplication(yaml);
+    
+            Entity simpleEntity = Iterables.getOnlyElement(app.getChildren());
+            assertEquals(simpleEntity.getEntityType().getName(), SIMPLE_ENTITY_TYPE);
+        } finally {
+            deleteCatalogEntity(registeredTypeName);
+        }
+    }
+
+    private void registerAndLaunchFailsWithRecursionError(String registeredTypeName, String serviceType) throws Exception {
+        addCatalogOSGiEntity(registeredTypeName, serviceType);
+        try {
+            String yaml = "name: simple-app-yaml\n" +
+                          "location: localhost\n" +
+                          "services: \n" +
+                          "  - serviceType: "+registeredTypeName;
+            try {
+                createAndStartApplication(yaml);
+                fail("Expected to throw IllegalStateException");
+            } catch (IllegalStateException e) {
+                assertTrue(e.getMessage().contains("Recursive reference to "+registeredTypeName));
+            }
+        } finally {
+            deleteCatalogEntity(registeredTypeName);
+        }
+    }
+
+    private void addCatalogOSGiEntity(String registeredTypeName) {
+        addCatalogOSGiEntity(registeredTypeName, SIMPLE_ENTITY_TYPE);
+    }
+    
+    private void addCatalogOSGiEntity(String registeredTypeName, String serviceType) {
+        String catalogYaml =
+            "name: "+registeredTypeName+"\n"+
+            // FIXME name above should be unnecessary -- slight problem somewhere currently
+            // as testListApplicationYaml fails without the line above
+            "brooklyn.catalog:\n"+
+            "  id: " + registeredTypeName + "\n"+
+            "  name: My Catalog App\n"+
+            "  description: My description\n"+
+            "  icon_url: classpath://path/to/myicon.jpg\n"+
+            "  version: 0.1.2\n"+
+            "  libraries:\n"+
+            "  - url: " + OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL + "\n"+
+            "\n"+
+            "services:\n"+
+            "- type: " + serviceType;
+
+        addCatalogItem(catalogYaml);
+    }
+
+    private void addCatalogItem(String catalogYaml) {
+        mgmt().getCatalog().addItem(catalogYaml);
+    }
+
+    private void deleteCatalogEntity(String catalogItem) {
+        mgmt().getCatalog().deleteCatalogItem(catalogItem);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aff8601a/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogBundleResourceTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogBundleResourceTest.java b/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogBundleResourceTest.java
deleted file mode 100644
index f9910dc..0000000
--- a/usage/rest-server/src/test/java/brooklyn/rest/resources/CatalogBundleResourceTest.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package brooklyn.rest.resources;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import java.io.InputStream;
-import java.net.URI;
-
-import javax.ws.rs.core.Response;
-
-import org.testng.annotations.Test;
-
-import brooklyn.entity.Application;
-import brooklyn.entity.Entity;
-import brooklyn.management.osgi.OsgiStandaloneTest;
-import brooklyn.rest.domain.ApplicationSummary;
-import brooklyn.rest.domain.CatalogEntitySummary;
-import brooklyn.rest.testing.BrooklynRestResourceTest;
-import brooklyn.util.stream.Streams;
-
-import com.google.common.collect.Iterables;
-import com.sun.jersey.api.client.ClientResponse;
-
-public class CatalogBundleResourceTest extends BrooklynRestResourceTest {
-
-    private static final String SIMPLE_ENTITY_TYPE = "brooklyn.osgi.tests.SimpleEntity";
-
-    @Test
-    public void testListApplicationYaml() throws Exception {
-        String registeredTypeName = "my.catalog.app.id.load";
-        addCatalogOSGiEntity(registeredTypeName);
-        CatalogEntitySummary entityItem = client().resource("/v1/catalog/entities/"+registeredTypeName)
-                .get(CatalogEntitySummary.class);
-
-        assertEquals(entityItem.getRegisteredType(), registeredTypeName);
-        
-    }
-
-    @Test
-    public void testLaunchApplicationYaml() throws Exception {
-        String registeredTypeName = "my.catalog.app.id.launch";
-        registerAndLaunchAndAssertSimpleEntity(registeredTypeName, SIMPLE_ENTITY_TYPE);
-    }
-
-    @Test
-    public void testLaunchApplicationWithCatalogReferencingOtherCatalogYaml() throws Exception {
-        String referencedRegisteredTypeName = "my.catalog.app.id.referenced";
-        String referrerRegisteredTypeName = "my.catalog.app.id.referring";
-        addCatalogOSGiEntity(referencedRegisteredTypeName, SIMPLE_ENTITY_TYPE);
-        addCatalogOSGiEntity(referrerRegisteredTypeName, referencedRegisteredTypeName);
-
-        String yaml = "{ name: simple-app-yaml, location: localhost, services: [ { serviceType: "+referrerRegisteredTypeName+" } ] }";
-        ApplicationSummary appSummary = createAndWaitForApp(yaml);
-
-        String appId = appSummary.getId();
-        assertEquals(appSummary.getSpec().getName(), "simple-app-yaml");
-
-        Application app = (Application) getManagementContext().getEntityManager().getEntity(appId);
-        Entity simpleEntity = Iterables.getOnlyElement(app.getChildren());
-        assertEquals(simpleEntity.getEntityType().getName(), SIMPLE_ENTITY_TYPE);
-    }
-
-    @Test
-    public void testLaunchApplicationWithTypeUsingJavaColonPrefixInYaml() throws Exception {
-        String registeredTypeName = SIMPLE_ENTITY_TYPE;
-        String serviceName = "java:"+SIMPLE_ENTITY_TYPE;
-        registerAndLaunchAndAssertSimpleEntity(registeredTypeName, serviceName);
-    }
-
-    @Test
-    public void testLaunchApplicationLoopWithJavaTypeNameInYaml() throws Exception {
-        String registeredTypeName = SIMPLE_ENTITY_TYPE;
-        String serviceName = SIMPLE_ENTITY_TYPE;
-        registerAndLaunchAndAssertSimpleEntity(registeredTypeName, serviceName);
-    }
-
-    @Test
-    public void testLaunchApplicationLoopCatalogIdInYamlFails() throws Exception {
-        String registeredTypeName = "self.referencing.type";
-        registerAndLaunchFailsWithRecursionError(registeredTypeName, registeredTypeName);
-    }
-
-    private void registerAndLaunchAndAssertSimpleEntity(String registeredTypeName, String serviceType) {
-        addCatalogOSGiEntity(registeredTypeName, serviceType);
-        try {
-            String yaml = "{ name: simple-app-yaml, location: localhost, services: [ { serviceType: "+registeredTypeName+" } ] }";
-            ApplicationSummary appSummary = createAndWaitForApp(yaml);
-    
-            String appId = appSummary.getId();
-            assertEquals(appSummary.getSpec().getName(), "simple-app-yaml");
-    
-            Application app = (Application) getManagementContext().getEntityManager().getEntity(appId);
-            Entity simpleEntity = Iterables.getOnlyElement(app.getChildren());
-            assertEquals(simpleEntity.getEntityType().getName(), SIMPLE_ENTITY_TYPE);
-        } finally {
-            deleteCatalogEntity(registeredTypeName);
-        }
-    }
-
-    private void registerAndLaunchFailsWithRecursionError(String registeredTypeName, String serviceType) {
-        addCatalogOSGiEntity(registeredTypeName, serviceType);
-        try {
-            String yaml = "{ name: simple-app-yaml, location: localhost, services: [ { serviceType: "+registeredTypeName+" } ] }";
-            ClientResponse response = client().resource("/v1/applications")
-                    .entity(yaml, "application/x-yaml")
-                    .post(ClientResponse.class);
-    
-            int responseStatus = response.getStatus();
-            String responseContent = getResponseContentAsString(response);
-    
-            assertFalse(responseStatus/100 == 2, "response="+response+"; content="+responseContent);
-            assertTrue(responseContent.contains("Recursive reference to "+registeredTypeName), "content="+responseContent);
-        } finally {
-            deleteCatalogEntity(registeredTypeName);
-        }
-    }
-
-    private ApplicationSummary createAndWaitForApp(String yaml) {
-        ClientResponse response = client().resource("/v1/applications")
-                .entity(yaml, "application/x-yaml")
-                .post(ClientResponse.class);
-        assertTrue(response.getStatus()/100 == 2, "response is "+response);
-
-        URI appUri = response.getLocation();
-        waitForApplicationToBeRunning(response.getLocation());
-        
-        return client().resource(appUri).get(ApplicationSummary.class);
-    }
-    
-    private void addCatalogOSGiEntity(String registeredTypeName) {
-        addCatalogOSGiEntity(registeredTypeName, SIMPLE_ENTITY_TYPE);
-    }
-    
-    private void addCatalogOSGiEntity(String registeredTypeName, String serviceType) {
-        String catalogYaml =
-            "name: "+registeredTypeName+"\n"+
-            // FIXME name above should be unnecessary -- slight problem somewhere currently
-            // as testListApplicationYaml fails without the line above
-            "brooklyn.catalog:\n"+
-            "  id: " + registeredTypeName + "\n"+
-            "  name: My Catalog App\n"+
-            "  description: My description\n"+
-            "  icon_url: classpath://path/to/myicon.jpg\n"+
-            "  version: 0.1.2\n"+
-            "  libraries:\n"+
-            "  - url: " + OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL + "\n"+
-            "\n"+
-            "services:\n"+
-            "- type: " + serviceType;
-
-        addCatalogEntity(catalogYaml);
-    }
-
-    private void addCatalogEntity(String catalogYaml) {
-        ClientResponse catalogResponse = client().resource("/v1/catalog")
-            .post(ClientResponse.class, catalogYaml);
-
-        assertEquals(catalogResponse.getStatus(), Response.Status.CREATED.getStatusCode());
-    }
-    
-    private void deleteCatalogEntity(String catalogItem) {
-        ClientResponse catalogResponse = client().resource("/v1/catalog/entities/"+catalogItem)
-            .delete(ClientResponse.class);
-
-        assertEquals(catalogResponse.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
-    }
-    
-    private String getResponseContentAsString(ClientResponse response) {
-        InputStream in = null;
-        try {
-            in = response.getEntityInputStream();
-            return new String(Streams.readFully(in));
-        } finally {
-            Streams.closeQuietly(in);
-        }
-    }
-}