http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeEc2LiveTest.java deleted file mode 100644 index 0131867..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeEc2LiveTest.java +++ /dev/null @@ -1,50 +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.cassandra; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import brooklyn.entity.AbstractEc2LiveTest; -import brooklyn.entity.nosql.cassandra.AstyanaxSupport.AstyanaxSample; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; - -import com.google.common.collect.ImmutableList; - -public class CassandraNodeEc2LiveTest extends AbstractEc2LiveTest { - - private static final Logger log = LoggerFactory.getLogger(CassandraNodeEc2LiveTest.class); - - @Override - protected void doTest(Location loc) throws Exception { - log.info("Testing Cassandra on {}", loc); - - CassandraNode cassandra = app.createAndManageChild(EntitySpec.create(CassandraNode.class) - .configure("thriftPort", "9876+") - .configure("clusterName", "TestCluster")); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(cassandra, CassandraNode.SERVICE_UP, true); - - AstyanaxSample astyanax = new AstyanaxSample(cassandra); - astyanax.astyanaxTest(); - } -}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeIntegrationTest.java deleted file mode 100644 index 4f780da..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeIntegrationTest.java +++ /dev/null @@ -1,190 +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.cassandra; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; - -import java.util.List; -import java.util.Map; - -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.nosql.cassandra.AstyanaxSupport.AstyanaxSample; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.event.basic.PortAttributeSensorAndConfigKey; -import brooklyn.test.Asserts; -import brooklyn.test.EntityTestUtils; -import brooklyn.test.NetworkingTestUtils; -import brooklyn.util.math.MathPredicates; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Maps; - -/** - * Cassandra integration tests. - * - * Test the operation of the {@link CassandraNode} class. - */ -public class CassandraNodeIntegrationTest extends AbstractCassandraNodeTest { - - private static final Logger LOG = LoggerFactory.getLogger(CassandraNodeIntegrationTest.class); - - public static void assertCassandraPortsAvailableEventually() { - Map<String, Integer> ports = getCassandraDefaultPorts(); - NetworkingTestUtils.assertPortsAvailableEventually(ports); - LOG.info("Confirmed Cassandra ports are available: "+ports); - } - - public static Map<String, Integer> getCassandraDefaultPorts() { - List<PortAttributeSensorAndConfigKey> ports = ImmutableList.of( - CassandraNode.GOSSIP_PORT, - CassandraNode.SSL_GOSSIP_PORT, - CassandraNode.THRIFT_PORT, - CassandraNode.NATIVE_TRANSPORT_PORT, - CassandraNode.RMI_REGISTRY_PORT); - Map<String, Integer> result = Maps.newLinkedHashMap(); - for (PortAttributeSensorAndConfigKey key : ports) { - result.put(key.getName(), key.getConfigKey().getDefaultValue().iterator().next()); - } - return result; - } - - @BeforeMethod(alwaysRun = true) - @Override - public void setUp() throws Exception { - assertCassandraPortsAvailableEventually(); - super.setUp(); - } - - @AfterMethod(alwaysRun=true) - @Override - public void tearDown() throws Exception { - super.tearDown(); - assertCassandraPortsAvailableEventually(); - } - - /** - * Test that a node starts and sets SERVICE_UP correctly. - */ - @Test(groups = "Integration") - public void canStartupAndShutdown() { - cassandra = app.createAndManageChild(EntitySpec.create(CassandraNode.class) - .configure("jmxPort", "11099+") - .configure("rmiRegistryPort", "19001+")); - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(cassandra, Startable.SERVICE_UP, true); - Entities.dumpInfo(app); - - cassandra.stop(); - - EntityTestUtils.assertAttributeEqualsEventually(cassandra, Startable.SERVICE_UP, false); - } - - /** - * Test that a keyspace and column family can be created and used with Astyanax client. - */ - @Test(groups = "Integration") - public void testConnection() throws Exception { - cassandra = app.createAndManageChild(EntitySpec.create(CassandraNode.class) - .configure("jmxPort", "11099+") - .configure("rmiRegistryPort", "19001+") - .configure("thriftPort", "9876+")); - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(cassandra, Startable.SERVICE_UP, true); - - AstyanaxSample astyanax = new AstyanaxSample(cassandra); - astyanax.astyanaxTest(); - } - - /** - * Cassandra v2 needs Java >= 1.7. If you have java 6 as the defult locally, then you can use - * something like {@code .configure("shell.env", MutableMap.of("JAVA_HOME", "/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home"))} - */ - @Test(groups = "Integration") - public void testCassandraVersion2() throws Exception { - // TODO In v2.0.10, the bin/cassandra script changed to add an additional check for JMX connectivity. - // This causes cassandera script to hang for us (presumably due to the CLASSPATH/JVM_OPTS we're passing - // in, regarding JMX agent). - // See: - // - https://issues.apache.org/jira/browse/CASSANDRA-7254 - // - https://github.com/apache/cassandra/blame/trunk/bin/cassandra#L211-216 - - String version = "2.0.9"; - String majorMinorVersion = "2.0"; - - cassandra = app.createAndManageChild(EntitySpec.create(CassandraNode.class) - .configure(CassandraNode.SUGGESTED_VERSION, version) - .configure(CassandraNode.NUM_TOKENS_PER_NODE, 256) - .configure("jmxPort", "11099+") - .configure("rmiRegistryPort", "19001+")); - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(cassandra, Startable.SERVICE_UP, true); - Entities.dumpInfo(app); - - AstyanaxSample astyanax = new AstyanaxSample(cassandra); - astyanax.astyanaxTest(); - - assertEquals(cassandra.getMajorMinorVersion(), majorMinorVersion); - - Asserts.succeedsEventually(new Runnable() { - @Override public void run() { - assertNotNull(cassandra.getAttribute(CassandraNode.TOKEN)); - assertNotNull(cassandra.getAttribute(CassandraNode.TOKENS)); - assertEquals(cassandra.getAttribute(CassandraNode.TOKENS).size(), 256, "tokens="+cassandra.getAttribute(CassandraNode.TOKENS)); - - assertEquals(cassandra.getAttribute(CassandraNode.PEERS), (Integer)256); - assertEquals(cassandra.getAttribute(CassandraNode.LIVE_NODE_COUNT), (Integer)1); - - assertTrue(cassandra.getAttribute(CassandraNode.SERVICE_UP_JMX)); - assertNotNull(cassandra.getAttribute(CassandraNode.THRIFT_PORT_LATENCY)); - - assertNotNull(cassandra.getAttribute(CassandraNode.READ_PENDING)); - assertNotNull(cassandra.getAttribute(CassandraNode.READ_ACTIVE)); - EntityTestUtils.assertAttribute(cassandra, CassandraNode.READ_COMPLETED, MathPredicates.greaterThanOrEqual(1)); - assertNotNull(cassandra.getAttribute(CassandraNode.WRITE_PENDING)); - assertNotNull(cassandra.getAttribute(CassandraNode.WRITE_ACTIVE)); - EntityTestUtils.assertAttribute(cassandra, CassandraNode.WRITE_COMPLETED, MathPredicates.greaterThanOrEqual(1)); - - assertNotNull(cassandra.getAttribute(CassandraNode.READS_PER_SECOND_LAST)); - assertNotNull(cassandra.getAttribute(CassandraNode.WRITES_PER_SECOND_LAST)); - - assertNotNull(cassandra.getAttribute(CassandraNode.THRIFT_PORT_LATENCY_IN_WINDOW)); - assertNotNull(cassandra.getAttribute(CassandraNode.READS_PER_SECOND_IN_WINDOW)); - assertNotNull(cassandra.getAttribute(CassandraNode.WRITES_PER_SECOND_IN_WINDOW)); - - // an example MXBean - EntityTestUtils.assertAttribute(cassandra, CassandraNode.MAX_HEAP_MEMORY, MathPredicates.greaterThanOrEqual(1)); - }}); - - cassandra.stop(); - - EntityTestUtils.assertAttributeEqualsEventually(cassandra, Startable.SERVICE_UP, false); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeLiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeLiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeLiveTest.java deleted file mode 100644 index 4bf087f..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/CassandraNodeLiveTest.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.cassandra; - -import java.util.Map; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; - -import brooklyn.entity.nosql.cassandra.AstyanaxSupport.AstyanaxSample; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.test.EntityTestUtils; -import brooklyn.util.collections.MutableMap; -import brooklyn.util.text.Strings; - -import com.google.common.collect.ImmutableList; - -/** - * Cassandra live tests. - * - * Test the operation of the {@link CassandraNode} class using the jclouds {@code rackspace-cloudservers-uk} - * and {@code aws-ec2} providers, with different OS images. The tests use the {@link AstyanaxSupport#astyanaxTest()} method - * to exercise the node, and will need to have {@code brooklyn.jclouds.provider.identity} and {@code .credential} - * set, usually in the {@code .brooklyn/bropoklyn.properties} file. - */ -public class CassandraNodeLiveTest extends AbstractCassandraNodeTest { - - private static final Logger log = LoggerFactory.getLogger(CassandraNodeLiveTest.class); - - @DataProvider(name = "virtualMachineData") - public Object[][] provideVirtualMachineData() { - return new Object[][] { // ImageId, Provider, Region, Description (for logging) - new Object[] { "eu-west-1/ami-0307d674", "aws-ec2", "eu-west-1", "Ubuntu Server 14.04 LTS (HVM), SSD Volume Type" }, - new Object[] { "LON/f9b690bf-88eb-43c2-99cf-391f2558732e", "rackspace-cloudservers-uk", "", "Ubuntu 12.04 LTS (Precise Pangolin)" }, - new Object[] { "LON/a84b1592-6817-42da-a57c-3c13f3cfc1da", "rackspace-cloudservers-uk", "", "CentOS 6.5 (PVHVM)" }, - }; - } - - @Test(groups = "Live", dataProvider = "virtualMachineData") - protected void testOperatingSystemProvider(String imageId, String provider, String region, String description) throws Exception { - log.info("Testing Cassandra on {}{} using {} ({})", new Object[] { provider, Strings.isNonEmpty(region) ? ":" + region : "", description, imageId }); - - Map<String, String> properties = MutableMap.of("imageId", imageId); - testLocation = app.getManagementContext().getLocationRegistry() - .resolve(provider + (Strings.isNonEmpty(region) ? ":" + region : ""), properties); - - cassandra = app.createAndManageChild(EntitySpec.create(CassandraNode.class) - .configure("thriftPort", "9876+") - .configure("clusterName", "TestCluster")); - app.start(ImmutableList.of(testLocation)); - EntityTestUtils.assertAttributeEqualsEventually(cassandra, CassandraNode.SERVICE_UP, true); - - AstyanaxSample astyanax = new AstyanaxSample(cassandra); - astyanax.astyanaxTest(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/NonNegTokenGeneratorTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/NonNegTokenGeneratorTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/NonNegTokenGeneratorTest.java deleted file mode 100644 index a88fa4f..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/NonNegTokenGeneratorTest.java +++ /dev/null @@ -1,117 +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.cassandra; - -import static org.testng.Assert.assertEquals; - -import java.math.BigInteger; -import java.util.List; - -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.nosql.cassandra.TokenGenerators.AbstractTokenGenerator; -import brooklyn.entity.nosql.cassandra.TokenGenerators.NonNeg127TokenGenerator; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; - -public class NonNegTokenGeneratorTest { - - public static final BigInteger C4_1 = new BigInteger("42535295865117307932921825928971026432"); - public static final BigInteger C4_2 = new BigInteger("85070591730234615865843651857942052864"); - public static final BigInteger C4_3 = new BigInteger("127605887595351923798765477786913079296"); - - // TODO Expect this behaviour to change when we better support dynamically growing/shrinking. - // In particular, the expected behaviour for testReturnsNullWhenClusterSizeUnknown - // and testReturnsNullWhenGrowingClusterUnknownAmount will change. - - private AbstractTokenGenerator generator; - - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - generator = new NonNeg127TokenGenerator(); - } - - @Test - public void testGetTokenForReplacementNode() { - assertEquals(generator.getTokenForReplacementNode(BigInteger.ONE), BigInteger.ZERO); - assertEquals(generator.getTokenForReplacementNode(BigInteger.ZERO), generator.max()); - assertEquals(generator.getTokenForReplacementNode(generator.max()), generator.max().subtract(BigInteger.ONE)); - } - - @Test - public void testGeneratesInitialTokens() throws Exception { - List<BigInteger> tokens = Lists.newArrayList(); - generator.growingCluster(4); - for (int i = 0; i < 4; i++) { - tokens.add(generator.newToken()); - } - - assertEquals(tokens, ImmutableList.of( - BigInteger.ZERO, - C4_1, - C4_2, - C4_3)); - } - - // Expect behaviour to be changed to better choose tokens for growing clusters - // (but eg need to take into account how busy each node is!) - @Test - public void testGeneratesTokensForGrowingCluster() throws Exception { - List<BigInteger> tokens = Lists.newArrayList(); - generator.growingCluster(4); - for (int i = 0; i < 4; i++) { - tokens.add(generator.newToken()); - } - generator.growingCluster(1); - assertEquals(generator.newToken(), C4_3.add(generator.max().add(BigInteger.ONE)).divide(BigInteger.valueOf(2))); - generator.growingCluster(2); - assertEquals(generator.newToken(), C4_1.divide(BigInteger.valueOf(2))); - assertEquals(generator.newToken(), C4_2.add(C4_1).divide(BigInteger.valueOf(2))); - } - - @Test - public void testGeneratesTokensForGrowingClusterWhenInitialSizeIsOne() throws Exception { - // initial size 1 has to do a special "average with ourself by half phase shift" computation - List<BigInteger> tokens = Lists.newArrayList(); - generator.growingCluster(1); - tokens.add(generator.newToken()); - - generator.growingCluster(1); - assertEquals(generator.newToken(), C4_2); - generator.growingCluster(2); - assertEquals(generator.newToken(), C4_3); - assertEquals(generator.newToken(), C4_1); - } - - @Test - public void testReturnsNullWhenClusterSizeUnknown() throws Exception { - assertEquals(generator.newToken(), null); - } - - @Test - public void testReturnsNullWhenGrowingClusterUnknownAmount() throws Exception { - generator.growingCluster(4); - for (int i = 0; i < 4; i++) { - generator.newToken(); - } - assertEquals(generator.newToken(), null); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/PosNegTokenGeneratorTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/PosNegTokenGeneratorTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/PosNegTokenGeneratorTest.java deleted file mode 100644 index 274d22f..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/cassandra/PosNegTokenGeneratorTest.java +++ /dev/null @@ -1,58 +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.cassandra; - -import static org.testng.Assert.assertEquals; - -import java.math.BigInteger; - -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.nosql.cassandra.TokenGenerators.AbstractTokenGenerator; -import brooklyn.entity.nosql.cassandra.TokenGenerators.PosNeg63TokenGenerator; - -public class PosNegTokenGeneratorTest { - - // TODO Expect this behaviour to change when we better support dynamically growing/shrinking. - // In particular, the expected behaviour for testReturnsNullWhenClusterSizeUnknown - // and testReturnsNullWhenGrowingClusterUnknownAmount will change. - - private AbstractTokenGenerator generator; - - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - generator = new PosNeg63TokenGenerator(); - } - - @Test - public void testGetTokenForReplacementNode() { - assertEquals(generator.getTokenForReplacementNode(BigInteger.ONE), BigInteger.ZERO); - assertEquals(generator.getTokenForReplacementNode(BigInteger.ZERO), BigInteger.ONE.negate()); - assertEquals(generator.getTokenForReplacementNode(generator.min()), generator.max()); - assertEquals(generator.getTokenForReplacementNode(generator.max()), generator.max().subtract(BigInteger.ONE)); - } - - @Test - public void testGeneratesInitialTokens() throws Exception { - generator.growingCluster(4); - assertEquals(generator.newToken(), generator.min()); - assertEquals(generator.newToken(), generator.min().add(generator.range().divide(BigInteger.valueOf(4)))); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/couchbase/CouchbaseOfflineTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/couchbase/CouchbaseOfflineTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/couchbase/CouchbaseOfflineTest.java deleted file mode 100644 index e8815f9..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/couchbase/CouchbaseOfflineTest.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.couchbase; - -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.basic.Entities; -import brooklyn.location.basic.BasicOsDetails; -import brooklyn.location.basic.BasicOsDetails.OsArchs; -import brooklyn.management.internal.LocalManagementContext; -import brooklyn.test.entity.LocalManagementContextForTests; - -public class CouchbaseOfflineTest { - - private LocalManagementContext mgmt; - - @BeforeMethod - public void setUp() { - mgmt = LocalManagementContextForTests.newInstance(); - } - - @AfterMethod - public void tearDown() { - Entities.destroyAll(mgmt); - } - - @Test - public void testResolvingDownloadLinks() { - checkOsTag("linux", OsArchs.I386, "unknown", true, "centos6.x86.rpm"); - checkOsTag("linux", OsArchs.I386, "unknown", false, "x86.rpm"); - checkOsTag("rhel", OsArchs.X_86_64, "6", true, "centos6.x86_64.rpm"); - checkOsTag("Ubuntu 14", OsArchs.X_86_64, "14.04", true, "ubuntu12.04_amd64.deb"); - checkOsTag("Ubuntu 14", OsArchs.X_86_64, "14.04", false, "x86_64.deb"); - checkOsTag("Debian 7up", OsArchs.I386, "7ish", true, "debian7_x86.deb"); - Assert.assertEquals(new CouchbaseNodeSshDriver.DownloadLinkSegmentComputer(null, true, "test").getOsTag(), "centos6.x86_64.rpm"); - Assert.assertEquals(new CouchbaseNodeSshDriver.DownloadLinkSegmentComputer(null, false, "test").getOsTag(), "x86_64.rpm"); - } - - protected void checkOsTag(String os, String arch, String version, boolean isV30, String expectedTag) { - Assert.assertEquals(new CouchbaseNodeSshDriver.DownloadLinkSegmentComputer(new BasicOsDetails(os, arch, version), isV30, "test").getOsTag(), expectedTag); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java deleted file mode 100644 index e0a5f3c..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java +++ /dev/null @@ -1,137 +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.couchbase; - -import java.util.List; -import java.util.Map; - -import org.testng.annotations.Test; - -import brooklyn.entity.AbstractEc2LiveTest; -import brooklyn.entity.group.DynamicCluster; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; - -public class CouchbaseSyncGatewayEc2LiveTest extends AbstractEc2LiveTest { - - @Override - protected void doTest(Location loc) throws Exception { - CouchbaseCluster cluster = app.createAndManageChild(EntitySpec.create(CouchbaseCluster.class) - .configure(CouchbaseNode.COUCHBASE_ADMIN_USERNAME, "Administrator") - .configure(CouchbaseNode.COUCHBASE_ADMIN_PASSWORD, "Password") - .configure(DynamicCluster.INITIAL_SIZE, 3) - .configure(CouchbaseCluster.CREATE_BUCKETS, (List<Map<String,Object>>)ImmutableList.of( - (Map<String,Object>)ImmutableMap.<String, Object>of( - "bucket", "default", - "bucket-ramsize", 100, - "bucket-type", "couchbase", - "bucket-port", 11211 - ), - (Map<String,Object>)ImmutableMap.<String, Object>of( - "bucket", "my_bucket", - "bucket-ramsize", 100, - "bucket-type", "couchbase", - "bucket-port", 11223 - ), - (Map<String,Object>)ImmutableMap.<String, Object>of( - "bucket", "another", - "bucket-ramsize", 100, - "bucket-type", "couchbase", - "bucket-port", 11224 - )) - ) - ); - CouchbaseSyncGateway gateway = app.createAndManageChild(EntitySpec.create(CouchbaseSyncGateway.class) - .configure(CouchbaseSyncGateway.COUCHBASE_SERVER, cluster) - .configure(CouchbaseSyncGateway.COUCHBASE_SERVER_BUCKET, "my_bucket") - ); - - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(gateway, Startable.SERVICE_UP, true); - } - - - // Supported operating systems - @Test(groups = {"Live"}) - @Override - public void test_Ubuntu_12_0() throws Exception { - super.test_Ubuntu_12_0(); - } - - @Test(groups = {"Live"}) - @Override - public void test_Red_Hat_Enterprise_Linux_6() throws Exception { - super.test_Red_Hat_Enterprise_Linux_6(); - } - - @Test(groups = {"Live"}) - @Override - public void test_CentOS_6_3() throws Exception { - super.test_CentOS_6_3(); - } - - // Unsupported operating systems - - @Test(groups = {"Live"}) - @Override - public void test_CentOS_5() throws Exception { - // Unsupported - // error: Failed dependencies: - // libc.so.6(GLIBC_2.7)(64bit) is needed by couchbase-server-2.5.1-1083.x86_64 - // libcrypto.so.10()(64bit) is needed by couchbase-server-2.5.1-1083.x86_64 - // libreadline.so.6()(64bit) is needed by couchbase-server-2.5.1-1083.x86_64 - // libssl.so.10()(64bit) is needed by couchbase-server-2.5.1-1083.x86_64 - // libstdc++.so.6(GLIBCXX_3.4.10)(64bit) is needed by couchbase-server-2.5.1-1083.x86_64 - // libstdc++.so.6(GLIBCXX_3.4.11)(64bit) is needed by couchbase-server-2.5.1-1083.x86_64 - // libstdc++.so.6(GLIBCXX_3.4.9)(64bit) is needed by couchbase-server-2.5.1-1083.x86_64 - // libtinfo.so.5()(64bit) is needed by couchbase-server-2.5.1-1083.x86_64 - // openssl >= 1.0.0 is needed by couchbase-server-2.5.1-1083.x86_64 - // rpmlib(FileDigests) <= 4.6.0-1 is needed by couchbase-server-2.5.1-1083.x86_64 - // rpmlib(PayloadIsXz) <= 5.2-1 is needed by couchbase-server-2.5.1-1083.x86_64 - } - - @Test(groups = {"Live"}) - @Override - public void test_Debian_6() throws Exception { - // Unsupported - } - - @Test(groups = {"Live"}) - @Override - public void test_Debian_7_2() throws Exception { - // Unsupported - } - - @Test(groups = {"Live"}) - @Override - public void test_Ubuntu_10_0() throws Exception { - // Unsupported - // Installing cannot proceed since the package 'libssl1*' is missing. - // Please install libssl1* and try again. - // $sudo apt-get install libssl1* - // - // Installing libssl1* doesn't fix the issue - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/AbstractCouchDBNodeTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/AbstractCouchDBNodeTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/AbstractCouchDBNodeTest.java deleted file mode 100644 index a7c4c77..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/AbstractCouchDBNodeTest.java +++ /dev/null @@ -1,59 +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.couchdb; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; - -import brooklyn.entity.basic.ApplicationBuilder; -import brooklyn.entity.basic.Entities; -import brooklyn.location.Location; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.test.entity.TestApplication; -import brooklyn.util.internal.TimeExtras; - -/** - * CouchDB test framework for integration and live tests. - */ -public class AbstractCouchDBNodeTest { - - private static final Logger log = LoggerFactory.getLogger(AbstractCouchDBNodeTest.class); - - static { - TimeExtras.init(); - } - - protected TestApplication app; - protected Location testLocation; - protected CouchDBNode couchdb; - - @BeforeMethod(alwaysRun = true) - public void setup() throws Exception { - app = ApplicationBuilder.newManagedApp(TestApplication.class); - testLocation = new LocalhostMachineProvisioningLocation(); - // testLocation = app.managementContext.locationRegistry.resolve("named:test"); - } - - @AfterMethod(alwaysRun = true) - public void shutdown() { - Entities.destroyAll(app.getManagementContext()); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBClusterLiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBClusterLiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBClusterLiveTest.java deleted file mode 100644 index c891e70..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBClusterLiveTest.java +++ /dev/null @@ -1,90 +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.couchdb; - -import static org.testng.Assert.assertEquals; - -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.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; -import brooklyn.test.entity.TestApplication; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; - -/** - * A live test of the {@link CouchDBCluster} entity. - * - * Tests that a two node cluster can be started on Amazon EC2 and data written on one {@link CouchDBNode} - * can be read from another, using the Astyanax API. - */ -public class CouchDBClusterLiveTest { - - // private String provider = "rackspace-cloudservers-uk"; - private String provider = "aws-ec2:eu-west-1"; - - protected TestApplication app; - protected Location testLocation; - protected CouchDBCluster cluster; - - @BeforeMethod(alwaysRun = true) - public void setup() { - app = ApplicationBuilder.newManagedApp(TestApplication.class); - testLocation = app.getManagementContext().getLocationRegistry().resolve(provider); - } - - @AfterMethod(alwaysRun = true) - public void shutdown() { - Entities.destroyAll(app.getManagementContext()); - } - - /** - * Test that a two node cluster starts up and allows access via the Astyanax API through both nodes. - */ - @Test(groups = "Live") - public void canStartupAndShutdown() throws Exception { - cluster = app.createAndManageChild(EntitySpec.create(CouchDBCluster.class) - .configure("initialSize", 2) - .configure("clusterName", "AmazonCluster")); - assertEquals(cluster.getCurrentSize().intValue(), 0); - - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(cluster, CouchDBCluster.GROUP_SIZE, 2); - Entities.dumpInfo(app); - - CouchDBNode first = (CouchDBNode) Iterables.get(cluster.getMembers(), 0); - CouchDBNode second = (CouchDBNode) Iterables.get(cluster.getMembers(), 1); - - EntityTestUtils.assertAttributeEqualsEventually(first, Startable.SERVICE_UP, true); - EntityTestUtils.assertAttributeEqualsEventually(second, Startable.SERVICE_UP, true); - - JcouchdbSupport jcouchdbFirst = new JcouchdbSupport(first); - JcouchdbSupport jcouchdbSecond = new JcouchdbSupport(second); - jcouchdbFirst.jcouchdbTest(); - jcouchdbSecond.jcouchdbTest(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeEc2LiveTest.java deleted file mode 100644 index ca0383d..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeEc2LiveTest.java +++ /dev/null @@ -1,49 +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.couchdb; - -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 com.google.common.collect.ImmutableList; - -public class CouchDBNodeEc2LiveTest extends AbstractEc2LiveTest { - - private static final Logger log = LoggerFactory.getLogger(CouchDBNodeEc2LiveTest.class); - - @Override - protected void doTest(Location loc) throws Exception { - log.info("Testing Cassandra on {}", loc); - - CouchDBNode couchdb = app.createAndManageChild(EntitySpec.create(CouchDBNode.class) - .configure("httpPort", "8000+")); - app.start(ImmutableList.of(loc)); - - EntityTestUtils.assertAttributeEqualsEventually(couchdb, Startable.SERVICE_UP, true); - - JcouchdbSupport jcouchdb = new JcouchdbSupport(couchdb); - jcouchdb.jcouchdbTest(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeIntegrationTest.java deleted file mode 100644 index f1fa31e..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeIntegrationTest.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.couchdb; - -import org.testng.annotations.Test; - -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.test.EntityTestUtils; - -import com.google.common.collect.ImmutableList; - -/** - * CouchDB integration tests. - * - * Test the operation of the {@link CouchDBNode} class. - */ -public class CouchDBNodeIntegrationTest extends AbstractCouchDBNodeTest { - - /** - * Test that a node starts and sets SERVICE_UP correctly. - */ - @Test(groups = {"Integration", "WIP"}) - public void canStartupAndShutdown() { - couchdb = app.createAndManageChild(EntitySpec.create(CouchDBNode.class) - .configure("httpPort", "8000+")); - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(couchdb, Startable.SERVICE_UP, true); - - couchdb.stop(); - - EntityTestUtils.assertAttributeEquals(couchdb, Startable.SERVICE_UP, false); - } - - /** - * Test that a node can be used with jcouchdb client. - */ - @Test(groups = {"Integration", "WIP"}) - public void testConnection() throws Exception { - couchdb = app.createAndManageChild(EntitySpec.create(CouchDBNode.class) - .configure("httpPort", "8000+")); - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(couchdb, Startable.SERVICE_UP, true); - - JcouchdbSupport jcouchdb = new JcouchdbSupport(couchdb); - jcouchdb.jcouchdbTest(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeLiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeLiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeLiveTest.java deleted file mode 100644 index 3a3c4e2..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/CouchDBNodeLiveTest.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.couchdb; - -import java.util.Map; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; - -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.test.EntityTestUtils; -import brooklyn.util.collections.MutableMap; -import brooklyn.util.text.Strings; - -import com.google.common.collect.ImmutableList; - -/** - * CouchDB live tests. - * - * Test the operation of the {@link CouchDBNode} class using the jclouds {@code rackspace-cloudservers-uk} - * and {@code aws-ec2} providers, with different OS images. The tests use the {@link JcouchdbSupport#jcouchdbTest(CouchDBNode)} method - * to exercise the node, and will need to have {@code brooklyn.jclouds.provider.identity} and {@code .credential} - * set, usually in the {@code .brooklyn/brooklyn.properties} file. - */ -public class CouchDBNodeLiveTest extends AbstractCouchDBNodeTest { - - private static final Logger log = LoggerFactory.getLogger(CouchDBNodeLiveTest.class); - - @DataProvider(name = "virtualMachineData") - public Object[][] provideVirtualMachineData() { - return new Object[][] { // ImageId, Provider, Region, Description (for logging) - new Object[] { "eu-west-1/ami-0307d674", "aws-ec2", "eu-west-1", "Ubuntu Server 14.04 LTS (HVM), SSD Volume Type" }, - new Object[] { "LON/f9b690bf-88eb-43c2-99cf-391f2558732e", "rackspace-cloudservers-uk", "", "Ubuntu 12.04 LTS (Precise Pangolin)" }, - new Object[] { "LON/a84b1592-6817-42da-a57c-3c13f3cfc1da", "rackspace-cloudservers-uk", "", "CentOS 6.5 (PVHVM)" }, - }; - } - - @Test(groups = "Live", dataProvider = "virtualMachineData") - protected void testOperatingSystemProvider(String imageId, String provider, String region, String description) throws Exception { - log.info("Testing CouchDB on {}{} using {} ({})", new Object[] { provider, Strings.isNonEmpty(region) ? ":" + region : "", description, imageId }); - - Map<String, String> properties = MutableMap.of("imageId", imageId); - testLocation = app.getManagementContext().getLocationRegistry() - .resolve(provider + (Strings.isNonEmpty(region) ? ":" + region : ""), properties); - - couchdb = app.createAndManageChild(EntitySpec.create(CouchDBNode.class) - .configure("httpPort", "12345+") - .configure("clusterName", "TestCluster")); - app.start(ImmutableList.of(testLocation)); - EntityTestUtils.assertAttributeEqualsEventually(couchdb, Startable.SERVICE_UP, true); - - JcouchdbSupport jcouchdb = new JcouchdbSupport(couchdb); - jcouchdb.jcouchdbTest(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/JcouchdbSupport.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/JcouchdbSupport.java b/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/JcouchdbSupport.java deleted file mode 100644 index 742e3b7..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/couchdb/JcouchdbSupport.java +++ /dev/null @@ -1,77 +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.couchdb; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; - -import java.util.HashMap; -import java.util.Map; - -import org.jcouchdb.db.Database; -import org.jcouchdb.db.Server; -import org.jcouchdb.db.ServerImpl; - -import brooklyn.entity.basic.Attributes; - -/** - * CouchDB test framework for integration and live tests, using jcouchdb API. - */ -public class JcouchdbSupport { - - private CouchDBNode node; - - public JcouchdbSupport(CouchDBNode node) { - this.node = node; - } - - /** - * Exercise the {@link CouchDBNode} using the jcouchdb API. - */ - public void jcouchdbTest() throws Exception { - Server server = new ServerImpl(node.getAttribute(Attributes.HOSTNAME), node.getHttpPort()); - assertTrue(server.createDatabase("brooklyn")); - - Database db = new Database(node.getAttribute(Attributes.HOSTNAME), node.getHttpPort(), "brooklyn"); - - // create a hash map document with two fields - Map<String,String> doc = new HashMap<String, String>(); - doc.put("first", "one"); - doc.put("second", "two"); - - // create the document in couchdb - int before = db.listDocuments(null, null).getTotalRows(); - db.createDocument(doc); - int after = db.listDocuments(null, null).getTotalRows(); - - assertEquals(before + 1, after); - } - - /** - * Write to a {@link CouchDBNode} using the jcouchdb API. - */ - protected void writeData() throws Exception { - } - - /** - * Read from a {@link CouchDBNode} using the jcouchdb API. - */ - protected void readData() throws Exception { - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java deleted file mode 100644 index 232918a..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java +++ /dev/null @@ -1,128 +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.elasticsearch; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; - -import java.net.URI; -import java.net.URISyntaxException; - -import org.apache.http.client.methods.HttpGet; -import org.bouncycastle.util.Strings; -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.basic.Attributes; -import brooklyn.entity.group.DynamicCluster; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.event.feed.http.HttpValueFunctions; -import brooklyn.location.Location; -import brooklyn.test.Asserts; -import brooklyn.test.EntityTestUtils; -import brooklyn.util.http.HttpTool; -import brooklyn.util.http.HttpToolResponse; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; - -public class ElasticSearchClusterIntegrationTest extends BrooklynAppLiveTestSupport { - - // FIXME Exception in thread "main" java.lang.UnsupportedClassVersionError: org/elasticsearch/bootstrap/Elasticsearch : Unsupported major.minor version 51.0 - - private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchClusterIntegrationTest.class); - - protected Location testLocation; - protected ElasticSearchCluster elasticSearchCluster; - - @BeforeMethod(alwaysRun = true) - @Override - public void setUp() throws Exception { - super.setUp(); - testLocation = app.newLocalhostProvisioningLocation(); - } - - @Test(groups = {"Integration"}) - public void testStartupAndShutdown() { - elasticSearchCluster = app.createAndManageChild(EntitySpec.create(ElasticSearchCluster.class) - .configure(DynamicCluster.INITIAL_SIZE, 3)); - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(elasticSearchCluster, Startable.SERVICE_UP, true); - - elasticSearchCluster.stop(); - - EntityTestUtils.assertAttributeEqualsEventually(elasticSearchCluster, Startable.SERVICE_UP, false); - } - - @Test(groups = {"Integration"}) - public void testPutAndGet() throws URISyntaxException { - elasticSearchCluster = app.createAndManageChild(EntitySpec.create(ElasticSearchCluster.class) - .configure(DynamicCluster.INITIAL_SIZE, 3)); - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(elasticSearchCluster, Startable.SERVICE_UP, true); - assertEquals(elasticSearchCluster.getMembers().size(), 3); - assertEquals(clusterDocumentCount(), 0); - - ElasticSearchNode anyNode = (ElasticSearchNode)elasticSearchCluster.getMembers().iterator().next(); - - String document = "{\"foo\" : \"bar\",\"baz\" : \"quux\"}"; - - String putBaseUri = "http://" + anyNode.getAttribute(Attributes.HOSTNAME) + ":" + anyNode.getAttribute(Attributes.HTTP_PORT); - - HttpToolResponse putResponse = HttpTool.httpPut( - HttpTool.httpClientBuilder() - .port(anyNode.getAttribute(Attributes.HTTP_PORT)) - .build(), - new URI(putBaseUri + "/mydocuments/docs/1"), - ImmutableMap.<String, String>of(), - Strings.toByteArray(document)); - assertEquals(putResponse.getResponseCode(), 201); - - for (Entity entity : elasticSearchCluster.getMembers()) { - ElasticSearchNode node = (ElasticSearchNode)entity; - String getBaseUri = "http://" + node.getAttribute(Attributes.HOSTNAME) + ":" + node.getAttribute(Attributes.HTTP_PORT); - HttpToolResponse getResponse = HttpTool.execAndConsume( - HttpTool.httpClientBuilder().build(), - new HttpGet(getBaseUri + "/mydocuments/docs/1/_source")); - assertEquals(getResponse.getResponseCode(), 200); - assertEquals(HttpValueFunctions.jsonContents("foo", String.class).apply(getResponse), "bar"); - } - Asserts.succeedsEventually(new Runnable() { - public void run() { - int count = clusterDocumentCount(); - assertTrue(count >= 1, "count="+count); - LOG.debug("Document count is {}", count); - }}); - } - - private int clusterDocumentCount() { - int result = 0; - for (Entity entity : elasticSearchCluster.getMembers()) { - result += entity.getAttribute(ElasticSearchNode.DOCUMENT_COUNT); - } - return result; - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeIntegrationTest.java deleted file mode 100644 index 73a2f97..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeIntegrationTest.java +++ /dev/null @@ -1,112 +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.elasticsearch; - -import static org.testng.Assert.assertEquals; - -import java.net.URI; -import java.net.URISyntaxException; - -import org.apache.http.client.methods.HttpGet; -import org.bouncycastle.util.Strings; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.basic.ApplicationBuilder; -import brooklyn.entity.basic.Attributes; -import brooklyn.entity.basic.Entities; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.event.feed.http.HttpValueFunctions; -import brooklyn.location.Location; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.test.EntityTestUtils; -import brooklyn.test.entity.TestApplication; -import brooklyn.util.http.HttpTool; -import brooklyn.util.http.HttpToolResponse; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; - -public class ElasticSearchNodeIntegrationTest { - - protected TestApplication app; - protected Location testLocation; - protected ElasticSearchNode elasticSearchNode; - - @BeforeMethod(alwaysRun = true) - public void setup() throws Exception { - app = ApplicationBuilder.newManagedApp(TestApplication.class); - testLocation = new LocalhostMachineProvisioningLocation(); - } - - @AfterMethod(alwaysRun = true) - public void shutdown() { - Entities.destroyAll(app.getManagementContext()); - } - - @Test(groups = {"Integration"}) - public void testStartupAndShutdown() { - elasticSearchNode = app.createAndManageChild(EntitySpec.create(ElasticSearchNode.class)); - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(elasticSearchNode, Startable.SERVICE_UP, true); - - elasticSearchNode.stop(); - - EntityTestUtils.assertAttributeEqualsEventually(elasticSearchNode, Startable.SERVICE_UP, false); - } - - @Test(groups = {"Integration"}) - public void testDocumentCount() throws URISyntaxException { - elasticSearchNode = app.createAndManageChild(EntitySpec.create(ElasticSearchNode.class)); - app.start(ImmutableList.of(testLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(elasticSearchNode, Startable.SERVICE_UP, true); - - EntityTestUtils.assertAttributeEquals(elasticSearchNode, ElasticSearchNode.DOCUMENT_COUNT, 0); - - String baseUri = "http://" + elasticSearchNode.getAttribute(Attributes.HOSTNAME) + ":" + elasticSearchNode.getAttribute(Attributes.HTTP_PORT); - - HttpToolResponse pingResponse = HttpTool.execAndConsume( - HttpTool.httpClientBuilder().build(), - new HttpGet(baseUri)); - assertEquals(pingResponse.getResponseCode(), 200); - - String document = "{\"foo\" : \"bar\",\"baz\" : \"quux\"}"; - - HttpToolResponse putResponse = HttpTool.httpPut( - HttpTool.httpClientBuilder() - .port(elasticSearchNode.getAttribute(Attributes.HTTP_PORT)) - .build(), - new URI(baseUri + "/mydocuments/docs/1"), - ImmutableMap.<String, String>of(), - Strings.toByteArray(document)); - assertEquals(putResponse.getResponseCode(), 201); - - HttpToolResponse getResponse = HttpTool.execAndConsume( - HttpTool.httpClientBuilder().build(), - new HttpGet(baseUri + "/mydocuments/docs/1/_source")); - assertEquals(getResponse.getResponseCode(), 200); - assertEquals(HttpValueFunctions.jsonContents("foo", String.class).apply(getResponse), "bar"); - - EntityTestUtils.assertAttributeEqualsEventually(elasticSearchNode, ElasticSearchNode.DOCUMENT_COUNT, 1); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBEc2LiveTest.java deleted file mode 100644 index bd6b23f..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBEc2LiveTest.java +++ /dev/null @@ -1,54 +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 brooklyn.entity.AbstractEc2LiveTest; -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.location.Location; -import brooklyn.test.EntityTestUtils; -import com.google.common.collect.ImmutableList; -import com.mongodb.DBObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.Test; - -import static org.testng.Assert.assertEquals; - -public class MongoDBEc2LiveTest extends AbstractEc2LiveTest { - - @SuppressWarnings("unused") - private static final Logger LOG = LoggerFactory.getLogger(MongoDBEc2LiveTest.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/MongoDBIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBIntegrationTest.java deleted file mode 100644 index 5884122..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBIntegrationTest.java +++ /dev/null @@ -1,91 +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 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.proxying.EntitySpec; -import brooklyn.entity.trait.Startable; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.test.EntityTestUtils; -import brooklyn.test.entity.TestApplication; - -import com.google.common.collect.ImmutableList; -import com.mongodb.DBObject; - -public class MongoDBIntegrationTest { - - 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 { - MongoDBServer entity = app.createAndManageChild(EntitySpec.create(MongoDBServer.class) - .configure("mongodbConfTemplateUrl", "classpath:///test-mongodb.conf")); - app.start(ImmutableList.of(localhostProvisioningLocation)); - - EntityTestUtils.assertAttributeEqualsEventually(entity, Startable.SERVICE_UP, true); - entity.stop(); - assertFalse(entity.getAttribute(Startable.SERVICE_UP)); - } - - @Test(groups = "Integration", dependsOnMethods = { "testCanStartAndStop" }) - public void testCanReadAndWrite() throws Exception { - MongoDBServer entity = app.createAndManageChild(EntitySpec.create(MongoDBServer.class) - .configure("mongodbConfTemplateUrl", "classpath:///test-mongodb.conf")); - app.start(ImmutableList.of(localhostProvisioningLocation)); - - String id = MongoDBTestHelper.insert(entity, "hello", "world!"); - DBObject docOut = MongoDBTestHelper.getById(entity, id); - assertEquals(docOut.get("hello"), "world!"); - } - - @Test(groups = "Integration", dependsOnMethods = { "testCanStartAndStop" }) - public void testPollInsertCountSensor() throws Exception { - MongoDBServer entity = app.createAndManageChild(EntitySpec.create(MongoDBServer.class) - .configure("mongodbConfTemplateUrl", "classpath:///test-mongodb.conf")); - app.start(ImmutableList.of(localhostProvisioningLocation)); - EntityTestUtils.assertAttributeEqualsEventually(entity, Startable.SERVICE_UP, true); - - EntityTestUtils.assertAttributeEventuallyNonNull(entity, MongoDBServer.OPCOUNTERS_INSERTS); - Long initialInserts = entity.getAttribute(MongoDBServer.OPCOUNTERS_INSERTS); - MongoDBTestHelper.insert(entity, "a", Boolean.TRUE); - MongoDBTestHelper.insert(entity, "b", Boolean.FALSE); - EntityTestUtils.assertAttributeEqualsEventually(entity, MongoDBServer.OPCOUNTERS_INSERTS, initialInserts + 2); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBRebindIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBRebindIntegrationTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBRebindIntegrationTest.java deleted file mode 100644 index 4789624..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBRebindIntegrationTest.java +++ /dev/null @@ -1,60 +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.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.proxying.EntitySpec; -import brooklyn.entity.rebind.RebindTestFixtureWithApp; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.test.EntityTestUtils; - -import com.google.common.base.Predicates; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; - -public class MongoDBRebindIntegrationTest extends RebindTestFixtureWithApp { - - private LocalhostMachineProvisioningLocation loc; - - @BeforeMethod(alwaysRun=true) - @Override - public void setUp() throws Exception { - super.setUp(); - loc = origApp.newLocalhostProvisioningLocation(); - } - - @Test(groups = {"Integration"}) - public void testRebindMongoDb() throws Exception { - MongoDBServer origEntity = origApp.createAndManageChild(EntitySpec.create(MongoDBServer.class) - .configure("mongodbConfTemplateUrl", "classpath:///test-mongodb.conf")); - origApp.start(ImmutableList.of(loc)); - EntityTestUtils.assertAttributeEventuallyNonNull(origEntity, MongoDBServer.STATUS_BSON); - - // rebind - rebind(); - final MongoDBServer newEntity = (MongoDBServer) Iterables.find(newApp.getChildren(), Predicates.instanceOf(MongoDBServer.class)); - - // confirm effectors still work on entity - EntityTestUtils.assertAttributeEqualsEventually(newEntity, MongoDBServer.SERVICE_UP, true); - newEntity.stop(); - EntityTestUtils.assertAttributeEqualsEventually(newEntity, MongoDBServer.SERVICE_UP, false); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetEc2LiveTest.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetEc2LiveTest.java b/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetEc2LiveTest.java deleted file mode 100644 index a1cf038..0000000 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetEc2LiveTest.java +++ /dev/null @@ -1,96 +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 brooklyn.entity.AbstractEc2LiveTest; -import brooklyn.entity.basic.Entities; -import brooklyn.entity.group.DynamicCluster; -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; -import com.mongodb.DBObject; - -import groovy.time.TimeDuration; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.Test; - -import java.util.concurrent.Callable; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; - -public class MongoDBReplicaSetEc2LiveTest extends AbstractEc2LiveTest { - - @SuppressWarnings("unused") - private static final Logger LOG = LoggerFactory.getLogger(MongoDBReplicaSetEc2LiveTest.class); - private static final Integer REPLICA_SET_SIZE = 3; - private static final TimeDuration TIMEOUT = new TimeDuration(0, 0, 180, 0); - - /** - * Test that a three node replica set starts and allows access through both nodes. - */ - @Override - protected void doTest(Location loc) throws Exception { - final MongoDBReplicaSet replicaSet = app.createAndManageChild(EntitySpec.create(MongoDBReplicaSet.class) - .configure(DynamicCluster.INITIAL_SIZE, REPLICA_SET_SIZE) - .configure("replicaSetName", "mongodb-live-test-replica-set") - .configure("memberSpec", EntitySpec.create(MongoDBServer.class) - .configure("mongodbConfTemplateUrl", "classpath:///test-mongodb.conf") - .configure("port", "27017+"))); - - assertEquals(replicaSet.getCurrentSize().intValue(), 0); - - app.start(ImmutableList.of(loc)); - - Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Callable<Boolean>() { - @Override - public Boolean call() { - assertEquals(replicaSet.getCurrentSize(), REPLICA_SET_SIZE); - assertNotNull(replicaSet.getPrimary()); - assertEquals(replicaSet.getSecondaries().size(), REPLICA_SET_SIZE-1); - return true; - } - }); - - Entities.dumpInfo(app); - - // Test inserting a document and reading from secondaries - final String documentId = MongoDBTestHelper.insert(replicaSet.getPrimary(), "meaning-of-life", 42); - Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT), new Callable<Boolean>() { - @Override - public Boolean call() throws Exception { - assertEquals(replicaSet.getCurrentSize().intValue(), 3); - for (MongoDBServer secondary : replicaSet.getSecondaries()) { - DBObject docOut = MongoDBTestHelper.getById(secondary, documentId); - assertEquals(docOut.get("meaning-of-life"), 42); - } - return true; - } - }); - - } - - @Test(enabled=false) - public void testDummy() {} // Convince TestNG IDE integration that this really does have test methods -}
