You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/12/23 12:07:28 UTC

[65/71] [abbrv] incubator-brooklyn git commit: [JCLOUDS] fix unit test so it uses empty context and runs much faster

[JCLOUDS] fix unit test so it uses empty context and runs much faster


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

Branch: refs/heads/master
Commit: b7c9d58c580744cf09e4beb8555d8be8249e1fe5
Parents: 1ef517f
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Tue Dec 22 13:41:42 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue Dec 22 13:41:42 2015 +0000

----------------------------------------------------------------------
 .../provider/AbstractJcloudsLocationTest.java   | 63 +++++++++++++++-----
 .../provider/RackspaceLocationLiveTest.java     |  2 +-
 2 files changed, 49 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b7c9d58c/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/AbstractJcloudsLocationTest.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/AbstractJcloudsLocationTest.java b/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/AbstractJcloudsLocationTest.java
index d89ed97..b40a294 100644
--- a/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/AbstractJcloudsLocationTest.java
+++ b/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/AbstractJcloudsLocationTest.java
@@ -27,6 +27,12 @@ import org.apache.brooklyn.api.location.NoMachinesAvailableException;
 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.test.entity.LocalManagementContextForTests;
+import org.apache.brooklyn.location.jclouds.JcloudsLocation;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
+import org.apache.brooklyn.util.collections.MutableList;
+import org.apache.brooklyn.util.collections.MutableMap;
+import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.annotations.AfterMethod;
@@ -34,11 +40,6 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 import org.testng.collections.Lists;
-import org.apache.brooklyn.location.jclouds.JcloudsLocation;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.util.collections.MutableList;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.exceptions.Exceptions;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -51,13 +52,42 @@ public abstract class AbstractJcloudsLocationTest {
 
     protected JcloudsLocation loc;
     protected List<SshMachineLocation> machines = MutableList.of();
-    protected ManagementContext ctx;
+    
+    // NB made private in 090-SNAPSHOT so that non-live tests aren't forced to get a live context
+    // (adding 10+ seconds to the build)
+    //
+    // use mgmt() instead to access, it is populated on demand
+    private ManagementContext ctx;
 
     protected AbstractJcloudsLocationTest(String provider) {
         this.provider = provider;
     }
 
-    /**
+    protected synchronized ManagementContext mgmt() {
+    	if (ctx==null) {
+    		useMgmt(newLiveManagementContext());
+    	}
+    	return ctx;
+    }
+    
+    protected synchronized void useMgmt(ManagementContext mgmt) {
+    	if (ctx!=null) {
+    		throw new IllegalStateException("Must shutdown old management first");
+    	}
+    	ctx = mgmt;
+    }
+    
+    protected ManagementContext newLiveManagementContext() {
+        BrooklynProperties props = BrooklynProperties.Factory.newDefault().addFromMap(ImmutableMap.of("provider", provider));
+        return Entities.newManagementContext(props.asMapWithStringKeys());
+	}
+
+    protected ManagementContext newMockManagementContext() {
+        BrooklynProperties props = BrooklynProperties.Factory.newDefault().addFromMap(ImmutableMap.of("provider", provider));
+        return LocalManagementContextForTests.newInstance(props);
+	}
+
+	/**
      * The location and image id tuplets to test.
      */
     @DataProvider(name = "fromImageId")
@@ -86,8 +116,6 @@ public abstract class AbstractJcloudsLocationTest {
 
     @BeforeMethod(alwaysRun=true)
     public void setUp() {
-        BrooklynProperties props = BrooklynProperties.Factory.newDefault().addFromMap(ImmutableMap.of("provider", provider));
-        ctx = Entities.newManagementContext(props.asMapWithStringKeys());
     }
 
     @AfterMethod(alwaysRun=true)
@@ -106,13 +134,18 @@ public abstract class AbstractJcloudsLocationTest {
         }
         machines.clear();
         
-        if (ctx != null) Entities.destroyAllCatching(ctx);
+        if (ctx != null) {
+        	Entities.destroyAllCatching(ctx);
+        	ctx = null;
+        }
     }
 
     @Test(dataProvider="fromImageId")
     public void testTagMapping(String regionName, String imageId, String imageOwner) {
+    	useMgmt(newMockManagementContext());
+    	
         Map<String, Object> dummy = ImmutableMap.<String, Object>of("identity", "DUMMY", "credential", "DUMMY");
-        loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName), dummy);
+        loc = (JcloudsLocation) mgmt().getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName), dummy);
         ImmutableMap.Builder<String, Object> builder = ImmutableMap.<String, Object>builder().put("imageId", imageId);
         if (imageOwner != null) builder.put("imageOwner", imageOwner);
         Map<String, Object> tagMapping = builder.build();
