You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sj...@apache.org on 2016/04/07 13:14:10 UTC
[4/9] brooklyn-server git commit: Remove jersey compatibility
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceTest.java
deleted file mode 100644
index ada548b..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceTest.java
+++ /dev/null
@@ -1,701 +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.rest.resources;
-
-import static com.google.common.collect.Iterables.find;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeoutException;
-
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-
-import org.apache.brooklyn.api.entity.Application;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.EntityFunctions;
-import org.apache.brooklyn.core.entity.EntityPredicates;
-import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
-import org.apache.brooklyn.core.location.AbstractLocation;
-import org.apache.brooklyn.core.location.LocationConfigKeys;
-import org.apache.brooklyn.core.location.geo.HostGeoInfo;
-import org.apache.brooklyn.core.location.internal.LocationInternal;
-import org.apache.brooklyn.entity.stock.BasicApplication;
-import org.apache.brooklyn.entity.stock.BasicEntity;
-import org.apache.brooklyn.rest.domain.ApiError;
-import org.apache.brooklyn.rest.domain.ApplicationSpec;
-import org.apache.brooklyn.rest.domain.ApplicationSummary;
-import org.apache.brooklyn.rest.domain.CatalogEntitySummary;
-import org.apache.brooklyn.rest.domain.CatalogItemSummary;
-import org.apache.brooklyn.rest.domain.EffectorSummary;
-import org.apache.brooklyn.rest.domain.EntityConfigSummary;
-import org.apache.brooklyn.rest.domain.EntitySpec;
-import org.apache.brooklyn.rest.domain.EntitySummary;
-import org.apache.brooklyn.rest.domain.PolicySummary;
-import org.apache.brooklyn.rest.domain.SensorSummary;
-import org.apache.brooklyn.rest.domain.Status;
-import org.apache.brooklyn.rest.domain.TaskSummary;
-import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest;
-import org.apache.brooklyn.rest.testing.mocks.CapitalizePolicy;
-import org.apache.brooklyn.rest.testing.mocks.NameMatcherGroup;
-import org.apache.brooklyn.rest.testing.mocks.RestMockApp;
-import org.apache.brooklyn.rest.testing.mocks.RestMockAppBuilder;
-import org.apache.brooklyn.rest.testing.mocks.RestMockSimpleEntity;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.collections.CollectionFunctionals;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.http.HttpAsserts;
-import org.apache.brooklyn.util.text.Strings;
-import org.apache.brooklyn.util.time.Duration;
-import org.apache.http.HttpHeaders;
-import org.apache.http.entity.ContentType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Maps;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.GenericType;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
-
-@Test(singleThreaded = true)
-public class ApplicationResourceTest extends BrooklynRestResourceTest {
-
- /*
- * In simpleSpec, not using EverythingGroup because caused problems! The group is a child of the
- * app, and the app is a member of the group. It failed in jenkins with:
- * BasicApplicationImpl{id=GSPjBCe4} GSPjBCe4
- * service.isUp: true
- * service.problems: {service-lifecycle-indicators-from-children-and-members=Required entity not healthy: EverythingGroupImpl{id=KQ4mSEOJ}}
- * service.state: on-fire
- * service.state.expected: running @ 1412003485617 / Mon Sep 29 15:11:25 UTC 2014
- * EverythingGroupImpl{id=KQ4mSEOJ} KQ4mSEOJ
- * service.isUp: true
- * service.problems: {service-lifecycle-indicators-from-children-and-members=Required entities not healthy: BasicApplicationImpl{id=GSPjBCe4}, EverythingGroupImpl{id=KQ4mSEOJ}}
- * service.state: on-fire
- * I'm guessing there's a race: the app was not yet healthy because EverythingGroup hadn't set itself to running;
- * but then the EverythingGroup would never transition to healthy because one of its members was not healthy.
- */
-
- private static final Logger log = LoggerFactory.getLogger(ApplicationResourceTest.class);
-
- private final ApplicationSpec simpleSpec = ApplicationSpec.builder().name("simple-app")
- .entities(ImmutableSet.of(
- new EntitySpec("simple-ent", RestMockSimpleEntity.class.getName()),
- new EntitySpec("simple-group", NameMatcherGroup.class.getName(), ImmutableMap.of("namematchergroup.regex", "simple-ent"))
- ))
- .locations(ImmutableSet.of("localhost"))
- .build();
-
- // Convenience for finding an EntitySummary within a collection, based on its name
- private static Predicate<EntitySummary> withName(final String name) {
- return new Predicate<EntitySummary>() {
- public boolean apply(EntitySummary input) {
- return name.equals(input.getName());
- }
- };
- }
-
- // Convenience for finding a Map within a collection, based on the value of one of its keys
- private static Predicate<? super Map<?,?>> withValueForKey(final Object key, final Object value) {
- return new Predicate<Object>() {
- public boolean apply(Object input) {
- if (!(input instanceof Map)) return false;
- return value.equals(((Map<?, ?>) input).get(key));
- }
- };
- }
-
- @Test
- public void testGetUndefinedApplication() {
- try {
- client().resource("/v1/applications/dummy-not-found").get(ApplicationSummary.class);
- } catch (UniformInterfaceException e) {
- assertEquals(e.getResponse().getStatus(), 404);
- }
- }
-
- private static void assertRegexMatches(String actual, String patternExpected) {
- if (actual==null) Assert.fail("Actual value is null; expected "+patternExpected);
- if (!actual.matches(patternExpected)) {
- Assert.fail("Text '"+actual+"' does not match expected pattern "+patternExpected);
- }
- }
-
- @Test
- public void testDeployApplication() throws Exception {
- ClientResponse response = clientDeploy(simpleSpec);
-
- HttpAsserts.assertHealthyStatusCode(response.getStatus());
- assertEquals(getManagementContext().getApplications().size(), 1);
- assertRegexMatches(response.getLocation().getPath(), "/v1/applications/.*");
- // Object taskO = response.getEntity(Object.class);
- TaskSummary task = response.getEntity(TaskSummary.class);
- log.info("deployed, got " + task);
- assertEquals(task.getEntityId(), getManagementContext().getApplications().iterator().next().getApplicationId());
-
- waitForApplicationToBeRunning(response.getLocation());
- }
-
- @Test(dependsOnMethods = { "testDeleteApplication" })
- // this must happen after we've deleted the main application, as testLocatedLocations assumes a single location
- public void testDeployApplicationImpl() throws Exception {
- ApplicationSpec spec = ApplicationSpec.builder()
- .type(RestMockApp.class.getCanonicalName())
- .name("simple-app-impl")
- .locations(ImmutableSet.of("localhost"))
- .build();
-
- ClientResponse response = clientDeploy(spec);
- assertTrue(response.getStatus() / 100 == 2, "response is " + response);
-
- // Expect app to be running
- URI appUri = response.getLocation();
- waitForApplicationToBeRunning(response.getLocation());
- assertEquals(client().resource(appUri).get(ApplicationSummary.class).getSpec().getName(), "simple-app-impl");
- }
-
- @Test(dependsOnMethods = { "testDeployApplication", "testLocatedLocation" })
- public void testDeployApplicationFromInterface() throws Exception {
- ApplicationSpec spec = ApplicationSpec.builder()
- .type(BasicApplication.class.getCanonicalName())
- .name("simple-app-interface")
- .locations(ImmutableSet.of("localhost"))
- .build();
-
- ClientResponse response = clientDeploy(spec);
- assertTrue(response.getStatus() / 100 == 2, "response is " + response);
-
- // Expect app to be running
- URI appUri = response.getLocation();
- waitForApplicationToBeRunning(response.getLocation());
- assertEquals(client().resource(appUri).get(ApplicationSummary.class).getSpec().getName(), "simple-app-interface");
- }
-
- @Test(dependsOnMethods = { "testDeployApplication", "testLocatedLocation" })
- public void testDeployApplicationFromBuilder() throws Exception {
- ApplicationSpec spec = ApplicationSpec.builder()
- .type(RestMockAppBuilder.class.getCanonicalName())
- .name("simple-app-builder")
- .locations(ImmutableSet.of("localhost"))
- .build();
-
- ClientResponse response = clientDeploy(spec);
- assertTrue(response.getStatus() / 100 == 2, "response is " + response);
-
- // Expect app to be running
- URI appUri = response.getLocation();
- waitForApplicationToBeRunning(response.getLocation(), Duration.TEN_SECONDS);
- assertEquals(client().resource(appUri).get(ApplicationSummary.class).getSpec().getName(), "simple-app-builder");
-
- // Expect app to have the child-entity
- Set<EntitySummary> entities = client().resource(appUri.toString() + "/entities")
- .get(new GenericType<Set<EntitySummary>>() {});
- assertEquals(entities.size(), 1);
- assertEquals(Iterables.getOnlyElement(entities).getName(), "child1");
- assertEquals(Iterables.getOnlyElement(entities).getType(), RestMockSimpleEntity.class.getCanonicalName());
- }
-
- @Test(dependsOnMethods = { "testDeployApplication", "testLocatedLocation" })
- public void testDeployApplicationYaml() throws Exception {
- String yaml = "{ name: simple-app-yaml, location: localhost, services: [ { serviceType: "+BasicApplication.class.getCanonicalName()+" } ] }";
-
- ClientResponse response = client().resource("/v1/applications")
- .entity(yaml, "application/x-yaml")
- .post(ClientResponse.class);
- assertTrue(response.getStatus()/100 == 2, "response is "+response);
-
- // Expect app to be running
- URI appUri = response.getLocation();
- waitForApplicationToBeRunning(response.getLocation());
- assertEquals(client().resource(appUri).get(ApplicationSummary.class).getSpec().getName(), "simple-app-yaml");
- }
-
- @Test
- public void testReferenceCatalogEntity() throws Exception {
- getManagementContext().getCatalog().addItems("{ name: "+BasicEntity.class.getName()+", "
- + "services: [ { type: "+BasicEntity.class.getName()+" } ] }");
-
- String yaml = "{ name: simple-app-yaml, location: localhost, services: [ { type: " + BasicEntity.class.getName() + " } ] }";
-
- ClientResponse response = client().resource("/v1/applications")
- .entity(yaml, "application/x-yaml")
- .post(ClientResponse.class);
- assertTrue(response.getStatus()/100 == 2, "response is "+response);
-
- // Expect app to be running
- URI appUri = response.getLocation();
- waitForApplicationToBeRunning(response.getLocation());
- assertEquals(client().resource(appUri).get(ApplicationSummary.class).getSpec().getName(), "simple-app-yaml");
-
- ClientResponse response2 = client().resource(appUri.getPath())
- .delete(ClientResponse.class);
- assertEquals(response2.getStatus(), Response.Status.ACCEPTED.getStatusCode());
- }
-
- @Test
- public void testDeployWithInvalidEntityType() {
- try {
- clientDeploy(ApplicationSpec.builder()
- .name("invalid-app")
- .entities(ImmutableSet.of(new EntitySpec("invalid-ent", "not.existing.entity")))
- .locations(ImmutableSet.of("localhost"))
- .build());
-
- } catch (UniformInterfaceException e) {
- ApiError error = e.getResponse().getEntity(ApiError.class);
- assertEquals(error.getMessage(), "Undefined type 'not.existing.entity'");
- }
- }
-
- @Test
- public void testDeployWithInvalidLocation() {
- try {
- clientDeploy(ApplicationSpec.builder()
- .name("invalid-app")
- .entities(ImmutableSet.of(new EntitySpec("simple-ent", RestMockSimpleEntity.class.getName())))
- .locations(ImmutableSet.of("3423"))
- .build());
-
- } catch (UniformInterfaceException e) {
- ApiError error = e.getResponse().getEntity(ApiError.class);
- assertEquals(error.getMessage(), "Undefined location '3423'");
- }
- }
-
- @Test(dependsOnMethods = "testDeployApplication")
- public void testListEntities() {
- Set<EntitySummary> entities = client().resource("/v1/applications/simple-app/entities")
- .get(new GenericType<Set<EntitySummary>>() {});
-
- assertEquals(entities.size(), 2);
-
- EntitySummary entity = Iterables.find(entities, withName("simple-ent"), null);
- EntitySummary group = Iterables.find(entities, withName("simple-group"), null);
- Assert.assertNotNull(entity);
- Assert.assertNotNull(group);
-
- client().resource(entity.getLinks().get("self")).get(ClientResponse.class);
-
- Set<EntitySummary> children = client().resource(entity.getLinks().get("children"))
- .get(new GenericType<Set<EntitySummary>>() {});
- assertEquals(children.size(), 0);
- }
-
- @Test(dependsOnMethods = "testDeployApplication")
- public void testListApplications() {
- Set<ApplicationSummary> applications = client().resource("/v1/applications")
- .get(new GenericType<Set<ApplicationSummary>>() { });
- log.info("Applications listed are: " + applications);
- for (ApplicationSummary app : applications) {
- if (simpleSpec.getName().equals(app.getSpec().getName())) return;
- }
- Assert.fail("simple-app not found in list of applications: "+applications);
- }
-
- @Test(dependsOnMethods = "testDeployApplication")
- public void testGetApplicationOnFire() {
- Application app = Iterables.find(manager.getApplications(), EntityPredicates.displayNameEqualTo(simpleSpec.getName()));
- Lifecycle origState = app.getAttribute(Attributes.SERVICE_STATE_ACTUAL);
-
- ApplicationSummary summary = client().resource("/v1/applications/"+app.getId())
- .get(ApplicationSummary.class);
- assertEquals(summary.getStatus(), Status.RUNNING);
-
- app.sensors().set(Attributes.SERVICE_STATE_ACTUAL, Lifecycle.ON_FIRE);
- try {
- ApplicationSummary summary2 = client().resource("/v1/applications/"+app.getId())
- .get(ApplicationSummary.class);
- log.info("Application: " + summary2);
- assertEquals(summary2.getStatus(), Status.ERROR);
-
- } finally {
- app.sensors().set(Attributes.SERVICE_STATE_ACTUAL, origState);
- }
- }
-
- @SuppressWarnings({ "rawtypes", "unchecked" })
- @Test(dependsOnMethods = "testDeployApplication")
- public void testFetchApplicationsAndEntity() {
- Collection apps = client().resource("/v1/applications/fetch").get(Collection.class);
- log.info("Applications fetched are: " + apps);
-
- Map app = null;
- for (Object appI : apps) {
- Object name = ((Map) appI).get("name");
- if ("simple-app".equals(name)) {
- app = (Map) appI;
- }
- if (ImmutableSet.of("simple-ent", "simple-group").contains(name))
- Assert.fail(name + " should not be listed at high level: " + apps);
- }
-
- Assert.assertNotNull(app);
- Assert.assertFalse(Strings.isBlank((String) app.get("applicationId")),
- "expected value for applicationId, was: " + app.get("applicationId"));
- Assert.assertFalse(Strings.isBlank((String) app.get("serviceState")),
- "expected value for serviceState, was: " + app.get("serviceState"));
- Assert.assertNotNull(app.get("serviceUp"), "expected non-null value for serviceUp");
-
- Collection children = (Collection) app.get("children");
- Assert.assertEquals(children.size(), 2);
-
- Map entitySummary = (Map) Iterables.find(children, withValueForKey("name", "simple-ent"), null);
- Map groupSummary = (Map) Iterables.find(children, withValueForKey("name", "simple-group"), null);
- Assert.assertNotNull(entitySummary);
- Assert.assertNotNull(groupSummary);
-
- String itemIds = app.get("id") + "," + entitySummary.get("id") + "," + groupSummary.get("id");
- Collection entities = client().resource("/v1/applications/fetch?items="+itemIds)
- .get(Collection.class);
- log.info("Applications+Entities fetched are: " + entities);
-
- Assert.assertEquals(entities.size(), apps.size() + 2);
- Map entityDetails = (Map) Iterables.find(entities, withValueForKey("name", "simple-ent"), null);
- Map groupDetails = (Map) Iterables.find(entities, withValueForKey("name", "simple-group"), null);
- Assert.assertNotNull(entityDetails);
- Assert.assertNotNull(groupDetails);
-
- Assert.assertEquals(entityDetails.get("parentId"), app.get("id"));
- Assert.assertNull(entityDetails.get("children"));
- Assert.assertEquals(groupDetails.get("parentId"), app.get("id"));
- Assert.assertNull(groupDetails.get("children"));
-
- Collection entityGroupIds = (Collection) entityDetails.get("groupIds");
- Assert.assertNotNull(entityGroupIds);
- Assert.assertEquals(entityGroupIds.size(), 1);
- Assert.assertEquals(entityGroupIds.iterator().next(), groupDetails.get("id"));
-
- Collection groupMembers = (Collection) groupDetails.get("members");
- Assert.assertNotNull(groupMembers);
-
- for (Application appi : getManagementContext().getApplications()) {
- Entities.dumpInfo(appi);
- }
- log.info("MEMBERS: " + groupMembers);
-
- Assert.assertEquals(groupMembers.size(), 1);
- Map entityMemberDetails = (Map) Iterables.find(groupMembers, withValueForKey("name", "simple-ent"), null);
- Assert.assertNotNull(entityMemberDetails);
- Assert.assertEquals(entityMemberDetails.get("id"), entityDetails.get("id"));
- }
-
- @Test(dependsOnMethods = "testDeployApplication")
- public void testListSensors() {
- Set<SensorSummary> sensors = client().resource("/v1/applications/simple-app/entities/simple-ent/sensors")
- .get(new GenericType<Set<SensorSummary>>() { });
- assertTrue(sensors.size() > 0);
- SensorSummary sample = Iterables.find(sensors, new Predicate<SensorSummary>() {
- @Override
- public boolean apply(SensorSummary sensorSummary) {
- return sensorSummary.getName().equals(RestMockSimpleEntity.SAMPLE_SENSOR.getName());
- }
- });
- assertEquals(sample.getType(), "java.lang.String");
- }
-
- @Test(dependsOnMethods = "testDeployApplication")
- public void testListConfig() {
- Set<EntityConfigSummary> config = client().resource("/v1/applications/simple-app/entities/simple-ent/config")
- .get(new GenericType<Set<EntityConfigSummary>>() { });
- assertTrue(config.size() > 0);
- System.out.println(("CONFIG: " + config));
- }
-
- @Test(dependsOnMethods = "testListConfig")
- public void testListConfig2() {
- Set<EntityConfigSummary> config = client().resource("/v1/applications/simple-app/entities/simple-ent/config")
- .get(new GenericType<Set<EntityConfigSummary>>() {});
- assertTrue(config.size() > 0);
- System.out.println(("CONFIG: " + config));
- }
-
- @Test(dependsOnMethods = "testDeployApplication")
- public void testListEffectors() {
- Set<EffectorSummary> effectors = client().resource("/v1/applications/simple-app/entities/simple-ent/effectors")
- .get(new GenericType<Set<EffectorSummary>>() {});
-
- assertTrue(effectors.size() > 0);
-
- EffectorSummary sampleEffector = find(effectors, new Predicate<EffectorSummary>() {
- @Override
- public boolean apply(EffectorSummary input) {
- return input.getName().equals("sampleEffector");
- }
- });
- assertEquals(sampleEffector.getReturnType(), "java.lang.String");
- }
-
- @Test(dependsOnMethods = "testListSensors")
- public void testTriggerSampleEffector() throws InterruptedException, IOException {
- ClientResponse response = client()
- .resource("/v1/applications/simple-app/entities/simple-ent/effectors/"+RestMockSimpleEntity.SAMPLE_EFFECTOR.getName())
- .type(MediaType.APPLICATION_JSON_TYPE)
- .post(ClientResponse.class, ImmutableMap.of("param1", "foo", "param2", 4));
-
- assertEquals(response.getStatus(), Response.Status.ACCEPTED.getStatusCode());
-
- String result = response.getEntity(String.class);
- assertEquals(result, "foo4");
- }
-
- @Test(dependsOnMethods = "testListSensors")
- public void testTriggerSampleEffectorWithFormData() throws InterruptedException, IOException {
- MultivaluedMap<String, String> data = new MultivaluedMapImpl();
- data.add("param1", "foo");
- data.add("param2", "4");
- ClientResponse response = client()
- .resource("/v1/applications/simple-app/entities/simple-ent/effectors/"+RestMockSimpleEntity.SAMPLE_EFFECTOR.getName())
- .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
- .post(ClientResponse.class, data);
-
- assertEquals(response.getStatus(), Response.Status.ACCEPTED.getStatusCode());
-
- String result = response.getEntity(String.class);
- assertEquals(result, "foo4");
- }
-
- @Test(dependsOnMethods = "testTriggerSampleEffector")
- public void testBatchSensorValues() {
- WebResource resource = client().resource("/v1/applications/simple-app/entities/simple-ent/sensors/current-state");
- Map<String, Object> sensors = resource.get(new GenericType<Map<String, Object>>() {});
- assertTrue(sensors.size() > 0);
- assertEquals(sensors.get(RestMockSimpleEntity.SAMPLE_SENSOR.getName()), "foo4");
- }
-
- @Test(dependsOnMethods = "testBatchSensorValues")
- public void testReadEachSensor() {
- Set<SensorSummary> sensors = client().resource("/v1/applications/simple-app/entities/simple-ent/sensors")
- .get(new GenericType<Set<SensorSummary>>() {});
-
- Map<String, String> readings = Maps.newHashMap();
- for (SensorSummary sensor : sensors) {
- try {
- readings.put(sensor.getName(), client().resource(sensor.getLinks().get("self")).accept(MediaType.TEXT_PLAIN).get(String.class));
- } catch (UniformInterfaceException uie) {
- if (uie.getResponse().getStatus() == 204) { // no content
- readings.put(sensor.getName(), null);
- } else {
- Exceptions.propagate(uie);
- }
- }
- }
-
- assertEquals(readings.get(RestMockSimpleEntity.SAMPLE_SENSOR.getName()), "foo4");
- }
-
- @Test(dependsOnMethods = "testTriggerSampleEffector")
- public void testPolicyWhichCapitalizes() {
- String policiesEndpoint = "/v1/applications/simple-app/entities/simple-ent/policies";
- Set<PolicySummary> policies = client().resource(policiesEndpoint).get(new GenericType<Set<PolicySummary>>(){});
- assertEquals(policies.size(), 0);
-
- ClientResponse response = client().resource(policiesEndpoint)
- .queryParam("type", CapitalizePolicy.class.getCanonicalName())
- .type(MediaType.APPLICATION_JSON_TYPE)
- .post(ClientResponse.class, Maps.newHashMap());
- assertEquals(response.getStatus(), 200);
- PolicySummary policy = response.getEntity(PolicySummary.class);
- assertNotNull(policy.getId());
- String newPolicyId = policy.getId();
- log.info("POLICY CREATED: " + newPolicyId);
- policies = client().resource(policiesEndpoint).get(new GenericType<Set<PolicySummary>>() {});
- assertEquals(policies.size(), 1);
-
- Lifecycle status = client().resource(policiesEndpoint + "/" + newPolicyId).get(Lifecycle.class);
- log.info("POLICY STATUS: " + status);
-
- response = client().resource(policiesEndpoint+"/"+newPolicyId+"/start")
- .post(ClientResponse.class);
- assertEquals(response.getStatus(), 204);
- status = client().resource(policiesEndpoint + "/" + newPolicyId).get(Lifecycle.class);
- assertEquals(status, Lifecycle.RUNNING);
-
- response = client().resource(policiesEndpoint+"/"+newPolicyId+"/stop")
- .post(ClientResponse.class);
- assertEquals(response.getStatus(), 204);
- status = client().resource(policiesEndpoint + "/" + newPolicyId).get(Lifecycle.class);
- assertEquals(status, Lifecycle.STOPPED);
-
- response = client().resource(policiesEndpoint+"/"+newPolicyId+"/destroy")
- .post(ClientResponse.class);
- assertEquals(response.getStatus(), 204);
-
- response = client().resource(policiesEndpoint+"/"+newPolicyId).get(ClientResponse.class);
- log.info("POLICY STATUS RESPONSE AFTER DESTROY: " + response.getStatus());
- assertEquals(response.getStatus(), 404);
-
- policies = client().resource(policiesEndpoint).get(new GenericType<Set<PolicySummary>>() {});
- assertEquals(0, policies.size());
- }
-
- @SuppressWarnings({ "rawtypes" })
- @Test(dependsOnMethods = "testDeployApplication")
- public void testLocatedLocation() {
- log.info("starting testLocatedLocations");
- testListApplications();
-
- LocationInternal l = (LocationInternal) getManagementContext().getApplications().iterator().next().getLocations().iterator().next();
- if (l.config().getLocalRaw(LocationConfigKeys.LATITUDE).isAbsent()) {
- log.info("Supplying fake locations for localhost because could not be autodetected");
- ((AbstractLocation) l).setHostGeoInfo(new HostGeoInfo("localhost", "localhost", 50, 0));
- }
- Map result = client().resource("/v1/locations/usage/LocatedLocations")
- .get(Map.class);
- log.info("LOCATIONS: " + result);
- Assert.assertEquals(result.size(), 1);
- Map details = (Map) result.values().iterator().next();
- assertEquals(details.get("leafEntityCount"), 2);
- }
-
- @Test(dependsOnMethods = {"testListEffectors", "testFetchApplicationsAndEntity", "testTriggerSampleEffector", "testListApplications","testReadEachSensor","testPolicyWhichCapitalizes","testLocatedLocation"})
- public void testDeleteApplication() throws TimeoutException, InterruptedException {
- waitForPageFoundResponse("/v1/applications/simple-app", ApplicationSummary.class);
- Collection<Application> apps = getManagementContext().getApplications();
- log.info("Deleting simple-app from " + apps);
- int size = apps.size();
-
- ClientResponse response = client().resource("/v1/applications/simple-app")
- .delete(ClientResponse.class);
-
- assertEquals(response.getStatus(), Response.Status.ACCEPTED.getStatusCode());
- TaskSummary task = response.getEntity(TaskSummary.class);
- assertTrue(task.getDescription().toLowerCase().contains("destroy"), task.getDescription());
- assertTrue(task.getDescription().toLowerCase().contains("simple-app"), task.getDescription());
-
- waitForPageNotFoundResponse("/v1/applications/simple-app", ApplicationSummary.class);
-
- log.info("App appears gone, apps are: " + getManagementContext().getApplications());
- // more logging above, for failure in the check below
-
- Asserts.eventually(
- EntityFunctions.applications(getManagementContext()),
- Predicates.compose(Predicates.equalTo(size-1), CollectionFunctionals.sizeFunction()) );
- }
-
- @Test
- public void testDisabledApplicationCatalog() throws TimeoutException, InterruptedException {
- String itemSymbolicName = "my.catalog.item.id.for.disabling";
- String itemVersion = "1.0";
- String serviceType = "org.apache.brooklyn.entity.stock.BasicApplication";
-
- // Deploy the catalog item
- addTestCatalogItem(itemSymbolicName, "template", itemVersion, serviceType);
- List<CatalogEntitySummary> itemSummaries = client().resource("/v1/catalog/applications")
- .queryParam("fragment", itemSymbolicName).queryParam("allVersions", "true").get(new GenericType<List<CatalogEntitySummary>>() {});
- CatalogItemSummary itemSummary = Iterables.getOnlyElement(itemSummaries);
- String itemVersionedId = String.format("%s:%s", itemSummary.getSymbolicName(), itemSummary.getVersion());
- assertEquals(itemSummary.getId(), itemVersionedId);
-
- try {
- // Create an app before disabling: this should work
- String yaml = "{ name: my-app, location: localhost, services: [ { type: \""+itemVersionedId+"\" } ] }";
- ClientResponse response = client().resource("/v1/applications")
- .entity(yaml, "application/x-yaml")
- .post(ClientResponse.class);
- HttpAsserts.assertHealthyStatusCode(response.getStatus());
- waitForPageFoundResponse("/v1/applications/my-app", ApplicationSummary.class);
-
- // Deprecate
- deprecateCatalogItem(itemSymbolicName, itemVersion, true);
-
- // Create an app when deprecated: this should work
- String yaml2 = "{ name: my-app2, location: localhost, services: [ { type: \""+itemVersionedId+"\" } ] }";
- ClientResponse response2 = client().resource("/v1/applications")
- .entity(yaml2, "application/x-yaml")
- .post(ClientResponse.class);
- HttpAsserts.assertHealthyStatusCode(response2.getStatus());
- waitForPageFoundResponse("/v1/applications/my-app2", ApplicationSummary.class);
-
- // Disable
- disableCatalogItem(itemSymbolicName, itemVersion, true);
-
- // Now try creating an app; this should fail because app is disabled
- String yaml3 = "{ name: my-app3, location: localhost, services: [ { type: \""+itemVersionedId+"\" } ] }";
- ClientResponse response3 = client().resource("/v1/applications")
- .entity(yaml3, "application/x-yaml")
- .post(ClientResponse.class);
- HttpAsserts.assertClientErrorStatusCode(response3.getStatus());
- assertTrue(response3.getEntity(String.class).toLowerCase().contains("unable to match"));
- waitForPageNotFoundResponse("/v1/applications/my-app3", ApplicationSummary.class);
-
- } finally {
- client().resource("/v1/applications/my-app")
- .delete(ClientResponse.class);
-
- client().resource("/v1/applications/my-app2")
- .delete(ClientResponse.class);
-
- client().resource("/v1/applications/my-app3")
- .delete(ClientResponse.class);
-
- client().resource("/v1/catalog/entities/"+itemVersionedId+"/"+itemVersion)
- .delete(ClientResponse.class);
- }
- }
-
- private void deprecateCatalogItem(String symbolicName, String version, boolean deprecated) {
- String id = String.format("%s:%s", symbolicName, version);
- ClientResponse response = client().resource(String.format("/v1/catalog/entities/%s/deprecated", id))
- .header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
- .post(ClientResponse.class, deprecated);
- assertEquals(response.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
- }
-
- private void disableCatalogItem(String symbolicName, String version, boolean disabled) {
- String id = String.format("%s:%s", symbolicName, version);
- ClientResponse response = client().resource(String.format("/v1/catalog/entities/%s/disabled", id))
- .header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
- .post(ClientResponse.class, disabled);
- assertEquals(response.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
- }
-
- private void addTestCatalogItem(String catalogItemId, String itemType, String version, String service) {
- String yaml =
- "brooklyn.catalog:\n"+
- " id: " + catalogItemId + "\n"+
- " name: My Catalog App\n"+
- (itemType!=null ? " item_type: "+itemType+"\n" : "")+
- " description: My description\n"+
- " icon_url: classpath:///redis-logo.png\n"+
- " version: " + version + "\n"+
- "\n"+
- "services:\n"+
- "- type: " + service + "\n";
-
- client().resource("/v1/catalog").post(yaml);
- }
-}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java
deleted file mode 100644
index cadea54..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java
+++ /dev/null
@@ -1,113 +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.rest.resources;
-
-import static org.testng.Assert.assertNotNull;
-
-import javax.ws.rs.core.MediaType;
-
-import org.apache.http.HttpStatus;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.api.catalog.BrooklynCatalog;
-import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry;
-import org.apache.brooklyn.test.http.TestHttpRequestHandler;
-import org.apache.brooklyn.test.http.TestHttpServer;
-import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest;
-import org.apache.brooklyn.util.core.ResourceUtils;
-
-import com.sun.jersey.api.client.UniformInterfaceException;
-
-public class CatalogResetTest extends BrooklynRestResourceTest {
-
- private TestHttpServer server;
- private String serverUrl;
-
- @BeforeClass(alwaysRun=true)
- @Override
- public void setUp() throws Exception {
- useLocalScannedCatalog();
- super.setUp();
- server = new TestHttpServer()
- .handler("/404", new TestHttpRequestHandler().code(HttpStatus.SC_NOT_FOUND).response("Not Found"))
- .handler("/200", new TestHttpRequestHandler().response("OK"))
- .start();
- serverUrl = server.getUrl();
- }
-
- @Override
- protected void addBrooklynResources() {
- addResource(new CatalogResource());
- }
-
- @AfterClass(alwaysRun=true)
- @Override
- public void tearDown() throws Exception {
- super.tearDown();
- server.stop();
- }
-
- @Test(expectedExceptions=UniformInterfaceException.class, expectedExceptionsMessageRegExp="Client response status: 500")
- public void testConnectionError() throws Exception {
- reset("http://0.0.0.0/can-not-connect", false);
- }
-
- @Test
- public void testConnectionErrorIgnore() throws Exception {
- reset("http://0.0.0.0/can-not-connect", true);
- }
-
- @Test(expectedExceptions=UniformInterfaceException.class, expectedExceptionsMessageRegExp="Client response status: 500")
- public void testResourceMissingError() throws Exception {
- reset(serverUrl + "/404", false);
- }
-
- @Test
- public void testResourceMissingIgnore() throws Exception {
- reset(serverUrl + "/404", true);
- }
-
- @Test(expectedExceptions=UniformInterfaceException.class, expectedExceptionsMessageRegExp="Client response status: 500")
- public void testResourceInvalidError() throws Exception {
- reset(serverUrl + "/200", false);
- }
-
- @Test
- public void testResourceInvalidIgnore() throws Exception {
- reset(serverUrl + "/200", true);
- }
-
- private void reset(String bundleLocation, boolean ignoreErrors) throws Exception {
- String xml = ResourceUtils.create(this).getResourceAsString("classpath://reset-catalog.xml");
- client().resource("/v1/catalog/reset")
- .queryParam("ignoreErrors", Boolean.toString(ignoreErrors))
- .header("Content-type", MediaType.APPLICATION_XML)
- .post(xml.replace("${bundle-location}", bundleLocation));
- //if above succeeds assert catalog contents
- assertItems();
- }
-
- private void assertItems() {
- BrooklynTypeRegistry types = getManagementContext().getTypeRegistry();
- assertNotNull(types.get("org.apache.brooklyn.entity.stock.BasicApplication", BrooklynCatalog.DEFAULT_VERSION));
- assertNotNull(types.get("org.apache.brooklyn.test.osgi.entities.SimpleApplication", BrooklynCatalog.DEFAULT_VERSION));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
deleted file mode 100644
index a810e6d..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/CatalogResourceTest.java
+++ /dev/null
@@ -1,515 +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.rest.resources;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import java.awt.*;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URL;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.apache.brooklyn.api.typereg.OsgiBundleWithUrl;
-import org.apache.brooklyn.api.typereg.RegisteredType;
-import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
-import org.apache.brooklyn.core.mgmt.osgi.OsgiStandaloneTest;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.policy.autoscaling.AutoScalerPolicy;
-import org.apache.brooklyn.rest.domain.CatalogEntitySummary;
-import org.apache.brooklyn.rest.domain.CatalogItemSummary;
-import org.apache.brooklyn.rest.domain.CatalogLocationSummary;
-import org.apache.brooklyn.rest.domain.CatalogPolicySummary;
-import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest;
-import org.apache.brooklyn.test.support.TestResourceUnavailableException;
-import org.apache.brooklyn.util.javalang.Reflections;
-import org.apache.http.HttpHeaders;
-import org.apache.http.entity.ContentType;
-import org.eclipse.jetty.http.HttpStatus;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.reporters.Files;
-
-import com.google.common.base.Joiner;
-import com.google.common.collect.Iterables;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.GenericType;
-
-public class CatalogResourceTest extends BrooklynRestResourceTest {
-
- private static final Logger log = LoggerFactory.getLogger(CatalogResourceTest.class);
-
- private static String TEST_VERSION = "0.1.2";
-
- @BeforeClass(alwaysRun=true)
- @Override
- public void setUp() throws Exception {
- useLocalScannedCatalog();
- super.setUp();
- }
-
- @Override
- protected void addBrooklynResources() {
- addResource(new CatalogResource());
- }
-
- @Test
- /** based on CampYamlLiteTest */
- public void testRegisterCustomEntityTopLevelSyntaxWithBundleWhereEntityIsFromCoreAndIconFromBundle() {
- TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH);
-
- String symbolicName = "my.catalog.entity.id";
- String bundleUrl = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL;
- String yaml =
- "brooklyn.catalog:\n"+
- " id: " + symbolicName + "\n"+
- " name: My Catalog App\n"+
- " description: My description\n"+
- " icon_url: classpath:/org/apache/brooklyn/test/osgi/entities/icon.gif\n"+
- " version: " + TEST_VERSION + "\n"+
- " libraries:\n"+
- " - url: " + bundleUrl + "\n"+
- "\n"+
- "services:\n"+
- "- type: org.apache.brooklyn.core.test.entity.TestEntity\n";
-
- ClientResponse response = client().resource("/v1/catalog")
- .post(ClientResponse.class, yaml);
-
- assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
-
- CatalogEntitySummary entityItem = client().resource("/v1/catalog/entities/"+symbolicName + "/" + TEST_VERSION)
- .get(CatalogEntitySummary.class);
-
- Assert.assertNotNull(entityItem.getPlanYaml());
- Assert.assertTrue(entityItem.getPlanYaml().contains("org.apache.brooklyn.core.test.entity.TestEntity"));
-
- assertEquals(entityItem.getId(), ver(symbolicName));
- assertEquals(entityItem.getSymbolicName(), symbolicName);
- assertEquals(entityItem.getVersion(), TEST_VERSION);
-
- // and internally let's check we have libraries
- RegisteredType item = getManagementContext().getTypeRegistry().get(symbolicName, TEST_VERSION);
- Assert.assertNotNull(item);
- Collection<OsgiBundleWithUrl> libs = item.getLibraries();
- assertEquals(libs.size(), 1);
- assertEquals(Iterables.getOnlyElement(libs).getUrl(), bundleUrl);
-
- // now let's check other things on the item
- assertEquals(entityItem.getName(), "My Catalog App");
- assertEquals(entityItem.getDescription(), "My description");
- assertEquals(URI.create(entityItem.getIconUrl()).getPath(), "/v1/catalog/icon/" + symbolicName + "/" + entityItem.getVersion());
- assertEquals(item.getIconUrl(), "classpath:/org/apache/brooklyn/test/osgi/entities/icon.gif");
-
- // an InterfacesTag should be created for every catalog item
- assertEquals(entityItem.getTags().size(), 1);
- Object tag = entityItem.getTags().iterator().next();
- @SuppressWarnings("unchecked")
- List<String> actualInterfaces = ((Map<String, List<String>>) tag).get("traits");
- List<Class<?>> expectedInterfaces = Reflections.getAllInterfaces(TestEntity.class);
- assertEquals(actualInterfaces.size(), expectedInterfaces.size());
- for (Class<?> expectedInterface : expectedInterfaces) {
- assertTrue(actualInterfaces.contains(expectedInterface.getName()));
- }
-
- byte[] iconData = client().resource("/v1/catalog/icon/" + symbolicName + "/" + TEST_VERSION).get(byte[].class);
- assertEquals(iconData.length, 43);
- }
-
- @Test
- // osgi fails in IDE, should work on CLI though
- public void testRegisterOsgiPolicyTopLevelSyntax() {
- TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH);
-
- String symbolicName = "my.catalog.policy.id";
- String policyType = "org.apache.brooklyn.test.osgi.entities.SimplePolicy";
- String bundleUrl = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL;
-
- String yaml =
- "brooklyn.catalog:\n"+
- " id: " + symbolicName + "\n"+
- " name: My Catalog App\n"+
- " description: My description\n"+
- " version: " + TEST_VERSION + "\n" +
- " libraries:\n"+
- " - url: " + bundleUrl + "\n"+
- "\n"+
- "brooklyn.policies:\n"+
- "- type: " + policyType;
-
- CatalogPolicySummary entityItem = Iterables.getOnlyElement( client().resource("/v1/catalog")
- .post(new GenericType<Map<String,CatalogPolicySummary>>() {}, yaml).values() );
-
- Assert.assertNotNull(entityItem.getPlanYaml());
- Assert.assertTrue(entityItem.getPlanYaml().contains(policyType));
- assertEquals(entityItem.getId(), ver(symbolicName));
- assertEquals(entityItem.getSymbolicName(), symbolicName);
- assertEquals(entityItem.getVersion(), TEST_VERSION);
- }
-
- @Test
- public void testListAllEntities() {
- List<CatalogEntitySummary> entities = client().resource("/v1/catalog/entities")
- .get(new GenericType<List<CatalogEntitySummary>>() {});
- assertTrue(entities.size() > 0);
- }
-
- @Test
- public void testListAllEntitiesAsItem() {
- // ensure things are happily downcasted and unknown properties ignored (e.g. sensors, effectors)
- List<CatalogItemSummary> entities = client().resource("/v1/catalog/entities")
- .get(new GenericType<List<CatalogItemSummary>>() {});
- assertTrue(entities.size() > 0);
- }
-
- @Test
- public void testFilterListOfEntitiesByName() {
- List<CatalogEntitySummary> entities = client().resource("/v1/catalog/entities")
- .queryParam("fragment", "brOOkLynENTITYmiRrOr").get(new GenericType<List<CatalogEntitySummary>>() {});
- assertEquals(entities.size(), 1);
-
- log.info("BrooklynEntityMirror-like entities are: " + entities);
-
- List<CatalogEntitySummary> entities2 = client().resource("/v1/catalog/entities")
- .queryParam("regex", "[Bb]ro+klynEntityMi[ro]+").get(new GenericType<List<CatalogEntitySummary>>() {});
- assertEquals(entities2.size(), 1);
-
- assertEquals(entities, entities2);
-
- List<CatalogEntitySummary> entities3 = client().resource("/v1/catalog/entities")
- .queryParam("fragment", "bweqQzZ").get(new GenericType<List<CatalogEntitySummary>>() {});
- assertEquals(entities3.size(), 0);
-
- List<CatalogEntitySummary> entities4 = client().resource("/v1/catalog/entities")
- .queryParam("regex", "bweq+z+").get(new GenericType<List<CatalogEntitySummary>>() {});
- assertEquals(entities4.size(), 0);
- }
-
- @Test
- @Deprecated
- // If we move to using a yaml catalog item, the details will be of the wrapping app,
- // not of the entity itself, so the test won't make sense any more.
- public void testGetCatalogEntityDetails() {
- CatalogEntitySummary details = client()
- .resource(URI.create("/v1/catalog/entities/org.apache.brooklyn.entity.brooklynnode.BrooklynNode"))
- .get(CatalogEntitySummary.class);
- assertTrue(details.toString().contains("download.url"), "expected more config, only got: "+details);
- }
-
- @Test
- @Deprecated
- // If we move to using a yaml catalog item, the details will be of the wrapping app,
- // not of the entity itself, so the test won't make sense any more.
- public void testGetCatalogEntityPlusVersionDetails() {
- CatalogEntitySummary details = client()
- .resource(URI.create("/v1/catalog/entities/org.apache.brooklyn.entity.brooklynnode.BrooklynNode:0.0.0.SNAPSHOT"))
- .get(CatalogEntitySummary.class);
- assertTrue(details.toString().contains("download.url"), "expected more config, only got: "+details);
- }
-
- @Test
- public void testGetCatalogEntityIconDetails() throws IOException {
- String catalogItemId = "testGetCatalogEntityIconDetails";
- addTestCatalogItemBrooklynNodeAsEntity(catalogItemId);
- ClientResponse response = client().resource(URI.create("/v1/catalog/icon/" + catalogItemId + "/" + TEST_VERSION))
- .get(ClientResponse.class);
- response.bufferEntity();
- Assert.assertEquals(response.getStatus(), 200);
- Assert.assertEquals(response.getType(), MediaType.valueOf("image/jpeg"));
- Image image = Toolkit.getDefaultToolkit().createImage(Files.readFile(response.getEntityInputStream()));
- Assert.assertNotNull(image);
- }
-
- private void addTestCatalogItemBrooklynNodeAsEntity(String catalogItemId) {
- addTestCatalogItem(catalogItemId, null, TEST_VERSION, "org.apache.brooklyn.entity.brooklynnode.BrooklynNode");
- }
-
- private void addTestCatalogItem(String catalogItemId, String itemType, String version, String service) {
- String yaml =
- "brooklyn.catalog:\n"+
- " id: " + catalogItemId + "\n"+
- " name: My Catalog App\n"+
- (itemType!=null ? " item_type: "+itemType+"\n" : "")+
- " description: My description\n"+
- " icon_url: classpath:///brooklyn-test-logo.jpg\n"+
- " version: " + version + "\n"+
- "\n"+
- "services:\n"+
- "- type: " + service + "\n";
-
- client().resource("/v1/catalog").post(yaml);
- }
-
- private enum DeprecateStyle {
- NEW_STYLE,
- LEGACY_STYLE
- }
- private void deprecateCatalogItem(DeprecateStyle style, String symbolicName, String version, boolean deprecated) {
- String id = String.format("%s:%s", symbolicName, version);
- ClientResponse response;
- if (style == DeprecateStyle.NEW_STYLE) {
- response = client().resource(String.format("/v1/catalog/entities/%s/deprecated", id))
- .header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
- .post(ClientResponse.class, deprecated);
- } else {
- response = client().resource(String.format("/v1/catalog/entities/%s/deprecated/%s", id, deprecated))
- .post(ClientResponse.class);
- }
- assertEquals(response.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
- }
-
- private void disableCatalogItem(String symbolicName, String version, boolean disabled) {
- String id = String.format("%s:%s", symbolicName, version);
- ClientResponse getDisableResponse = client().resource(String.format("/v1/catalog/entities/%s/disabled", id))
- .header(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
- .post(ClientResponse.class, disabled);
- assertEquals(getDisableResponse.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
- }
-
- @Test
- public void testListPolicies() {
- Set<CatalogPolicySummary> policies = client().resource("/v1/catalog/policies")
- .get(new GenericType<Set<CatalogPolicySummary>>() {});
-
- assertTrue(policies.size() > 0);
- CatalogItemSummary asp = null;
- for (CatalogItemSummary p : policies) {
- if (AutoScalerPolicy.class.getName().equals(p.getType()))
- asp = p;
- }
- Assert.assertNotNull(asp, "didn't find AutoScalerPolicy");
- }
-
- @Test
- public void testLocationAddGetAndRemove() {
- String symbolicName = "my.catalog.location.id";
- String locationType = "localhost";
- String yaml = Joiner.on("\n").join(
- "brooklyn.catalog:",
- " id: " + symbolicName,
- " name: My Catalog Location",
- " description: My description",
- " version: " + TEST_VERSION,
- "",
- "brooklyn.locations:",
- "- type: " + locationType);
-
- // Create location item
- Map<String, CatalogLocationSummary> items = client().resource("/v1/catalog")
- .post(new GenericType<Map<String,CatalogLocationSummary>>() {}, yaml);
- CatalogLocationSummary locationItem = Iterables.getOnlyElement(items.values());
-
- Assert.assertNotNull(locationItem.getPlanYaml());
- Assert.assertTrue(locationItem.getPlanYaml().contains(locationType));
- assertEquals(locationItem.getId(), ver(symbolicName));
- assertEquals(locationItem.getSymbolicName(), symbolicName);
- assertEquals(locationItem.getVersion(), TEST_VERSION);
-
- // Retrieve location item
- CatalogLocationSummary location = client().resource("/v1/catalog/locations/"+symbolicName+"/"+TEST_VERSION)
- .get(CatalogLocationSummary.class);
- assertEquals(location.getSymbolicName(), symbolicName);
-
- // Retrieve all locations
- Set<CatalogLocationSummary> locations = client().resource("/v1/catalog/locations")
- .get(new GenericType<Set<CatalogLocationSummary>>() {});
- boolean found = false;
- for (CatalogLocationSummary contender : locations) {
- if (contender.getSymbolicName().equals(symbolicName)) {
- found = true;
- break;
- }
- }
- Assert.assertTrue(found, "contenders="+locations);
-
- // Delete
- ClientResponse deleteResponse = client().resource("/v1/catalog/locations/"+symbolicName+"/"+TEST_VERSION)
- .delete(ClientResponse.class);
- assertEquals(deleteResponse.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
-
- ClientResponse getPostDeleteResponse = client().resource("/v1/catalog/locations/"+symbolicName+"/"+TEST_VERSION)
- .get(ClientResponse.class);
- assertEquals(getPostDeleteResponse.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
- }
-
- @Test
- public void testDeleteCustomEntityFromCatalog() {
- String symbolicName = "my.catalog.app.id.to.subsequently.delete";
- String yaml =
- "name: "+symbolicName+"\n"+
- // FIXME name above should be unnecessary when brooklyn.catalog below is working
- "brooklyn.catalog:\n"+
- " id: " + symbolicName + "\n"+
- " name: My Catalog App To Be Deleted\n"+
- " description: My description\n"+
- " version: " + TEST_VERSION + "\n"+
- "\n"+
- "services:\n"+
- "- type: org.apache.brooklyn.core.test.entity.TestEntity\n";
-
- client().resource("/v1/catalog")
- .post(ClientResponse.class, yaml);
-
- ClientResponse deleteResponse = client().resource("/v1/catalog/entities/"+symbolicName+"/"+TEST_VERSION)
- .delete(ClientResponse.class);
-
- assertEquals(deleteResponse.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
-
- ClientResponse getPostDeleteResponse = client().resource("/v1/catalog/entities/"+symbolicName+"/"+TEST_VERSION)
- .get(ClientResponse.class);
- assertEquals(getPostDeleteResponse.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
- }
-
- @Test
- public void testSetDeprecated() {
- runSetDeprecated(DeprecateStyle.NEW_STYLE);
- }
-
- // Uses old-style "/v1/catalog/{itemId}/deprecated/true", rather than the "true" in the request body.
- @Test
- @Deprecated
- public void testSetDeprecatedLegacy() {
- runSetDeprecated(DeprecateStyle.LEGACY_STYLE);
- }
-
- protected void runSetDeprecated(DeprecateStyle style) {
- String symbolicName = "my.catalog.item.id.for.deprecation";
- String serviceType = "org.apache.brooklyn.entity.stock.BasicApplication";
- addTestCatalogItem(symbolicName, "template", TEST_VERSION, serviceType);
- addTestCatalogItem(symbolicName, "template", "2.0", serviceType);
- try {
- List<CatalogEntitySummary> applications = client().resource("/v1/catalog/applications")
- .queryParam("fragment", symbolicName).queryParam("allVersions", "true").get(new GenericType<List<CatalogEntitySummary>>() {});
- assertEquals(applications.size(), 2);
- CatalogItemSummary summary0 = applications.get(0);
- CatalogItemSummary summary1 = applications.get(1);
-
- // Deprecate: that app should be excluded
- deprecateCatalogItem(style, summary0.getSymbolicName(), summary0.getVersion(), true);
-
- List<CatalogEntitySummary> applicationsAfterDeprecation = client().resource("/v1/catalog/applications")
- .queryParam("fragment", "basicapp").queryParam("allVersions", "true").get(new GenericType<List<CatalogEntitySummary>>() {});
-
- assertEquals(applicationsAfterDeprecation.size(), 1);
- assertTrue(applicationsAfterDeprecation.contains(summary1));
-
- // Un-deprecate: that app should be included again
- deprecateCatalogItem(style, summary0.getSymbolicName(), summary0.getVersion(), false);
-
- List<CatalogEntitySummary> applicationsAfterUnDeprecation = client().resource("/v1/catalog/applications")
- .queryParam("fragment", "basicapp").queryParam("allVersions", "true").get(new GenericType<List<CatalogEntitySummary>>() {});
-
- assertEquals(applications, applicationsAfterUnDeprecation);
- } finally {
- client().resource("/v1/catalog/entities/"+symbolicName+"/"+TEST_VERSION)
- .delete(ClientResponse.class);
- client().resource("/v1/catalog/entities/"+symbolicName+"/"+"2.0")
- .delete(ClientResponse.class);
- }
- }
-
- @Test
- public void testSetDisabled() {
- String symbolicName = "my.catalog.item.id.for.disabling";
- String serviceType = "org.apache.brooklyn.entity.stock.BasicApplication";
- addTestCatalogItem(symbolicName, "template", TEST_VERSION, serviceType);
- addTestCatalogItem(symbolicName, "template", "2.0", serviceType);
- try {
- List<CatalogEntitySummary> applications = client().resource("/v1/catalog/applications")
- .queryParam("fragment", symbolicName).queryParam("allVersions", "true").get(new GenericType<List<CatalogEntitySummary>>() {});
- assertEquals(applications.size(), 2);
- CatalogItemSummary summary0 = applications.get(0);
- CatalogItemSummary summary1 = applications.get(1);
-
- // Disable: that app should be excluded
- disableCatalogItem(summary0.getSymbolicName(), summary0.getVersion(), true);
-
- List<CatalogEntitySummary> applicationsAfterDisabled = client().resource("/v1/catalog/applications")
- .queryParam("fragment", "basicapp").queryParam("allVersions", "true").get(new GenericType<List<CatalogEntitySummary>>() {});
-
- assertEquals(applicationsAfterDisabled.size(), 1);
- assertTrue(applicationsAfterDisabled.contains(summary1));
-
- // Un-disable: that app should be included again
- disableCatalogItem(summary0.getSymbolicName(), summary0.getVersion(), false);
-
- List<CatalogEntitySummary> applicationsAfterUnDisabled = client().resource("/v1/catalog/applications")
- .queryParam("fragment", "basicapp").queryParam("allVersions", "true").get(new GenericType<List<CatalogEntitySummary>>() {});
-
- assertEquals(applications, applicationsAfterUnDisabled);
- } finally {
- client().resource("/v1/catalog/entities/"+symbolicName+"/"+TEST_VERSION)
- .delete(ClientResponse.class);
- client().resource("/v1/catalog/entities/"+symbolicName+"/"+"2.0")
- .delete(ClientResponse.class);
- }
- }
-
- @Test
- public void testAddUnreachableItem() {
- addInvalidCatalogItem("http://0.0.0.0/can-not-connect");
- }
-
- @Test
- public void testAddInvalidItem() {
- //equivalent to HTTP response 200 text/html
- addInvalidCatalogItem("classpath://not-a-jar-file.txt");
- }
-
- @Test
- public void testAddMissingItem() {
- //equivalent to HTTP response 404 text/html
- addInvalidCatalogItem("classpath://missing-jar-file.txt");
- }
-
- private void addInvalidCatalogItem(String bundleUrl) {
- String symbolicName = "my.catalog.entity.id";
- String yaml =
- "brooklyn.catalog:\n"+
- " id: " + symbolicName + "\n"+
- " name: My Catalog App\n"+
- " description: My description\n"+
- " icon_url: classpath:/org/apache/brooklyn/test/osgi/entities/icon.gif\n"+
- " version: " + TEST_VERSION + "\n"+
- " libraries:\n"+
- " - url: " + bundleUrl + "\n"+
- "\n"+
- "services:\n"+
- "- type: org.apache.brooklyn.core.test.entity.TestEntity\n";
-
- ClientResponse response = client().resource("/v1/catalog")
- .post(ClientResponse.class, yaml);
-
- assertEquals(response.getStatus(), HttpStatus.BAD_REQUEST_400);
- }
-
- private static String ver(String id) {
- return CatalogUtils.getVersionedId(id, TEST_VERSION);
- }
-}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/DelegatingPrintStream.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/DelegatingPrintStream.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/DelegatingPrintStream.java
deleted file mode 100644
index 713dccb..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/DelegatingPrintStream.java
+++ /dev/null
@@ -1,183 +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.rest.resources;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.util.Locale;
-
-public abstract class DelegatingPrintStream extends PrintStream {
-
- public DelegatingPrintStream() {
- super(new IllegalOutputStream());
- }
-
- public static class IllegalOutputStream extends OutputStream {
- @Override public void write(int b) {
- throw new IllegalStateException("should not write to this output stream");
- }
- @Override public void write(byte[] b, int off, int len) {
- throw new IllegalStateException("should not write to this output stream");
- }
- }
-
- protected abstract PrintStream getDelegate();
-
- public int hashCode() {
- return getDelegate().hashCode();
- }
-
- public void write(byte[] b) throws IOException {
- getDelegate().write(b);
- }
-
- public boolean equals(Object obj) {
- return getDelegate().equals(obj);
- }
-
- public String toString() {
- return getDelegate().toString();
- }
-
- public void flush() {
- getDelegate().flush();
- }
-
- public void close() {
- getDelegate().close();
- }
-
- public boolean checkError() {
- return getDelegate().checkError();
- }
-
- public void write(int b) {
- getDelegate().write(b);
- }
-
- public void write(byte[] buf, int off, int len) {
- getDelegate().write(buf, off, len);
- }
-
- public void print(boolean b) {
- getDelegate().print(b);
- }
-
- public void print(char c) {
- getDelegate().print(c);
- }
-
- public void print(int i) {
- getDelegate().print(i);
- }
-
- public void print(long l) {
- getDelegate().print(l);
- }
-
- public void print(float f) {
- getDelegate().print(f);
- }
-
- public void print(double d) {
- getDelegate().print(d);
- }
-
- public void print(char[] s) {
- getDelegate().print(s);
- }
-
- public void print(String s) {
- getDelegate().print(s);
- }
-
- public void print(Object obj) {
- getDelegate().print(obj);
- }
-
- public void println() {
- getDelegate().println();
- }
-
- public void println(boolean x) {
- getDelegate().println(x);
- }
-
- public void println(char x) {
- getDelegate().println(x);
- }
-
- public void println(int x) {
- getDelegate().println(x);
- }
-
- public void println(long x) {
- getDelegate().println(x);
- }
-
- public void println(float x) {
- getDelegate().println(x);
- }
-
- public void println(double x) {
- getDelegate().println(x);
- }
-
- public void println(char[] x) {
- getDelegate().println(x);
- }
-
- public void println(String x) {
- getDelegate().println(x);
- }
-
- public void println(Object x) {
- getDelegate().println(x);
- }
-
- public PrintStream printf(String format, Object... args) {
- return getDelegate().printf(format, args);
- }
-
- public PrintStream printf(Locale l, String format, Object... args) {
- return getDelegate().printf(l, format, args);
- }
-
- public PrintStream format(String format, Object... args) {
- return getDelegate().format(format, args);
- }
-
- public PrintStream format(Locale l, String format, Object... args) {
- return getDelegate().format(l, format, args);
- }
-
- public PrintStream append(CharSequence csq) {
- return getDelegate().append(csq);
- }
-
- public PrintStream append(CharSequence csq, int start, int end) {
- return getDelegate().append(csq, start, end);
- }
-
- public PrintStream append(char c) {
- return getDelegate().append(c);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/DescendantsTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/DescendantsTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/DescendantsTest.java
deleted file mode 100644
index 3f42c8d..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/DescendantsTest.java
+++ /dev/null
@@ -1,130 +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.rest.resources;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeoutException;
-
-import org.apache.brooklyn.api.entity.Application;
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.core.sensor.Sensors;
-import org.apache.brooklyn.rest.domain.ApplicationSpec;
-import org.apache.brooklyn.rest.domain.EntitySpec;
-import org.apache.brooklyn.rest.domain.EntitySummary;
-import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest;
-import org.apache.brooklyn.rest.testing.mocks.RestMockSimpleEntity;
-import org.apache.brooklyn.util.collections.MutableList;
-import org.apache.brooklyn.util.text.StringEscapes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.sun.jersey.api.client.ClientHandlerException;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.GenericType;
-import com.sun.jersey.api.client.UniformInterfaceException;
-
-@Test(singleThreaded = true)
-public class DescendantsTest extends BrooklynRestResourceTest {
-
- private static final Logger log = LoggerFactory.getLogger(DescendantsTest.class);
-
- private final ApplicationSpec simpleSpec = ApplicationSpec.builder().name("simple-app").
- entities(ImmutableSet.of(
- new EntitySpec("simple-ent-1", RestMockSimpleEntity.class.getName()),
- new EntitySpec("simple-ent-2", RestMockSimpleEntity.class.getName()))).
- locations(ImmutableSet.of("localhost")).
- build();
-
- @Test
- public void testDescendantsInSimpleDeployedApplication() throws InterruptedException, TimeoutException, UniformInterfaceException, ClientHandlerException, IOException {
- ClientResponse response = clientDeploy(simpleSpec);
- assertTrue(response.getStatus()/100 == 2, "response is "+response);
- Application application = Iterables.getOnlyElement( getManagementContext().getApplications() );
- List<Entity> entities = MutableList.copyOf( application.getChildren() );
- log.debug("Created app "+application+" with children entities "+entities);
- assertEquals(entities.size(), 2);
-
- Set<EntitySummary> descs;
- descs = client().resource("/v1/applications/"+application.getApplicationId()+"/descendants")
- .get(new GenericType<Set<EntitySummary>>() {});
- // includes itself
- assertEquals(descs.size(), 3);
-
- descs = client().resource("/v1/applications/"+application.getApplicationId()+"/descendants"
- + "?typeRegex="+StringEscapes.escapeUrlParam(".*\\.RestMockSimpleEntity"))
- .get(new GenericType<Set<EntitySummary>>() {});
- assertEquals(descs.size(), 2);
-
- descs = client().resource("/v1/applications/"+application.getApplicationId()+"/descendants"
- + "?typeRegex="+StringEscapes.escapeUrlParam(".*\\.BestBockSimpleEntity"))
- .get(new GenericType<Set<EntitySummary>>() {});
- assertEquals(descs.size(), 0);
-
- descs = client().resource("/v1/applications/"+application.getApplicationId()
- + "/entities/"+entities.get(1).getId()
- + "/descendants"
- + "?typeRegex="+StringEscapes.escapeUrlParam(".*\\.RestMockSimpleEntity"))
- .get(new GenericType<Set<EntitySummary>>() {});
- assertEquals(descs.size(), 1);
-
- Map<String,Object> sensors = client().resource("/v1/applications/"+application.getApplicationId()+"/descendants/sensor/foo"
- + "?typeRegex="+StringEscapes.escapeUrlParam(".*\\.RestMockSimpleEntity"))
- .get(new GenericType<Map<String,Object>>() {});
- assertEquals(sensors.size(), 0);
-
- long v = 0;
- application.sensors().set(Sensors.newLongSensor("foo"), v);
- for (Entity e: entities)
- e.sensors().set(Sensors.newLongSensor("foo"), v+=123);
-
- sensors = client().resource("/v1/applications/"+application.getApplicationId()+"/descendants/sensor/foo")
- .get(new GenericType<Map<String,Object>>() {});
- assertEquals(sensors.size(), 3);
- assertEquals(sensors.get(entities.get(1).getId()), 246);
-
- sensors = client().resource("/v1/applications/"+application.getApplicationId()+"/descendants/sensor/foo"
- + "?typeRegex="+StringEscapes.escapeUrlParam(".*\\.RestMockSimpleEntity"))
- .get(new GenericType<Map<String,Object>>() {});
- assertEquals(sensors.size(), 2);
-
- sensors = client().resource("/v1/applications/"+application.getApplicationId()+"/"
- + "entities/"+entities.get(1).getId()+"/"
- + "descendants/sensor/foo"
- + "?typeRegex="+StringEscapes.escapeUrlParam(".*\\.RestMockSimpleEntity"))
- .get(new GenericType<Map<String,Object>>() {});
- assertEquals(sensors.size(), 1);
-
- sensors = client().resource("/v1/applications/"+application.getApplicationId()+"/"
- + "entities/"+entities.get(1).getId()+"/"
- + "descendants/sensor/foo"
- + "?typeRegex="+StringEscapes.escapeUrlParam(".*\\.FestPockSimpleEntity"))
- .get(new GenericType<Map<String,Object>>() {});
- assertEquals(sensors.size(), 0);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3be4fe11/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/EntityConfigResourceTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/EntityConfigResourceTest.java b/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/EntityConfigResourceTest.java
deleted file mode 100644
index 014053f..0000000
--- a/rest/rest-server-jersey/src/test/java/org/apache/brooklyn/rest/resources/EntityConfigResourceTest.java
+++ /dev/null
@@ -1,172 +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.rest.resources;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Nullable;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.core.entity.EntityInternal;
-import org.apache.brooklyn.core.entity.EntityPredicates;
-import org.apache.brooklyn.rest.domain.ApplicationSpec;
-import org.apache.brooklyn.rest.domain.EntityConfigSummary;
-import org.apache.brooklyn.rest.domain.EntitySpec;
-import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest;
-import org.apache.brooklyn.rest.testing.mocks.RestMockSimpleEntity;
-import org.apache.brooklyn.util.collections.MutableMap;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.GenericType;
-
-@Test(singleThreaded = true)
-public class EntityConfigResourceTest extends BrooklynRestResourceTest {
-
- private final static Logger log = LoggerFactory.getLogger(EntityConfigResourceTest.class);
- private URI applicationUri;
- private EntityInternal entity;
-
- @BeforeClass(alwaysRun = true)
- @Override
- public void setUp() throws Exception {
- super.setUp(); // We require that the superclass setup is done first, as we will be calling out to Jersey
-
- // Deploy an application that we'll use to read the configuration of
- final ApplicationSpec simpleSpec = ApplicationSpec.builder().name("simple-app").
- entities(ImmutableSet.of(new EntitySpec("simple-ent", RestMockSimpleEntity.class.getName(), ImmutableMap.of("install.version", "1.0.0")))).
- locations(ImmutableSet.of("localhost")).
- build();
-
- ClientResponse response = clientDeploy(simpleSpec);
- int status = response.getStatus();
- assertTrue(status >= 200 && status <= 299, "expected HTTP Response of 2xx but got " + status);
- applicationUri = response.getLocation();
- log.debug("Built app: application");
- waitForApplicationToBeRunning(applicationUri);
-
- entity = (EntityInternal) Iterables.find(getManagementContext().getEntityManager().getEntities(), EntityPredicates.displayNameEqualTo("simple-ent"));
- }
-
- @Test
- public void testList() throws Exception {
- List<EntityConfigSummary> entityConfigSummaries = client().resource(
- URI.create("/v1/applications/simple-app/entities/simple-ent/config"))
- .get(new GenericType<List<EntityConfigSummary>>() {
- });
-
- // Default entities have over a dozen config entries, but it's unnecessary to test them all; just pick one
- // representative config key
- Optional<EntityConfigSummary> configKeyOptional = Iterables.tryFind(entityConfigSummaries, new Predicate<EntityConfigSummary>() {
- @Override
- public boolean apply(@Nullable EntityConfigSummary input) {
- return input != null && "install.version".equals(input.getName());
- }
- });
- assertTrue(configKeyOptional.isPresent());
-
- assertEquals(configKeyOptional.get().getType(), "java.lang.String");
- assertEquals(configKeyOptional.get().getDescription(), "Suggested version");
- assertFalse(configKeyOptional.get().isReconfigurable());
- assertNull(configKeyOptional.get().getDefaultValue());
- assertNull(configKeyOptional.get().getLabel());
- assertNull(configKeyOptional.get().getPriority());
- }
-
- @Test
- public void testBatchConfigRead() throws Exception {
- Map<String, Object> currentState = client().resource(
- URI.create("/v1/applications/simple-app/entities/simple-ent/config/current-state"))
- .get(new GenericType<Map<String, Object>>() {
- });
- assertTrue(currentState.containsKey("install.version"));
- assertEquals(currentState.get("install.version"), "1.0.0");
- }
-
- @Test
- public void testGetJson() throws Exception {
- String configValue = client().resource(
- URI.create("/v1/applications/simple-app/entities/simple-ent/config/install.version"))
- .accept(MediaType.APPLICATION_JSON_TYPE)
- .get(String.class);
- assertEquals(configValue, "\"1.0.0\"");
- }
-
- @Test
- public void testGetPlain() throws Exception {
- String configValue = client().resource(
- URI.create("/v1/applications/simple-app/entities/simple-ent/config/install.version"))
- .accept(MediaType.TEXT_PLAIN_TYPE)
- .get(String.class);
- assertEquals(configValue, "1.0.0");
- }
-
- @Test
- public void testSet() throws Exception {
- try {
- String uri = "/v1/applications/simple-app/entities/simple-ent/config/"+
- RestMockSimpleEntity.SAMPLE_CONFIG.getName();
- ClientResponse response = client().resource(uri)
- .type(MediaType.APPLICATION_JSON_TYPE)
- .post(ClientResponse.class, "\"hello world\"");
- assertEquals(response.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
-
- assertEquals(entity.getConfig(RestMockSimpleEntity.SAMPLE_CONFIG), "hello world");
-
- String value = client().resource(uri).accept(MediaType.APPLICATION_JSON_TYPE).get(String.class);
- assertEquals(value, "\"hello world\"");
-
- } finally { entity.config().set(RestMockSimpleEntity.SAMPLE_CONFIG, RestMockSimpleEntity.SAMPLE_CONFIG.getDefaultValue()); }
- }
-
- @Test
- public void testSetFromMap() throws Exception {
- try {
- String uri = "/v1/applications/simple-app/entities/simple-ent/config";
- ClientResponse response = client().resource(uri)
- .type(MediaType.APPLICATION_JSON_TYPE)
- .post(ClientResponse.class, MutableMap.of(
- RestMockSimpleEntity.SAMPLE_CONFIG.getName(), "hello world"));
- assertEquals(response.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
-
- assertEquals(entity.getConfig(RestMockSimpleEntity.SAMPLE_CONFIG), "hello world");
-
- String value = client().resource(uri+"/"+RestMockSimpleEntity.SAMPLE_CONFIG.getName()).accept(MediaType.APPLICATION_JSON_TYPE).get(String.class);
- assertEquals(value, "\"hello world\"");
-
- } finally { entity.config().set(RestMockSimpleEntity.SAMPLE_CONFIG, RestMockSimpleEntity.SAMPLE_CONFIG.getDefaultValue()); }
- }
-
-}