You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ha...@apache.org on 2015/08/15 15:33:09 UTC
[07/33] incubator-brooklyn git commit: [BROOKLYN-162] Refactor
package in ./core/management
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6602f694/core/src/test/java/brooklyn/management/ha/WarmStandbyTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/ha/WarmStandbyTest.java b/core/src/test/java/brooklyn/management/ha/WarmStandbyTest.java
deleted file mode 100644
index 54f4b8b..0000000
--- a/core/src/test/java/brooklyn/management/ha/WarmStandbyTest.java
+++ /dev/null
@@ -1,153 +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 brooklyn.management.ha;
-
-import static org.testng.Assert.assertEquals;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.management.ha.HighAvailabilityMode;
-import org.apache.brooklyn.api.management.ha.ManagementNodeState;
-import org.apache.brooklyn.api.management.ha.ManagementPlaneSyncRecordPersister;
-import org.apache.brooklyn.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.test.entity.TestApplication;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.entity.basic.Entities;
-import brooklyn.entity.rebind.PersistenceExceptionHandlerImpl;
-import brooklyn.entity.rebind.persister.BrooklynMementoPersisterToObjectStore;
-import brooklyn.entity.rebind.persister.InMemoryObjectStore;
-import brooklyn.entity.rebind.persister.ListeningObjectStore;
-import brooklyn.entity.rebind.persister.PersistMode;
-import brooklyn.entity.rebind.persister.PersistenceObjectStore;
-import brooklyn.management.internal.ManagementContextInternal;
-import brooklyn.util.collections.MutableList;
-import brooklyn.util.collections.MutableMap;
-import brooklyn.util.time.Duration;
-
-@Test
-public class WarmStandbyTest {
-
- private static final Logger log = LoggerFactory.getLogger(WarmStandbyTest.class);
-
- private List<HaMgmtNode> nodes = new MutableList<WarmStandbyTest.HaMgmtNode>();
- Map<String,String> sharedBackingStore = MutableMap.of();
- Map<String,Date> sharedBackingStoreDates = MutableMap.of();
- private ClassLoader classLoader = getClass().getClassLoader();
-
- public class HaMgmtNode {
- // TODO share with HotStandbyTest and SplitBrainTest and a few others (minor differences but worth it ultimately)
-
- private ManagementContextInternal mgmt;
- private String ownNodeId;
- private String nodeName;
- private ListeningObjectStore objectStore;
- private ManagementPlaneSyncRecordPersister persister;
- private HighAvailabilityManagerImpl ha;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- nodeName = "node "+nodes.size();
- mgmt = newLocalManagementContext();
- ownNodeId = mgmt.getManagementNodeId();
- objectStore = new ListeningObjectStore(newPersistenceObjectStore());
- objectStore.injectManagementContext(mgmt);
- objectStore.prepareForSharedUse(PersistMode.CLEAN, HighAvailabilityMode.DISABLED);
- persister = new ManagementPlaneSyncRecordPersisterToObjectStore(mgmt, objectStore, classLoader);
- ((ManagementPlaneSyncRecordPersisterToObjectStore)persister).preferRemoteTimestampInMemento();
- BrooklynMementoPersisterToObjectStore persisterObj = new BrooklynMementoPersisterToObjectStore(objectStore, mgmt.getBrooklynProperties(), classLoader);
- mgmt.getRebindManager().setPersister(persisterObj, PersistenceExceptionHandlerImpl.builder().build());
- ha = ((HighAvailabilityManagerImpl)mgmt.getHighAvailabilityManager())
- .setPollPeriod(Duration.PRACTICALLY_FOREVER)
- .setHeartbeatTimeout(Duration.THIRTY_SECONDS)
- .setPersister(persister);
- log.info("Created "+nodeName+" "+ownNodeId);
- }
-
- public void tearDown() throws Exception {
- if (ha != null) ha.stop();
- if (mgmt != null) Entities.destroyAll(mgmt);
- if (objectStore != null) objectStore.deleteCompletely();
- }
-
- @Override
- public String toString() {
- return nodeName+" "+ownNodeId;
- }
- }
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- nodes.clear();
- sharedBackingStore.clear();
- }
-
- public HaMgmtNode newNode() throws Exception {
- HaMgmtNode node = new HaMgmtNode();
- node.setUp();
- nodes.add(node);
- return node;
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- for (HaMgmtNode n: nodes)
- n.tearDown();
- }
-
- protected ManagementContextInternal newLocalManagementContext() {
- return new LocalManagementContextForTests();
- }
-
- protected PersistenceObjectStore newPersistenceObjectStore() {
- return new InMemoryObjectStore(sharedBackingStore, sharedBackingStoreDates);
- }
-
- // TODO refactor above -- routines above this line are shared among HotStandbyTest and SplitBrainTest
-
- @Test
- public void testWarmStandby() throws Exception {
- HaMgmtNode n1 = newNode();
- n1.ha.start(HighAvailabilityMode.AUTO);
- assertEquals(n1.ha.getNodeState(), ManagementNodeState.MASTER);
-
- TestApplication app = TestApplication.Factory.newManagedInstanceForTests(n1.mgmt);
- app.start(MutableList.<Location>of());
-
- n1.mgmt.getRebindManager().forcePersistNow(false, null);
-
- HaMgmtNode n2 = newNode();
- n2.ha.start(HighAvailabilityMode.STANDBY);
- assertEquals(n2.ha.getNodeState(), ManagementNodeState.STANDBY);
-
- assertEquals(n2.mgmt.getApplications().size(), 0);
- }
-
- // TODO support forcible demotion, and check that a master forcibly demoted
- // to warm standby clears its apps, policies, and locations
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6602f694/core/src/test/java/brooklyn/management/internal/AccessManagerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/internal/AccessManagerTest.java b/core/src/test/java/brooklyn/management/internal/AccessManagerTest.java
deleted file mode 100644
index 34f733c..0000000
--- a/core/src/test/java/brooklyn/management/internal/AccessManagerTest.java
+++ /dev/null
@@ -1,145 +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 brooklyn.management.internal;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import org.apache.brooklyn.api.entity.proxying.EntitySpec;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.test.entity.TestApplication;
-import org.apache.brooklyn.test.entity.TestEntity;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.entity.basic.ApplicationBuilder;
-import brooklyn.entity.basic.Entities;
-
-import org.apache.brooklyn.location.basic.SimulatedLocation;
-
-import brooklyn.util.exceptions.Exceptions;
-
-import com.google.common.collect.ImmutableSet;
-
-public class AccessManagerTest {
-
- private LocalManagementContext managementContext;
- private TestApplication app;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- managementContext = new LocalManagementContextForTests();
- app = ApplicationBuilder.newManagedApp(TestApplication.class, managementContext);
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (managementContext != null) Entities.destroyAll(managementContext);
- app = null;
- }
-
- @Test
- public void testEntityManagementAllowed() throws Exception {
- // default is allowed
- TestEntity e1 = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- // when forbidden, should give error trying to create+manage new entity
- managementContext.getAccessManager().setEntityManagementAllowed(false);
- try {
- app.createAndManageChild(EntitySpec.create(TestEntity.class));
- fail();
- } catch (Exception e) {
- // expect it to be forbidden
- if (Exceptions.getFirstThrowableOfType(e, IllegalStateException.class) == null) {
- throw e;
- }
- }
-
- // when forbidden, should refuse to create new app
- try {
- ApplicationBuilder.newManagedApp(TestApplication.class, managementContext);
- fail();
- } catch (Exception e) {
- // expect it to be forbidden
- if (Exceptions.getFirstThrowableOfType(e, IllegalStateException.class) == null) {
- throw e;
- }
- }
-
- // but when forbidden, still allowed to create locations
- managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
-
- // when re-enabled, can create entities again
- managementContext.getAccessManager().setEntityManagementAllowed(true);
- TestEntity e3 = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- assertEquals(ImmutableSet.copyOf(managementContext.getEntityManager().getEntities()), ImmutableSet.of(app, e1, e3));
- }
-
- @Test
- public void testLocationManagementAllowed() throws Exception {
- // default is allowed
- Location loc1 = managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
-
- // when forbidden, should give error
- managementContext.getAccessManager().setLocationManagementAllowed(false);
- try {
- managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
- fail();
- } catch (Exception e) {
- // expect it to be forbidden
- if (Exceptions.getFirstThrowableOfType(e, IllegalStateException.class) == null) {
- throw e;
- }
- }
-
- // but when forbidden, still allowed to create entity
- ApplicationBuilder.newManagedApp(TestApplication.class, managementContext);
-
- // when re-enabled, can create entities again
- managementContext.getAccessManager().setLocationManagementAllowed(true);
- Location loc3 = managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
-
- assertEquals(ImmutableSet.copyOf(managementContext.getLocationManager().getLocations()), ImmutableSet.of(loc1, loc3));
- }
-
- @Test
- public void testLocationProvisioningAllowed() throws Exception {
- SimulatedLocation loc = managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
-
- // default is allowed
- assertTrue(managementContext.getAccessController().canProvisionLocation(loc).isAllowed());
-
- // when forbidden, should say so
- managementContext.getAccessManager().setLocationProvisioningAllowed(false);
- assertFalse(managementContext.getAccessController().canProvisionLocation(loc).isAllowed());
-
- // but when forbidden, still allowed to create locations
- managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
-
- // when re-enabled, can create entities again
- managementContext.getAccessManager().setLocationProvisioningAllowed(true);
- assertTrue(managementContext.getAccessController().canProvisionLocation(loc).isAllowed());
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6602f694/core/src/test/java/brooklyn/management/internal/EntityExecutionManagerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/internal/EntityExecutionManagerTest.java b/core/src/test/java/brooklyn/management/internal/EntityExecutionManagerTest.java
deleted file mode 100644
index d8cb07a..0000000
--- a/core/src/test/java/brooklyn/management/internal/EntityExecutionManagerTest.java
+++ /dev/null
@@ -1,479 +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 brooklyn.management.internal;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.Semaphore;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.entity.proxying.EntitySpec;
-import org.apache.brooklyn.api.management.ExecutionManager;
-import org.apache.brooklyn.api.management.Task;
-import org.apache.brooklyn.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.test.entity.TestApplication;
-import org.apache.brooklyn.test.entity.TestEntity;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.config.BrooklynProperties;
-import brooklyn.entity.basic.ApplicationBuilder;
-import brooklyn.entity.basic.BrooklynTaskTags;
-import brooklyn.entity.basic.BrooklynTaskTags.WrappedEntity;
-import brooklyn.entity.basic.Entities;
-import brooklyn.entity.basic.EntityInternal;
-import brooklyn.event.basic.BasicAttributeSensor;
-import brooklyn.test.Asserts;
-import brooklyn.util.collections.MutableMap;
-import brooklyn.util.javalang.JavaClassNames;
-import brooklyn.util.repeat.Repeater;
-import brooklyn.util.task.BasicExecutionManager;
-import brooklyn.util.task.ExecutionListener;
-import brooklyn.util.task.TaskBuilder;
-import brooklyn.util.task.Tasks;
-import brooklyn.util.time.Duration;
-import brooklyn.util.time.Time;
-
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.base.Stopwatch;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.Callables;
-
-/** Includes many tests for {@link BrooklynGarbageCollector} */
-public class EntityExecutionManagerTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(EntityExecutionManagerTest.class);
-
- private static final Duration TIMEOUT_MS = Duration.TEN_SECONDS;
-
- private ManagementContextInternal mgmt;
- private TestApplication app;
- private TestEntity e;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (app != null) Entities.destroyAll(app.getManagementContext());
- app = null;
- if (mgmt != null) Entities.destroyAll(mgmt);
- }
-
- @Test
- public void testOnDoneCallback() throws InterruptedException {
- mgmt = LocalManagementContextForTests.newInstance();
- ExecutionManager em = mgmt.getExecutionManager();
- BasicExecutionManager bem = (BasicExecutionManager)em;
- final Map<Task<?>,Duration> completedTasks = MutableMap.of();
- final Semaphore sema4 = new Semaphore(-1);
- bem.addListener(new ExecutionListener() {
- @Override
- public void onTaskDone(Task<?> task) {
- Assert.assertTrue(task.isDone());
- Assert.assertEquals(task.getUnchecked(), "foo");
- completedTasks.put(task, Duration.sinceUtc(task.getEndTimeUtc()));
- sema4.release();
- }
- });
- Task<String> t1 = em.submit( Tasks.<String>builder().name("t1").dynamic(false).body(Callables.returning("foo")).build() );
- t1.getUnchecked();
- Task<String> t2 = em.submit( Tasks.<String>builder().name("t2").dynamic(false).body(Callables.returning("foo")).build() );
- sema4.acquire();
- Assert.assertEquals(completedTasks.size(), 2, "completed tasks are: "+completedTasks);
- completedTasks.get(t1).isShorterThan(Duration.TEN_SECONDS);
- completedTasks.get(t2).isShorterThan(Duration.TEN_SECONDS);
- }
-
- protected void forceGc() {
- ((LocalManagementContext)app.getManagementContext()).getGarbageCollector().gcIteration();
- }
-
- protected static Task<?> runEmptyTaskWithNameAndTags(Entity target, String name, Object ...tags) {
- TaskBuilder<Object> tb = newEmptyTask(name);
- for (Object tag: tags) tb.tag(tag);
- Task<?> task = ((EntityInternal)target).getExecutionContext().submit(tb.build());
- task.getUnchecked();
- return task;
- }
-
- protected static TaskBuilder<Object> newEmptyTask(String name) {
- return Tasks.builder().name(name).dynamic(false).body(Callables.returning(null));
- }
-
- protected void assertTaskCountForEntitySoon(final Entity entity, final int expectedCount) {
- // Dead task (and initialization task) should have been GC'd on completion.
- // However, the GC'ing happens in a listener, executed in a different thread - the task.get()
- // doesn't block for it. Therefore can't always guarantee it will be GC'ed by now.
- Repeater.create().backoff(Duration.millis(10), 2, Duration.millis(500)).limitTimeTo(Duration.TEN_SECONDS).until(new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- forceGc();
- Collection<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(((EntityInternal)entity).getManagementContext().getExecutionManager(), entity);
- Assert.assertEquals(tasks.size(), expectedCount, "Tasks were "+tasks);
- return true;
- }
- }).runRequiringTrue();
- }
-
- @Test
- public void testGetTasksAndGcBoringTags() throws Exception {
- app = TestApplication.Factory.newManagedInstanceForTests();
- e = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- final Task<?> task = runEmptyTaskWithNameAndTags(e, "should-be-kept", ManagementContextInternal.NON_TRANSIENT_TASK_TAG);
- runEmptyTaskWithNameAndTags(e, "should-be-gcd", ManagementContextInternal.TRANSIENT_TASK_TAG);
-
- assertTaskCountForEntitySoon(e, 1);
- Collection<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(app.getManagementContext().getExecutionManager(), e);
- assertEquals(tasks, ImmutableList.of(task), "Mismatched tasks, got: "+tasks);
- }
-
- @Test
- public void testGcTaskAtNormalTagLimit() throws Exception {
- app = TestApplication.Factory.newManagedInstanceForTests();
- e = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- ((BrooklynProperties)app.getManagementContext().getConfig()).put(
- BrooklynGarbageCollector.MAX_TASKS_PER_TAG, 2);
-
- for (int count=0; count<5; count++)
- runEmptyTaskWithNameAndTags(e, "task"+count, ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "boring-tag");
-
- assertTaskCountForEntitySoon(e, 2);
- }
-
- @Test
- public void testGcTaskAtEntityLimit() throws Exception {
- app = TestApplication.Factory.newManagedInstanceForTests();
- e = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- ((BrooklynProperties)app.getManagementContext().getConfig()).put(
- BrooklynGarbageCollector.MAX_TASKS_PER_ENTITY, 2);
-
- for (int count=0; count<5; count++)
- runEmptyTaskWithNameAndTags(e, "task-e-"+count, ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "boring-tag");
- for (int count=0; count<5; count++)
- runEmptyTaskWithNameAndTags(app, "task-app-"+count, ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "boring-tag");
-
- assertTaskCountForEntitySoon(app, 2);
- assertTaskCountForEntitySoon(e, 2);
- }
-
- @Test
- public void testGcTaskWithTagAndEntityLimit() throws Exception {
- app = TestApplication.Factory.newManagedInstanceForTests();
- e = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- ((BrooklynProperties)app.getManagementContext().getConfig()).put(
- BrooklynGarbageCollector.MAX_TASKS_PER_ENTITY, 6);
- ((BrooklynProperties)app.getManagementContext().getConfig()).put(
- BrooklynGarbageCollector.MAX_TASKS_PER_TAG, 2);
-
- int count=0;
-
- runEmptyTaskWithNameAndTags(app, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "boring-tag");
- runEmptyTaskWithNameAndTags(e, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "boring-tag");
- Time.sleep(Duration.ONE_MILLISECOND);
- // should keep the 2 below, because all the other borings get grace, but delete the ones above
- runEmptyTaskWithNameAndTags(e, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "boring-tag");
- runEmptyTaskWithNameAndTags(e, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "boring-tag");
-
- runEmptyTaskWithNameAndTags(e, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "boring-tag", "another-tag-e");
- runEmptyTaskWithNameAndTags(e, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "boring-tag", "another-tag-e");
- // should keep both the above
-
- runEmptyTaskWithNameAndTags(e, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "another-tag");
- runEmptyTaskWithNameAndTags(e, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "another-tag");
- Time.sleep(Duration.ONE_MILLISECOND);
- runEmptyTaskWithNameAndTags(app, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "another-tag");
- // should keep the below since they have unique tags, but remove one of the e tasks above
- runEmptyTaskWithNameAndTags(e, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "another-tag", "and-another-tag");
- runEmptyTaskWithNameAndTags(app, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "another-tag-app", "another-tag");
- runEmptyTaskWithNameAndTags(app, "task-"+(count++), ManagementContextInternal.NON_TRANSIENT_TASK_TAG, "another-tag-app", "another-tag");
-
- assertTaskCountForEntitySoon(e, 6);
- assertTaskCountForEntitySoon(app, 3);
-
- // now with a lowered limit, we should remove one more e
- ((BrooklynProperties)app.getManagementContext().getConfig()).put(
- BrooklynGarbageCollector.MAX_TASKS_PER_ENTITY, 5);
- assertTaskCountForEntitySoon(e, 5);
- }
-
- @Test
- public void testGcDynamicTaskAtNormalTagLimit() throws Exception {
- app = TestApplication.Factory.newManagedInstanceForTests();
- e = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- ((BrooklynProperties)app.getManagementContext().getConfig()).put(
- BrooklynGarbageCollector.MAX_TASKS_PER_TAG, 2);
-
- for (int count=0; count<5; count++) {
- TaskBuilder<Object> tb = Tasks.builder().name("task-"+count).dynamic(true).body(new Runnable() { @Override public void run() {}})
- .tag(ManagementContextInternal.NON_TRANSIENT_TASK_TAG).tag("foo");
- ((EntityInternal)e).getExecutionContext().submit(tb.build()).getUnchecked();
- }
-
- // might need an eventually here, if the internal job completion and GC is done in the background
- // (if there are no test failures for a few months, since Sept 2014, then we can remove this comment)
- assertTaskCountForEntitySoon(e, 2);
- }
-
- @Test
- public void testUnmanagedEntityCanBeGcedEvenIfPreviouslyTagged() throws Exception {
- app = TestApplication.Factory.newManagedInstanceForTests();
- e = app.createAndManageChild(EntitySpec.create(TestEntity.class));
- String eId = e.getId();
-
- e.invoke(TestEntity.MY_EFFECTOR, ImmutableMap.<String,Object>of()).get();
- Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(app.getManagementContext().getExecutionManager(), e);
- Task<?> task = Iterables.get(tasks, 0);
- assertTrue(task.getTags().contains(BrooklynTaskTags.tagForContextEntity(e)));
-
- Set<Object> tags = app.getManagementContext().getExecutionManager().getTaskTags();
- assertTrue(tags.contains(BrooklynTaskTags.tagForContextEntity(e)), "tags="+tags);
-
- Entities.destroy(e);
- forceGc();
-
- Set<Object> tags2 = app.getManagementContext().getExecutionManager().getTaskTags();
- for (Object tag : tags2) {
- if (tag instanceof Entity && ((Entity)tag).getId().equals(eId)) {
- fail("tags contains unmanaged entity "+tag);
- }
- if ((tag instanceof WrappedEntity) && ((WrappedEntity)tag).entity.getId().equals(eId)
- && ((WrappedEntity)tag).wrappingType.equals(BrooklynTaskTags.CONTEXT_ENTITY)) {
- fail("tags contains unmanaged entity (wrapped) "+tag);
- }
- }
- return;
- }
-
- @Test(groups="Integration")
- public void testSubscriptionAndEffectorTasksGced() throws Exception {
- app = TestApplication.Factory.newManagedInstanceForTests();
- BasicExecutionManager em = (BasicExecutionManager) app.getManagementContext().getExecutionManager();
- // allow background enrichers to complete
- Time.sleep(Duration.ONE_SECOND);
- forceGc();
- List<Task<?>> t1 = em.getAllTasks();
-
- TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
- entity.setAttribute(TestEntity.NAME, "bob");
- entity.invoke(TestEntity.MY_EFFECTOR, ImmutableMap.<String,Object>of()).get();
- Entities.destroy(entity);
- Time.sleep(Duration.ONE_SECOND);
- forceGc();
- List<Task<?>> t2 = em.getAllTasks();
-
- Assert.assertEquals(t1.size(), t2.size(), "lists are different:\n"+t1+"\n"+t2+"\n");
- }
-
- /**
- * Invoke effector many times, where each would claim 10MB because it stores the return value.
- * If it didn't gc the tasks promptly, it would consume 10GB ram (so would OOME before that).
- */
- @Test(groups="Integration")
- public void testEffectorTasksGcedSoNoOome() throws Exception {
-
- BrooklynProperties brooklynProperties = BrooklynProperties.Factory.newEmpty();
- brooklynProperties.put(BrooklynGarbageCollector.GC_PERIOD, Duration.ONE_MILLISECOND);
- brooklynProperties.put(BrooklynGarbageCollector.MAX_TASKS_PER_TAG, 2);
-
- app = ApplicationBuilder.newManagedApp(TestApplication.class, LocalManagementContextForTests.newInstance(brooklynProperties));
- TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- for (int i = 0; i < 1000; i++) {
- if (i%100==0) LOG.info(JavaClassNames.niceClassAndMethod()+": iteration "+i);
- try {
- LOG.debug("testEffectorTasksGced: iteration="+i);
- entity.invoke(TestEntity.IDENTITY_EFFECTOR, ImmutableMap.of("arg", new BigObject(10*1000*1000))).get();
-
- Time.sleep(Duration.ONE_MILLISECOND); // Give GC thread a chance to run
- forceGc();
- } catch (OutOfMemoryError e) {
- LOG.warn(JavaClassNames.niceClassAndMethod()+": OOME at iteration="+i);
- throw e;
- }
- }
- }
-
- @Test(groups="Integration")
- public void testUnmanagedEntityGcedOnUnmanageEvenIfEffectorInvoked() throws Exception {
- app = TestApplication.Factory.newManagedInstanceForTests();
-
- BasicAttributeSensor<Object> byteArrayAttrib = new BasicAttributeSensor<Object>(Object.class, "test.byteArray", "");
-
- for (int i = 0; i < 1000; i++) {
- if (i<100 && i%10==0 || i%100==0) LOG.info(JavaClassNames.niceClassAndMethod()+": iteration "+i);
- try {
- LOG.debug(JavaClassNames.niceClassAndMethod()+": iteration="+i);
- TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
- entity.setAttribute(byteArrayAttrib, new BigObject(10*1000*1000));
- entity.invoke(TestEntity.MY_EFFECTOR, ImmutableMap.<String,Object>of()).get();
-
- // we get exceptions because tasks are still trying to publish after deployment;
- // this should prevent them
-// ((LocalEntityManager)app.getManagementContext().getEntityManager()).stopTasks(entity, Duration.ONE_SECOND);
-// Entities.destroy(entity);
-
- // alternatively if we 'unmanage' instead of destroy, there are usually not errors
- // (the errors come from the node transitioning to a 'stopping' state on destroy,
- // and publishing lots of info then)
- Entities.unmanage(entity);
-
- forceGc();
- // previously we did an extra GC but it was crazy slow, shouldn't be needed
-// System.gc(); System.gc();
- } catch (OutOfMemoryError e) {
- LOG.warn(JavaClassNames.niceClassAndMethod()+": OOME at iteration="+i);
- ExecutionManager em = app.getManagementContext().getExecutionManager();
- Collection<Task<?>> tasks = ((BasicExecutionManager)em).getAllTasks();
- LOG.info("TASKS count "+tasks.size()+": "+tasks);
- throw e;
- }
- }
- }
-
- @Test(groups={"Integration"})
- public void testEffectorTasksGcedForMaxPerTag() throws Exception {
- int maxNumTasks = 2;
- BrooklynProperties brooklynProperties = BrooklynProperties.Factory.newEmpty();
- brooklynProperties.put(BrooklynGarbageCollector.GC_PERIOD, Duration.ONE_SECOND);
- brooklynProperties.put(BrooklynGarbageCollector.MAX_TASKS_PER_TAG, 2);
-
- app = ApplicationBuilder.newManagedApp(TestApplication.class, LocalManagementContextForTests.newInstance(brooklynProperties));
- final TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- List<Task<?>> tasks = Lists.newArrayList();
-
- for (int i = 0; i < (maxNumTasks+1); i++) {
- Task<?> task = entity.invoke(TestEntity.MY_EFFECTOR, ImmutableMap.<String,Object>of());
- task.get();
- tasks.add(task);
-
- // TASKS_OLDEST_FIRST_COMPARATOR is based on comparing EndTimeUtc; but two tasks executed in
- // rapid succession could finish in same millisecond
- // (especially when using System.currentTimeMillis, which can return the same time for several millisconds).
- Thread.sleep(10);
- }
-
- // Should initially have all tasks
- Set<Task<?>> storedTasks = app.getManagementContext().getExecutionManager().getTasksWithAllTags(
- ImmutableList.of(BrooklynTaskTags.tagForContextEntity(entity), ManagementContextInternal.EFFECTOR_TAG));
- assertEquals(storedTasks, ImmutableSet.copyOf(tasks), "storedTasks="+storedTasks+"; expected="+tasks);
-
- // Then oldest should be GC'ed to leave only maxNumTasks
- final List<Task<?>> recentTasks = tasks.subList(tasks.size()-maxNumTasks, tasks.size());
- Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), new Runnable() {
- @Override public void run() {
- Set<Task<?>> storedTasks2 = app.getManagementContext().getExecutionManager().getTasksWithAllTags(
- ImmutableList.of(BrooklynTaskTags.tagForContextEntity(entity), ManagementContextInternal.EFFECTOR_TAG));
- List<String> storedTasks2Str = FluentIterable
- .from(storedTasks2)
- .transform(new Function<Task<?>, String>() {
- @Override public String apply(Task<?> input) {
- return taskToVerboseString(input);
- }})
- .toList();
- assertEquals(storedTasks2, ImmutableSet.copyOf(recentTasks), "storedTasks="+storedTasks2Str+"; expected="+recentTasks);
- }});
- }
-
- private String taskToVerboseString(Task t) {
- return Objects.toStringHelper(t)
- .add("id", t.getId())
- .add("displayName", t.getDisplayName())
- .add("submitTime", t.getSubmitTimeUtc())
- .add("startTime", t.getStartTimeUtc())
- .add("endTime", t.getEndTimeUtc())
- .add("status", t.getStatusSummary())
- .add("tags", t.getTags())
- .toString();
- }
- //2014-10-22 17:48:32,359 INFO TESTNG FAILED: "Surefire test" - brooklyn.management.internal.EntityExecutionManagerTest.testEffectorTasksGcedForMaxPerTag() finished in 10020 ms
- //java.lang.AssertionError: storedTasks=[Task[myEffector:dmCJkiM9], Task[myEffector:R2hPTpNL]]; expected=[Task[myEffector:Z9wTQ8We], Task[myEffector:R2hPTpNL]]
- // expected [[Task[myEffector:Z9wTQ8We], Task[myEffector:R2hPTpNL]]]
- // but found [[Task[myEffector:dmCJkiM9], Task[myEffector:R2hPTpNL]]]
-
- @Test(groups="Integration")
- public void testEffectorTasksGcedForAge() throws Exception {
- Duration maxTaskAge = Duration.millis(100);
- Duration maxOverhead = Duration.millis(250);
- Duration earlyReturnGrace = Duration.millis(10);
- BrooklynProperties brooklynProperties = BrooklynProperties.Factory.newEmpty();
- brooklynProperties.put(BrooklynGarbageCollector.GC_PERIOD, Duration.ONE_MILLISECOND);
- brooklynProperties.put(BrooklynGarbageCollector.MAX_TASK_AGE, maxTaskAge);
-
- app = ApplicationBuilder.newManagedApp(TestApplication.class, LocalManagementContextForTests.newInstance(brooklynProperties));
- final TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- Stopwatch stopwatch = Stopwatch.createStarted();
- Task<?> oldTask = entity.invoke(TestEntity.MY_EFFECTOR, ImmutableMap.<String,Object>of());
- oldTask.get();
-
- Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), new Runnable() {
- @Override public void run() {
- Set<Task<?>> storedTasks = app.getManagementContext().getExecutionManager().getTasksWithAllTags(ImmutableList.of(
- BrooklynTaskTags.tagForTargetEntity(entity),
- ManagementContextInternal.EFFECTOR_TAG));
- assertEquals(storedTasks, ImmutableSet.of(), "storedTasks="+storedTasks);
- }});
-
- Duration timeToGc = Duration.of(stopwatch);
- assertTrue(timeToGc.isLongerThan(maxTaskAge.subtract(earlyReturnGrace)), "timeToGc="+timeToGc+"; maxTaskAge="+maxTaskAge);
- assertTrue(timeToGc.isShorterThan(maxTaskAge.add(maxOverhead)), "timeToGc="+timeToGc+"; maxTaskAge="+maxTaskAge);
- }
-
- private static class BigObject implements Serializable {
- private static final long serialVersionUID = -4021304829674972215L;
- private final int sizeBytes;
- private final byte[] data;
-
- BigObject(int sizeBytes) {
- this.sizeBytes = sizeBytes;
- this.data = new byte[sizeBytes];
- }
-
- @Override
- public String toString() {
- return "BigObject["+sizeBytes+"/"+data.length+"]";
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6602f694/core/src/test/java/brooklyn/management/internal/LocalManagementContextInstancesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/internal/LocalManagementContextInstancesTest.java b/core/src/test/java/brooklyn/management/internal/LocalManagementContextInstancesTest.java
deleted file mode 100644
index 0e07b94..0000000
--- a/core/src/test/java/brooklyn/management/internal/LocalManagementContextInstancesTest.java
+++ /dev/null
@@ -1,86 +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 brooklyn.management.internal;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Tests the {@link LocalManagementContext#terminateAll()} and {@link LocalManagementContext#getInstances()} behaviour.
- * Note this test must NEVER be run in parallel with other tests, as it will terminate the ManagementContext of those
- * other tests.
- *
- * @author pveentjer
- */
-public class LocalManagementContextInstancesTest {
-
- @AfterMethod(alwaysRun = true)
- public void tearDown(){
- LocalManagementContext.terminateAll();
- }
-
- /** WIP group because other threads may be running in background,
- * creating management contexts at the same time as us (slim chance, but observed once);
- * they shouldn't be, but cleaning that up is another matter! */
- @Test(groups="WIP")
- public void testGetInstances(){
- LocalManagementContext.terminateAll();
- LocalManagementContext context1 = new LocalManagementContext();
- LocalManagementContext context2 = new LocalManagementContext();
- LocalManagementContext context3 = new LocalManagementContext();
-
- assertEquals(LocalManagementContext.getInstances(), ImmutableSet.of(context1, context2, context3));
- }
-
- /** WIP group because other threads may be running in background;
- * they shouldn't be, but cleaning that up is another matter! */
- @Test
- public void terminateAll(){
- LocalManagementContext.terminateAll();
-
- LocalManagementContext context1 = new LocalManagementContext();
- LocalManagementContext context2 = new LocalManagementContext();
-
- LocalManagementContext.terminateAll();
-
- assertTrue(LocalManagementContext.getInstances().isEmpty());
- assertFalse(context1.isRunning());
- assertFalse(context2.isRunning());
- }
-
- @Test
- public void terminateExplicitContext(){
- LocalManagementContext context1 = new LocalManagementContext();
- LocalManagementContext context2 = new LocalManagementContext();
- LocalManagementContext context3 = new LocalManagementContext();
-
- context2.terminate();
-
- Assert.assertFalse(LocalManagementContext.getInstances().contains(context2));
- Assert.assertTrue(LocalManagementContext.getInstances().contains(context1));
- Assert.assertTrue(LocalManagementContext.getInstances().contains(context3));
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6602f694/core/src/test/java/brooklyn/management/internal/LocalManagementContextTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/internal/LocalManagementContextTest.java b/core/src/test/java/brooklyn/management/internal/LocalManagementContextTest.java
deleted file mode 100644
index d225cd7..0000000
--- a/core/src/test/java/brooklyn/management/internal/LocalManagementContextTest.java
+++ /dev/null
@@ -1,126 +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 brooklyn.management.internal;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotEquals;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.management.ManagementContext.PropertiesReloadListener;
-import org.apache.brooklyn.test.entity.LocalManagementContextForTests;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.config.BrooklynProperties;
-import brooklyn.config.BrooklynProperties.Factory.Builder;
-import brooklyn.util.os.Os;
-
-import com.google.common.base.Charsets;
-import com.google.common.io.Files;
-
-public class LocalManagementContextTest {
-
- private LocalManagementContext context;
- private File globalPropertiesFile;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- context = null;
- globalPropertiesFile = Os.newTempFile(getClass(), "global.properties");
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (context!=null) context.terminate();
- if (globalPropertiesFile != null) globalPropertiesFile.delete();
- }
-
- @Test
- public void testReloadPropertiesFromBuilder() throws IOException {
- String globalPropertiesContents = "brooklyn.location.localhost.displayName=myname";
- Files.write(globalPropertiesContents, globalPropertiesFile, Charsets.UTF_8);
- Builder propsBuilder = new BrooklynProperties.Factory.Builder()
- .globalPropertiesFile(globalPropertiesFile.getAbsolutePath());
- // no builder support in LocalManagementContextForTests (we are testing that the builder's files are reloaded so we need it here)
- context = new LocalManagementContext(propsBuilder);
- Location location = context.getLocationRegistry().resolve("localhost");
- assertEquals(location.getDisplayName(), "myname");
- String newGlobalPropertiesContents = "brooklyn.location.localhost.displayName=myname2";
- Files.write(newGlobalPropertiesContents, globalPropertiesFile, Charsets.UTF_8);
- context.reloadBrooklynProperties();
- Location location2 = context.getLocationRegistry().resolve("localhost");
- assertEquals(location.getDisplayName(), "myname");
- assertEquals(location2.getDisplayName(), "myname2");
- }
-
- @Test
- public void testReloadPropertiesFromProperties() throws IOException {
- String globalPropertiesContents = "brooklyn.location.localhost.displayName=myname";
- Files.write(globalPropertiesContents, globalPropertiesFile, Charsets.UTF_8);
- BrooklynProperties brooklynProperties = new BrooklynProperties.Factory.Builder()
- .globalPropertiesFile(globalPropertiesFile.getAbsolutePath())
- .build();
- context = LocalManagementContextForTests.builder(true).useProperties(brooklynProperties).build();
- Location location = context.getLocationRegistry().resolve("localhost");
- assertEquals(location.getDisplayName(), "myname");
- String newGlobalPropertiesContents = "brooklyn.location.localhost.displayName=myname2";
- Files.write(newGlobalPropertiesContents, globalPropertiesFile, Charsets.UTF_8);
- context.reloadBrooklynProperties();
- Location location2 = context.getLocationRegistry().resolve("localhost");
- assertEquals(location.getDisplayName(), "myname");
- assertEquals(location2.getDisplayName(), "myname");
- }
-
- @Test
- public void testPropertiesModified() throws IOException {
- BrooklynProperties properties = BrooklynProperties.Factory.newEmpty();
- properties.put("myname", "myval");
- context = LocalManagementContextForTests.builder(true).useProperties(properties).build();
- assertEquals(context.getBrooklynProperties().get("myname"), "myval");
- properties.put("myname", "newval");
- assertEquals(properties.get("myname"), "newval");
- // TODO: Should changes in the 'properties' collection be reflected in context.getBrooklynProperties()?
- assertNotEquals(context.getBrooklynProperties().get("myname"), "newval");
- }
-
- @Test
- public void testAddAndRemoveReloadListener() {
- final AtomicInteger reloadedCallbackCount = new AtomicInteger(0);
- BrooklynProperties properties = BrooklynProperties.Factory.newEmpty();
- properties.put("myname", "myval");
- context = LocalManagementContextForTests.builder(true).useProperties(properties).build();
- PropertiesReloadListener listener = new PropertiesReloadListener() {
- public void reloaded() {
- reloadedCallbackCount.incrementAndGet();
- }
- };
- assertEquals(reloadedCallbackCount.get(), 0);
- context.addPropertiesReloadListener(listener);
- context.reloadBrooklynProperties();
- assertEquals(reloadedCallbackCount.get(), 1);
- context.removePropertiesReloadListener(listener);
- context.reloadBrooklynProperties();
- assertEquals(reloadedCallbackCount.get(), 1);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6602f694/core/src/test/java/brooklyn/management/internal/LocalSubscriptionManagerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/internal/LocalSubscriptionManagerTest.java b/core/src/test/java/brooklyn/management/internal/LocalSubscriptionManagerTest.java
deleted file mode 100644
index 7907d30..0000000
--- a/core/src/test/java/brooklyn/management/internal/LocalSubscriptionManagerTest.java
+++ /dev/null
@@ -1,181 +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 brooklyn.management.internal;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.fail;
-
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.entity.proxying.EntitySpec;
-import org.apache.brooklyn.api.event.SensorEvent;
-import org.apache.brooklyn.api.event.SensorEventListener;
-import org.apache.brooklyn.api.management.SubscriptionHandle;
-import org.apache.brooklyn.api.management.SubscriptionManager;
-import org.apache.brooklyn.test.entity.TestEntity;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.entity.BrooklynAppUnitTestSupport;
-import brooklyn.entity.basic.BasicGroup;
-import brooklyn.entity.basic.Entities;
-
-/**
- * testing the {@link SubscriptionManager} and associated classes.
- */
-public class LocalSubscriptionManagerTest extends BrooklynAppUnitTestSupport {
-
- private static final int TIMEOUT_MS = 5000;
-
- private TestEntity entity;
-
- @BeforeMethod(alwaysRun=true)
- @Override
- public void setUp() throws Exception {
- super.setUp();
- entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
- }
-
- private void manage(Entity ...entities) {
- for (Entity e: entities)
- Entities.manage(e);
- }
-
- @Test
- public void testSubscribeToEntityAttributeChange() throws Exception {
- final CountDownLatch latch = new CountDownLatch(1);
- app.subscribe(entity, TestEntity.SEQUENCE, new SensorEventListener<Object>() {
- @Override public void onEvent(SensorEvent<Object> event) {
- latch.countDown();
- }});
- entity.setSequenceValue(1234);
- if (!latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
- fail("Timeout waiting for Event on TestEntity listener");
- }
- }
-
- @Test
- public void testSubscribeToEntityWithAttributeWildcard() throws Exception {
- final CountDownLatch latch = new CountDownLatch(1);
- app.subscribe(entity, null, new SensorEventListener<Object>() {
- @Override public void onEvent(SensorEvent<Object> event) {
- latch.countDown();
- }});
- entity.setSequenceValue(1234);
- if (!latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
- fail("Timeout waiting for Event on TestEntity listener");
- }
- }
-
- @Test
- public void testSubscribeToAttributeChangeWithEntityWildcard() throws Exception {
- final CountDownLatch latch = new CountDownLatch(1);
- app.subscribe(null, TestEntity.SEQUENCE, new SensorEventListener<Object>() {
- @Override public void onEvent(SensorEvent<Object> event) {
- latch.countDown();
- }});
- entity.setSequenceValue(1234);
- if (!latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
- fail("Timeout waiting for Event on TestEntity listener");
- }
- }
-
- @Test
- public void testSubscribeToChildAttributeChange() throws Exception {
- final CountDownLatch latch = new CountDownLatch(1);
- app.subscribeToChildren(app, TestEntity.SEQUENCE, new SensorEventListener<Object>() {
- @Override public void onEvent(SensorEvent<Object> event) {
- latch.countDown();
- }});
- entity.setSequenceValue(1234);
- if (!latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
- fail("Timeout waiting for Event on child TestEntity listener");
- }
- }
-
- @Test
- public void testSubscribeToMemberAttributeChange() throws Exception {
- BasicGroup group = app.createAndManageChild(EntitySpec.create(BasicGroup.class));
- TestEntity member = app.createAndManageChild(EntitySpec.create(TestEntity.class));
- manage(group, member);
-
- group.addMember(member);
-
- final List<SensorEvent<Integer>> events = new CopyOnWriteArrayList<SensorEvent<Integer>>();
- final CountDownLatch latch = new CountDownLatch(1);
- app.subscribeToMembers(group, TestEntity.SEQUENCE, new SensorEventListener<Integer>() {
- @Override public void onEvent(SensorEvent<Integer> event) {
- events.add(event);
- latch.countDown();
- }});
- member.setAttribute(TestEntity.SEQUENCE, 123);
-
- if (!latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
- fail("Timeout waiting for Event on parent TestEntity listener");
- }
- assertEquals(events.size(), 1);
- assertEquals(events.get(0).getValue(), (Integer)123);
- assertEquals(events.get(0).getSensor(), TestEntity.SEQUENCE);
- assertEquals(events.get(0).getSource().getId(), member.getId());
- }
-
- // Regression test for ConcurrentModificationException in issue #327
- @Test(groups="Integration")
- public void testConcurrentSubscribingAndPublishing() throws Exception {
- final AtomicReference<Exception> threadException = new AtomicReference<Exception>();
- TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-
- // Repeatedly subscribe and unsubscribe, so listener-set constantly changing while publishing to it.
- // First create a stable listener so it is always the same listener-set object.
- Thread thread = new Thread() {
- public void run() {
- try {
- SensorEventListener<Object> noopListener = new SensorEventListener<Object>() {
- @Override public void onEvent(SensorEvent<Object> event) {
- }
- };
- app.subscribe(null, TestEntity.SEQUENCE, noopListener);
- while (!Thread.currentThread().isInterrupted()) {
- SubscriptionHandle handle = app.subscribe(null, TestEntity.SEQUENCE, noopListener);
- app.unsubscribe(null, handle);
- }
- } catch (Exception e) {
- threadException.set(e);
- }
- }
- };
-
- try {
- thread.start();
- for (int i = 0; i < 10000; i++) {
- entity.setAttribute(TestEntity.SEQUENCE, i);
- }
- } finally {
- thread.interrupt();
- }
-
- if (threadException.get() != null) throw threadException.get();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6602f694/core/src/test/java/brooklyn/management/osgi/OsgiPathTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/osgi/OsgiPathTest.java b/core/src/test/java/brooklyn/management/osgi/OsgiPathTest.java
deleted file mode 100644
index 829b281..0000000
--- a/core/src/test/java/brooklyn/management/osgi/OsgiPathTest.java
+++ /dev/null
@@ -1,105 +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 brooklyn.management.osgi;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.brooklyn.test.entity.LocalManagementContextForTests;
-import org.osgi.framework.BundleException;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.config.BrooklynProperties;
-import brooklyn.config.BrooklynServerConfig;
-import brooklyn.config.BrooklynServerPaths;
-import brooklyn.entity.basic.Entities;
-import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.util.os.Os;
-import brooklyn.util.text.Identifiers;
-
-
-/**
- * Tests that OSGi entities load correctly and have the right catalog information set.
- * Note further tests done elsewhere using CAMP YAML (referring to methods in this class).
- */
-public class OsgiPathTest {
-
- protected LocalManagementContext mgmt = null;
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws BundleException, IOException, InterruptedException {
- if (mgmt!=null) Entities.destroyAll(mgmt);
- }
-
- @Test(groups="Integration") // integration only because OSGi takes ~200ms
- public void testOsgiPathDefault() {
- mgmt = LocalManagementContextForTests.builder(true).disableOsgi(false).build();
- String path = BrooklynServerPaths.getOsgiCacheDir(mgmt).getAbsolutePath();
- Assert.assertTrue(path.startsWith(BrooklynServerPaths.getMgmtBaseDir(mgmt)), path);
- Assert.assertTrue(path.contains(mgmt.getManagementNodeId()), path);
-
- assertExistsThenIsCleaned(path);
- }
-
- @Test(groups="Integration") // integration only because OSGi takes ~200ms
- public void testOsgiPathCustom() {
- BrooklynProperties bp = BrooklynProperties.Factory.newEmpty();
- String randomSeg = "osgi-test-"+Identifiers.makeRandomId(4);
- bp.put(BrooklynServerConfig.OSGI_CACHE_DIR, "${brooklyn.os.tmpdir}"+"/"+randomSeg+"/"+"${brooklyn.mgmt.node.id}");
- mgmt = LocalManagementContextForTests.builder(true).disableOsgi(false).useProperties(bp).build();
- String path = BrooklynServerPaths.getOsgiCacheDir(mgmt).getAbsolutePath();
- Os.deleteOnExitRecursivelyAndEmptyParentsUpTo(new File(path), new File(Os.tmp()+"/"+randomSeg));
-
- Assert.assertTrue(path.startsWith(Os.tmp()), path);
- Assert.assertTrue(path.contains(mgmt.getManagementNodeId()), path);
-
- assertExistsThenIsCleaned(path);
- }
-
- @Test(groups="Integration") // integration only because OSGi takes ~200ms
- public void testOsgiPathCustomWithoutNodeIdNotCleaned() {
- BrooklynProperties bp = BrooklynProperties.Factory.newEmpty();
- String randomSeg = "osgi-test-"+Identifiers.makeRandomId(4);
- bp.put(BrooklynServerConfig.OSGI_CACHE_DIR, "${brooklyn.os.tmpdir}"+"/"+randomSeg+"/"+"sample");
- mgmt = LocalManagementContextForTests.builder(true).disableOsgi(false).useProperties(bp).build();
- String path = BrooklynServerPaths.getOsgiCacheDir(mgmt).getAbsolutePath();
- Os.deleteOnExitRecursivelyAndEmptyParentsUpTo(new File(path), new File(Os.tmp()+"/"+randomSeg));
-
- Assert.assertTrue(path.startsWith(Os.tmp()), path);
- Assert.assertFalse(path.contains(mgmt.getManagementNodeId()), path);
-
- assertExistsThenCorrectCleanedBehaviour(path, false);
- }
-
- private void assertExistsThenIsCleaned(String path) {
- assertExistsThenCorrectCleanedBehaviour(path, true);
- }
- private void assertExistsThenCorrectCleanedBehaviour(String path, boolean shouldBeCleanAfterwards) {
- Assert.assertTrue(new File(path).exists(), "OSGi cache "+path+" should exist when in use");
- Entities.destroyAll(mgmt);
- mgmt = null;
- if (shouldBeCleanAfterwards)
- Assert.assertFalse(new File(path).exists(), "OSGi cache "+path+" should be cleaned after");
- else
- Assert.assertTrue(new File(path).exists(), "OSGi cache "+path+" should NOT be cleaned after");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6602f694/core/src/test/java/brooklyn/management/osgi/OsgiStandaloneTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/osgi/OsgiStandaloneTest.java b/core/src/test/java/brooklyn/management/osgi/OsgiStandaloneTest.java
deleted file mode 100644
index 64306c6..0000000
--- a/core/src/test/java/brooklyn/management/osgi/OsgiStandaloneTest.java
+++ /dev/null
@@ -1,259 +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 brooklyn.management.osgi;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.jar.JarInputStream;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.test.TestResourceUnavailableException;
-
-import brooklyn.util.exceptions.Exceptions;
-
-import org.apache.commons.io.FileUtils;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.FrameworkEvent;
-import org.osgi.framework.launch.Framework;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.util.ResourceUtils;
-import brooklyn.util.collections.MutableSet;
-import brooklyn.util.maven.MavenArtifact;
-import brooklyn.util.maven.MavenRetriever;
-import brooklyn.util.net.Urls;
-import brooklyn.util.os.Os;
-import brooklyn.util.osgi.Osgis;
-import brooklyn.util.osgi.Osgis.ManifestHelper;
-import brooklyn.util.stream.Streams;
-
-/**
- * Tests some assumptions about OSGi behaviour, in standalone mode (not part of brooklyn).
- * See {@link OsgiTestResources} for description of test resources.
- */
-public class OsgiStandaloneTest {
-
- private static final Logger log = LoggerFactory.getLogger(OsgiStandaloneTest.class);
-
- public static final String BROOKLYN_OSGI_TEST_A_0_1_0_PATH = OsgiTestResources.BROOKLYN_OSGI_TEST_A_0_1_0_PATH;
- public static final String BROOKLYN_OSGI_TEST_A_0_1_0_URL = "classpath:"+BROOKLYN_OSGI_TEST_A_0_1_0_PATH;
-
- public static final String BROOKLYN_TEST_OSGI_ENTITIES_PATH = OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_PATH;
- public static final String BROOKLYN_TEST_OSGI_ENTITIES_URL = "classpath:"+BROOKLYN_TEST_OSGI_ENTITIES_PATH;
- public static final String BROOKLYN_TEST_OSGI_ENTITIES_NAME = "org.apache.brooklyn.test.resources.osgi.brooklyn-test-osgi-entities";
- public static final String BROOKLYN_TEST_OSGI_ENTITIES_VERSION = "0.1.0";
-
- protected Framework framework = null;
- private File storageTempDir;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- storageTempDir = Os.newTempDir("osgi-standalone");
- framework = Osgis.newFrameworkStarted(storageTempDir.getAbsolutePath(), true, null);
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws BundleException, IOException, InterruptedException {
- tearDownOsgiFramework(framework, storageTempDir);
- }
-
- public static void tearDownOsgiFramework(Framework framework, File storageTempDir) throws BundleException, InterruptedException, IOException {
- if (framework!=null) {
- framework.stop();
- Assert.assertEquals(framework.waitForStop(1000).getType(), FrameworkEvent.STOPPED);
- framework = null;
- }
- if (storageTempDir!=null) {
- FileUtils.deleteDirectory(storageTempDir);
- storageTempDir = null;
- }
- }
-
- protected Bundle install(String url) throws BundleException {
- try {
- return Osgis.install(framework, url);
- } catch (Exception e) {
- throw new IllegalStateException("test resources not available; may be an IDE issue, so try a mvn rebuild of this project", e);
- }
- }
-
- protected Bundle installFromClasspath(String resourceName) throws BundleException {
- TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), resourceName);
- try {
- return Osgis.install(framework, String.format("classpath:%s", resourceName));
- } catch (Exception e) {
- throw Exceptions.propagate(e);
- }
- }
-
- @Test
- public void testInstallBundle() throws Exception {
- Bundle bundle = installFromClasspath(BROOKLYN_OSGI_TEST_A_0_1_0_PATH);
- checkMath(bundle, 3, 6);
- }
-
- @Test
- public void testBootBundle() throws Exception {
- Bundle bundle = installFromClasspath(BROOKLYN_TEST_OSGI_ENTITIES_PATH);
- Class<?> bundleCls = bundle.loadClass("brooklyn.osgi.tests.SimpleEntity");
- Assert.assertEquals(Entity.class, bundle.loadClass(Entity.class.getName()));
- Assert.assertEquals(Entity.class, bundleCls.getClassLoader().loadClass(Entity.class.getName()));
- }
-
- @Test
- public void testDuplicateBundle() throws Exception {
- MavenArtifact artifact = new MavenArtifact("org.apache.brooklyn", "brooklyn-api", "jar", "0.8.0-SNAPSHOT"); // BROOKLYN_VERSION
- String localUrl = MavenRetriever.localUrl(artifact);
- if ("file".equals(Urls.getProtocol(localUrl))) {
- helperDuplicateBundle(localUrl);
- } else {
- log.warn("Skipping test OsgiStandaloneTest.testDuplicateBundle due to " + artifact + " not available in local repo.");
- }
- }
-
- @Test(groups="Integration")
- public void testRemoteDuplicateBundle() throws Exception {
- helperDuplicateBundle(MavenRetriever.hostedUrl(new MavenArtifact("org.apache.brooklyn", "brooklyn-api", "jar", "0.8.0-SNAPSHOT"))); // BROOKLYN_VERSION
- }
-
- public void helperDuplicateBundle(String url) throws Exception {
- //The bundle is already installed from the boot path.
- //Make sure that we still get the initially loaded
- //bundle after trying to install the same version.
- Bundle bundle = install(url);
- Assert.assertTrue(Osgis.isExtensionBundle(bundle));
- }
-
- @Test
- public void testAMultiplier() throws Exception {
- Bundle bundle = installFromClasspath(BROOKLYN_OSGI_TEST_A_0_1_0_PATH);
- checkMath(bundle, 3, 6);
- setAMultiplier(bundle, 5);
- checkMath(bundle, 3, 15);
- }
-
- /** run two multiplier tests to ensure that irrespective of order the tests run in,
- * on a fresh install the multiplier is reset */
- @Test
- public void testANOtherMultiple() throws Exception {
- Bundle bundle = installFromClasspath(BROOKLYN_OSGI_TEST_A_0_1_0_PATH);
- checkMath(bundle, 3, 6);
- setAMultiplier(bundle, 14);
- checkMath(bundle, 3, 42);
- }
-
- @Test
- public void testGetBundle() throws Exception {
- Bundle bundle = installFromClasspath(BROOKLYN_OSGI_TEST_A_0_1_0_PATH);
- setAMultiplier(bundle, 3);
-
- // can look it up based on the same location string (no other "location identifier" reference string seems to work here, however)
- Bundle bundle2 = installFromClasspath(BROOKLYN_OSGI_TEST_A_0_1_0_PATH);
- checkMath(bundle2, 3, 9);
- }
-
- @Test
- public void testUninstallAndReinstallBundle() throws Exception {
- Bundle bundle = installFromClasspath(BROOKLYN_OSGI_TEST_A_0_1_0_PATH);
- checkMath(bundle, 3, 6);
- setAMultiplier(bundle, 3);
- checkMath(bundle, 3, 9);
- bundle.uninstall();
-
- Bundle bundle2 = installFromClasspath(BROOKLYN_OSGI_TEST_A_0_1_0_PATH);
- checkMath(bundle2, 3, 6);
- }
-
- protected void checkMath(Bundle bundle, int input, int output) throws Exception {
- Assert.assertNotNull(bundle);
- Class<?> aClass = bundle.loadClass("brooklyn.test.osgi.TestA");
- Object aInst = aClass.newInstance();
- Object result = aClass.getMethod("times", int.class).invoke(aInst, input);
- Assert.assertEquals(result, output);
- }
-
- protected void setAMultiplier(Bundle bundle, int newMultiplier) throws Exception {
- Assert.assertNotNull(bundle);
- Class<?> aClass = bundle.loadClass("brooklyn.test.osgi.TestA");
- aClass.getField("multiplier").set(null, newMultiplier);
- }
-
- @Test
- public void testReadAManifest() throws Exception {
- Enumeration<URL> manifests = getClass().getClassLoader().getResources("META-INF/MANIFEST.MF");
- log.info("Bundles and exported packages:");
- MutableSet<String> allPackages = MutableSet.of();
- while (manifests.hasMoreElements()) {
- ManifestHelper mf = Osgis.ManifestHelper.forManifestContents(Streams.readFullyString( manifests.nextElement().openStream() ));
- List<String> mfPackages = mf.getExportedPackages();
- log.info(" "+mf.getSymbolicNameVersion()+": "+mfPackages);
- allPackages.addAll(mfPackages);
- }
- log.info("Total export package count: "+allPackages.size());
- Assert.assertTrue(allPackages.size()>20, "did not find enough packages"); // probably much larger
- Assert.assertTrue(allPackages.contains(Osgis.class.getPackage().getName()));
- }
-
- @Test
- public void testReadKnownManifest() throws Exception {
- TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), BROOKLYN_TEST_OSGI_ENTITIES_PATH);
- InputStream in = this.getClass().getResourceAsStream(BROOKLYN_TEST_OSGI_ENTITIES_PATH);
- JarInputStream jarIn = new JarInputStream(in);
- ManifestHelper helper = Osgis.ManifestHelper.forManifest(jarIn.getManifest());
- jarIn.close();
- Assert.assertEquals(helper.getVersion().toString(), "0.1.0");
- Assert.assertTrue(helper.getExportedPackages().contains("brooklyn.osgi.tests"));
- }
-
- @Test
- public void testLoadOsgiBundleDependencies() throws Exception {
- Bundle bundle = installFromClasspath(BROOKLYN_TEST_OSGI_ENTITIES_PATH);
- Assert.assertNotNull(bundle);
- Class<?> aClass = bundle.loadClass("brooklyn.osgi.tests.SimpleApplicationImpl");
- Object aInst = aClass.newInstance();
- Assert.assertNotNull(aInst);
- }
-
- @Test
- public void testLoadAbsoluteWindowsResourceWithInstalledOSGi() {
- //Felix installs an additional URL to the system classloader
- //which throws an IllegalArgumentException when passed a
- //windows path. See ExtensionManager.java static initializer.
- String context = "mycontext";
- String dummyPath = "C:\\dummypath";
- ResourceUtils utils = ResourceUtils.create(this, context);
- try {
- utils.getResourceFromUrl(dummyPath);
- Assert.fail("Non-reachable, should throw an exception for non-existing resource.");
- } catch (RuntimeException e) {
- Assert.assertTrue(e.getMessage().startsWith("Error getting resource '"+dummyPath+"' for "+context));
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6602f694/core/src/test/java/brooklyn/management/osgi/OsgiTestResources.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/osgi/OsgiTestResources.java b/core/src/test/java/brooklyn/management/osgi/OsgiTestResources.java
deleted file mode 100644
index ef0321d..0000000
--- a/core/src/test/java/brooklyn/management/osgi/OsgiTestResources.java
+++ /dev/null
@@ -1,74 +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 brooklyn.management.osgi;
-
-/**
- * Many OSGi tests require OSGi bundles (of course). Test bundles have been collected here
- * for convenience and clarity. Available bundles (on the classpath, with source code
- * either embedded or in /src/dependencies) are described by the constants in this class.
- * <p>
- * Some of these bundles are also used in REST API tests, as that stretches catalog further
- * (using CAMP) and that is one area where OSGi is heavily used.
- */
-public class OsgiTestResources {
-
-
- /**
- * brooklyn-osgi-test-a_0.1.0 -
- * defines TestA which has a "times" method and a static multiplier field;
- * we set the multiplier to determine when we are sharing versions and when not
- */
- public static final String BROOKLYN_OSGI_TEST_A_0_1_0_PATH = "/brooklyn/osgi/brooklyn-osgi-test-a_0.1.0.jar";
-
- /**
- * brooklyn-test-osgi-entities (v 0.1.0) -
- * defines an entity and an application, to confirm it can be read and used by brooklyn
- */
- public static final String BROOKLYN_TEST_OSGI_ENTITIES_PATH = "/brooklyn/osgi/brooklyn-test-osgi-entities.jar";
- public static final String BROOKLYN_TEST_OSGI_ENTITIES_SIMPLE_APPLICATION = "brooklyn.osgi.tests.SimpleApplication";
- public static final String BROOKLYN_TEST_OSGI_ENTITIES_SIMPLE_ENTITY = "brooklyn.osgi.tests.SimpleEntity";
- public static final String BROOKLYN_TEST_OSGI_ENTITIES_SIMPLE_POLICY = "brooklyn.osgi.tests.SimplePolicy";
-
- /**
- * brooklyn-test-osgi-more-entities_0.1.0 -
- * another bundle with a minimal sayHi effector, used to test versioning and dependencies
- * (this one has no dependencies, but see also {@value #BROOKLYN_TEST_MORE_ENTITIES_V2_PATH})
- */
- public static final String BROOKLYN_TEST_MORE_ENTITIES_SYMBOLIC_NAME_FINAL_PART = "brooklyn-test-osgi-more-entities";
- public static final String BROOKLYN_TEST_MORE_ENTITIES_SYMBOLIC_NAME_FULL =
- "org.apache.brooklyn.test.resources.osgi."+BROOKLYN_TEST_MORE_ENTITIES_SYMBOLIC_NAME_FINAL_PART;
- public static final String BROOKLYN_TEST_MORE_ENTITIES_V1_PATH = "/brooklyn/osgi/" + BROOKLYN_TEST_MORE_ENTITIES_SYMBOLIC_NAME_FINAL_PART + "_0.1.0.jar";
- public static final String BROOKLYN_TEST_MORE_ENTITIES_MORE_ENTITY = "brooklyn.osgi.tests.more.MoreEntity";
-
- /**
- * brooklyn-test-osgi-more-entities_0.2.0 -
- * similar to {@link #BROOKLYN_TEST_MORE_ENTITIES_V1_PATH} but saying "HI NAME" rather than "Hi NAME",
- * and declaring an explicit dependency on SimplePolicy from {@link #BROOKLYN_TEST_OSGI_ENTITIES_PATH}
- */
- public static final String BROOKLYN_TEST_MORE_ENTITIES_V2_PATH = "/brooklyn/osgi/" + BROOKLYN_TEST_MORE_ENTITIES_SYMBOLIC_NAME_FINAL_PART + "_0.2.0.jar";
-
- /**
- * bundle with identical metadata (same symbolic name and version -- hence being an evil twin)
- * as {@link #BROOKLYN_TEST_MORE_ENTITIES_V2_PATH},
- * but slightly different behaviour -- saying "HO NAME" -- in order to make sure we can differentiate two two
- * at runtime.
- */
- public static final String BROOKLYN_TEST_MORE_ENTITIES_V2_EVIL_TWIN_PATH = "/brooklyn/osgi/" + BROOKLYN_TEST_MORE_ENTITIES_SYMBOLIC_NAME_FINAL_PART + "_evil-twin_0.2.0.jar";
-
-}