@@ -124,7 +157,7 @@ public abstract class AbstractJcloudsLocationTest {
 
     @Test(groups = "Live", dataProvider="fromImageId")
     public void testProvisionVmUsingImageId(String regionName, String imageId, String imageOwner) {
-        loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName));
+        loc = (JcloudsLocation) mgmt().getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName));
         SshMachineLocation machine = obtainMachine(MutableMap.of("imageId", imageId, "imageOwner", imageOwner, JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 2));
 
         LOG.info("Provisioned {} vm {}; checking if ssh'able", provider, machine);
@@ -133,7 +166,7 @@ public abstract class AbstractJcloudsLocationTest {
     
     @Test(groups = "Live", dataProvider="fromImageNamePattern")
     public void testProvisionVmUsingImageNamePattern(String regionName, String imageNamePattern, String imageOwner) {
-        loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName));
+        loc = (JcloudsLocation) mgmt().getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName));
         SshMachineLocation machine = obtainMachine(MutableMap.of("imageNameRegex", imageNamePattern, "imageOwner", imageOwner, JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 2));
         
         LOG.info("Provisioned {} vm {}; checking if ssh'able", provider, machine);
@@ -142,7 +175,7 @@ public abstract class AbstractJcloudsLocationTest {
     
     @Test(groups = "Live", dataProvider="fromImageDescriptionPattern")
     public void testProvisionVmUsingImageDescriptionPattern(String regionName, String imageDescriptionPattern, String imageOwner) {
-        loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName));
+        loc = (JcloudsLocation) mgmt().getLocationRegistry().resolve(provider + (regionName == null ? "" : ":" + regionName));
         SshMachineLocation machine = obtainMachine(MutableMap.of("imageDescriptionRegex", imageDescriptionPattern, "imageOwner", imageOwner, JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 2));
         
         LOG.info("Provisioned {} vm {}; checking if ssh'able", provider, machine);
@@ -150,7 +183,7 @@ public abstract class AbstractJcloudsLocationTest {
     }
 
     // Use this utility method to ensure machines are released on tearDown
-    protected SshMachineLocation obtainMachine(Map flags) {
+    protected SshMachineLocation obtainMachine(Map<?,?> flags) {
         try {
             SshMachineLocation result = (SshMachineLocation)loc.obtain(flags);
             machines.add(result);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b7c9d58c/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/RackspaceLocationLiveTest.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/RackspaceLocationLiveTest.java b/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/RackspaceLocationLiveTest.java
index 908c239..4102880 100644
--- a/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/RackspaceLocationLiveTest.java
+++ b/brooklyn-server/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/provider/RackspaceLocationLiveTest.java
@@ -70,7 +70,7 @@ public class RackspaceLocationLiveTest extends AbstractJcloudsLocationTest {
 
     @Test(groups = "Live")
     public void testVmMetadata() {
-        loc = (JcloudsLocation) ctx.getLocationRegistry().resolve(PROVIDER + (REGION_NAME == null ? "" : ":" + REGION_NAME));
+        loc = (JcloudsLocation) mgmt().getLocationRegistry().resolve(PROVIDER + (REGION_NAME == null ? "" : ":" + REGION_NAME));
         SshMachineLocation machine = obtainMachine(MutableMap.of("imageId", IMAGE_ID, "userMetadata", MutableMap.of("mykey", "myval"), JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 2));
 
         LOG.info("Provisioned {} vm {}; checking metadata and if ssh'able", PROVIDER, machine);