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 2017/09/07 15:47:55 UTC

[04/11] brooklyn-server git commit: fix REST tests and code

fix REST tests and code

* containingBundle should be in result json (not related, but thought it was the problem)
* list call includes items twice now
* camp needs to be loaded before any usage of catalog


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

Branch: refs/heads/master
Commit: e387e4237ed998e8194e5abd513427b3aae74609
Parents: e8e39fd
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Aug 17 11:29:09 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Aug 17 11:29:09 2017 +0100

----------------------------------------------------------------------
 .../core/typereg/BasicBrooklynTypeRegistry.java | 18 ++++++++++++++----
 .../rest/domain/CatalogEnricherSummary.java     |  3 ++-
 .../rest/domain/CatalogEntitySummary.java       |  4 +++-
 .../rest/domain/CatalogItemSummary.java         | 11 ++++++++++-
 .../rest/domain/CatalogLocationSummary.java     |  3 ++-
 .../rest/domain/CatalogPolicySummary.java       |  3 ++-
 .../rest/transform/CatalogTransformer.java      | 20 ++++++++++----------
 .../rest/resources/CatalogResourceTest.java     |  5 ++---
 .../rest/testing/BrooklynRestApiTest.java       |  5 +++--
 9 files changed, 48 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
index 60142a7..8c65f99 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
@@ -87,10 +87,20 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
     @SuppressWarnings("deprecation")
     @Override
     public Iterable<RegisteredType> getMatching(Predicate<? super RegisteredType> filter) {
-        return Iterables.filter(Iterables.concat(
-                getAllWithoutCatalog(filter),
-                Iterables.transform(mgmt.getCatalog().getCatalogItems(), RegisteredTypes.CI_TO_RT)), 
-            filter);
+        Map<String,RegisteredType> result = MutableMap.of();
+        for (RegisteredType rt: getAllWithoutCatalog(filter)) {
+            result.put(rt.getId(), rt);
+        }
+        for (RegisteredType rt: Iterables.filter(
+                Iterables.transform(mgmt.getCatalog().getCatalogItems(), RegisteredTypes.CI_TO_RT), 
+                filter)) {
+            if (!result.containsKey(rt.getId())) {
+                // shouldn't be using this now
+                log.warn("Item '"+rt.getId()+"' not in type registry; only found in legacy catalog");
+                result.put(rt.getId(), rt);
+            }
+        }
+        return result.values();
     }
 
     @SuppressWarnings("deprecation")

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java
index b0a0403..2e81ae1 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEnricherSummary.java
@@ -37,6 +37,7 @@ public class CatalogEnricherSummary extends CatalogItemSummary {
     public CatalogEnricherSummary(
             @JsonProperty("symbolicName") String symbolicName,
             @JsonProperty("version") String version,
+            @JsonProperty("containingBundle") String containingBundle,
             @JsonProperty("name") String name,
             @JsonProperty("javaType") String javaType,
             @JsonProperty("itemType") String itemType,
@@ -48,7 +49,7 @@ public class CatalogEnricherSummary extends CatalogItemSummary {
             @JsonProperty("deprecated") boolean deprecated,
             @JsonProperty("links") Map<String, URI> links
         ) {
-        super(symbolicName, version, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
+        super(symbolicName, version, containingBundle, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
         // TODO expose config from enrichers
         this.config = (config == null) ? ImmutableSet.<EnricherConfigSummary>of() : config;
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java
index 6d66401..5947b7f 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogEntitySummary.java
@@ -44,6 +44,7 @@ public class CatalogEntitySummary extends CatalogItemSummary {
     public CatalogEntitySummary(
             @JsonProperty("symbolicName") String symbolicName,
             @JsonProperty("version") String version,
+            @JsonProperty("containingBundle") String containingBundle,
             @JsonProperty("name") String name,
             @JsonProperty("javaType") String javaType,
             @JsonProperty("itemType") String itemType,
@@ -57,7 +58,7 @@ public class CatalogEntitySummary extends CatalogItemSummary {
             @JsonProperty("deprecated") boolean deprecated,
             @JsonProperty("links") Map<String, URI> links
         ) {
-        super(symbolicName, version, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
+        super(symbolicName, version, containingBundle, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
         this.config = config;
         this.sensors = sensors;
         this.effectors = effectors;
@@ -97,6 +98,7 @@ public class CatalogEntitySummary extends CatalogItemSummary {
                 "id='" + getId() + '\'' +
                 ", symbolicName='" + getSymbolicName() + '\'' +
                 ", version='" + getVersion() + '\'' +
+                ", containingBundle='" + getContainingBundle() + '\'' +
                 ", type='" + getType() + '\'' +
                 ", name='" + getName() + '\'' +
                 ", config=" + config +

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java
index 49c838a..cdb86d4 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogItemSummary.java
@@ -43,6 +43,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
     private final String id;
     private final String symbolicName;
     private final String version;
+    private final String containingBundle;
 
     //needed for backwards compatibility only (json serializer works on fields, not getters)
     @Deprecated
@@ -67,6 +68,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
     public CatalogItemSummary(
             @JsonProperty("symbolicName") String symbolicName,
             @JsonProperty("version") String version,
+            @JsonProperty("containingBundle") String containingBundle,
             @JsonProperty("name") String displayName,
             @JsonProperty("javaType") String javaType,
             @JsonProperty("itemType") String itemType,
@@ -81,6 +83,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
         this.symbolicName = symbolicName;
         this.type = symbolicName;
         this.version = version;
+        this.containingBundle = containingBundle;
         this.name = displayName;
         this.javaType = javaType;
         this.itemType = itemType;
@@ -105,6 +108,10 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
         return version;
     }
 
+    public String getContainingBundle() {
+        return containingBundle;
+    }
+    
     public String getJavaType() {
         return javaType;
     }
@@ -155,6 +162,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
                 Objects.equals(id, that.id) &&
                 Objects.equals(symbolicName, that.symbolicName) &&
                 Objects.equals(version, that.version) &&
+                Objects.equals(containingBundle, that.containingBundle) &&
                 Objects.equals(type, that.type) &&
                 Objects.equals(itemType, that.itemType) &&
                 Objects.equals(javaType, that.javaType) &&
@@ -168,7 +176,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
 
     @Override
     public int hashCode() {
-        return Objects.hash(id, symbolicName, version, type, javaType, itemType, name, description, iconUrl, planYaml, tags, deprecated, links);
+        return Objects.hash(id, symbolicName, version, containingBundle, type, javaType, itemType, name, description, iconUrl, planYaml, tags, deprecated, links);
     }
 
     @Override
@@ -177,6 +185,7 @@ public class CatalogItemSummary implements HasId, HasName, Serializable {
                 "id='" + id + '\'' +
                 ", symbolicName='" + symbolicName + '\'' +
                 ", version='" + version + '\'' +
+                ", containingBundle='" + containingBundle + '\'' +
                 ", type='" + type + '\'' +
                 ", javaType='" + javaType + '\'' +
                 ", itemType='" + itemType + '\'' +

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java
index 883232b..0213a0c 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogLocationSummary.java
@@ -35,6 +35,7 @@ public class CatalogLocationSummary extends CatalogItemSummary {
     public CatalogLocationSummary(
             @JsonProperty("symbolicName") String symbolicName,
             @JsonProperty("version") String version,
+            @JsonProperty("containingBundle") String containingBundle,
             @JsonProperty("name") String name,
             @JsonProperty("javaType") String javaType,
             @JsonProperty("itemType") String itemType,
@@ -46,7 +47,7 @@ public class CatalogLocationSummary extends CatalogItemSummary {
             @JsonProperty("deprecated") boolean deprecated,
             @JsonProperty("links") Map<String, URI> links
         ) {
-        super(symbolicName, version, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
+        super(symbolicName, version, containingBundle, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
         // TODO expose config from policies
         this.config = (config == null) ? ImmutableSet.<LocationConfigSummary>of() : config;
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java
index 396c550..37e5786 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/CatalogPolicySummary.java
@@ -37,6 +37,7 @@ public class CatalogPolicySummary extends CatalogItemSummary {
     public CatalogPolicySummary(
             @JsonProperty("symbolicName") String symbolicName,
             @JsonProperty("version") String version,
+            @JsonProperty("containingBundle") String containingBundle,
             @JsonProperty("name") String name,
             @JsonProperty("javaType") String javaType,
             @JsonProperty("itemType") String itemType,
@@ -48,7 +49,7 @@ public class CatalogPolicySummary extends CatalogItemSummary {
             @JsonProperty("deprecated") boolean deprecated,
             @JsonProperty("links") Map<String, URI> links
         ) {
-        super(symbolicName, version, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
+        super(symbolicName, version, containingBundle, name, javaType, itemType, planYaml, description, iconUrl, tags, deprecated, links);
         // TODO expose config from policies
         this.config = (config == null) ? ImmutableSet.<PolicyConfigSummary>of() : config;
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java
index 9fe024a..aa30dd5 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java
@@ -107,7 +107,7 @@ public class CatalogTransformer {
             }
         }
         
-        return new CatalogEntitySummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogEntitySummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
             spec!=null ? spec.getType().getName() : item.getSuperTypes().toString(), 
             spec!=null ? 
                 CatalogItemType.ofTargetClass(spec.getType()).name() : 
@@ -137,7 +137,7 @@ public class CatalogTransformer {
             Exceptions.propagateIfFatal(e);
             log.warn("Invalid item in catalog when converting REST summaries (supplying generic item), at "+item+": "+e, e);
         }
-        return new CatalogItemSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogItemSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
             item.getSuperTypes().toString(), 
             item.getKind()==RegisteredTypeKind.BEAN ? "bean" : "unknown",
             RegisteredTypes.getImplementationDataStringForSpec(item),
@@ -156,7 +156,7 @@ public class CatalogTransformer {
             Exceptions.propagateIfFatal(e);
             log.trace("Unable to create policy spec for "+item+": "+e, e);
         }
-        return new CatalogPolicySummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogPolicySummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
                 spec!=null ? spec.getType().getName() : item.getSuperTypes().toString(), 
                 CatalogItemType.POLICY.toString(),
                 RegisteredTypes.getImplementationDataStringForSpec(item),
@@ -176,7 +176,7 @@ public class CatalogTransformer {
             Exceptions.propagateIfFatal(e);
             log.trace("Unable to create policy spec for "+item+": "+e, e);
         }
-        return new CatalogEnricherSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogEnricherSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
                 spec!=null ? spec.getType().getName() : item.getSuperTypes().toString(), 
                 CatalogItemType.ENRICHER.toString(),
                 RegisteredTypes.getImplementationDataStringForSpec(item),
@@ -186,7 +186,7 @@ public class CatalogTransformer {
 
     public static CatalogLocationSummary catalogLocationSummary(BrooklynRestResourceUtils b, RegisteredType item, UriBuilder ub) {
         Set<LocationConfigSummary> config = ImmutableSet.of();
-        return new CatalogLocationSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogLocationSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
                 item.getSuperTypes().toString(), 
                 CatalogItemType.LOCATION.toString(),
                 RegisteredTypes.getImplementationDataStringForSpec(item),
@@ -277,7 +277,7 @@ public class CatalogTransformer {
             }
         }
         
-        return new CatalogEntitySummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogEntitySummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
             item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
             item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub),
             makeTags(spec, item), config, sensors, effectors,
@@ -305,7 +305,7 @@ public class CatalogTransformer {
             Exceptions.propagateIfFatal(e);
             log.warn("Invalid item in catalog when converting REST summaries (supplying generic item), at "+item+": "+e, e);
         }
-        return new CatalogItemSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogItemSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
             item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
             item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub), item.tags().getTags(), item.isDeprecated(), makeLinks(item, ub));
     }
@@ -322,7 +322,7 @@ public class CatalogTransformer {
             Exceptions.propagateIfFatal(e);
             log.trace("Unable to create policy spec for "+item+": "+e, e);
         }
-        return new CatalogPolicySummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogPolicySummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
                 item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
                 item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub), config,
                 item.tags().getTags(), item.isDeprecated(), makeLinks(item, ub));
@@ -340,7 +340,7 @@ public class CatalogTransformer {
             Exceptions.propagateIfFatal(e);
             log.trace("Unable to create policy spec for "+item+": "+e, e);
         }
-        return new CatalogEnricherSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogEnricherSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
                 item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
                 item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub), config,
                 item.tags().getTags(), item.isDeprecated(), makeLinks(item, ub));
@@ -349,7 +349,7 @@ public class CatalogTransformer {
     /** @deprecated since 0.12.0 use {@link RegisteredType} methods instead */  @Deprecated
     public static CatalogLocationSummary catalogLocationSummary(BrooklynRestResourceUtils b, CatalogItem<? extends Location,LocationSpec<?>> item, UriBuilder ub) {
         Set<LocationConfigSummary> config = ImmutableSet.of();
-        return new CatalogLocationSummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(),
+        return new CatalogLocationSummary(item.getSymbolicName(), item.getVersion(), item.getContainingBundle(), item.getDisplayName(),
                 item.getJavaType(), item.getCatalogItemType().toString(), item.getPlanYaml(),
                 item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub), config,
                 item.tags().getTags(), item.isDeprecated(), makeLinks(item, ub));

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
index abdd1ed..b59d1fd 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
@@ -188,7 +188,6 @@ public class CatalogResourceTest extends BrooklynRestResourceTest {
     }
 
     @Test
-    // osgi may fail in IDE, typically works on mvn CLI though
     public void testRegisterOsgiPolicyTopLevelSyntax() {
         TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH);
 
@@ -222,6 +221,7 @@ public class CatalogResourceTest extends BrooklynRestResourceTest {
     public void testListAllEntities() {
         List<CatalogEntitySummary> entities = client().path("/catalog/entities")
                 .get(new GenericType<List<CatalogEntitySummary>>() {});
+        log.info("Entities: "+entities);
         assertTrue(entities.size() > 0);
     }
 
@@ -237,10 +237,9 @@ public class CatalogResourceTest extends BrooklynRestResourceTest {
     public void testFilterListOfEntitiesByName() {
         List<CatalogEntitySummary> entities = client().path("/catalog/entities")
                 .query("fragment", "vaNIllasOFTWAREpROCESS").get(new GenericType<List<CatalogEntitySummary>>() {});
+        log.info("Matching entities: " + entities);
         assertEquals(entities.size(), 1);
 
-        log.info("MAtching entities are: " + entities);
-
         List<CatalogEntitySummary> entities2 = client().path("/catalog/entities")
                 .query("regex", "[Vv]an.[alS]+oftware\\w+").get(new GenericType<List<CatalogEntitySummary>>() {});
         assertEquals(entities2.size(), 1);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e387e423/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java
index 0d38eaa..b5136e6 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/BrooklynRestApiTest.java
@@ -148,11 +148,12 @@ public abstract class BrooklynRestApiTest {
             manager.getHighAvailabilityManager().disabled();
             ((LocalManagementContext)manager).generateManagementPlaneId();
 
-            BasicLocationRegistry.addNamedLocationLocalhost(manager);
-            
             new BrooklynCampPlatformLauncherNoServer()
                 .useManagementContext(manager)
                 .launch();
+            
+            // must come after CAMP because this triggers a catalog population
+            BasicLocationRegistry.addNamedLocationLocalhost(manager);
         }
         return manager;
     }