http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e406d1ad/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/EntitiesYamlTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/EntitiesYamlTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/EntitiesYamlTest.java deleted file mode 100644 index ec0d6bd..0000000 --- a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/EntitiesYamlTest.java +++ /dev/null @@ -1,919 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package io.brooklyn.camp.brooklyn; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertTrue; -import io.brooklyn.camp.brooklyn.spi.dsl.methods.BrooklynDslCommon; -import io.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent; -import io.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent.Scope; - -import java.io.StringReader; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.Callable; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.Test; -import org.testng.collections.Lists; - -import brooklyn.config.ConfigKey; -import brooklyn.entity.Application; -import brooklyn.entity.Effector; -import brooklyn.entity.Entity; -import brooklyn.entity.basic.Attributes; -import brooklyn.entity.basic.BasicApplication; -import brooklyn.entity.basic.BasicEntity; -import brooklyn.entity.basic.ConfigKeys; -import brooklyn.entity.basic.Entities; -import brooklyn.entity.basic.EntityFunctions; -import brooklyn.entity.basic.EntityInternal; -import brooklyn.entity.basic.EntityPredicates; -import brooklyn.entity.basic.Lifecycle; -import brooklyn.entity.basic.SameServerEntity; -import brooklyn.entity.effector.Effectors; -import brooklyn.entity.group.DynamicCluster; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.event.AttributeSensor; -import brooklyn.event.basic.Sensors; -import brooklyn.location.Location; -import brooklyn.management.Task; -import brooklyn.management.internal.EntityManagementUtils; -import brooklyn.management.internal.EntityManagerInternal; -import brooklyn.test.entity.TestEntity; -import brooklyn.test.entity.TestEntityImpl; -import brooklyn.util.collections.MutableMap; -import brooklyn.util.exceptions.Exceptions; -import brooklyn.util.guava.Functionals; -import brooklyn.util.guava.Maybe; -import brooklyn.util.task.Tasks; -import brooklyn.util.time.Duration; - -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; - -@Test -public class EntitiesYamlTest extends AbstractYamlTest { - private static final Logger log = LoggerFactory.getLogger(EntitiesYamlTest.class); - - protected Entity setupAndCheckTestEntityInBasicYamlWith(String ...extras) throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", extras)); - waitForApplicationTasks(app); - - Assert.assertEquals(app.getDisplayName(), "test-entity-basic-template"); - - log.info("App started:"); - Entities.dumpInfo(app); - - Assert.assertTrue(app.getChildren().iterator().hasNext(), "Expected app to have child entity"); - Entity entity = app.getChildren().iterator().next(); - Assert.assertTrue(entity instanceof TestEntity, "Expected TestEntity, found " + entity.getClass()); - - return (TestEntity)entity; - } - - @Test - public void testSingleEntity() throws Exception { - setupAndCheckTestEntityInBasicYamlWith(); - } - - @SuppressWarnings("unchecked") - @Test - public void testBrooklynConfig() throws Exception { - Entity testEntity = setupAndCheckTestEntityInBasicYamlWith( - " brooklyn.config:", - " test.confName: Test Entity Name", - " test.confMapPlain:", - " foo: bar", - " baz: qux", - " test.confListPlain:", - " - dogs", - " - cats", - " - badgers", - " test.confSetThing: !!set", - " ? square", - " ? circle", - " ? triangle", - " test.confObject: 5"); - - Assert.assertEquals(testEntity.getConfig(TestEntity.CONF_NAME), "Test Entity Name"); - List<String> list = testEntity.getConfig(TestEntity.CONF_LIST_PLAIN); - Assert.assertEquals(list, ImmutableList.of("dogs", "cats", "badgers")); - Map<String, String> map = testEntity.getConfig(TestEntity.CONF_MAP_PLAIN); - Assert.assertEquals(map, ImmutableMap.of("foo", "bar", "baz", "qux")); - Set<String> set = (Set<String>)testEntity.getConfig(TestEntity.CONF_SET_THING); - Assert.assertEquals(set, ImmutableSet.of("square", "circle", "triangle")); - Object object = testEntity.getConfig(TestEntity.CONF_OBJECT); - Assert.assertEquals(object, 5); - } - - @Test - public void testFlagInBrooklynConfig() throws Exception { - Entity testEntity = setupAndCheckTestEntityInBasicYamlWith( - " brooklyn.config:", - " confName: Foo Bar"); - Assert.assertEquals(testEntity.getConfig(TestEntity.CONF_NAME), "Foo Bar"); - } - - @Test - public void testUndeclaredItemInBrooklynConfig() throws Exception { - Entity testEntity = setupAndCheckTestEntityInBasicYamlWith( - " brooklyn.config:", - " test.dynamic.confName: Foo Bar"); - Assert.assertEquals(testEntity.getConfig(ConfigKeys.newStringConfigKey("test.dynamic.confName")), "Foo Bar"); - } - - @Test - public void testFlagAtRoot() throws Exception { - Entity testEntity = setupAndCheckTestEntityInBasicYamlWith( - " confName: Foo Bar"); - Assert.assertEquals(testEntity.getConfig(TestEntity.CONF_NAME), "Foo Bar"); - } - - @Test - public void testFlagAtRootEntityImpl() throws Exception { - Entity app = createAndStartApplication( - "services:", - "- serviceType: " + TestEntityImpl.class.getName(), - " confName: Foo Bar"); - Entity testEntity = Iterables.getOnlyElement(app.getChildren()); - Assert.assertEquals(testEntity.getConfig(TestEntity.CONF_NAME), "Foo Bar"); - } - - @Test - public void testConfigKeyAtRoot() throws Exception { - Entity testEntity = setupAndCheckTestEntityInBasicYamlWith( - " test.confName: Foo Bar"); - Assert.assertEquals(testEntity.getConfig(TestEntity.CONF_NAME), "Foo Bar"); - } - - @Test - public void testUndeclaredItemAtRootIgnored() throws Exception { - Entity testEntity = setupAndCheckTestEntityInBasicYamlWith( - " test.dynamic.confName: Foo Bar"); - // should NOT be set (and there should be a warning in the log) - String dynamicConfNameValue = testEntity.getConfig(ConfigKeys.newStringConfigKey("test.dynamic.confName")); - Assert.assertNull(dynamicConfNameValue); - } - - @Test - public void testExplicitFlags() throws Exception { - Entity testEntity = setupAndCheckTestEntityInBasicYamlWith( - " brooklyn.flags:", - " confName: Foo Bar"); - Assert.assertEquals(testEntity.getConfig(TestEntity.CONF_NAME), "Foo Bar"); - } - - @Test - public void testExplicitFlagsEntityImpl() throws Exception { - Entity app = createAndStartApplication( - "services:", - "- serviceType: " + TestEntityImpl.class.getName(), - " brooklyn.flags:", - " confName: Foo Bar"); - Entity testEntity = Iterables.getOnlyElement(app.getChildren()); - Assert.assertEquals(testEntity.getConfig(TestEntity.CONF_NAME), "Foo Bar"); - } - - @Test - public void testUndeclaredExplicitFlagsIgnored() throws Exception { - Entity testEntity = setupAndCheckTestEntityInBasicYamlWith( - " brooklyn.flags:", - " test.dynamic.confName: Foo Bar"); - String dynamicConfNameValue = testEntity.getConfig(ConfigKeys.newStringConfigKey("test.dynamic.confName")); - Assert.assertNull(dynamicConfNameValue); - } - - @SuppressWarnings("unchecked") - @Test - public void testEmptyConfig() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - " brooklyn.config:", - " test.confName: \"\"", - " test.confListPlain: !!seq []", - " test.confMapPlain: !!map {}", - " test.confSetPlain: !!set {}", - " test.confObject: \"\"")); - waitForApplicationTasks(app); - - Assert.assertEquals(app.getDisplayName(), "test-entity-basic-template"); - - log.info("App started:"); - Entities.dumpInfo(app); - - Entity entity = app.getChildren().iterator().next(); - Assert.assertNotNull(entity, "Expected app to have child entity"); - Assert.assertTrue(entity instanceof TestEntity, "Expected TestEntity, found " + entity.getClass()); - TestEntity testEntity = (TestEntity) entity; - Assert.assertEquals(testEntity.getConfig(TestEntity.CONF_NAME), ""); - List<String> list = testEntity.getConfig(TestEntity.CONF_LIST_PLAIN); - Assert.assertEquals(list, ImmutableList.of()); - Map<String, String> map = testEntity.getConfig(TestEntity.CONF_MAP_PLAIN); - Assert.assertEquals(map, ImmutableMap.of()); - // TODO: CONF_SET_PLAIN is being set to an empty ArrayList - may be a snakeyaml issue? - // Set<String> plainSet = (Set<String>)testEntity.getConfig(TestEntity.CONF_SET_PLAIN); - // Assert.assertEquals(plainSet, ImmutableSet.of()); - Object object = testEntity.getConfig(TestEntity.CONF_OBJECT); - Assert.assertEquals(object, ""); - } - - @SuppressWarnings("unchecked") - public void testEmptyStructuredConfig() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - " brooklyn.config:", - " test.confName: \"\"", - " test.confListThing: !!seq []", - " test.confSetThing: !!set {}", - " test.confMapThing: !!map {}")); - waitForApplicationTasks(app); - - Assert.assertEquals(app.getDisplayName(), "test-entity-basic-template"); - - log.info("App started:"); - Entities.dumpInfo(app); - - Entity entity = app.getChildren().iterator().next(); - Assert.assertNotNull(entity, "Expected app to have child entity"); - Assert.assertTrue(entity instanceof TestEntity, "Expected TestEntity, found " + entity.getClass()); - TestEntity testEntity = (TestEntity) entity; - List<String> thingList = (List<String>)testEntity.getConfig(TestEntity.CONF_LIST_THING); - Set<String> thingSet = (Set<String>)testEntity.getConfig(TestEntity.CONF_SET_THING); - Map<String, String> thingMap = (Map<String, String>)testEntity.getConfig(TestEntity.CONF_MAP_THING); - Assert.assertEquals(thingList, Lists.newArrayList()); - Assert.assertEquals(thingSet, ImmutableSet.of()); - Assert.assertEquals(thingMap, ImmutableMap.of()); - } - - @Test - public void testSensor() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - " brooklyn.config:", - " test.confObject: $brooklyn:sensor(\"brooklyn.test.entity.TestEntity\", \"test.sequence\")")); - waitForApplicationTasks(app); - - Assert.assertEquals(app.getDisplayName(), "test-entity-basic-template"); - - log.info("App started:"); - Entities.dumpInfo(app); - - Entity entity = app.getChildren().iterator().next(); - Assert.assertNotNull(entity, "Expected app to have child entity"); - Assert.assertTrue(entity instanceof TestEntity, "Expected TestEntity, found " + entity.getClass()); - TestEntity testEntity = (TestEntity) entity; - Object object = testEntity.getConfig(TestEntity.CONF_OBJECT); - Assert.assertNotNull(object); - Assert.assertTrue(object instanceof AttributeSensor, "attributeSensor="+object); - Assert.assertEquals(object, TestEntity.SEQUENCE); - } - - @Test - public void testSensorOnArbitraryClass() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - " brooklyn.config:", - " test.confObject: $brooklyn:sensor(\"io.brooklyn.camp.brooklyn.EntitiesYamlTest$ArbitraryClassWithSensor\", \"mysensor\")")); - waitForApplicationTasks(app); - - log.info("App started:"); - Entities.dumpInfo(app); - - TestEntity entity = (TestEntity) app.getChildren().iterator().next(); - Object object = entity.getConfig(TestEntity.CONF_OBJECT); - Assert.assertEquals(object, ArbitraryClassWithSensor.MY_SENSOR); - } - public static class ArbitraryClassWithSensor { - public static final AttributeSensor<String> MY_SENSOR = Sensors.newStringSensor("mysensor"); - } - - @Test - public void testComponent() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - " brooklyn.config:", - " test.confName: first entity", - " id: te1", - "- serviceType: brooklyn.test.entity.TestEntity", - " name: second entity", - " brooklyn.config:", - " test.confObject: $brooklyn:component(\"te1\")")); - waitForApplicationTasks(app); - Entity firstEntity = null; - Entity secondEntity = null; - Assert.assertEquals(app.getChildren().size(), 2); - for (Entity entity : app.getChildren()) { - if (entity.getDisplayName().equals("testentity")) - firstEntity = entity; - else if (entity.getDisplayName().equals("second entity")) - secondEntity = entity; - } - final Entity[] entities = {firstEntity, secondEntity}; - Assert.assertNotNull(entities[0], "Expected app to contain child named 'testentity'"); - Assert.assertNotNull(entities[1], "Expected app to contain child named 'second entity'"); - Object object = ((EntityInternal)app).getExecutionContext().submit(MutableMap.of(), new Callable<Object>() { - public Object call() { - return entities[1].getConfig(TestEntity.CONF_OBJECT); - }}).get(); - Assert.assertNotNull(object); - Assert.assertEquals(object, firstEntity, "Expected second entity's test.confObject to contain first entity"); - } - - @Test - public void testGrandchildEntities() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - " brooklyn.config:", - " test.confName: first entity", - " brooklyn.children:", - " - serviceType: brooklyn.test.entity.TestEntity", - " name: Child Entity", - " brooklyn.config:", - " test.confName: Name of the first Child", - " brooklyn.children:", - " - serviceType: brooklyn.test.entity.TestEntity", - " name: Grandchild Entity", - " brooklyn.config:", - " test.confName: Name of the Grandchild", - " - serviceType: brooklyn.test.entity.TestEntity", - " name: Second Child", - " brooklyn.config:", - " test.confName: Name of the second Child")); - waitForApplicationTasks(app); - Assert.assertEquals(app.getChildren().size(), 1); - Entity firstEntity = app.getChildren().iterator().next(); - Assert.assertEquals(firstEntity.getConfig(TestEntity.CONF_NAME), "first entity"); - Assert.assertEquals(firstEntity.getChildren().size(), 2); - Entity firstChild = null; - Entity secondChild = null; - for (Entity entity : firstEntity.getChildren()) { - if (entity.getConfig(TestEntity.CONF_NAME).equals("Name of the first Child")) - firstChild = entity; - if (entity.getConfig(TestEntity.CONF_NAME).equals("Name of the second Child")) - secondChild = entity; - } - Assert.assertNotNull(firstChild, "Expected a child of 'first entity' with the name 'Name of the first Child'"); - Assert.assertNotNull(secondChild, "Expected a child of 'first entity' with the name 'Name of the second Child'"); - Assert.assertEquals(firstChild.getChildren().size(), 1); - Entity grandchild = firstChild.getChildren().iterator().next(); - Assert.assertEquals(grandchild.getConfig(TestEntity.CONF_NAME), "Name of the Grandchild"); - Assert.assertEquals(secondChild.getChildren().size(), 0); - } - - @Test - public void testWithInitConfig() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-with-init-config.yaml")); - waitForApplicationTasks(app); - Assert.assertEquals(app.getDisplayName(), "test-entity-with-init-config"); - TestEntityWithInitConfig testWithConfigInit = null; - TestEntity testEntity = null; - Assert.assertEquals(app.getChildren().size(), 2); - for (Entity entity : app.getChildren()) { - if (entity instanceof TestEntity) - testEntity = (TestEntity) entity; - if (entity instanceof TestEntityWithInitConfig) - testWithConfigInit = (TestEntityWithInitConfig) entity; - } - Assert.assertNotNull(testEntity, "Expected app to contain TestEntity child"); - Assert.assertNotNull(testWithConfigInit, "Expected app to contain TestEntityWithInitConfig child"); - Assert.assertEquals(testWithConfigInit.getEntityCachedOnInit(), testEntity); - log.info("App started:"); - Entities.dumpInfo(app); - } - - @Test - public void testMultipleReferencesJava() throws Exception { - final Entity app = createAndStartApplication(loadYaml("test-referencing-entities.yaml")); - waitForApplicationTasks(app); - - Entity c1 = Tasks.resolving(new DslComponent("c1").newTask(), Entity.class).context( ((EntityInternal)app).getExecutionContext() ).embedResolutionInTask(true).get(); - Assert.assertEquals(c1, Entities.descendants(app, EntityPredicates.displayNameEqualTo("child 1")).iterator().next()); - - Entity e1 = Tasks.resolving(new DslComponent(Scope.PARENT, "xxx").newTask(), Entity.class).context( ((EntityInternal)c1).getExecutionContext() ).embedResolutionInTask(true).get(); - Assert.assertEquals(e1, Entities.descendants(app, EntityPredicates.displayNameEqualTo("entity 1")).iterator().next()); - - Entity c1a = Tasks.resolving(BrooklynDslCommon.descendant("c1").newTask(), Entity.class).context( ((EntityInternal)e1).getExecutionContext() ).embedResolutionInTask(true).get(); - Assert.assertEquals(c1a, c1); - Entity e1a = Tasks.resolving(BrooklynDslCommon.ancestor("e1").newTask(), Entity.class).context( ((EntityInternal)c1).getExecutionContext() ).embedResolutionInTask(true).get(); - Assert.assertEquals(e1a, e1); - try { - Tasks.resolving(BrooklynDslCommon.ancestor("c1").newTask(), Entity.class).context( ((EntityInternal)e1).getExecutionContext() ).embedResolutionInTask(true).get(); - Assert.fail("Should not have found c1 as ancestor of e1"); - } catch (Exception e) { /* expected */ } - } - - @Test - public void testMultipleReferences() throws Exception { - final Entity app = createAndStartApplication(loadYaml("test-referencing-entities.yaml")); - waitForApplicationTasks(app); - - Entities.dumpInfo(app); - - Assert.assertEquals(app.getDisplayName(), "test-referencing-entities"); - - Entity entity1 = null, entity2 = null, child1 = null, child2 = null, grandchild1 = null, grandchild2 = null; - - Assert.assertEquals(app.getChildren().size(), 2); - for (Entity child : app.getChildren()) { - if (child.getDisplayName().equals("entity 1")) - entity1 = child; - if (child.getDisplayName().equals("entity 2")) - entity2 = child; - } - Assert.assertNotNull(entity1); - Assert.assertNotNull(entity2); - - Assert.assertEquals(entity1.getChildren().size(), 2); - for (Entity child : entity1.getChildren()) { - if (child.getDisplayName().equals("child 1")) - child1 = child; - if (child.getDisplayName().equals("child 2")) - child2 = child; - } - Assert.assertNotNull(child1); - Assert.assertNotNull(child2); - - Assert.assertEquals(child1.getChildren().size(), 2); - for (Entity child : child1.getChildren()) { - if (child.getDisplayName().equals("grandchild 1")) - grandchild1 = child; - if (child.getDisplayName().equals("grandchild 2")) - grandchild2 = child; - } - Assert.assertNotNull(grandchild1); - Assert.assertNotNull(grandchild2); - - Map<ConfigKey<Entity>, Entity> keyToEntity = new ImmutableMap.Builder<ConfigKey<Entity>, Entity>() - .put(ReferencingYamlTestEntity.TEST_REFERENCE_APP, app) - .put(ReferencingYamlTestEntity.TEST_REFERENCE_ENTITY1, entity1) - .put(ReferencingYamlTestEntity.TEST_REFERENCE_ENTITY1_ALT, entity1) - .put(ReferencingYamlTestEntity.TEST_REFERENCE_ENTITY2, entity2) - .put(ReferencingYamlTestEntity.TEST_REFERENCE_CHILD1, child1) - .put(ReferencingYamlTestEntity.TEST_REFERENCE_CHILD2, child2) - .put(ReferencingYamlTestEntity.TEST_REFERENCE_GRANDCHILD1, grandchild1) - .put(ReferencingYamlTestEntity.TEST_REFERENCE_GRANDCHILD2, grandchild2) - .build(); - - Iterable<Entity> entitiesInApp = ((EntityInternal)app).getExecutionContext().submit(MutableMap.of(), new Callable<Iterable<Entity>>() { - @Override - public Iterable<Entity> call() throws Exception { - return ((EntityManagerInternal)((EntityInternal)app).getManagementContext().getEntityManager()).getAllEntitiesInApplication((Application)app); - } - }).get(); - - for (Entity entityInApp : entitiesInApp) { - checkReferences(entityInApp, keyToEntity); - try { - getResolvedConfigInTask(entityInApp, ReferencingYamlTestEntity.TEST_REFERENCE_BOGUS); - Assert.fail("Should not have resolved "+ReferencingYamlTestEntity.TEST_REFERENCE_BOGUS+" at "+entityInApp); - } catch (Exception e) { - /* expected */ - } - } - } - - private void checkReferences(final Entity entity, Map<ConfigKey<Entity>, Entity> keyToEntity) throws Exception { - for (final ConfigKey<Entity> key : keyToEntity.keySet()) { - try { - Assert.assertEquals(getResolvedConfigInTask(entity, key).get(), keyToEntity.get(key)); - } catch (Throwable t) { - Exceptions.propagateIfFatal(t); - Assert.fail("Wrong value for "+entity+":"+key+", "+((EntityInternal)entity).config().getLocalRaw(key)+": "+t, t); - } - } - } - - private Maybe<Entity> getResolvedConfigInTask(final Entity entity, final ConfigKey<Entity> key) { - return Tasks.resolving(Tasks.<Entity>builder().body( - Functionals.callable(Suppliers.compose(EntityFunctions.config(key), Suppliers.ofInstance(entity))) ).build()) - .as(Entity.class) - .context( ((EntityInternal)entity).getExecutionContext() ).embedResolutionInTask(true) - .getMaybe(); - } - - public void testWithAppLocation() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - "location: localhost:(name=yaml name)")); - waitForApplicationTasks(app); - Assert.assertEquals(app.getLocations().size(), 1); - Location location = app.getLocations().iterator().next(); - Assert.assertNotNull(location); - Assert.assertEquals(location.getDisplayName(), "yaml name"); - Assert.assertEquals(app.getChildren().size(), 1); - Entity entity = app.getChildren().iterator().next(); - Assert.assertNotNull(entity); - Assert.assertEquals(entity.getLocations().size(), 1); - } - - @Test - public void testWithEntityLocation() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - " location: localhost:(name=yaml name)\n")); - waitForApplicationTasks(app); - Assert.assertEquals(app.getLocations().size(), 0); - Assert.assertEquals(app.getChildren().size(), 1); - Entity entity = app.getChildren().iterator().next(); - Assert.assertEquals(entity.getLocations().size(), 1); - Location location = entity.getLocations().iterator().next(); - Assert.assertNotNull(location); - Assert.assertEquals(location.getDisplayName(), "yaml name"); - Assert.assertNotNull(entity); - } - - @Test - public void testWith2AppLocations() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - "locations:", - "- localhost:(name=localhost name)", - "- byon:(hosts=\"1.1.1.1\", name=byon name)")); - waitForApplicationTasks(app); - - Assert.assertEquals(app.getLocations().size(), 2); - Location localhostLocation = null, byonLocation = null; - for (Location location : app.getLocations()) { - if (location.getDisplayName().equals("localhost name")) - localhostLocation = location; - else if (location.getDisplayName().equals("byon name")) - byonLocation = location; - } - Assert.assertNotNull(localhostLocation); - Assert.assertNotNull(byonLocation); - Assert.assertEquals(app.getChildren().size(), 1); - Entity entity = app.getChildren().iterator().next(); - Assert.assertNotNull(entity); - Assert.assertEquals(entity.getLocations().size(), 2); - } - - @Test - public void testWith2EntityLocations() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - " locations:", - " - localhost:(name=localhost name)", - " - byon:(hosts=\"1.1.1.1\", name=byon name)")); - waitForApplicationTasks(app); - Assert.assertEquals(app.getLocations().size(), 0); - Assert.assertEquals(app.getChildren().size(), 1); - Entity entity = app.getChildren().iterator().next(); - Assert.assertEquals(entity.getLocations().size(), 2); - Location localhostLocation = null, byonLocation = null; - for (Location location : entity.getLocations()) { - if (location.getDisplayName().equals("localhost name")) - localhostLocation = location; - else if (location.getDisplayName().equals("byon name")) - byonLocation = location; - } - Assert.assertNotNull(localhostLocation); - Assert.assertNotNull(byonLocation); - } - - @Test - public void testWithAppAndEntityLocations() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", - " location: localhost:(name=localhost name)", - "location: byon:(hosts=\"1.1.1.1\", name=byon name)")); - waitForApplicationTasks(app); - Assert.assertEquals(app.getLocations().size(), 1); - Assert.assertEquals(app.getChildren().size(), 1); - Entity entity = app.getChildren().iterator().next(); - - Assert.assertEquals(entity.getLocations().size(), 2); - Iterator<Location> entityLocationIterator = entity.getLocations().iterator(); - Assert.assertEquals(entityLocationIterator.next().getDisplayName(), "localhost name"); - Assert.assertEquals(entityLocationIterator.next().getDisplayName(), "byon name"); - - Location appLocation = app.getLocations().iterator().next(); - Assert.assertEquals(appLocation.getDisplayName(), "byon name"); - } - - @Test - public void testCreateClusterWithMemberSpec() throws Exception { - Entity app = createAndStartApplication(loadYaml("test-cluster-with-member-spec.yaml")); - waitForApplicationTasks(app); - assertEquals(app.getChildren().size(), 1); - - Entity clusterEntity = Iterables.getOnlyElement(app.getChildren()); - assertTrue(clusterEntity instanceof DynamicCluster, "cluster="+clusterEntity); - - DynamicCluster cluster = DynamicCluster.class.cast(clusterEntity); - assertEquals(cluster.getMembers().size(), 2, "members="+cluster.getMembers()); - - for (Entity member : cluster.getMembers()) { - assertTrue(member instanceof TestEntity, "member="+member); - assertEquals(member.getConfig(TestEntity.CONF_NAME), "yamlTest"); - } - } - - @Test - public void testEntitySpecConfig() throws Exception { - String yaml = - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.config:\n"+ - " test.childSpec:\n"+ - " $brooklyn:entitySpec:\n"+ - " type: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.config:\n"+ - " test.confName: inchildspec\n"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - - TestEntity child = (TestEntity) entity.createAndManageChildFromConfig(); - assertEquals(child.getConfig(TestEntity.CONF_NAME), "inchildspec"); - } - - @Test - public void testEntitySpecFlags() throws Exception { - String yaml = - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"+ - " confName: inParent\n"+ - " brooklyn.config:\n"+ - " test.childSpec:\n"+ - " $brooklyn:entitySpec:\n"+ - " type: brooklyn.test.entity.TestEntity\n"+ - " confName: inchildspec\n"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - - TestEntity child = (TestEntity) entity.createAndManageChildFromConfig(); - assertEquals(child.getConfig(TestEntity.CONF_NAME), "inchildspec"); - } - - @Test - public void testEntitySpecExplicitFlags() throws Exception { - String yaml = - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.flags:\n"+ - " confName: inParent\n"+ - " brooklyn.config:\n"+ - " test.childSpec:\n"+ - " $brooklyn:entitySpec:\n"+ - " type: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.flags:\n"+ - " confName: inchildspec\n"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - - TestEntity child = (TestEntity) entity.createAndManageChildFromConfig(); - assertEquals(child.getConfig(TestEntity.CONF_NAME), "inchildspec"); - } - - @Test - public void testEntitySpecWithChildren() throws Exception { - String yaml = - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.config:\n"+ - " test.childSpec:\n"+ - " $brooklyn:entitySpec:\n"+ - " type: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.config:\n"+ - " test.confName: child\n"+ - " brooklyn.children:\n"+ - " - type: brooklyn.test.entity.TestEntity\n" + - " brooklyn.config:\n" + - " test.confName: grandchild\n" + - " brooklyn.children:\n"+ - " - type: brooklyn.test.entity.TestEntity\n" + - " brooklyn.config:\n" + - " test.confName: greatgrandchild\n"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - - TestEntity child = (TestEntity) entity.createAndManageChildFromConfig(); - assertEquals(child.getConfig(TestEntity.CONF_NAME), "child"); - assertEquals(child.getChildren().size(), 1, "Child entity should have exactly one child of its own"); - - TestEntity grandchild = (TestEntity) Iterables.getOnlyElement(child.getChildren()); - assertEquals(grandchild.getConfig(TestEntity.CONF_NAME), "grandchild"); - assertEquals(grandchild.getChildren().size(), 1, "Grandchild entity should have exactly one child of its own"); - - TestEntity greatgrandchild = (TestEntity) Iterables.getOnlyElement(grandchild.getChildren()); - assertEquals(greatgrandchild.getConfig(TestEntity.CONF_NAME), "greatgrandchild"); - } - - @Test - public void testNestedEntitySpecConfigs() throws Exception { - String yaml = - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.config:\n"+ - " test.childSpec:\n"+ - " $brooklyn:entitySpec:\n"+ - " type: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.config:\n"+ - " test.confName: inchildspec\n"+ - " test.childSpec:\n"+ - " $brooklyn:entitySpec:\n"+ - " type: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.config:\n"+ - " test.confName: ingrandchildspec\n"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - - TestEntity child = (TestEntity) entity.createAndManageChildFromConfig(); - assertEquals(child.getConfig(TestEntity.CONF_NAME), "inchildspec"); - - TestEntity grandchild = (TestEntity) child.createAndManageChildFromConfig(); - assertEquals(grandchild.getConfig(TestEntity.CONF_NAME), "ingrandchildspec"); - } - - @Test - public void testEntitySpecInUnmatchedConfig() throws Exception { - String yaml = - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.config:\n"+ - " key.does.not.match:\n"+ - " $brooklyn:entitySpec:\n"+ - " type: brooklyn.test.entity.TestEntity\n"+ - " brooklyn.config:\n"+ - " test.confName: inchildspec\n"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - EntitySpec<?> entitySpec = (EntitySpec<?>) entity.config().getBag().getStringKey("key.does.not.match"); - assertEquals(entitySpec.getType(), TestEntity.class); - assertEquals(entitySpec.getConfig(), ImmutableMap.of(TestEntity.CONF_NAME, "inchildspec")); - } - - @Test - public void testAppWithSameServerEntityStarts() throws Exception { - Entity app = createAndStartApplication(loadYaml("same-server-entity-test.yaml")); - waitForApplicationTasks(app); - assertNotNull(app); - assertEquals(app.getAttribute(Attributes.SERVICE_STATE_ACTUAL), Lifecycle.RUNNING, "service state"); - assertTrue(app.getAttribute(Attributes.SERVICE_UP), "service up"); - - assertEquals(app.getChildren().size(), 1); - Entity entity = Iterables.getOnlyElement(app.getChildren()); - assertTrue(entity instanceof SameServerEntity, "entity="+entity); - - SameServerEntity sse = (SameServerEntity) entity; - assertEquals(sse.getChildren().size(), 2); - for (Entity child : sse.getChildren()) { - assertTrue(child instanceof BasicEntity, "child="+child); - } - } - - @Test - public void testEntityImplExposesAllInterfacesIncludingStartable() throws Exception { - String yaml = - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntityImpl\n"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - assertTrue(entity.getCallHistory().contains("start"), "history="+entity.getCallHistory()); - } - - @Test - public void testEntityWithInitializer() throws Exception { - String yaml = - "services:\n"+ - "- type: "+TestEntity.class.getName()+"\n"+ - " brooklyn.initializers: [ { type: "+TestSensorAndEffectorInitializer.class.getName()+" } ]"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - - Effector<?> hi = entity.getEffector(TestSensorAndEffectorInitializer.EFFECTOR_SAY_HELLO); - Assert.assertNotNull(hi); - - Assert.assertNotNull( entity.getEntityType().getSensor(TestSensorAndEffectorInitializer.SENSOR_HELLO_DEFINED) ); - Assert.assertNotNull( entity.getEntityType().getSensor(TestSensorAndEffectorInitializer.SENSOR_HELLO_DEFINED_EMITTED) ); - Assert.assertNull( entity.getEntityType().getSensor(TestSensorAndEffectorInitializer.SENSOR_LAST_HELLO) ); - - Assert.assertNull( entity.getAttribute(Sensors.newStringSensor(TestSensorAndEffectorInitializer.SENSOR_LAST_HELLO)) ); - Assert.assertNull( entity.getAttribute(Sensors.newStringSensor(TestSensorAndEffectorInitializer.SENSOR_HELLO_DEFINED)) ); - Assert.assertEquals( entity.getAttribute(Sensors.newStringSensor(TestSensorAndEffectorInitializer.SENSOR_HELLO_DEFINED_EMITTED)), - "1"); - - Task<String> saying = entity.invoke(Effectors.effector(String.class, TestSensorAndEffectorInitializer.EFFECTOR_SAY_HELLO).buildAbstract(), - MutableMap.of("name", "Bob")); - Assert.assertEquals(saying.get(Duration.TEN_SECONDS), "Hello Bob"); - Assert.assertEquals( entity.getAttribute(Sensors.newStringSensor(TestSensorAndEffectorInitializer.SENSOR_LAST_HELLO)), - "Bob"); - } - - @Test - public void testEntityWithConfigurableInitializerEmpty() throws Exception { - String yaml = - "services:\n"+ - "- type: "+TestEntity.class.getName()+"\n"+ - " brooklyn.initializers: [ { type: "+TestSensorAndEffectorInitializer.TestConfigurableInitializer.class.getName()+" } ]"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - - Task<String> saying = entity.invoke(Effectors.effector(String.class, TestSensorAndEffectorInitializer.EFFECTOR_SAY_HELLO).buildAbstract(), - MutableMap.of("name", "Bob")); - Assert.assertEquals(saying.get(Duration.TEN_SECONDS), "Hello Bob"); - } - - @Test - public void testEntityWithConfigurableInitializerNonEmpty() throws Exception { - String yaml = - "services:\n"+ - "- type: "+TestEntity.class.getName()+"\n"+ - " brooklyn.initializers: [ { " - + "type: "+TestSensorAndEffectorInitializer.TestConfigurableInitializer.class.getName()+"," - + "brooklyn.config: { "+TestSensorAndEffectorInitializer.TestConfigurableInitializer.HELLO_WORD+": Hey }" - + " } ]"; - - Application app = (Application) createStartWaitAndLogApplication(new StringReader(yaml)); - TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren()); - - Task<String> saying = entity.invoke(Effectors.effector(String.class, TestSensorAndEffectorInitializer.EFFECTOR_SAY_HELLO).buildAbstract(), - MutableMap.of("name", "Bob")); - Assert.assertEquals(saying.get(Duration.TEN_SECONDS), "Hey Bob"); - } - - @Test - public void testEntityTypeAsImpl() throws Exception { - String yaml = - "services:"+"\n"+ - "- type: "+CustomTestEntityImpl.class.getName()+"\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - - Entity testEntity = Iterables.getOnlyElement(app.getChildren()); - assertEquals(testEntity.getEntityType().getName(), "CustomTestEntityImpl"); - } - - public static class CustomTestEntityImpl extends TestEntityImpl { - public CustomTestEntityImpl() { - System.out.println("in CustomTestEntityImpl"); - } - @Override - protected String getEntityTypeName() { - return "CustomTestEntityImpl"; - } - } - - @Test - public void testWrapperAppMarkerExists() throws Exception { - Entity entity = createAndStartApplication( - "services:", - "- type: " + BasicEntity.class.getName()); - assertTrue(entity.getConfig(EntityManagementUtils.WRAPPER_APP_MARKER)); - } - - @Test - public void testWrapperAppMarkerDoesntExist() throws Exception { - Entity entity = createAndStartApplication( - "services:", - "- type: " + BasicApplication.class.getName()); - assertNull(entity.getConfig(EntityManagementUtils.WRAPPER_APP_MARKER)); - } - - @Test - public void testWrapperAppMarkerForced() throws Exception { - Entity entity = createAndStartApplication( - "wrappedApp: true", - "services:", - "- type: " + BasicApplication.class.getName()); - assertTrue(entity.getConfig(EntityManagementUtils.WRAPPER_APP_MARKER)); - } - - @Test - public void testWrapperAppMarkerUnforced() throws Exception { - Entity entity = createAndStartApplication( - "wrappedApp: false", - "services:", - "- type: " + BasicApplication.class.getName()); - assertNull(entity.getConfig(EntityManagementUtils.WRAPPER_APP_MARKER)); - } - - @Override - protected Logger getLogger() { - return log; - } - -}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e406d1ad/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java deleted file mode 100644 index 77ca882..0000000 --- a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package io.brooklyn.camp.brooklyn; - -import io.brooklyn.camp.spi.Assembly; -import io.brooklyn.camp.spi.AssemblyTemplate; - -import java.io.File; -import java.io.Reader; -import java.util.Set; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.Application; -import brooklyn.entity.basic.BrooklynTaskTags; -import brooklyn.entity.basic.Entities; -import brooklyn.entity.rebind.RebindTestUtils; -import brooklyn.management.ManagementContext; -import brooklyn.management.Task; -import brooklyn.management.internal.LocalManagementContext; -import brooklyn.util.ResourceUtils; -import brooklyn.util.collections.MutableSet; -import brooklyn.util.stream.Streams; - -import com.google.common.io.Files; - -@Test -public class JavaWebAppWithDslYamlRebindIntegrationTest extends AbstractYamlTest { - - private static final Logger log = LoggerFactory.getLogger(JavaWebAppWithDslYamlRebindIntegrationTest.class); - - protected ClassLoader classLoader = getClass().getClassLoader(); - protected File mementoDir; - protected Set<ManagementContext> mgmtContexts = MutableSet.of(); - - @Override - protected LocalManagementContext newTestManagementContext() { - if (mementoDir!=null) throw new IllegalStateException("already created mgmt context"); - mementoDir = Files.createTempDir(); - log.info("Test "+getClass()+" persisting to "+mementoDir); - - LocalManagementContext mgmt = - RebindTestUtils.newPersistingManagementContext(mementoDir, classLoader, 1); - mgmtContexts.add(mgmt); - return mgmt; - } - - @AfterMethod(alwaysRun = true) - @Override - public void tearDown() { - for (ManagementContext mgmt: mgmtContexts) Entities.destroyAll(mgmt); - super.tearDown(); - mementoDir = null; - mgmtContexts.clear(); - } - - @Override - protected Logger getLogger() { - return log; - } - - public Application rebind(Application app) throws Exception { - RebindTestUtils.waitForPersisted(app); - // optionally for good measure can also check this: -// RebindTestUtils.checkCurrentMementoSerializable(app); - Application result = RebindTestUtils.rebind(mementoDir, getClass().getClassLoader()); - mgmtContexts.add(result.getManagementContext()); - return result; - } - - /** as {@link JavaWebAppsIntegrationTest#testWithDbDeploy()} but with rebind */ - @Test(groups="Integration") - public void testJavaWebAppDeployAndRebind() throws Exception { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("java-web-app-and-db-with-function.yaml")); - AssemblyTemplate at = platform.pdp().registerDeploymentPlan(input); - - Assembly assembly = at.getInstantiator().newInstance().instantiate(at, platform); - final Application app = (Application) mgmt().getEntityManager().getEntity(assembly.getId()); - - Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(mgmt().getExecutionManager(), app); - for (Task<?> t: tasks) t.blockUntilEnded(); - Entities.dumpInfo(app); - - Application app2 = rebind(app); - Assert.assertEquals(app2.getChildren().size(), 2); - } - - // test for https://github.com/brooklyncentral/brooklyn/issues/1422 - @Test(groups="Integration") - public void testJavaWebWithMemberSpecRebind() throws Exception { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("test-java-web-app-spec-and-db-with-function.yaml")); - AssemblyTemplate at = platform.pdp().registerDeploymentPlan(input); - - Assembly assembly = at.getInstantiator().newInstance().instantiate(at, platform); - final Application app = (Application) mgmt().getEntityManager().getEntity(assembly.getId()); - - Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(mgmt().getExecutionManager(), app); - for (Task<?> t: tasks) t.blockUntilEnded(); - Entities.dumpInfo(app); - - Application app2 = rebind(app); - Assert.assertEquals(app2.getChildren().size(), 2); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e406d1ad/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppsIntegrationTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppsIntegrationTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppsIntegrationTest.java deleted file mode 100644 index eb14811..0000000 --- a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppsIntegrationTest.java +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package io.brooklyn.camp.brooklyn; - -import static com.google.common.base.Preconditions.checkNotNull; -import io.brooklyn.camp.spi.Assembly; -import io.brooklyn.camp.spi.AssemblyTemplate; -import io.brooklyn.camp.spi.PlatformComponent; -import io.brooklyn.camp.spi.PlatformRootSummary; -import io.brooklyn.camp.spi.collection.ResolvableLink; - -import java.io.IOException; -import java.io.Reader; -import java.util.Iterator; -import java.util.Set; -import java.util.concurrent.Callable; -import java.util.concurrent.atomic.AtomicInteger; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.Entity; -import brooklyn.entity.basic.Attributes; -import brooklyn.entity.basic.BrooklynTaskTags; -import brooklyn.entity.basic.Entities; -import brooklyn.entity.basic.Lifecycle; -import brooklyn.entity.webapp.DynamicWebAppCluster; -import brooklyn.entity.webapp.JavaWebAppService; -import brooklyn.entity.webapp.WebAppService; -import brooklyn.management.ManagementContext; -import brooklyn.management.Task; -import brooklyn.policy.Policy; -import brooklyn.policy.autoscaling.AutoScalerPolicy; -import brooklyn.test.Asserts; -import brooklyn.test.EntityTestUtils; -import brooklyn.util.ResourceUtils; -import brooklyn.util.collections.MutableMap; -import brooklyn.util.exceptions.Exceptions; -import brooklyn.util.net.Urls; -import brooklyn.util.stream.Streams; -import brooklyn.util.time.Duration; - -import com.google.common.collect.Iterables; - -@Test(groups="Integration") -public class JavaWebAppsIntegrationTest { - - private static final Logger log = LoggerFactory.getLogger(JavaWebAppsIntegrationTest.class); - - private ManagementContext brooklynMgmt; - private BrooklynCampPlatform platform; - - @BeforeMethod(alwaysRun=true) - public void setup() { - BrooklynCampPlatformLauncherNoServer launcher = new BrooklynCampPlatformLauncherNoServer(); - launcher.launch(); - brooklynMgmt = launcher.getBrooklynMgmt(); - - platform = new BrooklynCampPlatform( - PlatformRootSummary.builder().name("Brooklyn CAMP Platform").build(), - brooklynMgmt); - } - - @AfterMethod - public void teardown() { - if (brooklynMgmt!=null) Entities.destroyAll(brooklynMgmt); - } - - public void testSimpleYamlDeploy() throws IOException { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("java-web-app-simple.yaml")); - AssemblyTemplate at = platform.pdp().registerDeploymentPlan(input); - - try { - Assembly assembly = at.getInstantiator().newInstance().instantiate(at, platform); - log.info("Test - created "+assembly); - - final Entity app = brooklynMgmt.getEntityManager().getEntity(assembly.getId()); - log.info("App - "+app); - Assert.assertEquals(app.getDisplayName(), "sample-single-jboss"); - - // locations set on AT in this yaml - Assert.assertEquals(app.getLocations().size(), 1); - - Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(brooklynMgmt.getExecutionManager(), app); - log.info("Waiting on "+tasks.size()+" task(s)"); - for (Task<?> t: tasks) { - t.blockUntilEnded(); - } - - log.info("App started:"); - Entities.dumpInfo(app); - - Assert.assertEquals(app.getChildren().size(), 1); - Assert.assertEquals(app.getChildren().iterator().next().getDisplayName(), "tomcat1"); - Assert.assertEquals(app.getChildren().iterator().next().getLocations().size(), 1); - - final String url = Asserts.succeedsEventually(MutableMap.of("timeout", Duration.TEN_SECONDS), new Callable<String>() { - @Override public String call() throws Exception { - String url = app.getChildren().iterator().next().getAttribute(JavaWebAppService.ROOT_URL); - return checkNotNull(url, "url of %s", app); - }}); - - String site = Asserts.succeedsEventually(MutableMap.of("timeout", Duration.TEN_SECONDS), new Callable<String>() { - @Override public String call() throws Exception { - return new ResourceUtils(this).getResourceAsString(url); - }}); - - log.info("App URL for "+app+": "+url); - Assert.assertTrue(url.contains("928"), "URL should be on port 9280+ based on config set in yaml, url "+url+", app "+app); - Assert.assertTrue(site.toLowerCase().contains("hello"), site); - Assert.assertTrue(!platform.assemblies().isEmpty()); - } catch (Exception e) { - log.warn("Unable to instantiate "+at+" (rethrowing): "+e); - throw Exceptions.propagate(e); - } - } - - public void testWithDbDeploy() throws IOException { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("java-web-app-and-db-with-function.yaml")); - AssemblyTemplate at = platform.pdp().registerDeploymentPlan(input); - - try { - Assembly assembly = at.getInstantiator().newInstance().instantiate(at, platform); - log.info("Test - created "+assembly); - - final Entity app = brooklynMgmt.getEntityManager().getEntity(assembly.getId()); - log.info("App - "+app); - - // locations set on individual services here - Assert.assertEquals(app.getLocations().size(), 0); - - Iterator<ResolvableLink<PlatformComponent>> pcs = assembly.getPlatformComponents().links().iterator(); - PlatformComponent pc1 = pcs.next().resolve(); - Entity cluster = brooklynMgmt.getEntityManager().getEntity(pc1.getId()); - log.info("pc1 - "+pc1+" - "+cluster); - - PlatformComponent pc2 = pcs.next().resolve(); - log.info("pc2 - "+pc2); - - Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(brooklynMgmt.getExecutionManager(), app); - log.info("Waiting on "+tasks.size()+" task(s)"); - AtomicInteger i = new AtomicInteger(0); - for (Task<?> t: tasks) { - t.blockUntilEnded(); - log.info("Completed task #" + i.incrementAndGet()); - } - - log.info("App started:"); - Entities.dumpInfo(app); - - EntityTestUtils.assertAttributeEqualsEventually(app, Attributes.SERVICE_STATE_ACTUAL, Lifecycle.RUNNING); - Assert.assertEquals(app.getAttribute(Attributes.SERVICE_UP), Boolean.TRUE); - - final String url = Asserts.succeedsEventually(MutableMap.of("timeout", Duration.TEN_SECONDS), new Callable<String>() { - @Override public String call() throws Exception { - Entity cluster = Iterables.getOnlyElement( Iterables.filter(app.getChildren(), WebAppService.class) ); - String url = cluster.getAttribute(JavaWebAppService.ROOT_URL); - return checkNotNull(url, "url of %s", cluster); - }}); - - String site = Asserts.succeedsEventually(MutableMap.of("timeout", Duration.TEN_SECONDS), new Callable<String>() { - @Override public String call() throws Exception { - return new ResourceUtils(this).getResourceAsString(url); - }}); - - log.info("App URL for "+app+": "+url); - Assert.assertTrue(url.contains("921"), "URL should be on port 9280+ based on config set in yaml, url "+url+", app "+app); - Assert.assertTrue(site.toLowerCase().contains("hello"), site); - Assert.assertTrue(!platform.assemblies().isEmpty()); - - String dbPage = new ResourceUtils(this).getResourceAsString(Urls.mergePaths(url, "db.jsp")); - Assert.assertTrue(dbPage.contains("Isaac Asimov"), "db.jsp does not mention Isaac Asimov, probably the DB did not get initialised:\n"+dbPage); - } catch (Exception e) { - log.warn("Unable to instantiate "+at+" (rethrowing): "+e); - throw Exceptions.propagate(e); - } - } - - public void testWithPolicyDeploy() { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("java-web-app-and-db-with-policy.yaml")); - AssemblyTemplate at = platform.pdp().registerDeploymentPlan(input); - - try { - Assembly assembly = at.getInstantiator().newInstance().instantiate(at, platform); - log.info("Test - created "+assembly); - - final Entity app = brooklynMgmt.getEntityManager().getEntity(assembly.getId()); - log.info("App - "+app); - - // locations set on individual services here - Assert.assertEquals(app.getLocations().size(), 0); - - Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(brooklynMgmt.getExecutionManager(), app); - log.info("Waiting on "+tasks.size()+" task(s)"); - for (Task<?> t: tasks) { - t.blockUntilEnded(); - } - - log.info("App started:"); - Entities.dumpInfo(app); - - Iterator<ResolvableLink<PlatformComponent>> pcs = assembly.getPlatformComponents().links().iterator(); - PlatformComponent clusterComponent = null; - while (pcs.hasNext() && clusterComponent == null) { - PlatformComponent component = pcs.next().resolve(); - if (component.getName().equals("My Web with Policy")) - clusterComponent = component; - } - Assert.assertNotNull(clusterComponent, "Database PlatformComponent not found"); - Entity cluster = brooklynMgmt.getEntityManager().getEntity(clusterComponent.getId()); - log.info("pc1 - "+clusterComponent+" - "+cluster); - - Assert.assertEquals(cluster.getPolicies().size(), 1); - Policy policy = cluster.getPolicies().iterator().next(); - Assert.assertNotNull(policy); - Assert.assertTrue(policy instanceof AutoScalerPolicy, "policy="+policy); - Assert.assertEquals(policy.getConfig(AutoScalerPolicy.MAX_POOL_SIZE), (Integer)5); - Assert.assertEquals(policy.getConfig(AutoScalerPolicy.MIN_POOL_SIZE), (Integer)1); - Assert.assertEquals(policy.getConfig(AutoScalerPolicy.METRIC), DynamicWebAppCluster.REQUESTS_PER_SECOND_IN_WINDOW_PER_NODE); - Assert.assertEquals(policy.getConfig(AutoScalerPolicy.METRIC_LOWER_BOUND), (Integer)10); - Assert.assertEquals(policy.getConfig(AutoScalerPolicy.METRIC_UPPER_BOUND), (Integer)100); - Assert.assertTrue(policy.isRunning()); - - EntityTestUtils.assertAttributeEqualsEventually(app, Attributes.SERVICE_STATE_ACTUAL, Lifecycle.RUNNING); - Assert.assertEquals(app.getAttribute(Attributes.SERVICE_UP), Boolean.TRUE); - - final String url = Asserts.succeedsEventually(MutableMap.of("timeout", Duration.TEN_SECONDS), new Callable<String>() { - @Override public String call() throws Exception { - Entity cluster = Iterables.getOnlyElement( Iterables.filter(app.getChildren(), WebAppService.class) ); - String url = cluster.getAttribute(JavaWebAppService.ROOT_URL); - return checkNotNull(url, "url of %s", cluster); - }}); - - String site = Asserts.succeedsEventually(MutableMap.of("timeout", Duration.TEN_SECONDS), new Callable<String>() { - @Override public String call() throws Exception { - return new ResourceUtils(this).getResourceAsString(url); - }}); - - log.info("App URL for "+app+": "+url); - Assert.assertTrue(url.contains("921"), "URL should be on port 9280+ based on config set in yaml, url "+url+", app "+app); - Assert.assertTrue(site.toLowerCase().contains("hello"), site); - Assert.assertTrue(!platform.assemblies().isEmpty()); - - String dbPage = new ResourceUtils(this).getResourceAsString(Urls.mergePaths(url, "db.jsp")); - Assert.assertTrue(dbPage.contains("Isaac Asimov"), "db.jsp does not mention Isaac Asimov, probably the DB did not get initialised:\n"+dbPage); - } catch (Exception e) { - log.warn("Unable to instantiate "+at+" (rethrowing): "+e); - throw Exceptions.propagate(e); - } - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e406d1ad/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppsMatchingTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppsMatchingTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppsMatchingTest.java deleted file mode 100644 index a9ddf63..0000000 --- a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/JavaWebAppsMatchingTest.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package io.brooklyn.camp.brooklyn; - -import io.brooklyn.camp.spi.AssemblyTemplate; -import io.brooklyn.camp.spi.PlatformComponentTemplate; -import io.brooklyn.camp.spi.PlatformRootSummary; -import io.brooklyn.camp.spi.collection.ResolvableLink; -import io.brooklyn.camp.spi.pdp.DeploymentPlan; - -import java.io.IOException; -import java.io.Reader; -import java.util.Iterator; -import java.util.Map; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.basic.Entities; -import brooklyn.management.ManagementContext; -import brooklyn.test.entity.LocalManagementContextForTests; -import brooklyn.util.ResourceUtils; -import brooklyn.util.collections.MutableMap; -import brooklyn.util.stream.Streams; -import brooklyn.util.task.DeferredSupplier; - -@Test -public class JavaWebAppsMatchingTest { - - private static final Logger log = LoggerFactory.getLogger(JavaWebAppsMatchingTest.class); - - private ManagementContext brooklynMgmt; - private BrooklynCampPlatform platform; - - @BeforeMethod(alwaysRun=true) - public void setup() { - brooklynMgmt = new LocalManagementContextForTests(); - platform = new BrooklynCampPlatform( - PlatformRootSummary.builder().name("Brooklyn CAMP Platform").build(), - brooklynMgmt); - } - - // FIXME all commented-out lines require camp server - - @AfterMethod(alwaysRun=true) - public void teardown() { - if (brooklynMgmt!=null) Entities.destroyAll(brooklynMgmt); - } - - public void testSimpleYamlParse() throws IOException { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("java-web-app-simple.yaml")); - DeploymentPlan plan = platform.pdp().parseDeploymentPlan(input); - log.info("DP is:\n"+plan.toString()); - Assert.assertEquals(plan.getServices().size(), 1); - Assert.assertEquals(plan.getName(), "sample-single-jboss"); - } - - public void testSimpleYamlMatch() throws IOException { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("java-web-app-simple.yaml")); - AssemblyTemplate at = platform.pdp().registerDeploymentPlan(input); - - Assert.assertEquals(at.getName(), "sample-single-jboss"); - } - - public void testExampleFunctionsYamlMatch() throws IOException { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("example-with-function.yaml")); - - DeploymentPlan plan = platform.pdp().parseDeploymentPlan(input); - log.info("DP is:\n"+plan.toString()); - Map<?,?> cfg1 = (Map<?, ?>) plan.getServices().get(0).getCustomAttributes().get(BrooklynCampReservedKeys.BROOKLYN_CONFIG); - Map<?,?> cfg = MutableMap.copyOf(cfg1); - - Assert.assertEquals(cfg.remove("literalValue1"), "$brooklyn: is a fun place"); - Assert.assertEquals(cfg.remove("literalValue2"), "$brooklyn: is a fun place"); - Assert.assertEquals(cfg.remove("literalValue3"), "$brooklyn: is a fun place"); - Assert.assertEquals(cfg.remove("literalValue4"), "$brooklyn: is a fun place"); - Assert.assertEquals(cfg.remove("$brooklyn:1"), "key to the city"); - Assert.assertTrue(cfg.isEmpty(), ""+cfg); - - Assert.assertEquals(plan.getName(), "example-with-function"); - Assert.assertEquals(plan.getCustomAttributes().get("location"), "localhost"); - - AssemblyTemplate at = platform.pdp().registerDeploymentPlan(plan); - - Assert.assertEquals(at.getName(), "example-with-function"); - Assert.assertEquals(at.getCustomAttributes().get("location"), "localhost"); - - PlatformComponentTemplate pct = at.getPlatformComponentTemplates().links().iterator().next().resolve(); - Object cfg2 = pct.getCustomAttributes().get(BrooklynCampReservedKeys.BROOKLYN_CONFIG); - Assert.assertEquals(cfg2, cfg1); - } - - public void testJavaAndDbWithFunctionYamlMatch() throws IOException { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("java-web-app-and-db-with-function.yaml")); - assertWebDbWithFunctionValid(input); - } - - public void testJavaAndDbWithFunctionYamlMatch2() throws IOException { - Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl("java-web-app-and-db-with-function-2.yaml")); - assertWebDbWithFunctionValid(input); - } - - protected void assertWebDbWithFunctionValid(Reader input) { - DeploymentPlan plan = platform.pdp().parseDeploymentPlan(input); - log.info("DP is:\n"+plan.toString()); - - AssemblyTemplate at = platform.pdp().registerDeploymentPlan(plan); - - Assert.assertEquals(at.getName(), "java-cluster-db-example"); - - Iterator<ResolvableLink<PlatformComponentTemplate>> pcti = at.getPlatformComponentTemplates().links().iterator(); - PlatformComponentTemplate pct1 = pcti.next().resolve(); - - PlatformComponentTemplate pct2 = pcti.next().resolve(); - - Map<?,?> config = (Map<?, ?>) pct1.getCustomAttributes().get(BrooklynCampReservedKeys.BROOKLYN_CONFIG); - Map<?,?> javaSysProps = (Map<?, ?>) config.get("java.sysprops"); - Object dbUrl = javaSysProps.get("brooklyn.example.db.url"); - Assert.assertTrue(dbUrl instanceof DeferredSupplier<?>, "url is: "+dbUrl); - - Assert.assertEquals(pct2.getCustomAttributes().get("planId"), "db"); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e406d1ad/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/LocationsYamlTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/LocationsYamlTest.java b/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/LocationsYamlTest.java deleted file mode 100644 index d22b73e..0000000 --- a/usage/camp/src/test/java/io/brooklyn/camp/brooklyn/LocationsYamlTest.java +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package io.brooklyn.camp.brooklyn; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; - -import java.io.StringReader; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.Test; - -import brooklyn.entity.Entity; -import brooklyn.location.Location; -import brooklyn.location.MachineLocation; -import brooklyn.location.basic.FixedListMachineProvisioningLocation; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.location.basic.MultiLocation; -import brooklyn.location.basic.SshMachineLocation; -import brooklyn.util.text.Strings; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; - -public class LocationsYamlTest extends AbstractYamlTest { - private static final Logger log = LoggerFactory.getLogger(LocationsYamlTest.class); - - @Test - public void testLocationString() throws Exception { - String yaml = - "location: localhost\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - LocalhostMachineProvisioningLocation loc = (LocalhostMachineProvisioningLocation) Iterables.getOnlyElement(app.getLocations()); - assertNotNull(loc); - } - - @Test - public void testLocationComplexString() throws Exception { - String yaml = - "location: localhost:(name=myname)\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - LocalhostMachineProvisioningLocation loc = (LocalhostMachineProvisioningLocation) Iterables.getOnlyElement(app.getLocations()); - assertEquals(loc.getDisplayName(), "myname"); - } - - @Test - public void testLocationSplitLineWithNoConfig() throws Exception { - String yaml = - "location:\n"+ - " localhost\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - LocalhostMachineProvisioningLocation loc = (LocalhostMachineProvisioningLocation) Iterables.getOnlyElement(app.getLocations()); - assertNotNull(loc); - } - - @Test - public void testMultiLocations() throws Exception { - String yaml = - "locations:\n"+ - "- localhost:(name=loc1)\n"+ - "- localhost:(name=loc2)\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - List<Location> locs = ImmutableList.copyOf(app.getLocations()); - assertEquals(locs.size(), 2, "locs="+locs); - LocalhostMachineProvisioningLocation loc1 = (LocalhostMachineProvisioningLocation) locs.get(0); - LocalhostMachineProvisioningLocation loc2 = (LocalhostMachineProvisioningLocation) locs.get(1); - assertEquals(loc1.getDisplayName(), "loc1"); - assertEquals(loc2.getDisplayName(), "loc2"); - } - - @Test - public void testLocationConfig() throws Exception { - String yaml = - "location:\n"+ - " localhost:\n"+ - " displayName: myname\n"+ - " myconfkey: myconfval\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - LocalhostMachineProvisioningLocation loc = (LocalhostMachineProvisioningLocation) Iterables.getOnlyElement(app.getLocations()); - assertEquals(loc.getDisplayName(), "myname"); - assertEquals(loc.config().getLocalBag().getStringKey("myconfkey"), "myconfval"); - } - - @Test - public void testMultiLocationConfig() throws Exception { - String yaml = - "locations:\n"+ - "- localhost:\n"+ - " displayName: myname1\n"+ - " myconfkey: myconfval1\n"+ - "- localhost:\n"+ - " displayName: myname2\n"+ - " myconfkey: myconfval2\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - List<Location> locs = ImmutableList.copyOf(app.getLocations()); - assertEquals(locs.size(), 2, "locs="+locs); - LocalhostMachineProvisioningLocation loc1 = (LocalhostMachineProvisioningLocation) locs.get(0); - LocalhostMachineProvisioningLocation loc2 = (LocalhostMachineProvisioningLocation) locs.get(1); - assertEquals(loc1.getDisplayName(), "myname1"); - assertEquals(loc1.config().getLocalBag().getStringKey("myconfkey"), "myconfval1"); - assertEquals(loc2.getDisplayName(), "myname2"); - assertEquals(loc2.config().getLocalBag().getStringKey("myconfkey"), "myconfval2"); - } - - // TODO Fails because PlanInterpretationContext constructor throws NPE on location's value (using ImmutableMap). - @Test(groups="WIP") - public void testLocationBlank() throws Exception { - String yaml = - "location: \n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - assertTrue(app.getLocations().isEmpty(), "locs="+app.getLocations()); - } - - @Test - public void testInvalidLocationAndLocations() throws Exception { - String yaml = - "location: localhost\n"+ - "locations:\n"+ - "- localhost\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - try { - createStartWaitAndLogApplication(new StringReader(yaml)); - } catch (IllegalStateException e) { - if (!e.toString().contains("Conflicting 'location' and 'locations'")) throw e; - } - } - - @Test - public void testInvalidLocationList() throws Exception { - // should have used "locations:" instead of "location:" - String yaml = - "location:\n"+ - "- localhost\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - try { - createStartWaitAndLogApplication(new StringReader(yaml)); - } catch (IllegalStateException e) { - if (!e.toString().contains("must be a string or map")) throw e; - } - } - - @Test - public void testRootLocationPassedToChild() throws Exception { - String yaml = - "locations:\n"+ - "- localhost:(name=loc1)\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - Entity child = Iterables.getOnlyElement(app.getChildren()); - LocalhostMachineProvisioningLocation loc = (LocalhostMachineProvisioningLocation) Iterables.getOnlyElement(child.getLocations()); - assertEquals(loc.getDisplayName(), "loc1"); - } - - @Test - public void testByonYamlHosts() throws Exception { - String yaml = - "locations:\n"+ - "- byon:\n"+ - " user: root\n"+ - " privateKeyFile: /tmp/key_file\n"+ - " hosts: \n"+ - " - 127.0.0.1\n"+ - " - [email protected]\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - Entity child = Iterables.getOnlyElement(app.getChildren()); - FixedListMachineProvisioningLocation<?> loc = (FixedListMachineProvisioningLocation<?>) Iterables.getOnlyElement(child.getLocations()); - Assert.assertEquals(loc.getChildren().size(), 2); - - SshMachineLocation l1 = (SshMachineLocation)loc.obtain(); - assertUserAddress(l1, "root", "127.0.0.1"); - assertUserAddress((SshMachineLocation)loc.obtain(), "brooklyn", "127.0.0.2"); - Assert.assertEquals(l1.getConfig(SshMachineLocation.PRIVATE_KEY_FILE), "/tmp/key_file"); - } - - @Test - public void testByonYamlHostsString() throws Exception { - String yaml = - "locations:\n"+ - "- byon:\n"+ - " user: root\n"+ - " hosts: \"{127.0.{0,127}.{1-2},[email protected]}\"\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - Entity child = Iterables.getOnlyElement(app.getChildren()); - FixedListMachineProvisioningLocation<?> loc = (FixedListMachineProvisioningLocation<?>) Iterables.getOnlyElement(child.getLocations()); - Assert.assertEquals(loc.getChildren().size(), 5); - - assertUserAddress((SshMachineLocation)loc.obtain(), "root", "127.0.0.1"); - assertUserAddress((SshMachineLocation)loc.obtain(), "root", "127.0.0.2"); - assertUserAddress((SshMachineLocation)loc.obtain(), "root", "127.0.127.1"); - assertUserAddress((SshMachineLocation)loc.obtain(), "root", "127.0.127.2"); - assertUserAddress((SshMachineLocation)loc.obtain(), "brooklyn", "127.0.0.127"); - } - - @Test - public void testMultiByonYaml() throws Exception { - String yaml = - "locations:\n"+ - "- multi:\n"+ - " targets:\n"+ - " - byon:\n"+ - " user: root\n"+ - " hosts: 127.0.{0,127}.{1-2}\n"+ - " - byon:\n"+ - " user: brooklyn\n"+ - " hosts:\n"+ - " - 127.0.0.127\n"+ - "services:\n"+ - "- serviceType: brooklyn.test.entity.TestEntity\n"; - - Entity app = createStartWaitAndLogApplication(new StringReader(yaml)); - Entity child = Iterables.getOnlyElement(app.getChildren()); - MultiLocation<?> loc = (MultiLocation<?>) Iterables.getOnlyElement(child.getLocations()); - Assert.assertEquals(loc.getSubLocations().size(), 2); - - assertUserAddress((SshMachineLocation)loc.obtain(), "root", "127.0.0.1"); - assertUserAddress((SshMachineLocation)loc.obtain(), "root", "127.0.0.2"); - assertUserAddress((SshMachineLocation)loc.obtain(), "root", "127.0.127.1"); - assertUserAddress((SshMachineLocation)loc.obtain(), "root", "127.0.127.2"); - assertUserAddress((SshMachineLocation)loc.obtain(), "brooklyn", "127.0.0.127"); - } - - public static void assertUserAddress(MachineLocation l, String user, String address) { - Assert.assertEquals(l.getAddress().getHostAddress(), address); - if (!Strings.isBlank(user)) Assert.assertEquals(((SshMachineLocation)l).getUser(), user); - } - - @Override - protected Logger getLogger() { - return log; - } - -}
