http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetIntegrationTest.java deleted file mode 100644 index 948a5c4..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetIntegrationTest.java +++ /dev/null @@ -1,206 +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.entity.nosql.mongodb; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotEquals; -import static org.testng.Assert.assertNotNull; - -import java.util.Collection; -import java.util.concurrent.TimeUnit; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.BrooklynAppLiveTestSupport; -import brooklyn.entity.Entity; -import brooklyn.entity.group.DynamicCluster; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.test.Asserts; -import brooklyn.util.time.Duration; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.mongodb.DBObject; - -public class MongoDBReplicaSetIntegrationTest extends BrooklynAppLiveTestSupport { - - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(MongoDBReplicaSetIntegrationTest.class); - - private Collection<LocalhostMachineProvisioningLocation> locs; - - // Replica sets can take a while to start - private static final Duration TIMEOUT = Duration.of(3, TimeUnit.MINUTES); - - @BeforeMethod(alwaysRun=true) - @Override - public void setUp() throws Exception { - super.setUp(); - locs = ImmutableList.of(app.newLocalhostProvisioningLocation()); - } - - /** - * Creates and starts a replica set, asserts it reaches the given size - * and that the primary and secondaries are non-null. - */ - private MongoDBReplicaSet makeAndStartReplicaSet(final Integer size, final String testDescription) { - // Sets secondaryPreferred so we can read from slaves. - final MongoDBReplicaSet replicaSet = app.createAndManageChild(EntitySpec.create(MongoDBReplicaSet.class) - .configure(DynamicCluster.INITIAL_SIZE, size) - .configure("replicaSetName", "test-rs-"+testDescription) - .configure("memberSpec", EntitySpec.create(MongoDBServer.class) - .configure("mongodbConfTemplateUrl", "classpath:///test-mongodb.conf") - .configure("port", "27017+"))); - app.start(locs); - - Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Runnable() { - @Override - public void run() { - assertEquals(replicaSet.getCurrentSize(), size); - assertNotNull(replicaSet.getPrimary(), "replica set has no primary"); - assertEquals(replicaSet.getPrimary().getReplicaSet().getName(), "test-rs-"+testDescription+replicaSet.getId()); - assertEquals(replicaSet.getSecondaries().size(), size-1); - } - }); - return replicaSet; - } - - @Test(groups = "Integration") - public void testCanStartAndStopAReplicaSet() { - final MongoDBReplicaSet replicaSet = makeAndStartReplicaSet(3, "can-start-and-stop"); - replicaSet.stop(); - assertFalse(replicaSet.getAttribute(Startable.SERVICE_UP)); - } - - @Test(groups = "Integration") - public void testWriteToMasterAndReadFromSecondary() { - final MongoDBReplicaSet replicaSet = makeAndStartReplicaSet(3, "master-write-secondary-read"); - - // Test we can read a document written to the primary from all secondaries - final String documentId = MongoDBTestHelper.insert(replicaSet.getPrimary(), "meaning-of-life", 42); - Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Runnable() { - @Override - public void run() { - assertEquals(replicaSet.getCurrentSize().intValue(), 3); - for (MongoDBServer secondary : replicaSet.getSecondaries()) { - DBObject docOut = MongoDBTestHelper.getById(secondary, documentId); - assertEquals(docOut.get("meaning-of-life"), 42); - } - } - }); - } - - @Test(groups = "Integration") - public void testCanResizeAndReadFromNewInstances() { - final MongoDBReplicaSet replicaSet = makeAndStartReplicaSet(3, "resize-and-read-from-secondaries"); - - // Test we can a document written to the primary from all secondaries - final String documentId = MongoDBTestHelper.insert(replicaSet.getPrimary(), "meaning-of-life", 42); - Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Runnable() { - @Override - public void run() { - assertEquals(replicaSet.getCurrentSize().intValue(), 3); - for (MongoDBServer secondary : replicaSet.getSecondaries()) { - DBObject docOut = MongoDBTestHelper.getById(secondary, documentId); - assertEquals(docOut.get("meaning-of-life"), 42); - } - } - }); - - // Resize and confirm new members get data - replicaSet.resize(5); - Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Runnable() { - @Override - public void run() { - assertEquals(replicaSet.getCurrentSize().intValue(), 5); - Collection<MongoDBServer> secondaries = replicaSet.getSecondaries(); - assertEquals(secondaries.size(), 4); - for (MongoDBServer secondary : secondaries) { - DBObject docOut = MongoDBTestHelper.getById(secondary, documentId); - assertEquals(docOut.get("meaning-of-life"), 42); - } - } - }); - - } - - @Test(groups = "Integration") - public void testResizeToEvenNumberOfMembers() { - final MongoDBReplicaSet replicaSet = makeAndStartReplicaSet(3, "resize-even-ignored"); - assertEquals(replicaSet.getCurrentSize().intValue(), 3); - replicaSet.resize(4); - Asserts.succeedsEventually(new Runnable() { - @Override - public void run() { - assertEquals(replicaSet.getCurrentSize().intValue(), 4); - } - }); - } - - /** - * Test replacing the primary succeeds. More interesting than replacing a secondary - * because the removal of a primary must happen _through_ the primary. The flow is: - * - Brooklyn removes the server from the set and stops it - * - The remaining members of the set elect a new primary - * - We remove the original primary from the new primary. - */ - @Test(groups = "Integration") - public void testReplacePrimary() { - final MongoDBReplicaSet replicaSet = makeAndStartReplicaSet(3, "replace-primary"); - final MongoDBServer replaced = replicaSet.getPrimary(); - replicaSet.replaceMember(replaced.getId()); - Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Runnable() { - @Override - public void run() { - assertEquals(replicaSet.getCurrentSize().intValue(), 3); - for (Entity member : replicaSet.getMembers()) { - assertNotEquals(member.getId(), replaced.getId()); - } - assertNotNull(replicaSet.getPrimary()); - assertNotEquals(replicaSet.getPrimary().getId(), replaced.getId(), "Expected a new primary to have been elected"); - } - }); - } - - @Test(groups = "Integration") - public void testRemovePrimary() { - final MongoDBReplicaSet replicaSet = makeAndStartReplicaSet(3, "remove-primary"); - final MongoDBServer removed = replicaSet.getPrimary(); - - replicaSet.removeMember(removed); - removed.stop(); - Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Runnable() { - @Override - public void run() { - assertEquals(replicaSet.getCurrentSize().intValue(), 2); - for (Entity member : replicaSet.getMembers()) { - assertNotEquals(member.getId(), removed.getId()); - } - assertNotNull(replicaSet.getPrimary()); - assertNotEquals(replicaSet.getPrimary().getId(), removed.getId(), "Expected a new primary to have been elected"); - } - }); - } -}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBRestartIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBRestartIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBRestartIntegrationTest.java deleted file mode 100644 index 3d21055..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBRestartIntegrationTest.java +++ /dev/null @@ -1,42 +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.entity.nosql.mongodb; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.Test; - -import brooklyn.entity.basic.AbstractSoftwareProcessRestartIntegrationTest; -import brooklyn.entity.basic.SoftwareProcess; -import brooklyn.entity.proxying.EntitySpec; - -/** - * Tests restart of the software *process* (as opposed to the VM). - */ -@Test(groups="Integration") -public class MongoDBRestartIntegrationTest extends AbstractSoftwareProcessRestartIntegrationTest { - - @SuppressWarnings("unused") - private static final Logger LOG = LoggerFactory.getLogger(MongoDBRestartIntegrationTest.class); - - @Override - protected EntitySpec<? extends SoftwareProcess> newEntitySpec() { - return EntitySpec.create(MongoDBServer.class); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBSoftLayerLiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBSoftLayerLiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBSoftLayerLiveTest.java deleted file mode 100644 index 84620d7..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBSoftLayerLiveTest.java +++ /dev/null @@ -1,56 +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.entity.nosql.mongodb; - -import static org.testng.Assert.assertEquals; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableList; -import com.mongodb.DBObject; - -import brooklyn.entity.AbstractSoftlayerLiveTest; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; - -public class MongoDBSoftLayerLiveTest extends AbstractSoftlayerLiveTest { - - @SuppressWarnings("unused") - private static final Logger LOG = LoggerFactory.getLogger(MongoDBSoftLayerLiveTest.class); - - @Override - protected void doTest(Location loc) throws Exception { - MongoDBServer entity = app.createAndManageChild(EntitySpec.create(MongoDBServer.class) - .configure("mongodbConfTemplateUrl", "classpath:///test-mongodb.conf")); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(entity, MongoDBServer.SERVICE_UP, true); - - String id = MongoDBTestHelper.insert(entity, "hello", "world!"); - DBObject docOut = MongoDBTestHelper.getById(entity, id); - assertEquals(docOut.get("hello"), "world!"); - } - - @Test(enabled=false) - public void testDummy() {} // Convince TestNG IDE integration that this really does have test methods - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBTestHelper.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBTestHelper.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBTestHelper.java deleted file mode 100644 index a5cf79d..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBTestHelper.java +++ /dev/null @@ -1,124 +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.entity.nosql.mongodb; - -import java.net.UnknownHostException; -import java.util.List; -import java.util.Map; - -import org.bson.types.ObjectId; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.Throwables; -import com.google.common.net.HostAndPort; -import com.mongodb.BasicDBObject; -import com.mongodb.CommandResult; -import com.mongodb.DB; -import com.mongodb.DBCollection; -import com.mongodb.DBObject; -import com.mongodb.MongoClient; -import com.mongodb.ReadPreference; - -import brooklyn.location.access.BrooklynAccessUtils; - -public class MongoDBTestHelper { - - private static final Logger LOG = LoggerFactory.getLogger(MongoDBTestHelper.class); - - private static final String TEST_DB = "brooklyn_test"; - private static final String TEST_COLLECTION = "test_collection"; - private static final String ADMIN_DB = "admin"; - - /** - * Inserts a new object with { key: value } at given server. - * @return The new document's id - */ - public static String insert(AbstractMongoDBServer entity, String key, Object value) { - LOG.info("Inserting {}:{} at {}", new Object[]{key, value, entity}); - MongoClient mongoClient = clientForServer(entity); - try { - DB db = mongoClient.getDB(TEST_DB); - DBCollection testCollection = db.getCollection(TEST_COLLECTION); - BasicDBObject doc = new BasicDBObject(key, value); - testCollection.insert(doc); - ObjectId id = (ObjectId) doc.get("_id"); - return id.toString(); - } finally { - mongoClient.close(); - } - } - - /** @return The {@link DBObject} representing the object with the given id */ - public static DBObject getById(AbstractMongoDBServer entity, String id) { - LOG.info("Getting {} from {}", new Object[]{id, entity}); - MongoClient mongoClient = clientForServer(entity); - // Secondary preferred means the driver will let us read from secondaries too. - mongoClient.setReadPreference(ReadPreference.secondaryPreferred()); - try { - DB db = mongoClient.getDB(TEST_DB); - DBCollection testCollection = db.getCollection(TEST_COLLECTION); - return testCollection.findOne(new BasicDBObject("_id", new ObjectId(id))); - } finally { - mongoClient.close(); - } - } - - public static List<String> getDatabaseNames(AbstractMongoDBServer entity) { - LOG.info("Getting database names from {}", entity); - MongoClient mongoClient = clientForServer(entity); - try { - return mongoClient.getDatabaseNames(); - } finally { - mongoClient.close(); - } - } - - public static boolean isConfigServer(AbstractMongoDBServer entity) { - LOG.info("Checking if {} is a config server", entity); - MongoClient mongoClient = clientForServer(entity); - try { - DB db = mongoClient.getDB(ADMIN_DB); - CommandResult commandResult = db.command("getCmdLineOpts"); - Map<?, ?> parsedArgs = (Map<?, ?>)commandResult.get("parsed"); - if (parsedArgs == null) return false; - Boolean configServer = (Boolean)parsedArgs.get("configsvr"); - if (configServer != null) { - // v2.5 format - return Boolean.TRUE.equals(configServer); - } else { - // v2.6 format - String role = (String) ((Map)parsedArgs.get("sharding")).get("clusterRole"); - return "configsvr".equals(role); - } - } finally { - mongoClient.close(); - } - } - - private static MongoClient clientForServer(AbstractMongoDBServer server) { - try { - HostAndPort hap = BrooklynAccessUtils.getBrooklynAccessibleAddress(server, server.getAttribute(MongoDBServer.PORT)); - return new MongoClient(hap.getHostText(), hap.getPort()); - } catch (UnknownHostException e) { - // Fail whatever test called this method. - throw Throwables.propagate(e); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/ReplicaSetConfigTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/ReplicaSetConfigTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/ReplicaSetConfigTest.java deleted file mode 100644 index a35c893..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/ReplicaSetConfigTest.java +++ /dev/null @@ -1,239 +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.entity.nosql.mongodb; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotEquals; -import static org.testng.Assert.assertTrue; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import javax.annotation.Nullable; - -import org.bson.BSONObject; -import org.bson.BasicBSONObject; -import org.bson.types.BasicBSONList; -import org.testng.annotations.Test; - -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.collect.FluentIterable; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; -import com.google.common.net.HostAndPort; - -public class ReplicaSetConfigTest { - - // true if object has key "votes" that is > 1 - static Predicate<BasicBSONObject> IS_VOTING_MEMBER = new Predicate<BasicBSONObject>() { - @Override public boolean apply(@Nullable BasicBSONObject input) { - return input != null && input.containsField("votes") && input.getInt("votes") > 0; - } - }; - - private BasicBSONObject makeSetMember(Integer id, String host) { - return new BasicBSONObject(ImmutableMap.of("_id", id, "host", host)); - } - - private BasicBSONObject makeSetConfig(String id, Integer version, BasicBSONObject... members) { - BasicBSONList memberList = new BasicBSONList(); - memberList.addAll(Arrays.asList(members)); - return new BasicBSONObject(ImmutableMap.of("_id", id, "version", version, "members", memberList)); - } - - private BasicBSONObject makeSetWithNMembers(int n) { - ReplicaSetConfig setConfig = ReplicaSetConfig.builder("replica-set-name"); - for (int i = 0; i < n; i++) { - setConfig.member("host-"+i, i, i); - } - return setConfig.build(); - } - - private Collection<HostAndPort> votingMembersOfSet(BasicBSONObject config) { - BasicBSONList membersObject = BasicBSONList.class.cast(config.get("members")); - List<BasicBSONObject> members = Lists.newArrayList(); - for (Object object : membersObject) members.add(BasicBSONObject.class.cast(object)); - return FluentIterable.from(members) - .filter(IS_VOTING_MEMBER) - .transform(new Function<BasicBSONObject, HostAndPort>() { - @Override public HostAndPort apply(BasicBSONObject input) { - return HostAndPort.fromString(input.getString("host")); - } - }) - .toList(); - } - - private Collection<HostAndPort> nonVotingMembersOfSet(BasicBSONObject config) { - BasicBSONList membersObject = BasicBSONList.class.cast(config.get("members")); - List<BasicBSONObject> members = Lists.newArrayList(); - for (Object object : membersObject) members.add(BasicBSONObject.class.cast(object)); - return FluentIterable - .from(members) - .filter(Predicates.not(IS_VOTING_MEMBER)) - .transform(new Function<BasicBSONObject, HostAndPort>() { - @Override public HostAndPort apply(BasicBSONObject input) { - return HostAndPort.fromString(input.getString("host")); - } - }) - .toList(); - } - - @Test - public void testCreateFromScratch() { - BasicBSONObject config = ReplicaSetConfig.builder("rs") - .member("host-a", 12345, 1) - .member("host-b", 54321, 2) - .build(); - assertEquals(config.get("_id"), "rs"); - assertEquals(config.getInt("version"), 1); - assertTrue(config.get("members") instanceof BasicBSONList); - BasicBSONList members = (BasicBSONList) config.get("members"); - assertEquals(members.size(), 2); - } - - @Test - public void testCreateFromExistingConfig() { - // Replica set of one member - int version = 44; - BasicBSONObject config = makeSetConfig("replica-set-name", version, makeSetMember(33, "example.com:7777")); - - // Use existing set to add two more members - BasicBSONObject newConfig = ReplicaSetConfig.fromExistingConfig(config) - .member("foo", 8888, 34) - .member("bar", 9999, 35) - .build(); - - assertEquals(newConfig.get("_id"), "replica-set-name"); - assertEquals(newConfig.get("version"), version + 1); - BasicBSONList members = (BasicBSONList) newConfig.get("members"); - assertEquals(members.size(), 3); - - BSONObject original = (BSONObject) members.get(0); - assertEquals(original.get("_id"), 33); - assertEquals(original.get("host"), "example.com:7777"); - - BSONObject second = (BSONObject) members.get(1); - assertEquals(second.get("_id"), 34); - assertEquals(second.get("host"), "foo:8888"); - - BSONObject third = (BSONObject) members.get(2); - assertEquals(third.get("_id"), 35); - assertEquals(third.get("host"), "bar:9999"); - } - - @Test - public void testRemoveMember() { - int version = 44; - BasicBSONObject config = makeSetConfig("replica-set-name", version, - makeSetMember(33, "example.com:7777"), - makeSetMember(34, "example.com:7778")); - - // Use existing set to add two more members - BasicBSONObject newConfig = ReplicaSetConfig.fromExistingConfig(config) - .remove("example.com", 7777) - .build(); - - assertEquals(newConfig.get("version"), version + 1); - BasicBSONList members = (BasicBSONList) newConfig.get("members"); - assertEquals(members.size(), 1); - assertEquals(BSONObject.class.cast(members.get(0)).get("host"), "example.com:7778"); - - newConfig = ReplicaSetConfig.fromExistingConfig(newConfig) - .remove("example.com", 7778) - .build(); - - members = (BasicBSONList) newConfig.get("members"); - assertTrue(members.isEmpty()); - } - - @Test - public void testRemoveNonExistentMemberHasNoEffect() { - BasicBSONObject config = makeSetConfig("replica-set-name", 1, - makeSetMember(33, "example.com:7777"), - makeSetMember(34, "example.com:7778")); - - BasicBSONList members = (BasicBSONList) config.get("members"); - assertEquals(members.size(), 2); - - BasicBSONObject altered = ReplicaSetConfig.fromExistingConfig(config) - .remove("foo", 99) - .build(); - - members = (BasicBSONList) altered.get("members"); - assertEquals(members.size(), 2); - } - - @Test - public void testSetOfFourMembersHasThreeVoters() { - BasicBSONObject config = makeSetWithNMembers(4); - assertEquals(votingMembersOfSet(config).size(), 3, "Expected three voters in set with four members"); - assertEquals(nonVotingMembersOfSet(config).size(), 1, "Expected one non-voter in set with four members"); - } - - @Test - public void testFourthServerOfFourIsGivenVoteWhenAnotherServerIsRemoved() { - BasicBSONObject config = makeSetWithNMembers(4); - HostAndPort toRemove = votingMembersOfSet(config).iterator().next(); - - BasicBSONObject updated = ReplicaSetConfig.fromExistingConfig(config) - .remove(toRemove) - .build(); - - assertEquals(votingMembersOfSet(updated).size(), 3); - assertTrue(nonVotingMembersOfSet(updated).isEmpty()); - - BasicBSONList newMembers = BasicBSONList.class.cast(updated.get("members")); - for (Object object : newMembers) { - BasicBSONObject member = BasicBSONObject.class.cast(object); - HostAndPort memberHostAndPort = HostAndPort.fromString(member.getString("host")); - assertNotEquals(memberHostAndPort, toRemove); - } - } - - @Test - public void testMaximumNumberOfVotersIsLimited() { - BasicBSONObject config = makeSetWithNMembers(ReplicaSetConfig.MAXIMUM_REPLICA_SET_SIZE); - int voters = ReplicaSetConfig.MAXIMUM_VOTING_MEMBERS; - int nonVoters = ReplicaSetConfig.MAXIMUM_REPLICA_SET_SIZE - voters; - assertEquals(votingMembersOfSet(config).size(), voters, "Expected number of voters in max-size set to be " + voters); - assertEquals(nonVotingMembersOfSet(config).size(), nonVoters, "Expected number of non-voters in max-size set to be " + nonVoters); - } - - @Test(expectedExceptions = IllegalStateException.class) - public void testMoreMembersThanMaximumAllowsRejected() { - makeSetWithNMembers(ReplicaSetConfig.MAXIMUM_REPLICA_SET_SIZE + 1); - } - - @Test - public void testPrimaryGivenVoteWhenLastInMemberList() { - BasicBSONObject config = ReplicaSetConfig.builder("rs") - .member("host-a", 1, 1) - .member("host-b", 2, 2) - .member("host-c", 3, 3) - .member("host-d", 4, 4) - .primary(HostAndPort.fromParts("host-d", 4)) - .build(); - assertEquals(votingMembersOfSet(config).size(), 3); - assertEquals(nonVotingMembersOfSet(config).size(), 1); - assertTrue(votingMembersOfSet(config).contains(HostAndPort.fromParts("host-d", 4))); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBConfigServerIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBConfigServerIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBConfigServerIntegrationTest.java deleted file mode 100644 index 4aa8f69..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBConfigServerIntegrationTest.java +++ /dev/null @@ -1,66 +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.entity.nosql.mongodb.sharding; - -import static org.testng.Assert.assertFalse; - -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 brooklyn.entity.nosql.mongodb.MongoDBServer; -import brooklyn.entity.nosql.mongodb.MongoDBTestHelper; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.test.Asserts; -import brooklyn.test.EntityTestUtils; -import brooklyn.test.entity.TestApplication; - -import com.google.common.collect.ImmutableList; - -public class MongoDBConfigServerIntegrationTest { - private TestApplication app; - private LocalhostMachineProvisioningLocation localhostProvisioningLocation; - - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - localhostProvisioningLocation = new LocalhostMachineProvisioningLocation(); - app = ApplicationBuilder.newManagedApp(TestApplication.class); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - - @Test(groups = "Integration") - public void testCanStartAndStop() throws Exception { - MongoDBConfigServer entity = app.createAndManageChild(EntitySpec.create(MongoDBConfigServer.class) - .configure(MongoDBServer.MONGODB_CONF_TEMPLATE_URL, "classpath:///test-mongodb-configserver.conf")); - app.start(ImmutableList.of(localhostProvisioningLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(entity, Startable.SERVICE_UP, true); - Asserts.assertTrue(MongoDBTestHelper.isConfigServer(entity), "Server is not a config server"); - entity.stop(); - assertFalse(entity.getAttribute(Startable.SERVICE_UP)); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentEc2LiveTest.java deleted file mode 100644 index e85a3ef..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentEc2LiveTest.java +++ /dev/null @@ -1,83 +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.entity.nosql.mongodb.sharding; - -import groovy.time.TimeDuration; - -import org.testng.Assert; -import org.testng.annotations.Test; - -import brooklyn.entity.AbstractEc2LiveTest; -import brooklyn.entity.Entity; -import brooklyn.entity.basic.Entities; -import brooklyn.entity.nosql.mongodb.MongoDBReplicaSet; -import brooklyn.entity.nosql.mongodb.MongoDBServer; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.location.Location; -import brooklyn.test.Asserts; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; - -/** - * NOTE: These test will provision 9 machines in AWS, which can cause 'Request limit exceeded' and - * 'Exhausted available authentication methods' exceptions, depending upon current AWS load. You can - * mitigate this issue by adding the following lines to your brooklyn.properties: - * - * brooklyn.location.jclouds.machineCreateAttempts=3 - * brooklyn.jclouds.aws-ec2.maxConcurrentMachineCreations=5 - */ -@Test -public class MongoDBShardedDeploymentEc2LiveTest extends AbstractEc2LiveTest { - - private static final Integer ROUTER_CLUSTER_SIZE = 2; - private static final Integer REPLICASET_SIZE = 2; - private static final Integer SHARD_CLUSTER_SIZE = 3; - private static final TimeDuration TIMEOUT = new TimeDuration(0, 3, 0, 0); - - @Override - protected void doTest(Location loc) throws Exception { - final MongoDBShardedDeployment deployment = app.createAndManageChild(EntitySpec.create(MongoDBShardedDeployment.class) - .configure(MongoDBShardedDeployment.INITIAL_ROUTER_CLUSTER_SIZE, ROUTER_CLUSTER_SIZE) - .configure(MongoDBShardedDeployment.SHARD_REPLICASET_SIZE, REPLICASET_SIZE) - .configure(MongoDBShardedDeployment.INITIAL_SHARD_CLUSTER_SIZE, SHARD_CLUSTER_SIZE) - .configure(MongoDBShardedDeployment.MONGODB_REPLICA_SET_SPEC, EntitySpec.create(MongoDBReplicaSet.class) - .configure(MongoDBServer.MONGODB_CONF_TEMPLATE_URL, "classpath:///test-mongodb.conf") - .configure(MongoDBReplicaSet.MEMBER_SPEC, EntitySpec.create(MongoDBServer.class))) - .configure(MongoDBShardedDeployment.MONGODB_ROUTER_SPEC, EntitySpec.create(MongoDBRouter.class) - .configure(MongoDBConfigServer.MONGODB_CONF_TEMPLATE_URL, "classpath:///test-mongodb-router.conf")) - .configure(MongoDBShardedDeployment.MONGODB_CONFIG_SERVER_SPEC, EntitySpec.create(MongoDBConfigServer.class) - .configure(MongoDBConfigServer.MONGODB_CONF_TEMPLATE_URL, "classpath:///test-mongodb-configserver.conf"))); - - app.start(ImmutableList.of(loc)); - - Entities.dumpInfo(app); - - Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Runnable() { - public void run() { - Assert.assertEquals(deployment.getRouterCluster().getCurrentSize(), ROUTER_CLUSTER_SIZE); - Assert.assertEquals(deployment.getShardCluster().getCurrentSize(), SHARD_CLUSTER_SIZE); - Assert.assertEquals(deployment.getConfigCluster().getCurrentSize(), MongoDBShardedDeployment.CONFIG_CLUSTER_SIZE.getDefaultValue()); - for (Entity entity : deployment.getShardCluster().getMembers()) { - Assert.assertEquals(((MongoDBReplicaSet) entity).getCurrentSize(), REPLICASET_SIZE); - } - } - }); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java deleted file mode 100644 index 9348431..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java +++ /dev/null @@ -1,129 +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.entity.nosql.mongodb.sharding; - -import org.testng.Assert; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.BrooklynAppLiveTestSupport; -import brooklyn.entity.Entity; -import brooklyn.entity.nosql.mongodb.AbstractMongoDBServer; -import brooklyn.entity.nosql.mongodb.MongoDBReplicaSet; -import brooklyn.entity.nosql.mongodb.MongoDBServer; -import brooklyn.entity.nosql.mongodb.MongoDBTestHelper; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.test.EntityTestUtils; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.mongodb.DBObject; - -public class MongoDBShardedDeploymentIntegrationTest extends BrooklynAppLiveTestSupport { - - private static final Integer ROUTER_CLUSTER_SIZE = 2; - private static final Integer REPLICASET_SIZE = 2; - private static final Integer SHARD_CLUSTER_SIZE = 3; - - private LocalhostMachineProvisioningLocation localhostProvisioningLocation; - - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - super.setUp(); - localhostProvisioningLocation = app.newLocalhostProvisioningLocation(); - } - - private MongoDBShardedDeployment makeAndStartDeployment() { - final MongoDBShardedDeployment deployment = app.createAndManageChild(EntitySpec.create(MongoDBShardedDeployment.class) - .configure(MongoDBShardedDeployment.INITIAL_ROUTER_CLUSTER_SIZE, ROUTER_CLUSTER_SIZE) - .configure(MongoDBShardedDeployment.SHARD_REPLICASET_SIZE, REPLICASET_SIZE) - .configure(MongoDBShardedDeployment.INITIAL_SHARD_CLUSTER_SIZE, SHARD_CLUSTER_SIZE) - .configure(MongoDBShardedDeployment.MONGODB_REPLICA_SET_SPEC, EntitySpec.create(MongoDBReplicaSet.class) - .configure(MongoDBServer.MONGODB_CONF_TEMPLATE_URL, "classpath:///test-mongodb.conf") - .configure(MongoDBReplicaSet.MEMBER_SPEC, EntitySpec.create(MongoDBServer.class))) - .configure(MongoDBShardedDeployment.MONGODB_ROUTER_SPEC, EntitySpec.create(MongoDBRouter.class) - .configure(MongoDBConfigServer.MONGODB_CONF_TEMPLATE_URL, "classpath:///test-mongodb-router.conf")) - .configure(MongoDBShardedDeployment.MONGODB_CONFIG_SERVER_SPEC, EntitySpec.create(MongoDBConfigServer.class) - .configure(MongoDBConfigServer.MONGODB_CONF_TEMPLATE_URL, "classpath:///test-mongodb-configserver.conf"))); - app.start(ImmutableList.of(localhostProvisioningLocation)); - EntityTestUtils.assertAttributeEqualsEventually(deployment, Startable.SERVICE_UP, true); - return deployment; - } - - @Test(groups = "Integration") - public void testCanStartAndStopDeployment() { - MongoDBShardedDeployment deployment = makeAndStartDeployment(); - deployment.stop(); - EntityTestUtils.assertAttributeEqualsEventually(deployment, Startable.SERVICE_UP, false); - } - - @Test(groups = "Integration") - public void testDeployedStructure() { - MongoDBShardedDeployment deployment = makeAndStartDeployment(); - MongoDBConfigServerCluster configServers = deployment.getConfigCluster(); - MongoDBRouterCluster routers = deployment.getRouterCluster(); - MongoDBShardCluster shards = deployment.getShardCluster(); - Assert.assertNotNull(configServers); - Assert.assertNotNull(routers); - Assert.assertNotNull(shards); - Assert.assertEquals(configServers.getCurrentSize(), MongoDBShardedDeployment.CONFIG_CLUSTER_SIZE.getDefaultValue()); - Assert.assertEquals(routers.getCurrentSize(), ROUTER_CLUSTER_SIZE); - Assert.assertEquals(shards.getCurrentSize(), SHARD_CLUSTER_SIZE); - for (Entity entity : deployment.getShardCluster().getMembers()) { - Assert.assertEquals(((MongoDBReplicaSet)entity).getCurrentSize(), REPLICASET_SIZE); - } - for (Entity entity : configServers.getMembers()) { - checkEntityTypeAndServiceUp(entity, MongoDBConfigServer.class); - } - for (Entity entity : routers.getMembers()) { - checkEntityTypeAndServiceUp(entity, MongoDBRouter.class); - } - for (Entity entity : shards.getMembers()) { - checkEntityTypeAndServiceUp(entity, MongoDBReplicaSet.class); - } - } - - @Test(groups = "Integration") - private void testReadAndWriteDifferentRouters() { - MongoDBShardedDeployment deployment = makeAndStartDeployment(); - EntityTestUtils.assertAttributeEqualsEventually(deployment, Startable.SERVICE_UP, true); - MongoDBRouter router1 = (MongoDBRouter) Iterables.get(deployment.getRouterCluster().getMembers(), 0); - MongoDBRouter router2 = (MongoDBRouter) Iterables.get(deployment.getRouterCluster().getMembers(), 1); - EntityTestUtils.assertAttributeEqualsEventually(router1, Startable.SERVICE_UP, true); - EntityTestUtils.assertAttributeEqualsEventually(router2, Startable.SERVICE_UP, true); - - String documentId = MongoDBTestHelper.insert(router1, "meaning-of-life", 42); - DBObject docOut = MongoDBTestHelper.getById(router2, documentId); - Assert.assertEquals(docOut.get("meaning-of-life"), 42); - - for (Entity entity : Iterables.filter(app.getManagementContext().getEntityManager().getEntitiesInApplication(app), AbstractMongoDBServer.class)) { - EntityTestUtils.assertAttributeEqualsEventually(entity, Startable.SERVICE_UP, true); - } - } - - private void checkEntityTypeAndServiceUp(Entity entity, Class<? extends Entity> expectedClass) { - Assert.assertNotNull(entity); - Assert.assertTrue(expectedClass.isAssignableFrom(entity.getClass()), "expected: " + expectedClass - + " on interfaces, found: " + entity.getClass().getInterfaces()); - EntityTestUtils.assertAttributeEqualsEventually(entity, Startable.SERVICE_UP, true); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/redis/JedisSupport.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/JedisSupport.java b/software/nosql/src/test/java/brooklyn/entity/nosql/redis/JedisSupport.java deleted file mode 100644 index fba0f59..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/JedisSupport.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.entity.nosql.redis; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; -import redis.clients.jedis.Jedis; - -import com.google.common.base.Strings; - -/** - * {@link RedisStore} testing using Jedis API. - */ -public class JedisSupport { - private static final String TEST_DATA = Strings.repeat("0123456789", 16); - - private RedisStore redis; - - public JedisSupport(RedisStore redis) { - this.redis = redis; - } - - /** - * Exercise the {@link RedisStore} using the Jedis API. - */ - public void redisTest() throws Exception { - writeData("brooklyn", TEST_DATA); - String result = readData("brooklyn"); - assertEquals(result, TEST_DATA); - } - - public void writeData(String key, String val) throws Exception { - Jedis client = getRedisClient(redis); - try { - client.set(key, val); - } finally { - client.disconnect(); - } - } - - public String readData(String key) throws Exception { - Jedis client = getRedisClient(redis); - try { - return client.get(key); - } finally { - client.disconnect(); - } - } - - private Jedis getRedisClient(RedisStore redis) { - int port = redis.getAttribute(RedisStore.REDIS_PORT); - String host = redis.getAttribute(RedisStore.HOSTNAME); - Jedis client = new Jedis(host, port); - client.connect(); - assertTrue(client.isConnected()); - return client; - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisClusterIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisClusterIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisClusterIntegrationTest.java deleted file mode 100644 index 7795bac..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisClusterIntegrationTest.java +++ /dev/null @@ -1,109 +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.entity.nosql.redis; - -import static org.testng.Assert.assertEquals; - -import java.util.Collection; -import java.util.List; -import java.util.concurrent.Callable; - -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 brooklyn.entity.group.DynamicCluster; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.Location; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.test.Asserts; -import brooklyn.test.EntityTestUtils; -import brooklyn.test.entity.TestApplication; - -import com.google.common.collect.ImmutableList; - -public class RedisClusterIntegrationTest { - - private TestApplication app; - private Location loc; - private RedisCluster cluster; - - @BeforeMethod(alwaysRun=true) - public void setup() { - app = ApplicationBuilder.newManagedApp(TestApplication.class); - loc = new LocalhostMachineProvisioningLocation(); - } - - @AfterMethod(alwaysRun=true) - public void shutdown() { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - - @Test(groups = { "Integration" }) - public void testRedisClusterReplicates() throws Exception { - final String key = "mykey"; - final String val = "1234567890"; - - cluster = app.createAndManageChild(EntitySpec.create(RedisCluster.class) - .configure(DynamicCluster.INITIAL_SIZE, 3)); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(cluster, Startable.SERVICE_UP, true); - - RedisStore master = cluster.getMaster(); - List<RedisSlave> slaves = ImmutableList.<RedisSlave>copyOf((Collection)cluster.getSlaves().getMembers()); - - assertEquals(slaves.size(), 3); - - JedisSupport viaMaster = new JedisSupport(master); - viaMaster.writeData(key, val); - assertEquals(viaMaster.readData(key), val); - - for (RedisSlave slave : slaves) { - final JedisSupport viaSlave = new JedisSupport(slave); - Asserts.succeedsEventually(new Callable<Void>() { - @Override public Void call() throws Exception { - assertEquals(viaSlave.readData(key), val); - return null; - }}); - } - - // Check that stopping slave will not stop anything else - // (it used to stop master because wasn't supplying port!) - slaves.get(0).stop(); - EntityTestUtils.assertAttributeEqualsEventually(slaves.get(0), Startable.SERVICE_UP, false); - - assertEquals(master.getAttribute(Startable.SERVICE_UP), Boolean.TRUE); - for (RedisSlave slave : slaves.subList(1, slaves.size())) { - assertEquals(slave.getAttribute(Startable.SERVICE_UP), Boolean.TRUE); - } - - // Check that stopping cluster will stop everything - cluster.stop(); - - EntityTestUtils.assertAttributeEqualsEventually(cluster, Startable.SERVICE_UP, false); - assertEquals(master.getAttribute(Startable.SERVICE_UP), Boolean.FALSE); - for (RedisSlave slave : slaves) { - assertEquals(slave.getAttribute(Startable.SERVICE_UP), Boolean.FALSE); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java deleted file mode 100644 index a7d1fac..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java +++ /dev/null @@ -1,66 +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.entity.nosql.redis; - -import javax.annotation.Nullable; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.Test; - -import brooklyn.entity.AbstractEc2LiveTest; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; - -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; - -public class RedisEc2LiveTest extends AbstractEc2LiveTest { - - @SuppressWarnings("unused") - private static final Logger LOG = LoggerFactory.getLogger(RedisEc2LiveTest.class); - - @Override - protected void doTest(Location loc) throws Exception { - RedisStore redis = app.createAndManageChild(EntitySpec.create(RedisStore.class)); - app.start(ImmutableList.of(loc)); - EntityTestUtils.assertAttributeEqualsEventually(redis, RedisStore.SERVICE_UP, true); - - JedisSupport support = new JedisSupport(redis); - support.redisTest(); - // Confirm sensors are valid - EntityTestUtils.assertPredicateEventuallyTrue(redis, new Predicate<RedisStore>() { - @Override public boolean apply(@Nullable RedisStore input) { - return input != null && - input.getAttribute(RedisStore.UPTIME) > 0 && - input.getAttribute(RedisStore.TOTAL_COMMANDS_PROCESSED) >= 0 && - input.getAttribute(RedisStore.TOTAL_CONNECTIONS_RECEIVED) >= 0 && - input.getAttribute(RedisStore.EXPIRED_KEYS) >= 0 && - input.getAttribute(RedisStore.EVICTED_KEYS) >= 0 && - input.getAttribute(RedisStore.KEYSPACE_HITS) >= 0 && - input.getAttribute(RedisStore.KEYSPACE_MISSES) >= 0; - } - }); - - } - - @Test(enabled=false) - public void testDummy() {} // Convince testng IDE integration that this really does have test methods -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisIntegrationTest.java deleted file mode 100644 index 9ecf445..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisIntegrationTest.java +++ /dev/null @@ -1,119 +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.entity.nosql.redis; - -import javax.annotation.Nullable; - -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.basic.Entities; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.Location; -import brooklyn.location.basic.PortRanges; -import brooklyn.test.EntityTestUtils; -import brooklyn.test.entity.TestApplication; -import brooklyn.util.time.Duration; - -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; - -/** - * Test the operation of the {@link RedisStore} class. - */ -public class RedisIntegrationTest { - - private TestApplication app; - private Location loc; - private RedisStore redis; - - @BeforeMethod(alwaysRun=true) - public void setup() { - app = TestApplication.Factory.newManagedInstanceForTests(); - loc = app.newLocalhostProvisioningLocation(); - } - - @AfterMethod(alwaysRun=true) - public void shutdown() { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - - /** - * Test that the server starts up and sets SERVICE_UP correctly. - */ - @Test(groups = { "Integration" }) - public void canStartupAndShutdown() throws Exception { - redis = app.createAndManageChild(EntitySpec.create(RedisStore.class)); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(redis, Startable.SERVICE_UP, true); - - redis.stop(); - - EntityTestUtils.assertAttributeEqualsEventually(redis, Startable.SERVICE_UP, false); - } - - /** - * Test that a client can connect to the service. - */ - @Test(groups = { "Integration" }) - public void testRedisConnection() throws Exception { - redis = app.createAndManageChild(EntitySpec.create(RedisStore.class)); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(redis, Startable.SERVICE_UP, true); - - JedisSupport support = new JedisSupport(redis); - support.redisTest(); - } - - /** - * Test we get sensors from an instance on a non-default port - */ - @Test(groups = { "Integration" }) - public void testNonStandardPort() throws Exception { - redis = app.createAndManageChild(EntitySpec.create(RedisStore.class) - .configure(RedisStore.REDIS_PORT, PortRanges.fromString("10000+"))); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(redis, Startable.SERVICE_UP, true); - JedisSupport support = new JedisSupport(redis); - support.redisTest(); - - // Increase timeout because test was failing on jenkins sometimes. The log shows only one - // call to `info server` (for obtaining uptime) which took 26 seconds; then 4 seconds later - // this assert failed (with it checking every 500ms). The response did correctly contain - // `uptime_in_seconds:27`. - EntityTestUtils.assertPredicateEventuallyTrue(ImmutableMap.of("timeout", Duration.FIVE_MINUTES), redis, new Predicate<RedisStore>() { - @Override public boolean apply(@Nullable RedisStore input) { - return input != null && - input.getAttribute(RedisStore.UPTIME) > 0 && - input.getAttribute(RedisStore.TOTAL_COMMANDS_PROCESSED) >= 0 && - input.getAttribute(RedisStore.TOTAL_CONNECTIONS_RECEIVED) >= 0 && - input.getAttribute(RedisStore.EXPIRED_KEYS) >= 0 && - input.getAttribute(RedisStore.EVICTED_KEYS) >= 0 && - input.getAttribute(RedisStore.KEYSPACE_HITS) >= 0 && - input.getAttribute(RedisStore.KEYSPACE_MISSES) >= 0; - } - }); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakClusterEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakClusterEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakClusterEc2LiveTest.java deleted file mode 100644 index 3f9e7d9..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakClusterEc2LiveTest.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.entity.nosql.riak; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.Test; - -import brooklyn.entity.AbstractEc2LiveTest; -import brooklyn.entity.basic.Attributes; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Iterables; - -public class RiakClusterEc2LiveTest extends AbstractEc2LiveTest { - @SuppressWarnings("unused") - private static final Logger LOG = LoggerFactory.getLogger(RiakNodeEc2LiveTest.class); - - @Override - protected void doTest(Location loc) throws Exception { - RiakCluster cluster = app.createAndManageChild(EntitySpec.create(RiakCluster.class) - .configure(RiakCluster.INITIAL_SIZE, 3) - .configure(RiakCluster.MEMBER_SPEC, EntitySpec.create(RiakNode.class))); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(cluster, RiakNode.SERVICE_UP, true); - - RiakNode first = (RiakNode) Iterables.get(cluster.getMembers(), 0); - RiakNode second = (RiakNode) Iterables.get(cluster.getMembers(), 1); - - assertNodesUpAndInCluster(first, second); - - EntityTestUtils.assertAttributeEqualsEventually(cluster, Attributes.SERVICE_UP, true); - } - - private void assertNodesUpAndInCluster(final RiakNode... nodes) { - for (final RiakNode node : nodes) { - EntityTestUtils.assertAttributeEqualsEventually(node, RiakNode.SERVICE_UP, true); - EntityTestUtils.assertAttributeEqualsEventually(node, RiakNode.RIAK_NODE_HAS_JOINED_CLUSTER, true); - } - } - - @Test(enabled = false) - public void testDummy() { - } // Convince TestNG IDE integration that this really does have test methods - - - @Override - public void test_Ubuntu_12_0() throws Exception { - //Override to add the custom securityGroup for opening Riak ports. - // Image: {id=us-east-1/ami-d0f89fb9, providerId=ami-d0f89fb9, name=ubuntu/images/ebs/ubuntu-precise-12.04-amd64-server-20130411.1, location={scope=REGION, id=us-east-1, description=us-east-1, parent=aws-ec2, iso3166Codes=[US-VA]}, os={family=ubuntu, arch=paravirtual, version=12.04, description=099720109477/ubuntu/images/ebs/ubuntu-precise-12.04-amd64-server-20130411.1, is64Bit=true}, description=099720109477/ubuntu/images/ebs/ubuntu-precise-12.04-amd64-server-20130411.1, version=20130411.1, status=AVAILABLE[available], loginUser=ubuntu, userMetadata={owner=099720109477, rootDeviceType=ebs, virtualizationType=paravirtual, hypervisor=xen}} - runTest(ImmutableMap.of("imageId", "us-east-1/ami-d0f89fb9", "loginUser", "ubuntu", "hardwareId", SMALL_HARDWARE_ID, "securityGroups", "RiakSecurityGroup")); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeEc2LiveTest.java deleted file mode 100644 index b3a2005..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeEc2LiveTest.java +++ /dev/null @@ -1,51 +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.entity.nosql.riak; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableList; - -import brooklyn.entity.AbstractEc2LiveTest; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; - -public class RiakNodeEc2LiveTest extends AbstractEc2LiveTest { - - @SuppressWarnings("unused") - private static final Logger LOG = LoggerFactory.getLogger(RiakNodeEc2LiveTest.class); - - @Override - protected void doTest(Location loc) throws Exception { - RiakNode entity = app.createAndManageChild(EntitySpec.create(RiakNode.class)); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(entity, RiakNode.SERVICE_UP, true); - - } - - @Test(enabled = false) - public void testDummy() { - } // Convince TestNG IDE integration that this really does have test methods - - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeGoogleComputeLiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeGoogleComputeLiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeGoogleComputeLiveTest.java deleted file mode 100644 index a2cc46e..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeGoogleComputeLiveTest.java +++ /dev/null @@ -1,62 +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.entity.nosql.riak; - -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; - -import brooklyn.entity.AbstractGoogleComputeLiveTest; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; - -public class RiakNodeGoogleComputeLiveTest extends AbstractGoogleComputeLiveTest { - @Override - protected void doTest(Location loc) throws Exception { - RiakCluster cluster = app.createAndManageChild(EntitySpec.create(RiakCluster.class) - .configure(RiakCluster.INITIAL_SIZE, 2) - .configure(RiakCluster.MEMBER_SPEC, EntitySpec.create(RiakNode.class))); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(cluster, RiakCluster.SERVICE_UP, true); - - RiakNode first = (RiakNode) Iterables.get(cluster.getMembers(), 0); - RiakNode second = (RiakNode) Iterables.get(cluster.getMembers(), 1); - - EntityTestUtils.assertAttributeEqualsEventually(first, RiakNode.SERVICE_UP, true); - EntityTestUtils.assertAttributeEqualsEventually(second, RiakNode.SERVICE_UP, true); - - EntityTestUtils.assertAttributeEqualsEventually(first, RiakNode.RIAK_NODE_HAS_JOINED_CLUSTER, true); - EntityTestUtils.assertAttributeEqualsEventually(second, RiakNode.RIAK_NODE_HAS_JOINED_CLUSTER, true); - - } - - @Test(groups = {"Live"}) - @Override - public void test_DefaultImage() throws Exception { - super.test_DefaultImage(); - } - - @Test(enabled = false) - public void testDummy() { - } // Convince testng IDE integration that this really does have test methods - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeIntegrationTest.java deleted file mode 100644 index 002739c..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeIntegrationTest.java +++ /dev/null @@ -1,64 +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.entity.nosql.riak; - -import static org.testng.Assert.assertFalse; - -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableList; - -import brooklyn.entity.basic.Entities; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.test.EntityTestUtils; -import brooklyn.test.entity.TestApplication; - -public class RiakNodeIntegrationTest { - - private TestApplication app; - private LocalhostMachineProvisioningLocation localhostProvisioningLocation; - - @BeforeMethod(alwaysRun = true) - public void setUp() throws Exception { - localhostProvisioningLocation = new LocalhostMachineProvisioningLocation(); - app = TestApplication.Factory.newManagedInstanceForTests(); - } - - @AfterMethod(alwaysRun = true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - - - @Test(groups = "Integration") - public void testCanStartAndStop() throws Exception { - RiakNode entity = app.createAndManageChild(EntitySpec.create(RiakNode.class) - .configure(RiakNode.SUGGESTED_VERSION, "2.1.1")); - app.start(ImmutableList.of(localhostProvisioningLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(entity, Startable.SERVICE_UP, true); - entity.stop(); - assertFalse(entity.getAttribute(Startable.SERVICE_UP)); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java deleted file mode 100644 index 123ef7f..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java +++ /dev/null @@ -1,45 +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.entity.nosql.riak; - -import org.testng.annotations.BeforeMethod; - -import com.google.common.collect.ImmutableList; - -import brooklyn.entity.AbstractSoftlayerLiveTest; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; - -public class RiakNodeSoftlayerLiveTest extends AbstractSoftlayerLiveTest { - - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - super.setUp(); - } - - @Override - protected void doTest(Location loc) throws Exception { - RiakNode entity = app.createAndManageChild(EntitySpec.create(RiakNode.class) - .configure(RiakNode.SUGGESTED_VERSION, "2.1.1")); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(entity, RiakNode.SERVICE_UP, true); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/solr/AbstractSolrServerTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/solr/AbstractSolrServerTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/solr/AbstractSolrServerTest.java deleted file mode 100644 index de77a32..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/solr/AbstractSolrServerTest.java +++ /dev/null @@ -1,41 +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.entity.nosql.solr; - -import org.testng.annotations.BeforeMethod; - -import brooklyn.entity.BrooklynAppLiveTestSupport; -import brooklyn.location.Location; - -/** - * Solr test framework for integration and live tests. - */ -public class AbstractSolrServerTest extends BrooklynAppLiveTestSupport { - - protected Location testLocation; - protected SolrServer solr; - - @BeforeMethod(alwaysRun = true) - @Override - public void setUp() throws Exception { - super.setUp(); - testLocation = app.newLocalhostProvisioningLocation(); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/solr/SolrJSupport.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/solr/SolrJSupport.java b/software/nosql/src/test/java/brooklyn/entity/nosql/solr/SolrJSupport.java deleted file mode 100644 index d8bbd81..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/solr/SolrJSupport.java +++ /dev/null @@ -1,66 +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.entity.nosql.solr; - -import java.util.Map; - -import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.client.solrj.impl.HttpSolrServer; -import org.apache.solr.common.SolrDocument; -import org.apache.solr.common.SolrInputDocument; - -import brooklyn.entity.basic.Attributes; - -/** - * Solr testing using SolrJ API. - */ -public class SolrJSupport { - - private final HttpSolrServer server; - - public SolrJSupport(SolrServer node, String core) { - this(node.getAttribute(Attributes.HOSTNAME), node.getSolrPort(), core); - } - - public SolrJSupport(String hostname, int solrPort, String core) { - server = new HttpSolrServer(String.format("http://%s:%d/solr/%s", hostname, solrPort, core)); - server.setMaxRetries(1); - server.setConnectionTimeout(5000); - server.setSoTimeout(5000); - } - - public void commit() throws Exception { - server.commit(); - } - - public void addDocument(Map<String, Object> fields) throws Exception { - SolrInputDocument doc = new SolrInputDocument(); - for (String field : fields.keySet()) { - doc.setField(field, fields.get(field)); - } - server.add(doc, 100); - } - - public Iterable<SolrDocument> getDocuments() throws Exception { - SolrQuery solrQuery = new SolrQuery(); - solrQuery.setQuery("*:*"); - - return server.query(solrQuery).getResults(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/solr/SolrServerEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/solr/SolrServerEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/solr/SolrServerEc2LiveTest.java deleted file mode 100644 index 59dcc61..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/solr/SolrServerEc2LiveTest.java +++ /dev/null @@ -1,66 +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.entity.nosql.solr; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; - -import org.apache.solr.common.SolrDocument; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import brooklyn.entity.AbstractEc2LiveTest; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; -import brooklyn.util.collections.MutableMap; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Iterables; - -public class SolrServerEc2LiveTest extends AbstractEc2LiveTest { - - private static final Logger log = LoggerFactory.getLogger(SolrServerEc2LiveTest.class); - - @Override - protected void doTest(Location loc) throws Exception { - log.info("Testing Solr on {}", loc); - - SolrServer solr = app.createAndManageChild(EntitySpec.create(SolrServer.class) - .configure(SolrServer.SOLR_CORE_CONFIG, ImmutableMap.of("example", "classpath://solr/example.tgz"))); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(solr, Startable.SERVICE_UP, true); - - SolrJSupport client = new SolrJSupport(solr, "example"); - - Iterable<SolrDocument> results = client.getDocuments(); - assertTrue(Iterables.isEmpty(results)); - - client.addDocument(MutableMap.<String, Object>of("id", "1", "description", "first")); - client.addDocument(MutableMap.<String, Object>of("id", "2", "description", "second")); - client.addDocument(MutableMap.<String, Object>of("id", "3", "description", "third")); - client.commit(); - - results = client.getDocuments(); - assertEquals(Iterables.size(results), 3); - } -}