Support for running ElasitcMQ in tests.
Add the following to your project/plugins.sbt
file:
addSbtPlugin("com.localytics" % "sbt-sqs" % "1.0.0")
sbt 1.0.0+ is supported by 1.0.0+ of this library.
if using sbt 0.13.6+ the recommended version of this library is 0.4.2.
sbt 0.13.5 should work with version 0.4.2 of this library and the right bintray resolvers.
To use ElasticMQ in your project you can call start-elastic-mq
and stop-elastic-mq
directly in sbt
.
To have ElasticMQ automatically start and stop around your tests
startElasticMQ := startElasticMQ.dependsOn(compile in Test).value
test in Test := (test in Test).dependsOn(startElasticMQ).value
testOnly in Test := (testOnly in Test).dependsOn(startElasticMQ).evaluated
testOptions in Test += elasticMQTestCleanup.value
startElasticMQ
will download an ElasticMQ jar if one is not already present in the elasticMQDir
.
Setup
Set the download directory for the jar. Defaults to "elastic-mq".
elasticMQDir := file("dir-name")
Set the version of ElasticMQ to download. Defaults to "0.9.0-beta1".
NOTE: You can only create queues on startup in ElasticMQ versions 0.9.0-beta1
and above
elasticMQVersion := "0.9.0-beta1"
Set the URL to download ElasticMQ from. Defaults to "https://s3-eu-west-1.amazonaws.com/softwaremill-public/elasticmq-server-${elasticMQVersion.value}.jar"
elasticMQUrl := "http://someurl.net"
Set the name of the ElasticMQ jar. Defaults to "elasticmq-server-${elasticMQVersion.value}.jar"
elasticMQFileName := myfilename.jar"
Set the JVM heap size (specified in MB). Defaults to the JVM default.
elasticMQHeapSize := Some(1024)
Node Address
The Node Address is the externally visible address for the ElasticMQ node. Defaults to a Node Address using
protocol = "http"
, host = "localhost"
, port = 9324
, context-path = ""
.
nodeAddressConf := NodeAddressConf(protocol = "http", host = "localhost", port = 1111, contextPath = "/queues/")
Rest SQS
The Rest SQS config represents the binding port and host for SQS requests. The sqsLimits parameter can be
set to either relaxed
or strict
. Defaults to a RestSQSConf using enabled = true
, bindPort = 9324
,
bindHostname = "0.0.0.0"
, sqsLimits = "strict"
.
restSQSConf := RestSQSConf(enabled = true, bindPort = 2222, bindHostname = "0.0.0.0", sqsLimits = "strict")
Queues
For ElasticMQ versions 0.9.0-beta1 and beyond, you can configure ElasticMQ to create queues on startup.
Queues must be given a name and default to visibilityTimeoutSecs = 10
, delaySecs = 5
, receiveMessagWaitSecs = 0
.
queuesConf := Seq(QueueConf(name = "myFirstQueue"), QueueConf(name = "second", delaySecs = 15))
By default this plugin lives entirely in the Global
scope. However, different settings for different scopes is possible. For instance, you can add the plugin to the Test
scope using
inConfig(Test)(baseElasticMQSettings)
You can then adjust the settings within the Test
scope using
(elasticMQDir in Test) := file("in-test/elatic-mq")
and you can execute the plugin tasks within the Test
scope using
sbt test:start-elastic-mq
Similarly, you can have the plugin automatically start and stop around your tests using
startElasticMQ in Test := (startElasticMQ in Test).dependsOn(compile in Test).value
test in Test := (test in Test).dependsOn(startElasticMQ in Test).value
testOnly in Test := (testOnly in Test).dependsOn(startElasticMQ in Test).evaluated
testOptions in Test += (elasticMQTestCleanup in Test).value
Thanks to Adam Warski for the excellent ElasticMQ!