This repository has been archived by the owner on May 16, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
+ Use sbt TestsListener to start/stop cluster around the test task. Not before nor after like before. Which also mean you can now use any test commands multiple times in the same sbt session. + Auto import all redis-plugin keys. No more `import redis.embedded.util.{Architecture, OS}` in your `build.sbt`. + Simplify the RedisInstance creation for a single server (no Seq needed)
- Loading branch information
François Monniot
committed
Jan 27, 2017
1 parent
883a199
commit a521f1e
Showing
12 changed files
with
235 additions
and
178 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,3 @@ | ||
import redis.embedded.util.{Architecture, OS} | ||
|
||
name := "sample-project" | ||
version := "1.0" | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
resolvers += Resolver.jcenterRepo | ||
resolvers += Resolver.url("fmonniot", url("https://dl.bintray.com/fmonniot/sbt-plugins"))(Resolver.ivyStylePatterns) | ||
|
||
addSbtPlugin("eu.monniot.redis" % "redis-plugin" % "0.1.1") | ||
addSbtPlugin("eu.monniot.redis" % "redis-plugin" % "0.5.0") |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,72 +1,32 @@ | ||
import redis.embedded.RedisExecProvider | ||
import redis.embedded.util.{Architecture, OS} | ||
import eu.monniot.redis.plugin.{Architecture, OS, RedisKeys, RedisTestsListener} | ||
import sbt.Keys._ | ||
import sbt._ | ||
|
||
object RedisPlugin extends AutoPlugin { | ||
|
||
import RedisKeys._ | ||
|
||
override def trigger = allRequirements | ||
override def trigger: PluginTrigger = allRequirements | ||
|
||
override def requires = plugins.JvmPlugin | ||
|
||
val autoImport = RedisKeys | ||
|
||
override lazy val projectSettings = defaultSettings | ||
object autoImport extends RedisKeys { | ||
val RedisInstance = eu.monniot.redis.plugin.RedisInstance | ||
val OS = eu.monniot.redis.plugin.OS | ||
val Architecture = eu.monniot.redis.plugin.Architecture | ||
} | ||
|
||
def defaultSettings: Seq[Setting[_]] = Seq( | ||
override lazy val projectSettings = Seq( | ||
redisInstances := Seq.empty, | ||
redisBinaries := Seq( | ||
("3.0.7", OS.MAC_OS_X, Architecture.x86_64) -> "redis-server-3.0.7-darwin", | ||
("3.0.7", OS.UNIX, Architecture.x86_64) -> "redis-server-3.0.7" | ||
), | ||
|
||
startRedis := effectivelyStartRedis(redisBinaries.value, redisInstances.value, streams.value.log), | ||
stopRedis := effectivelyStopRedis(streams.value.log), | ||
|
||
(test in Test) <<= { | ||
val t = (test in Test).dependsOn(startRedis) | ||
|
||
t.andFinally(RedisUtils.stopRedisInstances()) | ||
}, | ||
(testOnly in Test) <<= { | ||
val t = (testOnly in Test).dependsOn(startRedis) | ||
|
||
t.andFinally(RedisUtils.stopRedisInstances()) | ||
} | ||
testListeners += new RedisTestsListener( | ||
streams.value.log, | ||
redisBinaries.value, | ||
redisInstances.value | ||
) | ||
) | ||
|
||
def buildProvider(redisBinaries: Seq[((String, OS, Architecture), String)]) = { | ||
redisBinaries | ||
.map { case ((v, os, arch), path) => | ||
(v, os, arch, path) | ||
} | ||
.groupBy(_._1) | ||
.map { case (v, list) => | ||
val provider = RedisExecProvider.defaultProvider() | ||
|
||
list.foreach { case (_, os, arch, path) => | ||
provider.`override`(os, arch, path) | ||
} | ||
|
||
(v, provider) | ||
} | ||
} | ||
|
||
def effectivelyStartRedis(redisBinaries: Seq[((String, OS, Architecture), String)], redis: Seq[RedisInstance], logger: Logger): Unit = { | ||
val redisExecProviders = buildProvider(redisBinaries) | ||
|
||
logger.debug(s"Redis configuration: ${redisBinaries.toMap}") | ||
logger.debug(s"Redis servers defined: $redis") | ||
|
||
RedisUtils.startRedisCluster(logger, redisExecProviders, redis.filter(m => m.isRedisCluster)) | ||
RedisUtils.startRedisServer(logger, redisExecProviders, redis.filter(m => m.isRedisServer)) | ||
} | ||
|
||
def effectivelyStopRedis(logger: Logger): Unit = { | ||
logger.info("Stopping redis instances") | ||
|
||
RedisUtils.stopRedisInstances() | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package eu.monniot.redis.plugin | ||
|
||
import redis.embedded.util.{Architecture => jArch} | ||
|
||
/** | ||
* Correspond to the redis.embedded.util.Architecture enum, but scalaified to be automatically | ||
* imported in a sbt config file | ||
*/ | ||
sealed trait Architecture { | ||
def toJava: jArch | ||
} | ||
|
||
object Architecture { | ||
|
||
object x86 extends Architecture { | ||
def toJava: jArch = jArch.x86 | ||
} | ||
|
||
object x86_64 extends Architecture { | ||
def toJava: jArch = jArch.x86_64 | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package eu.monniot.redis.plugin | ||
|
||
import redis.embedded.util.{OS => jOS} | ||
|
||
/** | ||
* Correspond to the redis.embedded.util.OS enum, but scalaified to be automatically | ||
* imported in a sbt config file | ||
*/ | ||
sealed trait OS { | ||
def toJava: jOS | ||
} | ||
|
||
object OS { | ||
|
||
object WINDOWS extends OS { | ||
def toJava: jOS = jOS.WINDOWS | ||
} | ||
|
||
object UNIX extends OS { | ||
def toJava: jOS = jOS.UNIX | ||
} | ||
|
||
object MAC_OS_X extends OS { | ||
def toJava: jOS = jOS.MAC_OS_X | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package eu.monniot.redis.plugin | ||
|
||
import sbt.SettingKey | ||
|
||
/** | ||
* Created by francois on 27/01/17. | ||
*/ | ||
trait RedisKeys { | ||
lazy val redisBinaries = SettingKey[Seq[((String, OS, Architecture), String)]]( | ||
"redis-binaries", | ||
"A list of redis path associated with a version, os and arch" | ||
) | ||
|
||
lazy val redisInstances = SettingKey[Seq[RedisInstance]]( | ||
"redis-instances", | ||
"A list of redis instances to start for tests" | ||
) | ||
} | ||
|
||
object RedisKeys extends RedisKeys |
Oops, something went wrong.