+sam #3689 Make activator template of the multi-node sample
This commit is contained in:
parent
276eb0881f
commit
1a3080b7a6
12 changed files with 177 additions and 107 deletions
|
|
@ -21,86 +21,9 @@ You can then add multi-JVM testing to ``project/Build.scala`` by including the `
|
|||
settings and config. Please note that MultiJvm test sources are located in ``src/multi-jvm/...``,
|
||||
and not in ``src/test/...``.
|
||||
|
||||
Here is an example Build.scala file for sbt 0.12 that uses the MultiJvm plugin:
|
||||
Here is an example Build.scala file for sbt 0.13 that uses the MultiJvm plugin:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
import sbt._
|
||||
import Keys._
|
||||
import com.typesafe.sbt.SbtMultiJvm
|
||||
import com.typesafe.sbt.SbtMultiJvm.MultiJvmKeys.MultiJvm
|
||||
|
||||
object ExampleBuild extends Build {
|
||||
|
||||
lazy val buildSettings = Defaults.defaultSettings ++ multiJvmSettings ++ Seq(
|
||||
organization := "example",
|
||||
version := "1.0",
|
||||
scalaVersion := "@scalaVersion@",
|
||||
// make sure that the artifacts don't have the scala version in the name
|
||||
crossPaths := false
|
||||
)
|
||||
|
||||
lazy val example = Project(
|
||||
id = "example",
|
||||
base = file("."),
|
||||
settings = buildSettings ++
|
||||
Seq(libraryDependencies ++= Dependencies.example)
|
||||
) configs(MultiJvm)
|
||||
|
||||
lazy val multiJvmSettings = SbtMultiJvm.multiJvmSettings ++ Seq(
|
||||
// make sure that MultiJvm test are compiled by the default test compilation
|
||||
compile in MultiJvm <<= (compile in MultiJvm) triggeredBy (compile in Test),
|
||||
// disable parallel tests
|
||||
parallelExecution in Test := false,
|
||||
// make sure that MultiJvm tests are executed by the default test target
|
||||
executeTests in Test <<=
|
||||
((executeTests in Test), (executeTests in MultiJvm)) map {
|
||||
case ((_, testResults), (_, multiJvmResults)) =>
|
||||
val results = testResults ++ multiJvmResults
|
||||
(Tests.overall(results.values), results)
|
||||
}
|
||||
)
|
||||
|
||||
object Dependencies {
|
||||
val example = Seq(
|
||||
// ---- application dependencies ----
|
||||
"com.typesafe.akka" %% "akka-actor" % "@version@" @crossString@,
|
||||
"com.typesafe.akka" %% "akka-remote" % "@version@" @crossString@,
|
||||
|
||||
// ---- test dependencies ----
|
||||
"com.typesafe.akka" %% "akka-testkit" % "@version@" %
|
||||
"test" @crossString@,
|
||||
"com.typesafe.akka" %% "akka-multi-node-testkit" % "@version@" %
|
||||
"test" @crossString@,
|
||||
"org.scalatest" %% "scalatest" % "2.0" % "test",
|
||||
"junit" % "junit" % "4.10" % "test"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
If you are using sbt 0.13 the multiJvmSettings in the Build.scala file looks like this instead:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
lazy val multiJvmSettings = SbtMultiJvm.multiJvmSettings ++ Seq(
|
||||
// make sure that MultiJvm test are compiled by the default test compilation
|
||||
compile in MultiJvm <<= (compile in MultiJvm) triggeredBy (compile in Test),
|
||||
// disable parallel tests
|
||||
parallelExecution in Test := false,
|
||||
// make sure that MultiJvm tests are executed by the default test target
|
||||
executeTests in Test <<=
|
||||
((executeTests in Test), (executeTests in MultiJvm)) map {
|
||||
case ((testResults), (multiJvmResults)) =>
|
||||
val overall =
|
||||
if (testResults.overall.id < multiJvmResults.overall.id)
|
||||
multiJvmResults.overall
|
||||
else
|
||||
testResults.overall
|
||||
Tests.Output(overall,
|
||||
testResults.events ++ multiJvmResults.events,
|
||||
testResults.summaries ++ multiJvmResults.summaries)
|
||||
}
|
||||
)
|
||||
.. includecode:: ../../../akka-samples/akka-sample-multi-node-scala/project/Build.scala
|
||||
|
||||
You can specify JVM options for the forked JVMs::
|
||||
|
||||
|
|
|
|||
|
|
@ -185,20 +185,23 @@ A Multi Node Testing Example
|
|||
First we need some scaffolding to hook up the ``MultiNodeSpec`` with your favorite test framework. Lets define a trait
|
||||
``STMultiNodeSpec`` that uses ScalaTest to start and stop ``MultiNodeSpec``.
|
||||
|
||||
.. includecode:: ../../../akka-samples/akka-sample-multi-node/src/test/scala/sample/multinode/STMultiNodeSpec.scala#example
|
||||
.. includecode:: ../../../akka-samples/akka-sample-multi-node-scala/src/test/scala/sample/multinode/STMultiNodeSpec.scala#example
|
||||
|
||||
Then we need to define a configuration. Lets use two nodes ``"node1`` and ``"node2"`` and call it
|
||||
``MultiNodeSampleConfig``.
|
||||
|
||||
.. includecode:: ../../../akka-samples/akka-sample-multi-node/src/multi-jvm/scala/sample/multinode/MultiNodeSample.scala
|
||||
.. includecode:: ../../../akka-samples/akka-sample-multi-node-scala/src/multi-jvm/scala/sample/multinode/MultiNodeSample.scala
|
||||
:include: package,config
|
||||
|
||||
And then finally to the node test code. That starts the two nodes, and demonstrates a barrier, and a remote actor
|
||||
message send/receive.
|
||||
|
||||
.. includecode:: ../../../akka-samples/akka-sample-multi-node/src/multi-jvm/scala/sample/multinode/MultiNodeSample.scala
|
||||
.. includecode:: ../../../akka-samples/akka-sample-multi-node-scala/src/multi-jvm/scala/sample/multinode/MultiNodeSample.scala
|
||||
:include: package,spec
|
||||
|
||||
The easiest way to run this example yourself is to download `Typesafe Activator <http://typesafe.com/platform/getstarted>`_
|
||||
and open the tutorial named `Akka Multi-Node Testing Sample with Scala <http://typesafe.com/activator/template/akka-sample-multi-node-scala>`_.
|
||||
|
||||
Things to Keep in Mind
|
||||
======================
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue