Redis: split interface+impl, and fix ec2 test
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/c06d64c0 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/c06d64c0 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/c06d64c0 Branch: refs/heads/0.5.0 Commit: c06d64c0b7764baa7d31938c991b45d4c94bd848 Parents: 464ef00 Author: Aled Sage <[email protected]> Authored: Mon Apr 22 13:09:04 2013 +0100 Committer: Andrew Kennedy <[email protected]> Committed: Wed Apr 24 13:25:43 2013 +0100 ---------------------------------------------------------------------- .../entity/nosql/redis/RedisCluster.java | 71 ---------- .../entity/nosql/redis/RedisClusterImpl.java | 66 +++++++++ .../brooklyn/entity/nosql/redis/RedisShard.java | 23 ---- .../entity/nosql/redis/RedisShardImpl.java | 22 +++ .../brooklyn/entity/nosql/redis/RedisSlave.java | 41 ------ .../entity/nosql/redis/RedisSlaveImpl.java | 42 ++++++ .../brooklyn/entity/nosql/redis/RedisStore.java | 134 ------------------- .../entity/nosql/redis/RedisStoreImpl.java | 109 +++++++++++++++ .../entity/nosql/redis/RedisStoreSshDriver.java | 6 +- .../entity/nosql/redis/RedisEc2LiveTest.java | 10 +- .../nosql/redis/RedisIntegrationTest.groovy | 16 ++- 11 files changed, 260 insertions(+), 280 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisCluster.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisCluster.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisCluster.java deleted file mode 100644 index 7d063b5..0000000 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisCluster.java +++ /dev/null @@ -1,71 +0,0 @@ -package brooklyn.entity.nosql.redis; - -import java.util.Collection; -import java.util.Map; - -import brooklyn.catalog.Catalog; -import brooklyn.entity.Entity; -import brooklyn.entity.basic.AbstractEntity; -import brooklyn.entity.basic.BasicConfigurableEntityFactory; -import brooklyn.entity.group.DynamicCluster; -import brooklyn.entity.group.DynamicClusterImpl; -import brooklyn.entity.trait.Startable; -import brooklyn.location.Location; -import brooklyn.util.MutableMap; - -import com.google.common.collect.Maps; - -/** - * A cluster of {@link RedisStore}s with ione master and a group of slaves. - * - * The slaves are contained in a {@link DynamicCluster} which can be resized by a policy if required. - * - * TODO add sensors with aggregated Redis statistics from cluster - */ -@Catalog(name="Redis Cluster", description="Redis is an open-source, networked, in-memory, key-value data store with optional durability", iconUrl="classpath:///redis-logo.jpeg") -public class RedisCluster extends AbstractEntity implements Startable { - Map redisProperties = Maps.newLinkedHashMap(); - RedisCluster master; - DynamicCluster slaves; - - public RedisCluster() { - this(MutableMap.of(), null); - } - public RedisCluster(Map properties) { - this(properties, null); - } - public RedisCluster(Entity parent) { - this(MutableMap.of(), parent); - } - public RedisCluster(Map properties, Entity parent) { - super(properties, parent); - - redisProperties.putAll(properties); - redisProperties.put("factory", new BasicConfigurableEntityFactory(RedisSlave.class)); - } - - @Override - public void start(Collection<? extends Location> locations) { - master = new RedisCluster(redisProperties, this); - master.start(locations); - redisProperties.put("master", master); - - slaves = new DynamicClusterImpl(redisProperties, this); - slaves.start(locations); - - setAttribute(Startable.SERVICE_UP, true); - } - - @Override - public void stop() { - slaves.stop(); - master.stop(); - - setAttribute(Startable.SERVICE_UP, false); - } - - @Override - public void restart() { - throw new UnsupportedOperationException(); - } -} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java new file mode 100644 index 0000000..08d114a --- /dev/null +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java @@ -0,0 +1,66 @@ +package brooklyn.entity.nosql.redis; + +import java.util.Collection; +import java.util.Map; + +import brooklyn.entity.Entity; +import brooklyn.entity.basic.AbstractEntity; +import brooklyn.entity.basic.BasicConfigurableEntityFactory; +import brooklyn.entity.basic.Entities; +import brooklyn.entity.group.DynamicCluster; +import brooklyn.entity.proxying.EntitySpecs; +import brooklyn.entity.trait.Startable; +import brooklyn.location.Location; +import brooklyn.util.MutableMap; + +import com.google.common.collect.Maps; + +public class RedisClusterImpl extends AbstractEntity implements RedisCluster { + Map redisProperties = Maps.newLinkedHashMap(); + RedisStore master; + DynamicCluster slaves; + + public RedisClusterImpl() { + this(MutableMap.of(), null); + } + public RedisClusterImpl(Map properties) { + this(properties, null); + } + public RedisClusterImpl(Entity parent) { + this(MutableMap.of(), parent); + } + public RedisClusterImpl(Map properties, Entity parent) { + super(properties, parent); + + redisProperties.putAll(properties); + } + + @Override + public void start(Collection<? extends Location> locations) { + master = addChild(EntitySpecs.spec(RedisStore.class) + .configure(redisProperties)); + Entities.manage(master); + master.start(locations); + redisProperties.put("master", master); + + slaves = addChild(EntitySpecs.spec(DynamicCluster.class) + .configure(redisProperties) + .configure(DynamicCluster.FACTORY, new BasicConfigurableEntityFactory(RedisSlave.class))); + slaves.start(locations); + + setAttribute(Startable.SERVICE_UP, true); + } + + @Override + public void stop() { + if (slaves != null) slaves.stop(); + if (master != null) master.stop(); + + setAttribute(Startable.SERVICE_UP, false); + } + + @Override + public void restart() { + throw new UnsupportedOperationException(); + } +} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShard.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShard.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShard.java deleted file mode 100644 index 9cad4ce..0000000 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShard.java +++ /dev/null @@ -1,23 +0,0 @@ -package brooklyn.entity.nosql.redis; - -import java.util.Map; - -import brooklyn.entity.Entity; -import brooklyn.entity.basic.AbstractEntity; -import brooklyn.entity.nosql.Shard; -import brooklyn.util.MutableMap; - -public class RedisShard extends AbstractEntity implements Shard { - public RedisShard() { - this(MutableMap.of(), null); - } - public RedisShard(Map properties) { - this(properties, null); - } - public RedisShard(Entity parent) { - this(MutableMap.of(), parent); - } - public RedisShard(Map properties, Entity parent) { - super(properties, parent); - } -} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShardImpl.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShardImpl.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShardImpl.java new file mode 100644 index 0000000..0eee09f --- /dev/null +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisShardImpl.java @@ -0,0 +1,22 @@ +package brooklyn.entity.nosql.redis; + +import java.util.Map; + +import brooklyn.entity.Entity; +import brooklyn.entity.basic.AbstractEntity; +import brooklyn.util.MutableMap; + +public class RedisShardImpl extends AbstractEntity implements RedisShard { + public RedisShardImpl() { + this(MutableMap.of(), null); + } + public RedisShardImpl(Map properties) { + this(properties, null); + } + public RedisShardImpl(Entity parent) { + this(MutableMap.of(), parent); + } + public RedisShardImpl(Map properties, Entity parent) { + super(properties, parent); + } +} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlave.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlave.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlave.java deleted file mode 100644 index cf4815b..0000000 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlave.java +++ /dev/null @@ -1,41 +0,0 @@ -package brooklyn.entity.nosql.redis; - -import java.util.Map; - -import brooklyn.entity.Entity; -import brooklyn.util.MutableMap; - -import com.google.common.base.Preconditions; - -/** - * A {@link RedisStore} configured as a slave. - * - * The {@code master} property must be set to the master Redis store entity. - */ -public class RedisSlave extends RedisStore { - RedisStore master; - - public RedisSlave() { - this(MutableMap.of(), null); - } - public RedisSlave(Map properties) { - this(properties, null); - } - public RedisSlave(Entity parent) { - this(MutableMap.of(), parent); - } - public RedisSlave(Map properties, Entity parent) { - super(properties, parent); - - Preconditions.checkArgument(properties.containsKey("master"), "The Redis master entity must be specified"); - master = (RedisStore) properties.get("master"); - } - - @Override - public String getConfigData(int port, boolean include) { - String masterAddress = master.getAddress(); - int masterPort = getParent().getAttribute(REDIS_PORT); - - return super.getConfigData(port, include) + "slaveof "+masterAddress+" "+masterPort; - } -} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlaveImpl.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlaveImpl.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlaveImpl.java new file mode 100644 index 0000000..2ea0783 --- /dev/null +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisSlaveImpl.java @@ -0,0 +1,42 @@ +package brooklyn.entity.nosql.redis; + +import java.util.Map; + +import brooklyn.entity.Entity; +import brooklyn.util.MutableMap; + +import com.google.common.base.Preconditions; + +/** + * A {@link RedisStore} configured as a slave. + * + * The {@code master} property must be set to the master Redis store entity. + */ +public class RedisSlaveImpl extends RedisStoreImpl implements RedisSlave { + RedisStore master; + + public RedisSlaveImpl() { + this(MutableMap.of(), null); + } + public RedisSlaveImpl(Map properties) { + this(properties, null); + } + public RedisSlaveImpl(Entity parent) { + this(MutableMap.of(), parent); + } + public RedisSlaveImpl(Map properties, Entity parent) { + super(properties, parent); + + // TODO Use config key for "master" + Preconditions.checkArgument(properties.containsKey("master"), "The Redis master entity must be specified"); + master = (RedisStore) properties.get("master"); + } + + @Override + public String getConfigData(int port, boolean include) { + String masterAddress = master.getAddress(); + int masterPort = getParent().getAttribute(REDIS_PORT); + + return super.getConfigData(port, include) + "slaveof "+masterAddress+" "+masterPort; + } +} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStore.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStore.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStore.java deleted file mode 100644 index 7272088..0000000 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStore.java +++ /dev/null @@ -1,134 +0,0 @@ -package brooklyn.entity.nosql.redis; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.util.Map; -import java.util.concurrent.Callable; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import brooklyn.catalog.Catalog; -import brooklyn.config.ConfigKey; -import brooklyn.entity.Entity; -import brooklyn.entity.basic.SoftwareProcess; -import brooklyn.entity.basic.SoftwareProcessImpl; -import brooklyn.entity.nosql.DataStore; -import brooklyn.event.AttributeSensor; -import brooklyn.event.basic.BasicAttributeSensor; -import brooklyn.event.basic.BasicAttributeSensorAndConfigKey; -import brooklyn.event.basic.BasicConfigKey; -import brooklyn.event.basic.PortAttributeSensorAndConfigKey; -import brooklyn.location.MachineLocation; -import brooklyn.location.basic.SshMachineLocation; -import brooklyn.util.MutableMap; -import brooklyn.util.flags.SetFromFlag; - -/** - * An entity that represents a Redis key-value store service. - * - * TODO add sensors with Redis statistics using INFO command - */ -@Catalog(name="Redis Server", description="Redis is an open-source, networked, in-memory, key-value data store with optional durability", iconUrl="classpath:///redis-logo.jpeg") -public class RedisStore extends SoftwareProcessImpl implements DataStore { - protected static final Logger LOG = LoggerFactory.getLogger(RedisStore.class); - - @SetFromFlag("version") - public static final BasicConfigKey<String> SUGGESTED_VERSION = - new BasicConfigKey<String>(SoftwareProcess.SUGGESTED_VERSION, "2.6.7"); - - @SetFromFlag("downloadUrl") - public static final BasicAttributeSensorAndConfigKey<String> DOWNLOAD_URL = new BasicAttributeSensorAndConfigKey<String>( - SoftwareProcess.DOWNLOAD_URL, "http://redis.googlecode.com/files/redis-${version}.tar.gz"); - - public static final PortAttributeSensorAndConfigKey REDIS_PORT = new PortAttributeSensorAndConfigKey("redis.port", "Redis port number", 6379); - public static final ConfigKey<String> REDIS_CONFIG_FILE = new BasicConfigKey<String>(String.class, "redis.config.file", "Redis user configuration file"); - public static final AttributeSensor<Integer> UPTIME = new BasicAttributeSensor<Integer>(Integer.class, "redis.uptime", "Redis uptime in seconds"); - - public RedisStore() { - this(MutableMap.of(), null); - } - public RedisStore(Map properties) { - this(properties, null); - } - public RedisStore(Entity parent) { - this(MutableMap.of(), parent); - } - public RedisStore(Map properties, Entity parent) { - super(properties, parent); - - setConfigIfValNonNull(REDIS_PORT, properties.get("redisPort")); - setConfigIfValNonNull(REDIS_CONFIG_FILE, properties.get("configFile")); - } - - @Override - protected void connectSensors() { - super.connectSensors(); - - connectServiceUpIsRunning(); - - // TODO IF desired, port this for setting UPTIME (because legacy sshAdapter is deleted) -// String output = sshAdapter.newOutputValueProvider("${driver.runDir}/bin/redis-cli info").compute() -// for (String line : output.split("\n")) { -// if (line =~ /^uptime_in_seconds:/) { -// String data = line.trim() -// int colon = data.indexOf(":") -// return Integer.parseInt(data.substring(colon + 1)) -// } -// } - } - - @Override - public void disconnectSensors() { - super.disconnectSensors(); - disconnectServiceUpIsRunning(); - } - - public Class getDriverInterface() { - return RedisStoreDriver.class; - } - - @Override - public RedisStoreDriver getDriver() { - return (RedisStoreDriver) super.getDriver(); - } - - public String getAddress() { - MachineLocation machine = getMachineOrNull(); - return (machine != null) ? machine.getAddress().getHostAddress() : null; - } - - - // FIXME Don't want to hard-code this as SshMachineLocatoin; want generic way of doing machine.copyTo - @Override - protected SshMachineLocation getMachineOrNull() { - return (SshMachineLocation) super.getMachineOrNull(); - } - - // FIXME This logic should all be in the driver - void doExtraConfigurationDuringStart() { - int port = getAttribute(REDIS_PORT); - boolean include = false; - - String includeName = getConfig(REDIS_CONFIG_FILE); - if (includeName != null && includeName.length() > 0) { - File includeFile = new File(includeName); - include = includeFile.exists(); - } - - getMachineOrNull().copyTo(new ByteArrayInputStream(getConfigData(port, include).getBytes()), getDriver().getRunDir()+"/redis.conf"); - if (include) getMachineOrNull().copyTo(new File(includeName), getDriver().getRunDir()+"/include.conf"); - - super.configure(); - } - - public String getConfigData(int port, boolean include) { - String data = - "daemonize yes"+"\n"+ - "pidfile "+getDriver().getRunDir()+"/pid.txt"+"\n"+ - "port "+port+"\n"; - - if (include) data += "include "+getDriver().getRunDir()+"/include.conf"; - return data; - } -} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStoreImpl.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStoreImpl.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStoreImpl.java new file mode 100644 index 0000000..5c454cd --- /dev/null +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStoreImpl.java @@ -0,0 +1,109 @@ +package brooklyn.entity.nosql.redis; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import brooklyn.entity.Entity; +import brooklyn.entity.basic.SoftwareProcessImpl; +import brooklyn.location.MachineLocation; +import brooklyn.location.basic.SshMachineLocation; +import brooklyn.util.MutableMap; + +/** + * An entity that represents a Redis key-value store service. + * + * TODO add sensors with Redis statistics using INFO command + */ +public class RedisStoreImpl extends SoftwareProcessImpl implements RedisStore { + protected static final Logger LOG = LoggerFactory.getLogger(RedisStore.class); + + public RedisStoreImpl() { + this(MutableMap.of(), null); + } + public RedisStoreImpl(Map properties) { + this(properties, null); + } + public RedisStoreImpl(Entity parent) { + this(MutableMap.of(), parent); + } + public RedisStoreImpl(Map properties, Entity parent) { + super(properties, parent); + } + + @Override + protected void connectSensors() { + super.connectSensors(); + + connectServiceUpIsRunning(); + + // TODO IF desired, port this for setting UPTIME (because legacy sshAdapter is deleted) +// String output = sshAdapter.newOutputValueProvider("${driver.runDir}/bin/redis-cli info").compute() +// for (String line : output.split("\n")) { +// if (line =~ /^uptime_in_seconds:/) { +// String data = line.trim() +// int colon = data.indexOf(":") +// return Integer.parseInt(data.substring(colon + 1)) +// } +// } + } + + @Override + public void disconnectSensors() { + super.disconnectSensors(); + disconnectServiceUpIsRunning(); + } + + public Class getDriverInterface() { + return RedisStoreDriver.class; + } + + @Override + public RedisStoreDriver getDriver() { + return (RedisStoreDriver) super.getDriver(); + } + + @Override + public String getAddress() { + MachineLocation machine = getMachineOrNull(); + return (machine != null) ? machine.getAddress().getHostAddress() : null; + } + + + // FIXME Don't want to hard-code this as SshMachineLocatoin; want generic way of doing machine.copyTo + @Override + protected SshMachineLocation getMachineOrNull() { + return (SshMachineLocation) super.getMachineOrNull(); + } + + // FIXME This logic should all be in the driver + void doExtraConfigurationDuringStart() { + int port = getAttribute(REDIS_PORT); + boolean include = false; + + String includeName = getConfig(REDIS_CONFIG_FILE); + if (includeName != null && includeName.length() > 0) { + File includeFile = new File(includeName); + include = includeFile.exists(); + } + + getMachineOrNull().copyTo(new ByteArrayInputStream(getConfigData(port, include).getBytes()), getDriver().getRunDir()+"/redis.conf"); + if (include) getMachineOrNull().copyTo(new File(includeName), getDriver().getRunDir()+"/include.conf"); + + super.configure(); + } + + @Override + public String getConfigData(int port, boolean include) { + String data = + "daemonize yes"+"\n"+ + "pidfile "+getDriver().getRunDir()+"/pid.txt"+"\n"+ + "port "+port+"\n"; + + if (include) data += "include "+getDriver().getRunDir()+"/include.conf"; + return data; + } +} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStoreSshDriver.java ---------------------------------------------------------------------- diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStoreSshDriver.java b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStoreSshDriver.java index 7ae292a..8b8e8ae 100644 --- a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStoreSshDriver.java +++ b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisStoreSshDriver.java @@ -21,13 +21,13 @@ public class RedisStoreSshDriver extends AbstractSoftwareProcessSshDriver implem private String expandedInstallDir; - public RedisStoreSshDriver(RedisStore entity, SshMachineLocation machine) { + public RedisStoreSshDriver(RedisStoreImpl entity, SshMachineLocation machine) { super(entity, machine); } @Override - public RedisStore getEntity() { - return (RedisStore) super.getEntity(); + public RedisStoreImpl getEntity() { + return (RedisStoreImpl) super.getEntity(); } protected Integer getRedisPort() { http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/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 index 187f981..a3eeb2f 100644 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java +++ b/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java @@ -8,20 +8,28 @@ import org.testng.annotations.Test; import redis.clients.jedis.Connection; import brooklyn.entity.AbstractEc2LiveTest; +import brooklyn.entity.proxying.EntitySpecs; import brooklyn.location.Location; import brooklyn.test.EntityTestUtils; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; public class RedisEc2LiveTest extends AbstractEc2LiveTest { @SuppressWarnings("unused") private static final Logger LOG = LoggerFactory.getLogger(RedisEc2LiveTest.class); + @Test(groups = {"Live"}) + public void test_CentOS_6_3() throws Exception { + // Image: {id=us-east-1/ami-7d7bfc14, providerId=ami-7d7bfc14, name=RightImage_CentOS_6.3_x64_v5.8.8.5, location={scope=REGION, id=us-east-1, description=us-east-1, parent=aws-ec2, iso3166Codes=[US-VA]}, os={family=centos, arch=paravirtual, version=6.0, description=rightscale-us-east/RightImage_CentOS_6.3_x64_v5.8.8.5.manifest.xml, is64Bit=true}, description=rightscale-us-east/RightImage_CentOS_6.3_x64_v5.8.8.5.manifest.xml, version=5.8.8.5, status=AVAILABLE[available], loginUser=root, userMetadata={owner=411009282317, rootDeviceType=instance-store, virtualizationType=paravirtual, hypervisor=xen}} + runTest(ImmutableMap.of("imageId", "us-east-1/ami-7d7bfc14", "hardwareId", SMALL_HARDWARE_ID)); + } + @Override protected void doTest(Location loc) throws Exception { // Start Redis - RedisStore redis = new RedisStore(app); + RedisStore redis = app.createAndManageChild(EntitySpecs.spec(RedisStore.class)); app.start(ImmutableList.of(loc)); EntityTestUtils.assertAttributeEqualsEventually(redis, RedisStore.SERVICE_UP, true); http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/c06d64c0/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisIntegrationTest.groovy ---------------------------------------------------------------------- diff --git a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisIntegrationTest.groovy b/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisIntegrationTest.groovy index c737070..44d9e0e 100644 --- a/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisIntegrationTest.groovy +++ b/software/nosql/src/test/java/brooklyn/entity/nosql/redis/RedisIntegrationTest.groovy @@ -10,11 +10,13 @@ import org.testng.annotations.BeforeMethod import org.testng.annotations.Test import redis.clients.jedis.Connection +import brooklyn.entity.basic.ApplicationBuilder +import brooklyn.entity.basic.Entities +import brooklyn.entity.proxying.EntitySpecs import brooklyn.entity.trait.Startable import brooklyn.location.Location import brooklyn.location.basic.LocalhostMachineProvisioningLocation import brooklyn.test.entity.TestApplication -import brooklyn.test.entity.TestApplicationImpl import brooklyn.util.internal.TimeExtras /** @@ -31,15 +33,15 @@ public class RedisIntegrationTest { private Location testLocation private RedisStore redis - @BeforeMethod(groups = "Integration") + @BeforeMethod(alwaysRun=true) public void setup() { - app = new TestApplicationImpl(); + app = ApplicationBuilder.newManagedApp(TestApplication.class); testLocation = new LocalhostMachineProvisioningLocation(name:'london') } - @AfterMethod(groups = "Integration") + @AfterMethod(alwaysRun=true) public void shutdown() { - if (app != null) app.stop() + if (app != null) Entities.destroyAll(app); } /** @@ -48,7 +50,7 @@ public class RedisIntegrationTest { // FIXME Marked as WIP because failing in jenkins; environmental differences? @Test(groups = ["Integration"]) public void canStartupAndShutdown() { - redis = new RedisStore(parent:app); + redis = app.createAndManageChild(EntitySpecs.spec(RedisStore.class)); app.start([ testLocation ]) executeUntilSucceeds() { assertTrue redis.getAttribute(Startable.SERVICE_UP) @@ -65,7 +67,7 @@ public class RedisIntegrationTest { @Test(groups = ["Integration"]) public void testRedisConnection() { // Start Redis - redis = new RedisStore(parent:app) + redis = app.createAndManageChild(EntitySpecs.spec(RedisStore.class)); app.start([ testLocation ]) executeUntilSucceeds { assertTrue redis.getAttribute(Startable.SERVICE_UP)
