You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2016/10/21 09:20:43 UTC
[1/8] brooklyn-server git commit: Disable
JavaWebAppWithDslYamlRebindIntegrationTest
Repository: brooklyn-server
Updated Branches:
refs/heads/master 0b474bbe7 -> 0fe1e5d9c
Disable JavaWebAppWithDslYamlRebindIntegrationTest
Needs to be moved to brooklyn-library, or deleted
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/554f50e9
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/554f50e9
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/554f50e9
Branch: refs/heads/master
Commit: 554f50e9745a9c06ca43bb023c541bb14d1919ce
Parents: ff02188
Author: Aled Sage <al...@gmail.com>
Authored: Wed Oct 19 00:37:02 2016 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Wed Oct 19 00:40:45 2016 +0100
----------------------------------------------------------------------
.../brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/554f50e9/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java
index bf54f0f..f379556 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppWithDslYamlRebindIntegrationTest.java
@@ -45,6 +45,10 @@ import com.google.common.io.Files;
@Test
public class JavaWebAppWithDslYamlRebindIntegrationTest extends AbstractYamlTest {
+ // TODO Tests rely on being able to access ControlledDynamicWebAppCluster, but that is in
+ // brooklyn-library, rather than brooklyn-server repo. This test needs to either be moved
+ // or deleted.
+
private static final Logger log = LoggerFactory.getLogger(JavaWebAppWithDslYamlRebindIntegrationTest.class);
protected ClassLoader classLoader = getClass().getClassLoader();
@@ -87,7 +91,7 @@ public class JavaWebAppWithDslYamlRebindIntegrationTest extends AbstractYamlTest
}
/** as {@link JavaWebAppsIntegrationTest#testWithDbDeploy()} but with rebind */
- @Test(groups="Integration")
+ @Test(groups={"Integration", "WIP", "Broken"})
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);
@@ -104,7 +108,7 @@ public class JavaWebAppWithDslYamlRebindIntegrationTest extends AbstractYamlTest
}
// test for https://github.com/brooklyncentral/brooklyn/issues/1422
- @Test(groups="Integration")
+ @Test(groups={"Integration", "WIP", "Broken"})
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);
[3/8] brooklyn-server git commit: Rename
JcloudsLocationExternalConfigYamlLiveTest
Posted by sv...@apache.org.
Rename JcloudsLocationExternalConfigYamlLiveTest
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b1407d08
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b1407d08
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b1407d08
Branch: refs/heads/master
Commit: b1407d08ca077c49ae8bd454613d7f593021c197
Parents: 44d11e2
Author: Aled Sage <al...@gmail.com>
Authored: Tue Oct 18 19:11:35 2016 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Wed Oct 19 00:40:45 2016 +0100
----------------------------------------------------------------------
.../brooklyn/JcloudsExternalConfigYamlTest.java | 121 +++++++++++++++++++
...loudsLocationExternalConfigYamlLiveTest.java | 121 -------------------
2 files changed, 121 insertions(+), 121 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b1407d08/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsExternalConfigYamlTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsExternalConfigYamlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsExternalConfigYamlTest.java
new file mode 100644
index 0000000..a29a813
--- /dev/null
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsExternalConfigYamlTest.java
@@ -0,0 +1,121 @@
+/*
+ * 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 org.apache.brooklyn.camp.brooklyn;
+
+import static org.testng.Assert.assertEquals;
+
+import java.io.StringReader;
+
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.camp.brooklyn.ExternalConfigYamlTest.MyExternalConfigSupplier;
+import org.apache.brooklyn.camp.brooklyn.ExternalConfigYamlTest.MyExternalConfigSupplierWithoutMapArg;
+import org.apache.brooklyn.config.ConfigKey;
+import org.apache.brooklyn.core.config.ConfigKeys;
+import org.apache.brooklyn.core.entity.StartableApplication;
+import org.apache.brooklyn.core.internal.BrooklynProperties;
+import org.apache.brooklyn.core.objs.BrooklynObjectInternal;
+import org.apache.brooklyn.entity.software.base.EmptySoftwareProcess;
+import org.apache.brooklyn.location.jclouds.JcloudsLocation;
+import org.apache.brooklyn.util.core.internal.ssh.SshTool;
+import org.apache.brooklyn.util.core.task.DeferredSupplier;
+import org.apache.brooklyn.util.guava.Maybe;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.Iterables;
+
+// also see ExternalConfigYamlTest
+public class JcloudsExternalConfigYamlTest extends AbstractYamlRebindTest {
+
+ private static final Logger log = LoggerFactory.getLogger(JcloudsExternalConfigYamlTest.class);
+
+ private static final ConfigKey<String> MY_CONFIG_KEY = ConfigKeys.newStringConfigKey("my.config.key");
+
+ @Override
+ protected BrooklynProperties createBrooklynProperties() {
+ BrooklynProperties props = BrooklynProperties.Factory.newDefault();
+ props.put("brooklyn.external.myprovider", MyExternalConfigSupplier.class.getName());
+ props.put("brooklyn.external.myprovider.mykey", "myval");
+ props.put("brooklyn.external.myproviderWithoutMapArg", MyExternalConfigSupplierWithoutMapArg.class.getName());
+ return props;
+ }
+
+ @Test(groups="Live")
+ public void testJcloudsInheritanceAndPasswordSecret() throws Exception {
+ String yaml = Joiner.on("\n").join(
+ "services:",
+ "- type: "+EmptySoftwareProcess.class.getName(),
+ "location:",
+ " jclouds:aws-ec2:",
+ " password: $brooklyn:external(\"myprovider\", \"mykey\")",
+ " my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")");
+
+ origApp = (StartableApplication) createAndStartApplication(new StringReader(yaml));
+
+ Entity entity = Iterables.getOnlyElement( origApp.getChildren() );
+ Location l = Iterables.getOnlyElement( entity.getLocations() );
+ log.info("Location: "+l);
+ assertEquals(l.config().get(MY_CONFIG_KEY), "myval");
+
+ Maybe<Object> rawConfig = ((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(MY_CONFIG_KEY);
+ log.info("Raw config: "+rawConfig);
+ Assert.assertTrue(rawConfig.isPresentAndNonNull());
+ Assert.assertTrue(rawConfig.get() instanceof DeferredSupplier, "Expected deferred raw value; got "+rawConfig.get());
+
+ rawConfig = ((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(SshTool.PROP_PASSWORD);
+ log.info("Raw config password: "+rawConfig);
+ Assert.assertTrue(rawConfig.isPresentAndNonNull());
+ Assert.assertTrue(rawConfig.get() instanceof DeferredSupplier, "Expected deferred raw value; got "+rawConfig.get());
+ }
+
+ @Test(groups="Live")
+ public void testProvisioningPropertyInheritance() throws Exception {
+ String yaml = Joiner.on("\n").join(
+ "services:",
+ "- type: "+EmptySoftwareProcess.class.getName(),
+ " provisioning.properties:",
+ " password: $brooklyn:external(\"myprovider\", \"mykey\")",
+ // note that these 2 do not get transferred -- see below
+ " simple: 42",
+ " my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")",
+ "location: aws-ec2");
+
+ origApp = (StartableApplication) createAndStartApplication(new StringReader(yaml));
+
+ Entity entity = Iterables.getOnlyElement( origApp.getChildren() );
+ Location l = Iterables.getOnlyElement( entity.getLocations() );
+ log.info("Location: "+l);
+ assertEquals(l.config().get(JcloudsLocation.PASSWORD), "myval");
+
+ Maybe<Object> rawConfig = ((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(ConfigKeys.newStringConfigKey("password"));
+ log.info("Raw config password: "+rawConfig);
+ Assert.assertTrue(rawConfig.isPresentAndNonNull());
+ Assert.assertTrue(rawConfig.get() instanceof DeferredSupplier, "Expected deferred raw value; got "+rawConfig.get());
+
+ // these are null as only recognised provisioning properties are transmitted by jclouds
+ log.info("my config key: "+l.getConfig(MY_CONFIG_KEY));
+ log.info("my config key raw: "+((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(MY_CONFIG_KEY));
+ log.info("simple: "+l.getConfig(ConfigKeys.builder(Integer.class, "simple").build()));
+ log.info("simple raw: "+((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(ConfigKeys.builder(Integer.class, "simple").build()));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b1407d08/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsLocationExternalConfigYamlLiveTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsLocationExternalConfigYamlLiveTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsLocationExternalConfigYamlLiveTest.java
deleted file mode 100644
index 6a946d3..0000000
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsLocationExternalConfigYamlLiveTest.java
+++ /dev/null
@@ -1,121 +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 org.apache.brooklyn.camp.brooklyn;
-
-import static org.testng.Assert.assertEquals;
-
-import java.io.StringReader;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.camp.brooklyn.ExternalConfigYamlTest.MyExternalConfigSupplier;
-import org.apache.brooklyn.camp.brooklyn.ExternalConfigYamlTest.MyExternalConfigSupplierWithoutMapArg;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.entity.StartableApplication;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.objs.BrooklynObjectInternal;
-import org.apache.brooklyn.entity.software.base.EmptySoftwareProcess;
-import org.apache.brooklyn.location.jclouds.JcloudsLocation;
-import org.apache.brooklyn.util.core.internal.ssh.SshTool;
-import org.apache.brooklyn.util.core.task.DeferredSupplier;
-import org.apache.brooklyn.util.guava.Maybe;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Joiner;
-import com.google.common.collect.Iterables;
-
-// also see ExternalConfigYamlTest
-public class JcloudsLocationExternalConfigYamlLiveTest extends AbstractYamlRebindTest {
-
- private static final Logger log = LoggerFactory.getLogger(ExternalConfigYamlTest.class);
-
- private static final ConfigKey<String> MY_CONFIG_KEY = ConfigKeys.newStringConfigKey("my.config.key");
-
- @Override
- protected BrooklynProperties createBrooklynProperties() {
- BrooklynProperties props = BrooklynProperties.Factory.newDefault();
- props.put("brooklyn.external.myprovider", MyExternalConfigSupplier.class.getName());
- props.put("brooklyn.external.myprovider.mykey", "myval");
- props.put("brooklyn.external.myproviderWithoutMapArg", MyExternalConfigSupplierWithoutMapArg.class.getName());
- return props;
- }
-
- @Test(groups="Live")
- public void testJcloudsInheritanceAndPasswordSecret() throws Exception {
- String yaml = Joiner.on("\n").join(
- "services:",
- "- type: "+EmptySoftwareProcess.class.getName(),
- "location:",
- " jclouds:aws-ec2:",
- " password: $brooklyn:external(\"myprovider\", \"mykey\")",
- " my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")");
-
- origApp = (StartableApplication) createAndStartApplication(new StringReader(yaml));
-
- Entity entity = Iterables.getOnlyElement( origApp.getChildren() );
- Location l = Iterables.getOnlyElement( entity.getLocations() );
- log.info("Location: "+l);
- assertEquals(l.config().get(MY_CONFIG_KEY), "myval");
-
- Maybe<Object> rawConfig = ((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(MY_CONFIG_KEY);
- log.info("Raw config: "+rawConfig);
- Assert.assertTrue(rawConfig.isPresentAndNonNull());
- Assert.assertTrue(rawConfig.get() instanceof DeferredSupplier, "Expected deferred raw value; got "+rawConfig.get());
-
- rawConfig = ((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(SshTool.PROP_PASSWORD);
- log.info("Raw config password: "+rawConfig);
- Assert.assertTrue(rawConfig.isPresentAndNonNull());
- Assert.assertTrue(rawConfig.get() instanceof DeferredSupplier, "Expected deferred raw value; got "+rawConfig.get());
- }
-
- @Test(groups="Live")
- public void testProvisioningPropertyInheritance() throws Exception {
- String yaml = Joiner.on("\n").join(
- "services:",
- "- type: "+EmptySoftwareProcess.class.getName(),
- " provisioning.properties:",
- " password: $brooklyn:external(\"myprovider\", \"mykey\")",
- // note that these 2 do not get transferred -- see below
- " simple: 42",
- " my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")",
- "location: aws-ec2");
-
- origApp = (StartableApplication) createAndStartApplication(new StringReader(yaml));
-
- Entity entity = Iterables.getOnlyElement( origApp.getChildren() );
- Location l = Iterables.getOnlyElement( entity.getLocations() );
- log.info("Location: "+l);
- assertEquals(l.config().get(JcloudsLocation.PASSWORD), "myval");
-
- Maybe<Object> rawConfig = ((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(ConfigKeys.newStringConfigKey("password"));
- log.info("Raw config password: "+rawConfig);
- Assert.assertTrue(rawConfig.isPresentAndNonNull());
- Assert.assertTrue(rawConfig.get() instanceof DeferredSupplier, "Expected deferred raw value; got "+rawConfig.get());
-
- // these are null as only recognised provisioning properties are transmitted by jclouds
- log.info("my config key: "+l.getConfig(MY_CONFIG_KEY));
- log.info("my config key raw: "+((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(MY_CONFIG_KEY));
- log.info("simple: "+l.getConfig(ConfigKeys.builder(Integer.class, "simple").build()));
- log.info("simple raw: "+((BrooklynObjectInternal.ConfigurationSupportInternal)l.config()).getRaw(ConfigKeys.builder(Integer.class, "simple").build()));
- }
-}
\ No newline at end of file
[4/8] brooklyn-server git commit: Reflections utils: improve use of
generics
Posted by sv...@apache.org.
Reflections utils: improve use of generics
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/cb3bfa5a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/cb3bfa5a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/cb3bfa5a
Branch: refs/heads/master
Commit: cb3bfa5ab67d950d9e02678fb86324c796f6e171
Parents: 554f50e
Author: Aled Sage <al...@gmail.com>
Authored: Wed Oct 19 00:38:39 2016 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Wed Oct 19 00:40:46 2016 +0100
----------------------------------------------------------------------
.../java/org/apache/brooklyn/util/javalang/Reflections.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cb3bfa5a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Reflections.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Reflections.java b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Reflections.java
index 5af8ae9..95bbf7f 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Reflections.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Reflections.java
@@ -825,11 +825,11 @@ public class Reflections {
/** @deprecated since 0.10.0 use {@link #invokeMethodFromArgs(Object, String, List)};
* this allows null return values */ @Deprecated
- public static Optional<Object> invokeMethodWithArgs(Object clazzOrInstance, String method, List<Object> args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+ public static Optional<Object> invokeMethodWithArgs(Object clazzOrInstance, String method, List<?> args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
return invokeMethodWithArgs(clazzOrInstance, method, args, false);
}
/** @deprecated since 0.10.0 use {@link #invokeMethodFromArgs(Object, String, List)} */ @Deprecated
- public static Optional<Object> invokeMethodWithArgs(Object clazzOrInstance, String method, List<Object> args, boolean setAccessible) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+ public static Optional<Object> invokeMethodWithArgs(Object clazzOrInstance, String method, List<?> args, boolean setAccessible) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
return invokeMethodFromArgs(clazzOrInstance, method, args, setAccessible).toOptional();
}
@@ -837,11 +837,11 @@ public class Reflections {
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws IllegalArgumentException */
- public static Maybe<Object> invokeMethodFromArgs(Object clazzOrInstance, String method, List<Object> args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+ public static Maybe<Object> invokeMethodFromArgs(Object clazzOrInstance, String method, List<?> args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
return invokeMethodFromArgs(clazzOrInstance, method, args, false);
}
/** as {@link #invokeMethodFromArgs(Object, String, List)} but giving control over whether to set it accessible */
- public static Maybe<Object> invokeMethodFromArgs(Object clazzOrInstance, String method, List<Object> args, boolean setAccessible) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+ public static Maybe<Object> invokeMethodFromArgs(Object clazzOrInstance, String method, List<?> args, boolean setAccessible) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
Preconditions.checkNotNull(clazzOrInstance, "clazz or instance");
Preconditions.checkNotNull(method, "method");
Preconditions.checkNotNull(args, "args to "+method);
[5/8] brooklyn-server git commit: Convert jclouds yaml tests to unit
tests
Posted by sv...@apache.org.
Convert jclouds yaml tests to unit tests
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/70fd9bdf
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/70fd9bdf
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/70fd9bdf
Branch: refs/heads/master
Commit: 70fd9bdf74d42c3a2a735c782392ae6b771700a3
Parents: cb3bfa5
Author: Aled Sage <al...@gmail.com>
Authored: Wed Oct 19 09:54:48 2016 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Wed Oct 19 10:15:11 2016 +0100
----------------------------------------------------------------------
camp/camp-brooklyn/pom.xml | 7 +
.../AbstractJcloudsRebindStubYamlTest.java | 139 ++++++++++++
.../brooklyn/AbstractJcloudsStubYamlTest.java | 179 ++++++++++++++++
...loudsCustomizerInstantiationYamlDslTest.java | 46 +---
.../brooklyn/JcloudsExternalConfigYamlTest.java | 45 ++--
.../brooklyn/JcloudsRebindStubYamlTest.java | 99 ---------
.../JcloudsRebindWithExternalConfigTest.java | 34 ++-
.../brooklyn/JcloudsRebindWithYamlDslTest.java | 20 +-
.../jclouds/AbstractJcloudsLiveTest.java | 4 +
.../jclouds/AbstractJcloudsStubbedUnitTest.java | 37 +---
.../JcloudsLocationExtensionStubbedTest.java | 2 +-
.../jclouds/JcloudsRebindStubUnitTest.java | 212 +++++++++++++++++++
.../jclouds/JcloudsStubTemplateBuilder.java | 5 +
.../jclouds/StubbedComputeServiceRegistry.java | 22 ++
.../JcloudsPortForwardingStubbedTest.java | 2 +-
15 files changed, 629 insertions(+), 224 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/camp/camp-brooklyn/pom.xml
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/pom.xml b/camp/camp-brooklyn/pom.xml
index ac12285..232e5c2 100644
--- a/camp/camp-brooklyn/pom.xml
+++ b/camp/camp-brooklyn/pom.xml
@@ -146,6 +146,13 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.apache.brooklyn</groupId>
+ <artifactId>brooklyn-software-winrm</artifactId>
+ <version>${project.version}</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<!-- jsr311 excluded from jclouds; see jclouds module's pom for further comments. -->
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsRebindStubYamlTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsRebindStubYamlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsRebindStubYamlTest.java
new file mode 100644
index 0000000..d12b885
--- /dev/null
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsRebindStubYamlTest.java
@@ -0,0 +1,139 @@
+/*
+ * 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 org.apache.brooklyn.camp.brooklyn;
+
+import java.io.File;
+
+import org.apache.brooklyn.api.mgmt.ha.HighAvailabilityMode;
+import org.apache.brooklyn.camp.brooklyn.AbstractJcloudsStubYamlTest.ByonComputeServiceStaticRef;
+import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
+import org.apache.brooklyn.location.jclouds.ComputeServiceRegistry;
+import org.apache.brooklyn.location.jclouds.JcloudsLocation;
+import org.apache.brooklyn.location.jclouds.JcloudsRebindStubTest;
+import org.apache.brooklyn.location.jclouds.JcloudsRebindStubUnitTest;
+import org.apache.brooklyn.location.jclouds.JcloudsStubTemplateBuilder;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
+import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
+import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool;
+import org.apache.brooklyn.util.core.internal.winrm.RecordingWinRmTool;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Predicates;
+
+/**
+ * Implementation notes. This relies on the test {@link JcloudsRebindStubTest#testRebind()}.
+ * It changes the setup for the test in the following ways:
+ * <ul>
+ * <li>Location is defined in YAML (added to the catalog, to make it easier for sub-classes to use).
+ * <li>When creating management context, it also creates {@link BrooklynCampPlatformLauncherNoServer}.
+ * <li>It uses {@link JcloudsRebindStubYamlTest#ByonComputeServiceStaticRef} to allow
+ * the test's {@link ComputeServiceRegistry} to be wired up via YAML. This is important so that
+ * we can serialize/deserialize in the rebind test.
+ * </ul>
+ */
+public abstract class AbstractJcloudsRebindStubYamlTest extends JcloudsRebindStubUnitTest {
+
+ // TODO Some duplication compared to AbstractJcloudsStubYamlTest
+
+ public static final String LOCATION_CATALOG_ID = "stubbed-aws-ec2";
+
+ protected BrooklynCampPlatformLauncherNoServer origLauncher;
+ protected BrooklynCampPlatformLauncherNoServer newLauncher;
+
+ @BeforeMethod(alwaysRun=true)
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ addStubbedLocationToCatalog();
+ }
+
+ @Override
+ @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ try {
+ super.tearDown();
+ } finally {
+ ByonComputeServiceStaticRef.clearInstance();
+ if (origLauncher != null) origLauncher.stopServers();
+ if (newLauncher != null) newLauncher.stopServers();
+ }
+ }
+
+ @Override
+ protected LocalManagementContext createOrigManagementContext() {
+ origLauncher = new BrooklynCampPlatformLauncherNoServer() {
+ @Override
+ protected LocalManagementContext newMgmtContext() {
+ return AbstractJcloudsRebindStubYamlTest.super.createOrigManagementContext();
+ }
+ };
+ origLauncher.launch();
+ LocalManagementContext mgmt = (LocalManagementContext) origLauncher.getBrooklynMgmt();
+ return mgmt;
+ }
+
+ @Override
+ protected LocalManagementContext createNewManagementContext(final File mementoDir, final HighAvailabilityMode haMode) {
+ newLauncher = new BrooklynCampPlatformLauncherNoServer() {
+ @Override
+ protected LocalManagementContext newMgmtContext() {
+ return AbstractJcloudsRebindStubYamlTest.super.createNewManagementContext(mementoDir, haMode);
+ }
+ };
+ newLauncher.launch();
+ return (LocalManagementContext) newLauncher.getBrooklynMgmt();
+ }
+
+ protected void addStubbedLocationToCatalog() {
+ addCatalogItems(
+ "brooklyn.catalog:",
+ " id: " + LOCATION_CATALOG_ID,
+ " version: 1.0.0",
+ " itemType: location",
+ " item:",
+ " type: " + LOCATION_SPEC,
+ " brooklyn.config:",
+ " identity: myidentity",
+ " credential: mycredential",
+ " jclouds.computeServiceRegistry:",
+ " $brooklyn:object:",
+ " type: " + ByonComputeServiceStaticRef.class.getName(),
+ " " + SshMachineLocation.SSH_TOOL_CLASS.getName() + ": " + RecordingSshTool.class.getName(),
+ " templateBuilder:",
+ " $brooklyn:object:",
+ " type: "+JcloudsStubTemplateBuilder.class.getName(),
+ " factoryMethod.name: create",
+ " " + JcloudsLocation.POLL_FOR_FIRST_REACHABLE_ADDRESS_PREDICATE.getName() + ":",
+ " $brooklyn:object:",
+ " type: "+Predicates.class.getName(),
+ " factoryMethod.name: alwaysTrue",
+ " " + SshMachineLocation.SSH_TOOL_CLASS.getName() + ": " + RecordingSshTool.class.getName(),
+ " " + WinRmMachineLocation.WINRM_TOOL_CLASS.getName() + ": " + RecordingWinRmTool.class.getName());
+ }
+
+ protected void addCatalogItems(String... catalogYaml) {
+ addCatalogItems(Joiner.on("\n").join(catalogYaml));
+ }
+
+ protected void addCatalogItems(String catalogYaml) {
+ mgmt().getCatalog().addItems(catalogYaml, false);
+ }
+}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsStubYamlTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsStubYamlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsStubYamlTest.java
new file mode 100644
index 0000000..456f05d
--- /dev/null
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsStubYamlTest.java
@@ -0,0 +1,179 @@
+/*
+ * 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 org.apache.brooklyn.camp.brooklyn;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.io.Reader;
+import java.util.Set;
+
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.mgmt.Task;
+import org.apache.brooklyn.camp.brooklyn.AbstractJcloudsStubYamlTest.ByonComputeServiceStaticRef;
+import org.apache.brooklyn.camp.spi.Assembly;
+import org.apache.brooklyn.camp.spi.AssemblyTemplate;
+import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
+import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
+import org.apache.brooklyn.location.jclouds.AbstractJcloudsStubbedUnitTest;
+import org.apache.brooklyn.location.jclouds.ComputeServiceRegistry;
+import org.apache.brooklyn.location.jclouds.JcloudsLocation;
+import org.apache.brooklyn.location.jclouds.JcloudsStubTemplateBuilder;
+import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry;
+import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.NodeCreator;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
+import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool;
+import org.apache.brooklyn.util.core.internal.winrm.RecordingWinRmTool;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Iterables;
+
+/**
+ * This is a combination of the jclouds tests and the yaml tests. As such, it extends
+ * {@link AbstractJcloudsStubbedUnitTest} and duplicates some of the utility methods in
+ * {@link AbstractYamlTest}.
+ */
+public abstract class AbstractJcloudsStubYamlTest extends AbstractJcloudsStubbedUnitTest {
+
+ // TODO Some duplication compared to AbstractJcloudsRebindStubYamlTest
+
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractJcloudsStubYamlTest.class);
+
+ public static final String LOCATION_CATALOG_ID = "stubbed-aws-ec2";
+
+ protected BrooklynCampPlatformLauncherNoServer launcher;
+ protected BrooklynCampPlatform platform;
+
+ @BeforeMethod(alwaysRun=true)
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+
+ NodeCreator nodeCreator = newNodeCreator();
+ StubbedComputeServiceRegistry computeServiceRegistry = new StubbedComputeServiceRegistry(nodeCreator, false);
+ ByonComputeServiceStaticRef.setInstance(computeServiceRegistry);
+
+ addStubbedLocationToCatalog();
+ }
+
+ @AfterMethod(alwaysRun=true)
+ @Override
+ public void tearDown() throws Exception {
+ try {
+ super.tearDown();
+ } finally {
+ ByonComputeServiceStaticRef.clearInstance();
+ if (launcher != null) launcher.stopServers();
+ }
+ }
+
+ @Override
+ protected LocalManagementContext newManagementContext() {
+ launcher = new BrooklynCampPlatformLauncherNoServer() {
+ @Override
+ protected LocalManagementContext newMgmtContext() {
+ return AbstractJcloudsStubYamlTest.super.newManagementContext();
+ }
+ };
+ launcher.launch();
+ platform = launcher.getCampPlatform();
+ LocalManagementContext mgmt = (LocalManagementContext) launcher.getBrooklynMgmt();
+ return mgmt;
+ }
+
+ protected void addStubbedLocationToCatalog() {
+ addCatalogItems(
+ "brooklyn.catalog:",
+ " id: " + LOCATION_CATALOG_ID,
+ " version: 1.0.0",
+ " itemType: location",
+ " item:",
+ " type: " + LOCATION_SPEC,
+ " brooklyn.config:",
+ " identity: myidentity",
+ " credential: mycredential",
+ " jclouds.computeServiceRegistry:",
+ " $brooklyn:object:",
+ " type: " + ByonComputeServiceStaticRef.class.getName(),
+ " " + SshMachineLocation.SSH_TOOL_CLASS.getName() + ": " + RecordingSshTool.class.getName(),
+ " templateBuilder:",
+ " $brooklyn:object:",
+ " type: "+JcloudsStubTemplateBuilder.class.getName(),
+ " factoryMethod.name: create",
+ " " + JcloudsLocation.POLL_FOR_FIRST_REACHABLE_ADDRESS_PREDICATE.getName() + ":",
+ " $brooklyn:object:",
+ " type: "+Predicates.class.getName(),
+ " factoryMethod.name: alwaysTrue",
+ " " + SshMachineLocation.SSH_TOOL_CLASS.getName() + ": " + RecordingSshTool.class.getName(),
+ " " + WinRmMachineLocation.WINRM_TOOL_CLASS.getName() + ": " + RecordingWinRmTool.class.getName());
+ }
+
+ protected void addCatalogItems(String... catalogYaml) {
+ addCatalogItems(Joiner.on("\n").join(catalogYaml));
+ }
+
+ protected void addCatalogItems(String catalogYaml) {
+ mgmt().getCatalog().addItems(catalogYaml, false);
+ }
+
+ protected Entity createAndStartApplication(Reader input) throws Exception {
+ AssemblyTemplate at = platform.pdp().registerDeploymentPlan(input);
+ Assembly assembly;
+ try {
+ assembly = at.getInstantiator().newInstance().instantiate(at, platform);
+ } catch (Exception e) {
+ LOG.warn("Unable to instantiate " + at + " (rethrowing): " + e);
+ throw e;
+ }
+ LOG.info("Test - created " + assembly);
+ final Entity app = mgmt().getEntityManager().getEntity(assembly.getId());
+ LOG.info("App - " + app);
+
+ // wait for app to have started
+ Set<Task<?>> tasks = mgmt().getExecutionManager().getTasksWithAllTags(ImmutableList.of(
+ BrooklynTaskTags.EFFECTOR_TAG,
+ BrooklynTaskTags.tagForContextEntity(app),
+ BrooklynTaskTags.tagForEffectorCall(app, "start", ConfigBag.newInstance(ImmutableMap.of("locations", ImmutableMap.of())))));
+ Iterables.getOnlyElement(tasks).get();
+
+ return app;
+ }
+
+ public static class ByonComputeServiceStaticRef {
+ private static volatile ComputeServiceRegistry instance;
+
+ public ComputeServiceRegistry asComputeServiceRegistry() {
+ return checkNotNull(instance, "instance");
+ }
+ static void setInstance(ComputeServiceRegistry val) {
+ instance = val;
+ }
+ static void clearInstance() {
+ instance = null;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsCustomizerInstantiationYamlDslTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsCustomizerInstantiationYamlDslTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsCustomizerInstantiationYamlDslTest.java
index 7083fc2..a845831 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsCustomizerInstantiationYamlDslTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsCustomizerInstantiationYamlDslTest.java
@@ -22,23 +22,18 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertSame;
import java.util.List;
-import java.util.Map;
import org.apache.brooklyn.api.entity.Application;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.camp.brooklyn.spi.creation.CampTypePlanTransformer;
import org.apache.brooklyn.core.entity.trait.Startable;
-import org.apache.brooklyn.core.location.Machines;
import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts;
import org.apache.brooklyn.entity.machine.MachineEntity;
import org.apache.brooklyn.location.jclouds.BasicJcloudsLocationCustomizer;
-import org.apache.brooklyn.location.jclouds.ComputeServiceRegistry;
import org.apache.brooklyn.location.jclouds.JcloudsLocation;
import org.apache.brooklyn.location.jclouds.JcloudsMachineLocation;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.apache.brooklyn.util.collections.MutableList;
-import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool;
import org.jclouds.compute.ComputeService;
import org.jclouds.compute.domain.Template;
import org.jclouds.compute.domain.TemplateBuilder;
@@ -49,7 +44,6 @@ import org.testng.annotations.Test;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
/**
@@ -72,10 +66,8 @@ import com.google.common.collect.Lists;
* }
* </pre>
*/
-@Test(groups = {"Live", "Live-sanity"})
-public class JcloudsCustomizerInstantiationYamlDslTest extends JcloudsRebindStubYamlTest {
-
- protected Entity origApp;
+@Test
+public class JcloudsCustomizerInstantiationYamlDslTest extends AbstractJcloudsStubYamlTest {
@BeforeMethod(alwaysRun=true)
@Override
@@ -94,20 +86,10 @@ public class JcloudsCustomizerInstantiationYamlDslTest extends JcloudsRebindStub
}
}
- @Override
- protected JcloudsLocation newJcloudsLocation(ComputeServiceRegistry computeServiceRegistry) throws Exception {
- ByonComputeServiceStaticRef.setInstance(computeServiceRegistry);
-
+ @Test
+ public void testCustomizers() throws Exception {
String yaml = Joiner.on("\n").join(
- "location:",
- " " + LOCATION_SPEC + ":",
- " imageId: " + IMAGE_ID,
- " jclouds.computeServiceRegistry:",
- " $brooklyn:object:",
- " type: " + ByonComputeServiceStaticRef.class.getName(),
- " " + SshMachineLocation.SSH_TOOL_CLASS.getName() + ": " + RecordingSshTool.class.getName(),
- " waitForSshable: false",
- " useJcloudsSshInit: false",
+ "location: " + LOCATION_CATALOG_ID,
"services:\n" +
"- type: " + MachineEntity.class.getName(),
" brooklyn.config:",
@@ -122,16 +104,10 @@ public class JcloudsCustomizerInstantiationYamlDslTest extends JcloudsRebindStub
" object.fields:",
" enabled: $brooklyn:config(\"enabled\")");
- EntitySpec<?> spec = mgmt().getTypeRegistry().createSpecFromPlan(CampTypePlanTransformer.FORMAT, yaml, RegisteredTypeLoadingContexts.spec(Application.class), EntitySpec.class);
- origApp = mgmt().getEntityManager().createEntity(spec);
-
- return (JcloudsLocation) Iterables.getOnlyElement(origApp.getLocations());
- }
+ EntitySpec<?> spec = managementContext.getTypeRegistry().createSpecFromPlan(CampTypePlanTransformer.FORMAT, yaml, RegisteredTypeLoadingContexts.spec(Application.class), EntitySpec.class);
+ Entity app = managementContext.getEntityManager().createEntity(spec);
- @Override
- protected JcloudsMachineLocation obtainMachine(JcloudsLocation jcloudsLoc, Map<?, ?> props) throws Exception {
- final MachineEntity entity = (MachineEntity) Iterables.getOnlyElement(origApp.getChildren());
- origApp.invoke(Startable.START, ImmutableMap.<String, Object>of()).get();
+ app.invoke(Startable.START, ImmutableMap.<String, Object>of()).get();
// Assert all customize functions called
assertEquals(RecordingLocationCustomizer.calls.size(), 4,
@@ -142,14 +118,8 @@ public class JcloudsCustomizerInstantiationYamlDslTest extends JcloudsRebindStub
for (RecordingLocationCustomizer.CallParams call : RecordingLocationCustomizer.calls) {
assertSame(call.instance, firstInstance);
}
-
- JcloudsMachineLocation machine =
- Machines.findUniqueMachineLocation(entity.getLocations(), JcloudsMachineLocation.class).get();
-
- return machine;
}
-
public static class RecordingLocationCustomizer extends BasicJcloudsLocationCustomizer {
public static final List<CallParams> calls = Lists.newCopyOnWriteArrayList();
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsExternalConfigYamlTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsExternalConfigYamlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsExternalConfigYamlTest.java
index a29a813..e5a5e46 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsExternalConfigYamlTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsExternalConfigYamlTest.java
@@ -21,7 +21,9 @@ package org.apache.brooklyn.camp.brooklyn;
import static org.testng.Assert.assertEquals;
import java.io.StringReader;
+import java.util.Map;
+import org.apache.brooklyn.api.entity.Application;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.location.Location;
import org.apache.brooklyn.camp.brooklyn.ExternalConfigYamlTest.MyExternalConfigSupplier;
@@ -29,10 +31,10 @@ import org.apache.brooklyn.camp.brooklyn.ExternalConfigYamlTest.MyExternalConfig
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.entity.StartableApplication;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
import org.apache.brooklyn.core.objs.BrooklynObjectInternal;
import org.apache.brooklyn.entity.software.base.EmptySoftwareProcess;
import org.apache.brooklyn.location.jclouds.JcloudsLocation;
+import org.apache.brooklyn.util.collections.MutableMap;
import org.apache.brooklyn.util.core.internal.ssh.SshTool;
import org.apache.brooklyn.util.core.task.DeferredSupplier;
import org.apache.brooklyn.util.guava.Maybe;
@@ -45,34 +47,35 @@ import com.google.common.base.Joiner;
import com.google.common.collect.Iterables;
// also see ExternalConfigYamlTest
-public class JcloudsExternalConfigYamlTest extends AbstractYamlRebindTest {
+public class JcloudsExternalConfigYamlTest extends AbstractJcloudsStubYamlTest {
private static final Logger log = LoggerFactory.getLogger(JcloudsExternalConfigYamlTest.class);
private static final ConfigKey<String> MY_CONFIG_KEY = ConfigKeys.newStringConfigKey("my.config.key");
-
+
@Override
- protected BrooklynProperties createBrooklynProperties() {
- BrooklynProperties props = BrooklynProperties.Factory.newDefault();
- props.put("brooklyn.external.myprovider", MyExternalConfigSupplier.class.getName());
- props.put("brooklyn.external.myprovider.mykey", "myval");
- props.put("brooklyn.external.myproviderWithoutMapArg", MyExternalConfigSupplierWithoutMapArg.class.getName());
- return props;
+ protected Map<String, ?> customBrooklynProperties() {
+ return MutableMap.<String, Object>builder()
+ .putAll(super.customBrooklynProperties())
+ .put("brooklyn.external.myprovider", MyExternalConfigSupplier.class.getName())
+ .put("brooklyn.external.myprovider.mykey", "myval")
+ .put("brooklyn.external.myproviderWithoutMapArg", MyExternalConfigSupplierWithoutMapArg.class.getName())
+ .build();
}
- @Test(groups="Live")
+ @Test
public void testJcloudsInheritanceAndPasswordSecret() throws Exception {
String yaml = Joiner.on("\n").join(
- "services:",
- "- type: "+EmptySoftwareProcess.class.getName(),
"location:",
- " jclouds:aws-ec2:",
+ " " + LOCATION_CATALOG_ID + ":",
" password: $brooklyn:external(\"myprovider\", \"mykey\")",
- " my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")");
+ " my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")",
+ "services:",
+ "- type: "+EmptySoftwareProcess.class.getName());
- origApp = (StartableApplication) createAndStartApplication(new StringReader(yaml));
+ Application app = (StartableApplication) createAndStartApplication(new StringReader(yaml));
- Entity entity = Iterables.getOnlyElement( origApp.getChildren() );
+ Entity entity = Iterables.getOnlyElement( app.getChildren() );
Location l = Iterables.getOnlyElement( entity.getLocations() );
log.info("Location: "+l);
assertEquals(l.config().get(MY_CONFIG_KEY), "myval");
@@ -88,21 +91,21 @@ public class JcloudsExternalConfigYamlTest extends AbstractYamlRebindTest {
Assert.assertTrue(rawConfig.get() instanceof DeferredSupplier, "Expected deferred raw value; got "+rawConfig.get());
}
- @Test(groups="Live")
+ @Test
public void testProvisioningPropertyInheritance() throws Exception {
String yaml = Joiner.on("\n").join(
+ "location: " + LOCATION_CATALOG_ID,
"services:",
"- type: "+EmptySoftwareProcess.class.getName(),
" provisioning.properties:",
" password: $brooklyn:external(\"myprovider\", \"mykey\")",
// note that these 2 do not get transferred -- see below
" simple: 42",
- " my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")",
- "location: aws-ec2");
+ " my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")");
- origApp = (StartableApplication) createAndStartApplication(new StringReader(yaml));
+ StartableApplication app = (StartableApplication) createAndStartApplication(new StringReader(yaml));
- Entity entity = Iterables.getOnlyElement( origApp.getChildren() );
+ Entity entity = Iterables.getOnlyElement( app.getChildren() );
Location l = Iterables.getOnlyElement( entity.getLocations() );
log.info("Location: "+l);
assertEquals(l.config().get(JcloudsLocation.PASSWORD), "myval");
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindStubYamlTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindStubYamlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindStubYamlTest.java
deleted file mode 100644
index c6fbcd1..0000000
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindStubYamlTest.java
+++ /dev/null
@@ -1,99 +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 org.apache.brooklyn.camp.brooklyn;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.io.File;
-
-import org.apache.brooklyn.api.mgmt.ha.HighAvailabilityMode;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.location.jclouds.ComputeServiceRegistry;
-import org.apache.brooklyn.location.jclouds.JcloudsRebindStubTest;
-import org.testng.annotations.AfterMethod;
-
-/**
- * Implementation notes. This relies on the test {@link JcloudsRebindStubTest#testRebind()}.
- * It changes the setup for the test in the following ways:
- * <ul>
- * <li>Location is defined in YAML, and refers to the external config for the identity/credential.
- * <li>When creating management context, it also creates {@link BrooklynCampPlatformLauncherNoServer}.
- * <li>It uses {@link JcloudsRebindStubYamlTest#ByonComputeServiceStaticRef} to allow
- * the test's {@link ComputeServiceRegistry} to be wired up via YAML.
- * </ul>
- *
- * See {@link JcloudsRebindStubTest} for explanation why this is "Live" - it will not create VMs,
- * but does retrieve list of images etc.
- */
-public abstract class JcloudsRebindStubYamlTest extends JcloudsRebindStubTest {
-
- protected BrooklynCampPlatformLauncherNoServer origLauncher;
- protected BrooklynCampPlatformLauncherNoServer newLauncher;
-
- @Override
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- try {
- super.tearDown();
- } finally {
- ByonComputeServiceStaticRef.clearInstance();
- if (origLauncher != null) origLauncher.stopServers();
- if (newLauncher != null) newLauncher.stopServers();
- }
- }
-
- @Override
- protected LocalManagementContext createOrigManagementContext() {
- origLauncher = new BrooklynCampPlatformLauncherNoServer() {
- @Override
- protected LocalManagementContext newMgmtContext() {
- return JcloudsRebindStubYamlTest.super.createOrigManagementContext();
- }
- };
- origLauncher.launch();
- LocalManagementContext mgmt = (LocalManagementContext) origLauncher.getBrooklynMgmt();
- return mgmt;
- }
-
- @Override
- protected LocalManagementContext createNewManagementContext(final File mementoDir, final HighAvailabilityMode haMode) {
- newLauncher = new BrooklynCampPlatformLauncherNoServer() {
- @Override
- protected LocalManagementContext newMgmtContext() {
- return JcloudsRebindStubYamlTest.super.createNewManagementContext(mementoDir, haMode);
- }
- };
- newLauncher.launch();
- return (LocalManagementContext) newLauncher.getBrooklynMgmt();
- }
-
- public static class ByonComputeServiceStaticRef {
- private static volatile ComputeServiceRegistry instance;
-
- public ComputeServiceRegistry asComputeServiceRegistry() {
- return checkNotNull(instance, "instance");
- }
- static void setInstance(ComputeServiceRegistry val) {
- instance = val;
- }
- static void clearInstance() {
- instance = null;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithExternalConfigTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithExternalConfigTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithExternalConfigTest.java
index fd3baa0..3f48acb 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithExternalConfigTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithExternalConfigTest.java
@@ -18,13 +18,12 @@
*/
package org.apache.brooklyn.camp.brooklyn;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
+import static org.testng.Assert.assertEquals;
import org.apache.brooklyn.api.entity.Application;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.camp.brooklyn.AbstractJcloudsStubYamlTest.ByonComputeServiceStaticRef;
import org.apache.brooklyn.camp.brooklyn.spi.creation.CampTypePlanTransformer;
import org.apache.brooklyn.core.config.external.InPlaceExternalConfigSupplier;
import org.apache.brooklyn.core.entity.trait.Startable;
@@ -32,8 +31,6 @@ import org.apache.brooklyn.core.internal.BrooklynProperties;
import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts;
import org.apache.brooklyn.location.jclouds.ComputeServiceRegistry;
import org.apache.brooklyn.location.jclouds.JcloudsLocation;
-import org.apache.brooklyn.location.jclouds.JcloudsPropertiesFromBrooklynProperties;
-import org.apache.brooklyn.util.collections.MutableMap;
import org.testng.annotations.Test;
import com.google.common.base.Joiner;
@@ -46,20 +43,15 @@ import com.google.common.collect.Iterables;
* <li>Brooklyn properties defines external config
* </ul>
*/
-@Test(groups={"Live", "Live-sanity"})
-public class JcloudsRebindWithExternalConfigTest extends JcloudsRebindStubYamlTest {
+@Test
+public class JcloudsRebindWithExternalConfigTest extends AbstractJcloudsRebindStubYamlTest {
@Override
protected BrooklynProperties createBrooklynProperties() {
BrooklynProperties result = super.createBrooklynProperties();
-
- Map<Object,Object> jcloudsProps = MutableMap.<Object,Object>copyOf(new JcloudsPropertiesFromBrooklynProperties().getJcloudsProperties(PROVIDER, null, "testname", result.asMapWithStringKeys()));
- String identity = checkNotNull((String)jcloudsProps.get("identity"), "identity");
- String credential = checkNotNull((String)jcloudsProps.get("credential"), "credential");
-
result.put("brooklyn.external.creds", InPlaceExternalConfigSupplier.class.getName());
- result.put("brooklyn.external.creds.test-identity", identity);
- result.put("brooklyn.external.creds.test-credential", credential);
+ result.put("brooklyn.external.creds.test-identity", "myidentity");
+ result.put("brooklyn.external.creds.test-credential", "mycredential");
return result;
}
@@ -70,15 +62,9 @@ public class JcloudsRebindWithExternalConfigTest extends JcloudsRebindStubYamlTe
String yaml = Joiner.on("\n").join(
"location:",
- " "+LOCATION_SPEC+":",
+ " "+LOCATION_CATALOG_ID+":",
" identity: $brooklyn:external(\"creds\", \"test-identity\")",
" credential: $brooklyn:external(\"creds\", \"test-credential\")",
- " imageId: "+IMAGE_ID,
- " jclouds.computeServiceRegistry:",
- " $brooklyn:object:",
- " type: "+ByonComputeServiceStaticRef.class.getName(),
- " waitForSshable: false",
- " useJcloudsSshInit: false",
"services:\n"+
"- type: org.apache.brooklyn.entity.stock.BasicApplication");
@@ -87,6 +73,10 @@ public class JcloudsRebindWithExternalConfigTest extends JcloudsRebindStubYamlTe
final Entity app = mgmt().getEntityManager().createEntity(spec);
app.invoke(Startable.START, ImmutableMap.<String, Object>of()).get();
- return (JcloudsLocation) Iterables.getOnlyElement(app.getLocations());
+ JcloudsLocation result = (JcloudsLocation) Iterables.getOnlyElement(app.getLocations());
+ assertEquals(result.getIdentity(), "myidentity");
+ assertEquals(result.getCredential(), "mycredential");
+
+ return result;
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithYamlDslTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithYamlDslTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithYamlDslTest.java
index 5864a9a..593595b 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithYamlDslTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/JcloudsRebindWithYamlDslTest.java
@@ -25,6 +25,7 @@ import java.util.Map;
import org.apache.brooklyn.api.entity.Application;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.camp.brooklyn.AbstractJcloudsStubYamlTest.ByonComputeServiceStaticRef;
import org.apache.brooklyn.camp.brooklyn.spi.creation.CampTypePlanTransformer;
import org.apache.brooklyn.core.entity.trait.Startable;
import org.apache.brooklyn.core.location.Machines;
@@ -33,8 +34,6 @@ import org.apache.brooklyn.entity.machine.MachineEntity;
import org.apache.brooklyn.location.jclouds.ComputeServiceRegistry;
import org.apache.brooklyn.location.jclouds.JcloudsLocation;
import org.apache.brooklyn.location.jclouds.JcloudsMachineLocation;
-import org.apache.brooklyn.location.jclouds.JcloudsRebindStubTest;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool;
import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool.ExecCmd;
import org.testng.annotations.Test;
@@ -47,9 +46,6 @@ import com.google.common.collect.Iterables;
* This is primarily to test https://issues.apache.org/jira/browse/BROOKLYN-349.
* It confirms that entity "provisioning.properties" get passed through to the machine.
*
- * As per the other {@link JcloudsRebindStubTest} tests, it will connect to SoftLayer to retrieve
- * image details (so needs real credentials), but it will then stub out the VM creation.
- *
* It could do with some cleanup at some point:
* <ul>
* <li>There is an NPE at AddMachineMetrics$2.apply(AddMachineMetrics.java:111), despite having set
@@ -61,8 +57,8 @@ import com.google.common.collect.Iterables;
* Presumably we need to stub out that call as well somehow!
* </ul>
*/
-@Test(groups={"Live", "Live-sanity"})
-public class JcloudsRebindWithYamlDslTest extends JcloudsRebindStubYamlTest {
+@Test
+public class JcloudsRebindWithYamlDslTest extends AbstractJcloudsRebindStubYamlTest {
protected Entity origApp;
@@ -84,15 +80,7 @@ public class JcloudsRebindWithYamlDslTest extends JcloudsRebindStubYamlTest {
mgmt().getCatalog().addItems(catalogYaml, true);
String yaml = Joiner.on("\n").join(
- "location:",
- " "+LOCATION_SPEC+":",
- " imageId: "+IMAGE_ID,
- " jclouds.computeServiceRegistry:",
- " $brooklyn:object:",
- " type: "+ByonComputeServiceStaticRef.class.getName(),
- " "+SshMachineLocation.SSH_TOOL_CLASS.getName() + ": " + RecordingSshTool.class.getName(),
- " waitForSshable: false",
- " useJcloudsSshInit: false",
+ "location: " + LOCATION_CATALOG_ID,
"services:\n"+
"- type: "+symbolicName,
" brooklyn.config:",
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsLiveTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsLiveTest.java
index 4e2e7cc..bf2fb8d 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsLiveTest.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsLiveTest.java
@@ -109,6 +109,10 @@ public class AbstractJcloudsLiveTest {
}
}
+ protected LocalManagementContext mgmt() {
+ return managementContext;
+ }
+
protected LocalManagementContext newManagementContext() {
// loads properties, by default, but not OSGi or anything else
return LocalManagementContextForTests.builder(true).useDefaultProperties().build();
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java
index 0fa0e94..6b6f790 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java
@@ -19,28 +19,21 @@
package org.apache.brooklyn.location.jclouds;
import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.AbstractNodeCreator;
+import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.BasicNodeCreator;
import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.NodeCreator;
import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool;
import org.apache.brooklyn.util.core.internal.winrm.RecordingWinRmTool;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.NodeMetadata.Status;
-import org.jclouds.compute.domain.NodeMetadataBuilder;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.domain.LoginCredentials;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
/**
@@ -81,10 +74,17 @@ public abstract class AbstractJcloudsStubbedUnitTest extends AbstractJcloudsLive
@Override
protected LocalManagementContext newManagementContext() {
- return LocalManagementContextForTests.builder(true).build();
+ return LocalManagementContextForTests.builder(true).useAdditionalProperties(customBrooklynProperties()).build();
}
/**
+ * For overriding.
+ */
+ protected Map<String, ?> customBrooklynProperties() {
+ return ImmutableMap.of();
+ }
+
+ /**
* Expect sub-classes to call this - either in their {@link BeforeMethod} or at the very
* start of the test method (to allow custom config per test).
*/
@@ -113,22 +113,7 @@ public abstract class AbstractJcloudsStubbedUnitTest extends AbstractJcloudsLive
return LOCATION_SPEC;
}
- protected NodeCreator newVanillaNodeCreator() {
- return new AbstractNodeCreator() {
- private final AtomicInteger counter = new AtomicInteger(1);
- @Override
- protected NodeMetadata newNode(String group, Template template) {
- int suffix = counter.getAndIncrement();
- NodeMetadata result = new NodeMetadataBuilder()
- .id("mynodeid"+suffix)
- .credentials(LoginCredentials.builder().identity("myuser").credential("mypassword").build())
- .loginPort(22)
- .status(Status.RUNNING)
- .publicAddresses(ImmutableList.of("173.194.32."+suffix))
- .privateAddresses(ImmutableList.of("172.168.10."+suffix))
- .build();
- return result;
- }
- };
+ protected NodeCreator newNodeCreator() {
+ return new BasicNodeCreator();
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsLocationExtensionStubbedTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsLocationExtensionStubbedTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsLocationExtensionStubbedTest.java
index c192297..7c20d5b 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsLocationExtensionStubbedTest.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsLocationExtensionStubbedTest.java
@@ -54,7 +54,7 @@ public class JcloudsLocationExtensionStubbedTest extends AbstractJcloudsStubbedU
@Test
public void testHasExtension() throws Exception {
- initNodeCreatorAndJcloudsLocation(newVanillaNodeCreator(), ImmutableMap.of());
+ initNodeCreatorAndJcloudsLocation(newNodeCreator(), ImmutableMap.of());
MachineLocation machine = jcloudsLocation.obtain();
HttpExecutorFactory extension = machine.getExtension(HttpExecutorFactory.class);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsRebindStubUnitTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsRebindStubUnitTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsRebindStubUnitTest.java
new file mode 100644
index 0000000..e7bf4d8
--- /dev/null
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsRebindStubUnitTest.java
@@ -0,0 +1,212 @@
+/*
+ * 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 org.apache.brooklyn.location.jclouds;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.brooklyn.api.mgmt.ManagementContext;
+import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.core.internal.BrooklynProperties;
+import org.apache.brooklyn.core.mgmt.rebind.RebindTestFixtureWithApp;
+import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.BasicNodeCreator;
+import org.apache.brooklyn.location.jclouds.StubbedComputeServiceRegistry.NodeCreator;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
+import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
+import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool;
+import org.apache.brooklyn.util.core.internal.winrm.RecordingWinRmTool;
+import org.apache.brooklyn.util.exceptions.CompoundRuntimeException;
+import org.jclouds.compute.domain.NodeMetadata;
+import org.jclouds.compute.domain.Template;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Optional;
+import com.google.common.base.Predicates;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multimaps;
+
+/**
+ * Tests rebind (i.e. restarting Brooklyn server) when there are JcloudsSshMachineLocation object(s).
+ *
+ * It is just a unit test, because it uses the StubbedComputeServiceRegistry.
+ */
+public class JcloudsRebindStubUnitTest extends RebindTestFixtureWithApp {
+
+ // TODO Duplication of JcloudsRebindStubTest, and AbstractJcloudsStubbedUnitTest
+
+ // TODO The ByonComputeServiceRegistry extends ComputeServiceRegistryImpl, which means when it
+ // is serialized it will try to serialize the cachedComputeServices. That will try to serialize
+ // threads and all sorts!
+
+ private static final Logger LOG = LoggerFactory.getLogger(JcloudsRebindStubUnitTest.class);
+
+ public static final String PROVIDER = AbstractJcloudsLiveTest.AWS_EC2_PROVIDER;
+ public static final String REGION = "us-east-1";
+ public static final String LOCATION_SPEC = "jclouds:" + PROVIDER + ":" + REGION;
+ public static final String IMAGE_ID = REGION + "/bogus-image"; // matches name in JcloudsStubTemplateBuilder
+
+ protected List<ManagementContext> mgmts;
+ protected Multimap<ManagementContext, JcloudsSshMachineLocation> machines;
+ protected BrooklynProperties brooklynProperties;
+
+ // TODO These values are hard-coded into the JcloudsStubTemplateBuilder, so best not to mess!
+
+ protected NodeCreator nodeCreator;
+ protected ComputeServiceRegistry computeServiceRegistry;
+
+ @BeforeMethod(alwaysRun=true)
+ public void setUp() throws Exception {
+ super.setUp();
+ RecordingSshTool.clear();
+ RecordingWinRmTool.clear();
+ mgmts = Lists.newCopyOnWriteArrayList(ImmutableList.<ManagementContext>of(origManagementContext));
+ machines = Multimaps.synchronizedMultimap(ArrayListMultimap.<ManagementContext, JcloudsSshMachineLocation>create());
+ }
+
+ @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ try {
+ List<Exception> exceptions = Lists.newArrayList();
+ for (ManagementContext mgmt : mgmts) {
+ try {
+ if (mgmt.isRunning()) Entities.destroyAll(mgmt);
+ } catch (Exception e) {
+ LOG.warn("Error destroying management context", e);
+ exceptions.add(e);
+ }
+ }
+
+ super.tearDown();
+
+ if (exceptions.size() > 0) {
+ throw new CompoundRuntimeException("Error in tearDown of "+getClass(), exceptions);
+ }
+ } finally {
+ mgmts.clear();
+ origManagementContext = null;
+ newManagementContext = null;
+ origApp = null;
+ newApp = null;
+ RecordingSshTool.clear();
+ RecordingWinRmTool.clear();
+ }
+ }
+
+
+ @Override
+ protected BrooklynProperties createBrooklynProperties() {
+ // Don't let any defaults from brooklyn.properties (except credentials) interfere with test
+ BrooklynProperties result = super.createBrooklynProperties();
+ AbstractJcloudsLiveTest.stripBrooklynProperties(result);
+ return result;
+ }
+
+ @Override
+ protected boolean useLiveManagementContext() {
+ return false;
+ }
+
+ @Override
+ protected TestApplication rebind() throws Exception {
+ TestApplication result = super.rebind();
+ mgmts.add(newManagementContext);
+ return result;
+ }
+
+ @Test
+ public void testRebind() throws Exception {
+ this.nodeCreator = newNodeCreator();
+ this.computeServiceRegistry = new StubbedComputeServiceRegistry(nodeCreator, false);
+
+ JcloudsLocation origJcloudsLoc = newJcloudsLocation(computeServiceRegistry);
+
+ JcloudsSshMachineLocation origMachine = (JcloudsSshMachineLocation) obtainMachine(origJcloudsLoc, ImmutableMap.of("imageId", IMAGE_ID));
+
+ String origHostname = origMachine.getHostname();
+ NodeMetadata origNode = origMachine.getNode();
+ Template origTemplate = origMachine.getTemplate();
+
+ rebind();
+
+ // Check the machine is as before.
+ // Call to getOptionalNode() will cause it to try to resolve this node in Softlayer; but it won't find it.
+ JcloudsSshMachineLocation newMachine = (JcloudsSshMachineLocation) mgmt().getLocationManager().getLocation(origMachine.getId());
+ JcloudsLocation newJcloudsLoc = newMachine.getParent();
+ String newHostname = newMachine.getHostname();
+ String newNodeId = newMachine.getJcloudsId();
+ Optional<NodeMetadata> newNode = newMachine.getOptionalNode();
+ Optional<Template> newTemplate = newMachine.getOptionalTemplate();
+
+ assertEquals(newHostname, origHostname);
+ assertEquals(origNode.getId(), newNodeId);
+ assertFalse(newNode.isPresent(), "newNode="+newNode);
+ assertFalse(newTemplate.isPresent(), "newTemplate="+newTemplate);
+
+ assertEquals(newJcloudsLoc.getProvider(), origJcloudsLoc.getProvider());
+ }
+
+ protected JcloudsMachineLocation obtainMachine(JcloudsLocation jcloudsLoc, Map<?,?> props) throws Exception {
+ return (JcloudsMachineLocation) jcloudsLoc.obtain(ImmutableMap.of("imageId", IMAGE_ID));
+ }
+
+ protected JcloudsLocation newJcloudsLocation(ComputeServiceRegistry computeServiceRegistry) throws Exception {
+ return newJcloudsLocation(computeServiceRegistry, ImmutableMap.of());
+ }
+
+ protected JcloudsLocation newJcloudsLocation(ComputeServiceRegistry computeServiceRegistry, Map<?, ?> jcloudsLocationConfig) throws Exception {
+ return (JcloudsLocation) mgmt().getLocationRegistry().getLocationManaged(
+ getLocationSpec(),
+ ImmutableMap.builder()
+ .put(JcloudsLocationConfig.COMPUTE_SERVICE_REGISTRY, computeServiceRegistry)
+ .put(JcloudsLocationConfig.TEMPLATE_BUILDER, JcloudsStubTemplateBuilder.create())
+ .put(JcloudsLocationConfig.ACCESS_IDENTITY, "stub-identity")
+ .put(JcloudsLocationConfig.ACCESS_CREDENTIAL, "stub-credential")
+ .put(SshMachineLocation.SSH_TOOL_CLASS, RecordingSshTool.class.getName())
+ .put(WinRmMachineLocation.WINRM_TOOL_CLASS, RecordingWinRmTool.class.getName())
+ .put(JcloudsLocation.POLL_FOR_FIRST_REACHABLE_ADDRESS_PREDICATE, Predicates.alwaysTrue())
+ .putAll(jcloudsLocationConfig)
+ .build());
+ }
+
+ /**
+ * For overriding.
+ */
+ protected NodeCreator newNodeCreator() {
+ return new BasicNodeCreator();
+ }
+
+ /**
+ * For overriding.
+ */
+ protected String getLocationSpec() {
+ return LOCATION_SPEC;
+ }
+}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
index 149d0f4..bea98f3 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/JcloudsStubTemplateBuilder.java
@@ -21,6 +21,7 @@ package org.apache.brooklyn.location.jclouds;
import com.google.common.base.Functions;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
+import com.google.common.base.Objects.ToStringHelper;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
@@ -99,6 +100,10 @@ public class JcloudsStubTemplateBuilder {
return new EC2TemplateBuilderImpl(locations, new ImageCacheSupplier(images, 60), sizes, Suppliers.ofInstance(jcloudsDomainLocation), optionsProvider,
templateBuilderProvider, getImageStrategy, imageCache) {
+ @Override
+ protected ToStringHelper string() {
+ return super.string().add("type", "Stubbed-TemplateBuilder");
+ }
};
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
index 99cd321..9dee5ef 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/StubbedComputeServiceRegistry.java
@@ -20,16 +20,21 @@ package org.apache.brooklyn.location.jclouds;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.brooklyn.util.core.config.ConfigBag;
import org.jclouds.compute.ComputeService;
import org.jclouds.compute.RunNodesException;
import org.jclouds.compute.domain.ComputeMetadata;
import org.jclouds.compute.domain.NodeMetadata;
+import org.jclouds.compute.domain.NodeMetadata.Status;
+import org.jclouds.compute.domain.NodeMetadataBuilder;
import org.jclouds.compute.domain.Template;
import org.jclouds.compute.options.TemplateOptions;
+import org.jclouds.domain.LoginCredentials;
import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -78,6 +83,23 @@ public class StubbedComputeServiceRegistry implements ComputeServiceRegistry {
}
}
+ public static class BasicNodeCreator extends AbstractNodeCreator {
+ private final AtomicInteger counter = new AtomicInteger(1);
+ @Override
+ protected NodeMetadata newNode(String group, Template template) {
+ int suffix = counter.getAndIncrement();
+ NodeMetadata result = new NodeMetadataBuilder()
+ .id("mynodeid"+suffix)
+ .credentials(LoginCredentials.builder().identity("myuser").credential("mypassword").build())
+ .loginPort(22)
+ .status(Status.RUNNING)
+ .publicAddresses(ImmutableList.of("173.194.32."+suffix))
+ .privateAddresses(ImmutableList.of("172.168.10."+suffix))
+ .build();
+ return result;
+ }
+ }
+
static class MinimalComputeService extends DelegatingComputeService {
private final NodeCreator nodeCreator;
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/70fd9bdf/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/JcloudsPortForwardingStubbedTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/JcloudsPortForwardingStubbedTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/JcloudsPortForwardingStubbedTest.java
index 22cea5a..737ebcf 100644
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/JcloudsPortForwardingStubbedTest.java
+++ b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/networking/JcloudsPortForwardingStubbedTest.java
@@ -77,7 +77,7 @@ public class JcloudsPortForwardingStubbedTest extends AbstractJcloudsStubbedUnit
@Override
public void setUp() throws Exception {
super.setUp();
- initNodeCreatorAndJcloudsLocation(newVanillaNodeCreator(), ImmutableMap.of());
+ initNodeCreatorAndJcloudsLocation(newNodeCreator(), ImmutableMap.of());
}
protected AbstractNodeCreator getNodeCreator() {
[6/8] brooklyn-server git commit: Rebind tests: avoid
ClassCastException if multiple apps
Posted by sv...@apache.org.
Rebind tests: avoid ClassCastException if multiple apps
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/9a240b4b
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/9a240b4b
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/9a240b4b
Branch: refs/heads/master
Commit: 9a240b4bf3471a7b4bce601e5493133929dda20f
Parents: 70fd9bd
Author: Aled Sage <al...@gmail.com>
Authored: Wed Oct 19 13:21:47 2016 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Oct 20 17:27:22 2016 +0100
----------------------------------------------------------------------
.../core/mgmt/rebind/RebindOptions.java | 9 +++++++++
.../mgmt/rebind/RebindTestFixtureWithApp.java | 20 ++++++++++++++++++++
.../core/mgmt/rebind/RebindTestUtils.java | 14 +++++++-------
3 files changed, 36 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a240b4b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java
index 618a906..eab61cf 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindOptions.java
@@ -19,7 +19,9 @@
package org.apache.brooklyn.core.mgmt.rebind;
import java.io.File;
+import java.util.Collection;
+import org.apache.brooklyn.api.entity.Application;
import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.api.mgmt.ha.HighAvailabilityMode;
import org.apache.brooklyn.api.mgmt.rebind.RebindExceptionHandler;
@@ -43,6 +45,7 @@ public class RebindOptions {
public ClassLoader classLoader;
public PersistenceObjectStore objectStore;
public HighAvailabilityMode haMode;
+ public Function<Collection<Application>, Application> applicationChooserOnRebind;
public static RebindOptions create() {
return new RebindOptions();
@@ -60,6 +63,7 @@ public class RebindOptions {
result.classLoader(options.classLoader);
result.objectStore(options.objectStore);
result.haMode(options.haMode);
+ result.applicationChooserOnRebind(options.applicationChooserOnRebind);
return result;
}
public RebindOptions checkSerializable(boolean val) {
@@ -106,4 +110,9 @@ public class RebindOptions {
this.haMode = val;
return this;
}
+
+ public RebindOptions applicationChooserOnRebind(Function<Collection<Application>, Application> val) {
+ this.applicationChooserOnRebind = val;
+ return this;
+ }
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a240b4b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestFixtureWithApp.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestFixtureWithApp.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestFixtureWithApp.java
index 2a7e443..e609a02 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestFixtureWithApp.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestFixtureWithApp.java
@@ -18,14 +18,34 @@
*/
package org.apache.brooklyn.core.mgmt.rebind;
+import java.util.Collection;
+
+import org.apache.brooklyn.api.entity.Application;
import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.core.test.entity.TestApplication;
import org.apache.brooklyn.core.test.entity.TestApplicationNoEnrichersImpl;
+import com.google.common.base.Function;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Iterables;
+
public class RebindTestFixtureWithApp extends RebindTestFixture<TestApplication> {
protected TestApplication createApp() {
return origManagementContext.getEntityManager().createEntity(EntitySpec.create(TestApplication.class, TestApplicationNoEnrichersImpl.class));
}
+ @Override
+ protected TestApplication rebind(RebindOptions options) throws Exception {
+ if (options.applicationChooserOnRebind == null) {
+ // Some sub-classes will have added additional apps before rebind. We must return an
+ // app of type "TestApplication"; otherwise we'll get a class-cast exception.
+ options = RebindOptions.create(options);
+ options.applicationChooserOnRebind(new Function<Collection<Application>, Application>() {
+ @Override public Application apply(Collection<Application> input) {
+ return Iterables.find(input, Predicates.instanceOf(TestApplication.class));
+ }});
+ }
+ return super.rebind(options);
+ }
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a240b4b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java
index af3a5e4..2283b66 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java
@@ -44,13 +44,9 @@ import org.apache.brooklyn.core.mgmt.ha.ManagementPlaneSyncRecordPersisterToObje
import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
import org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore;
-import org.apache.brooklyn.core.mgmt.persist.BrooklynPersistenceUtils;
import org.apache.brooklyn.core.mgmt.persist.FileBasedObjectStore;
import org.apache.brooklyn.core.mgmt.persist.PersistMode;
import org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore;
-import org.apache.brooklyn.core.mgmt.rebind.PersistenceExceptionHandlerImpl;
-import org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl;
-import org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl;
import org.apache.brooklyn.core.mgmt.rebind.Dumpers.Pointer;
import org.apache.brooklyn.core.mgmt.rebind.dto.MementosGenerators;
import org.apache.brooklyn.core.server.BrooklynServerConfig;
@@ -333,11 +329,15 @@ public class RebindTestUtils {
public static Application rebind(RebindOptions options) throws Exception {
Collection<Application> newApps = rebindAll(options);
- if (newApps.isEmpty()) throw new IllegalStateException("Application could not be rebinded; serialization probably failed");
- return Iterables.getFirst(newApps, null);
+ if (newApps.isEmpty()) throw new IllegalStateException("Application could not be found after rebind; serialization probably failed");
+ Function<Collection<Application>, Application> chooser = options.applicationChooserOnRebind;
+ if (chooser != null) {
+ return chooser.apply(newApps);
+ } else {
+ return Iterables.getFirst(newApps, null);
+ }
}
-
/**
* @deprecated since 0.7.0; use {@link #rebindAll(RebindOptions)}
*/
[7/8] brooklyn-server git commit: Fix cancelling of
BrooklynDslDeferredSupplier
Posted by sv...@apache.org.
Fix cancelling of BrooklynDslDeferredSupplier
DslAndRebindYamlTest was hanging - we were waiting for all tasks of that
entity to complete. However, the ValueResolver had kicked off a sub-task
which was then left running.
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/29bcac77
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/29bcac77
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/29bcac77
Branch: refs/heads/master
Commit: 29bcac7778793a1da9c9095ebc55af4ca9f1a364
Parents: 9a240b4
Author: Aled Sage <al...@gmail.com>
Authored: Wed Oct 19 15:36:02 2016 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Oct 20 17:27:22 2016 +0100
----------------------------------------------------------------------
.../camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java | 4 ++++
.../org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java | 4 ++--
2 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/29bcac77/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java
index 4e302b3..0225bbb 100644
--- a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java
+++ b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java
@@ -112,6 +112,10 @@ public abstract class BrooklynDslDeferredSupplier<T> implements DeferredSupplier
try {
result = exec.submit(task).get();
} catch (InterruptedException | ExecutionException e) {
+ Task<?> currentTask = Tasks.current();
+ if (currentTask != null && currentTask.isCancelled()) {
+ task.cancel(true);
+ }
throw Exceptions.propagate(e);
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/29bcac77/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java
index b091096..14a3daa 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java
@@ -105,7 +105,7 @@ public class DslAndRebindYamlTest extends AbstractYamlTest {
return log;
}
- public Application rebind(Application app) throws Exception {
+ protected Application rebind(Application app) throws Exception {
RebindTestUtils.waitForPersisted(app);
Application result = RebindTestUtils.rebind(mementoDir, getClass().getClassLoader());
mgmtContexts.add(result.getManagementContext());
@@ -129,7 +129,7 @@ public class DslAndRebindYamlTest extends AbstractYamlTest {
return entity;
}
- public static <T> T getConfigInTask(final Entity entity, final ConfigKey<T> key) {
+ protected static <T> T getConfigInTask(final Entity entity, final ConfigKey<T> key) {
return Entities.submit(entity, Tasks.<T>builder().body(new Callable<T>() {
@Override
public T call() throws Exception {
[2/8] brooklyn-server git commit: LocalManagementContextForTests
supports properties map
Posted by sv...@apache.org.
LocalManagementContextForTests supports properties map
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/ff021884
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/ff021884
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/ff021884
Branch: refs/heads/master
Commit: ff021884ebd9d45bd330fe61731fc269544e2495
Parents: b1407d0
Author: Aled Sage <al...@gmail.com>
Authored: Tue Oct 18 19:13:17 2016 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Wed Oct 19 00:40:45 2016 +0100
----------------------------------------------------------------------
.../entity/LocalManagementContextForTests.java | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ff021884/core/src/test/java/org/apache/brooklyn/core/test/entity/LocalManagementContextForTests.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/test/entity/LocalManagementContextForTests.java b/core/src/test/java/org/apache/brooklyn/core/test/entity/LocalManagementContextForTests.java
index 76e0698..d89ccaf 100644
--- a/core/src/test/java/org/apache/brooklyn/core/test/entity/LocalManagementContextForTests.java
+++ b/core/src/test/java/org/apache/brooklyn/core/test/entity/LocalManagementContextForTests.java
@@ -18,6 +18,8 @@
*/
package org.apache.brooklyn.core.test.entity;
+import java.util.Map;
+
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.internal.BrooklynProperties;
import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
@@ -87,6 +89,7 @@ public class LocalManagementContextForTests extends LocalManagementContext {
boolean disableOsgi = false;
boolean emptyCatalog = false;
BrooklynProperties properties = null;
+ Map<String, ?> additionalProperties = null;
public Builder disablePersistenceBackups() { return disablePersistenceBackups(true); }
public Builder disableOsgi() { return disableOsgi(true); }
@@ -107,18 +110,31 @@ public class LocalManagementContextForTests extends LocalManagementContext {
disableOsgi();
emptyCatalog();
properties = null;
+ additionalProperties = null;
return this;
}
+ public Builder useAdditionalProperties(Map<String, ?> additionalProperties) {
+ if (hasCustomProperties() && additionalProperties != null)
+ throw new IllegalStateException("Cannot set multiple properties");
+ this.additionalProperties = additionalProperties;
+ return this;
+ }
+
public Builder useProperties(BrooklynProperties properties) {
- if (this.properties!=null && properties!=null)
+ if (hasCustomProperties() && properties != null)
throw new IllegalStateException("Cannot set multiple properties");
this.properties = properties;
return this;
}
+ protected boolean hasCustomProperties() {
+ return (properties != null) || (additionalProperties != null && additionalProperties.size() > 0);
+ }
+
public BrooklynProperties buildProperties() {
BrooklynProperties result = emptyIfNull(properties);
+ if (additionalProperties != null) result.putAll(additionalProperties);
if (disablePersistenceBackups) LocalManagementContextForTests.disablePersistenceBackups(result);
if (disableOsgi) LocalManagementContextForTests.disableOsgi(result);
if (emptyCatalog) LocalManagementContextForTests.setEmptyCatalogAsDefault(result);
[8/8] brooklyn-server git commit: Closes #387
Posted by sv...@apache.org.
Closes #387
Convert jclouds yaml tests to unit tests
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/0fe1e5d9
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/0fe1e5d9
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/0fe1e5d9
Branch: refs/heads/master
Commit: 0fe1e5d9c1e8d3a3a684b83b7f1b3a0853037531
Parents: 0b474bb 29bcac7
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Fri Oct 21 10:20:09 2016 +0100
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Fri Oct 21 10:20:09 2016 +0100
----------------------------------------------------------------------
camp/camp-brooklyn/pom.xml | 7 +
.../spi/dsl/BrooklynDslDeferredSupplier.java | 4 +
.../AbstractJcloudsRebindStubYamlTest.java | 139 ++++++++++++
.../brooklyn/AbstractJcloudsStubYamlTest.java | 179 ++++++++++++++++
.../camp/brooklyn/DslAndRebindYamlTest.java | 4 +-
...aWebAppWithDslYamlRebindIntegrationTest.java | 8 +-
...loudsCustomizerInstantiationYamlDslTest.java | 46 +---
.../brooklyn/JcloudsExternalConfigYamlTest.java | 124 +++++++++++
...loudsLocationExternalConfigYamlLiveTest.java | 121 -----------
.../brooklyn/JcloudsRebindStubYamlTest.java | 99 ---------
.../JcloudsRebindWithExternalConfigTest.java | 34 ++-
.../brooklyn/JcloudsRebindWithYamlDslTest.java | 20 +-
.../core/mgmt/rebind/RebindOptions.java | 9 +
.../mgmt/rebind/RebindTestFixtureWithApp.java | 20 ++
.../core/mgmt/rebind/RebindTestUtils.java | 14 +-
.../entity/LocalManagementContextForTests.java | 18 +-
.../jclouds/AbstractJcloudsLiveTest.java | 4 +
.../jclouds/AbstractJcloudsStubbedUnitTest.java | 37 +---
.../JcloudsLocationExtensionStubbedTest.java | 2 +-
.../jclouds/JcloudsRebindStubUnitTest.java | 212 +++++++++++++++++++
.../jclouds/JcloudsStubTemplateBuilder.java | 5 +
.../jclouds/StubbedComputeServiceRegistry.java | 22 ++
.../JcloudsPortForwardingStubbedTest.java | 2 +-
.../brooklyn/util/javalang/Reflections.java | 8 +-
24 files changed, 798 insertions(+), 340 deletions(-)
----------------------------------------------------------------------