From 77909249b201753cdbb3015c98026198638b5d3f Mon Sep 17 00:00:00 2001 From: jboner Date: Mon, 26 Oct 2009 11:30:03 +0100 Subject: [PATCH] migrated over to ScalaTest 1.0 --- akka-actors/pom.xml | 4 +- akka-actors/src/test/scala/AllTest.scala | 17 ++- ... => EventBasedSingleThreadActorTest.scala} | 21 +-- ...EventBasedSingleThreadDispatcherTest.scala | 28 ++-- ...la => EventBasedThreadPoolActorTest.scala} | 21 +-- .../EventBasedThreadPoolDispatcherTest.scala | 28 ++-- ...ctorSpec.scala => InMemoryActorTest.scala} | 55 ++++--- ...eActorSpec.scala => RemoteActorTest.scala} | 22 +-- ...rSpec.scala => RemoteSupervisorTest.scala} | 66 ++++---- ...chedulerSpec.scala => SchedulerTest.scala} | 9 +- ...ervisorSpec.scala => SupervisorTest.scala} | 66 ++++---- ...rSpec.scala => ThreadBasedActorTest.scala} | 21 +-- .../scala/ThreadBasedDispatcherTest.scala | 21 +-- .../test/scala/TransactionClasherSpec.scala | 144 ------------------ config/akka-reference.conf | 16 +- .../twitter/scala-json/1.0/scala-json-1.0.jar | Bin 37976 -> 0 bytes .../twitter/scala-json/1.0/scala-json-1.0.pom | 8 - 17 files changed, 196 insertions(+), 351 deletions(-) rename akka-actors/src/test/scala/{EventBasedSingleThreadActorSpec.scala => EventBasedSingleThreadActorTest.scala} (73%) rename akka-actors/src/test/scala/{EventBasedThreadPoolActorSpec.scala => EventBasedThreadPoolActorTest.scala} (71%) rename akka-actors/src/test/scala/{InMemoryActorSpec.scala => InMemoryActorTest.scala} (76%) rename akka-actors/src/test/scala/{RemoteActorSpec.scala => RemoteActorTest.scala} (81%) rename akka-actors/src/test/scala/{RemoteSupervisorSpec.scala => RemoteSupervisorTest.scala} (90%) rename akka-actors/src/test/scala/{SchedulerSpec.scala => SchedulerTest.scala} (70%) rename akka-actors/src/test/scala/{SupervisorSpec.scala => SupervisorTest.scala} (90%) rename akka-actors/src/test/scala/{ThreadBasedActorSpec.scala => ThreadBasedActorTest.scala} (74%) delete mode 100644 akka-actors/src/test/scala/TransactionClasherSpec.scala delete mode 100644 embedded-repo/com/twitter/scala-json/1.0/scala-json-1.0.jar delete mode 100644 embedded-repo/com/twitter/scala-json/1.0/scala-json-1.0.pom diff --git a/akka-actors/pom.xml b/akka-actors/pom.xml index 9003a9644b..09284fae4b 100644 --- a/akka-actors/pom.xml +++ b/akka-actors/pom.xml @@ -134,9 +134,9 @@ - org.scala-tools.testing + org.scalatest scalatest - 0.9.5 + 1.0 test diff --git a/akka-actors/src/test/scala/AllTest.scala b/akka-actors/src/test/scala/AllTest.scala index fd44b12c4a..968720e4df 100644 --- a/akka-actors/src/test/scala/AllTest.scala +++ b/akka-actors/src/test/scala/AllTest.scala @@ -4,23 +4,24 @@ import junit.framework.Test import junit.framework.TestCase import junit.framework.TestSuite -import se.scalablesolutions.akka.actor.{RemoteActorSpec, InMemoryActorSpec, ThreadBasedActorSpec, SupervisorSpec, RemoteSupervisorSpec, SchedulerSpec} +import se.scalablesolutions.akka.actor.{RemoteActorTest, InMemoryActorTest, ThreadBasedActorTest, SupervisorTest, RemoteSupervisorTest, SchedulerTest} import se.scalablesolutions.akka.dispatch.{EventBasedSingleThreadDispatcherTest, EventBasedThreadPoolDispatcherTest} object AllTest extends TestCase { def suite(): Test = { val suite = new TestSuite("All Scala tests") - suite.addTestSuite(classOf[SupervisorSpec]) - suite.addTestSuite(classOf[RemoteSupervisorSpec]) +/* suite.addTestSuite(classOf[SupervisorTest]) + suite.addTestSuite(classOf[RemoteSupervisorTest]) suite.addTestSuite(classOf[EventBasedSingleThreadDispatcherTest]) suite.addTestSuite(classOf[EventBasedThreadPoolDispatcherTest]) - suite.addTestSuite(classOf[ThreadBasedActorSpec]) + suite.addTestSuite(classOf[ThreadBasedActorTest]) suite.addTestSuite(classOf[EventBasedSingleThreadDispatcherTest]) suite.addTestSuite(classOf[EventBasedThreadPoolDispatcherTest]) - suite.addTestSuite(classOf[RemoteActorSpec]) - suite.addTestSuite(classOf[InMemoryActorSpec]) - suite.addTestSuite(classOf[SchedulerSpec]) - //suite.addTestSuite(classOf[TransactionClasherSpec]) + suite.addTestSuite(classOf[RemoteActorTest]) + suite.addTestSuite(classOf[InMemoryActorTest]) + suite.addTestSuite(classOf[SchedulerTest]) + //suite.addTestSuite(classOf[TransactionClasherTest]) +*/ suite } diff --git a/akka-actors/src/test/scala/EventBasedSingleThreadActorSpec.scala b/akka-actors/src/test/scala/EventBasedSingleThreadActorTest.scala similarity index 73% rename from akka-actors/src/test/scala/EventBasedSingleThreadActorSpec.scala rename to akka-actors/src/test/scala/EventBasedSingleThreadActorTest.scala index faaff8df4b..150c9ee8e4 100644 --- a/akka-actors/src/test/scala/EventBasedSingleThreadActorSpec.scala +++ b/akka-actors/src/test/scala/EventBasedSingleThreadActorTest.scala @@ -2,11 +2,12 @@ package se.scalablesolutions.akka.actor import java.util.concurrent.TimeUnit -import junit.framework.Assert._ +import org.scalatest.junit.JUnitSuite +import org.junit.Test import se.scalablesolutions.akka.dispatch.Dispatchers -class EventBasedSingleThreadActorSpec extends junit.framework.TestCase { +class EventBasedSingleThreadActorTest extends JUnitSuite { private val unit = TimeUnit.MILLISECONDS class TestActor extends Actor { @@ -20,7 +21,7 @@ class EventBasedSingleThreadActorSpec extends junit.framework.TestCase { } } - def testSendOneWay = { + @Test def shouldSendOneWay = { implicit val timeout = 5000L var oneWay = "nada" val actor = new Actor { @@ -31,29 +32,29 @@ class EventBasedSingleThreadActorSpec extends junit.framework.TestCase { actor.start val result = actor ! "OneWay" Thread.sleep(100) - assertEquals("received", oneWay) + assert("received" === oneWay) actor.stop } - def testSendReplySync = { + @Test def shouldSendReplySync = { implicit val timeout = 5000L val actor = new TestActor actor.start val result: String = actor !? "Hello" - assertEquals("World", result) + assert("World" === result) actor.stop } - def testSendReplyAsync = { + @Test def shouldSendReplyAsync = { implicit val timeout = 5000L val actor = new TestActor actor.start val result = actor !! "Hello" - assertEquals("World", result.get.asInstanceOf[String]) + assert("World" === result.get.asInstanceOf[String]) actor.stop } - def testSendReceiveException = { + @Test def shouldSendReceiveException = { implicit val timeout = 5000L val actor = new TestActor actor.start @@ -62,7 +63,7 @@ class EventBasedSingleThreadActorSpec extends junit.framework.TestCase { fail("Should have thrown an exception") } catch { case e => - assertEquals("expected", e.getMessage()) + assert("expected" === e.getMessage()) } actor.stop } diff --git a/akka-actors/src/test/scala/EventBasedSingleThreadDispatcherTest.scala b/akka-actors/src/test/scala/EventBasedSingleThreadDispatcherTest.scala index 2bae472e55..af62f475e0 100644 --- a/akka-actors/src/test/scala/EventBasedSingleThreadDispatcherTest.scala +++ b/akka-actors/src/test/scala/EventBasedSingleThreadDispatcherTest.scala @@ -7,12 +7,11 @@ import java.util.concurrent.locks.Lock import java.util.concurrent.locks.ReentrantLock import org.junit.{Test, Before} -import org.junit.Assert._ -import junit.framework.TestCase +import org.scalatest.junit.JUnitSuite import se.scalablesolutions.akka.actor.Actor -class EventBasedSingleThreadDispatcherTest extends TestCase { +class EventBasedSingleThreadDispatcherTest extends JUnitSuite { private var threadingIssueDetected: AtomicBoolean = null class TestMessageHandle(handleLatch: CountDownLatch) extends MessageInvoker { @@ -35,22 +34,19 @@ class EventBasedSingleThreadDispatcherTest extends TestCase { } @Before - override def setUp = { + def setUp = { threadingIssueDetected = new AtomicBoolean(false) } - @Test - def testMessagesDispatchedToTheSameHandlerAreExecutedSequentially = { + @Test def shouldMessagesDispatchedToTheSameHandlerAreExecutedSequentially = { internalTestMessagesDispatchedToTheSameHandlerAreExecutedSequentially } - @Test - def testMessagesDispatchedToDifferentHandlersAreExecutedSequentially = { + @Test def shouldMessagesDispatchedToDifferentHandlersAreExecutedSequentially = { internalTestMessagesDispatchedToDifferentHandlersAreExecutedSequentially } - @Test - def testMessagesDispatchedToHandlersAreExecutedInFIFOOrder = { + @Test def shouldMessagesDispatchedToHandlersAreExecutedInFIFOOrder = { internalTestMessagesDispatchedToHandlersAreExecutedInFIFOOrder } @@ -67,8 +63,8 @@ class EventBasedSingleThreadDispatcherTest extends TestCase { for (i <- 0 until 100) { dispatcher.messageQueue.append(new MessageInvocation(key1, new Object, None, None)) } - assertTrue(handleLatch.await(5, TimeUnit.SECONDS)) - assertFalse(threadingIssueDetected.get) + assert(handleLatch.await(5, TimeUnit.SECONDS)) + assert(!threadingIssueDetected.get) } private def internalTestMessagesDispatchedToDifferentHandlersAreExecutedSequentially: Unit = { @@ -79,8 +75,8 @@ class EventBasedSingleThreadDispatcherTest extends TestCase { dispatcher.start dispatcher.messageQueue.append(new MessageInvocation(key1, new Object, None, None)) dispatcher.messageQueue.append(new MessageInvocation(key2, new Object, None, None)) - assertTrue(handleLatch.await(5, TimeUnit.SECONDS)) - assertFalse(threadingIssueDetected.get) + assert(handleLatch.await(5, TimeUnit.SECONDS)) + assert(!threadingIssueDetected.get) } private def internalTestMessagesDispatchedToHandlersAreExecutedInFIFOOrder: Unit = { @@ -113,8 +109,8 @@ class EventBasedSingleThreadDispatcherTest extends TestCase { dispatcher.messageQueue.append(new MessageInvocation(key1, new java.lang.Integer(i), None, None)) dispatcher.messageQueue.append(new MessageInvocation(key2, new java.lang.Integer(i), None, None)) } - assertTrue(handleLatch.await(5, TimeUnit.SECONDS)) - assertFalse(threadingIssueDetected.get) + assert(handleLatch.await(5, TimeUnit.SECONDS)) + assert(!threadingIssueDetected.get) dispatcher.shutdown } } diff --git a/akka-actors/src/test/scala/EventBasedThreadPoolActorSpec.scala b/akka-actors/src/test/scala/EventBasedThreadPoolActorTest.scala similarity index 71% rename from akka-actors/src/test/scala/EventBasedThreadPoolActorSpec.scala rename to akka-actors/src/test/scala/EventBasedThreadPoolActorTest.scala index 767f30574d..168a20ff9c 100644 --- a/akka-actors/src/test/scala/EventBasedThreadPoolActorSpec.scala +++ b/akka-actors/src/test/scala/EventBasedThreadPoolActorTest.scala @@ -2,9 +2,10 @@ package se.scalablesolutions.akka.actor import java.util.concurrent.TimeUnit -import junit.framework.Assert._ +import org.scalatest.junit.JUnitSuite +import org.junit.Test -class EventBasedThreadPoolActorSpec extends junit.framework.TestCase { +class EventBasedThreadPoolActorTest extends JUnitSuite { private val unit = TimeUnit.MILLISECONDS class TestActor extends Actor { @@ -16,7 +17,7 @@ class EventBasedThreadPoolActorSpec extends junit.framework.TestCase { } } - def testSendOneWay = { + @Test def shouldSendOneWay = { implicit val timeout = 5000L var oneWay = "nada" val actor = new Actor { @@ -27,29 +28,29 @@ class EventBasedThreadPoolActorSpec extends junit.framework.TestCase { actor.start val result = actor ! "OneWay" Thread.sleep(100) - assertEquals("received", oneWay) + assert("received" === oneWay) actor.stop } - def testSendReplySync = { + @Test def shouldSendReplySync = { implicit val timeout = 5000L val actor = new TestActor actor.start val result: String = actor !? "Hello" - assertEquals("World", result) + assert("World" === result) actor.stop } - def testSendReplyAsync = { + @Test def shouldSendReplyAsync = { implicit val timeout = 5000L val actor = new TestActor actor.start val result = actor !! "Hello" - assertEquals("World", result.get.asInstanceOf[String]) + assert("World" === result.get.asInstanceOf[String]) actor.stop } - def testSendReceiveException = { + @Test def shouldSendReceiveException = { implicit val timeout = 5000L val actor = new TestActor actor.start @@ -58,7 +59,7 @@ class EventBasedThreadPoolActorSpec extends junit.framework.TestCase { fail("Should have thrown an exception") } catch { case e => - assertEquals("expected", e.getMessage()) + assert("expected" === e.getMessage()) } actor.stop } diff --git a/akka-actors/src/test/scala/EventBasedThreadPoolDispatcherTest.scala b/akka-actors/src/test/scala/EventBasedThreadPoolDispatcherTest.scala index 2cb8d102ae..7391c348d9 100644 --- a/akka-actors/src/test/scala/EventBasedThreadPoolDispatcherTest.scala +++ b/akka-actors/src/test/scala/EventBasedThreadPoolDispatcherTest.scala @@ -5,35 +5,35 @@ import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.locks.Lock import java.util.concurrent.locks.ReentrantLock import java.util.concurrent.{Executors, CountDownLatch, CyclicBarrier, TimeUnit} -import org.junit.Before -import org.junit.Test -import org.junit.Assert._ -import junit.framework.TestCase + +import org.scalatest.junit.JUnitSuite +import org.junit.{Test, Before} + import se.scalablesolutions.akka.actor.Actor -class EventBasedThreadPoolDispatcherTest extends TestCase { +class EventBasedThreadPoolDispatcherTest extends JUnitSuite { private var threadingIssueDetected: AtomicBoolean = null val key1 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} } val key2 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} } val key3 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} } @Before - override def setUp = { + def setUp = { threadingIssueDetected = new AtomicBoolean(false) } @Test - def testMessagesDispatchedToTheSameHandlerAreExecutedSequentially = { + def shouldMessagesDispatchedToTheSameHandlerAreExecutedSequentially = { internalTestMessagesDispatchedToTheSameHandlerAreExecutedSequentially } @Test - def testMessagesDispatchedToDifferentHandlersAreExecutedConcurrently = { + def shouldMessagesDispatchedToDifferentHandlersAreExecutedConcurrently = { internalTestMessagesDispatchedToDifferentHandlersAreExecutedConcurrently } @Test - def testMessagesDispatchedToHandlersAreExecutedInFIFOOrder = { + def shouldMessagesDispatchedToHandlersAreExecutedInFIFOOrder = { internalTestMessagesDispatchedToHandlersAreExecutedInFIFOOrder } @@ -69,8 +69,8 @@ class EventBasedThreadPoolDispatcherTest extends TestCase { for (i <- 0 until 10) { dispatcher.messageQueue.append(new MessageInvocation(key1, new Object, None, None)) } - assertTrue(handleLatch.await(5, TimeUnit.SECONDS)) - assertFalse(threadingIssueDetected.get) + assert(handleLatch.await(5, TimeUnit.SECONDS)) + assert(!threadingIssueDetected.get) } private def internalTestMessagesDispatchedToDifferentHandlersAreExecutedConcurrently: Unit = { @@ -115,7 +115,7 @@ class EventBasedThreadPoolDispatcherTest extends TestCase { dispatcher.messageQueue.append(new MessageInvocation(key2, "Sending Message 2.2", None, None)) handlersBarrier.await(5, TimeUnit.SECONDS) - assertFalse(threadingIssueDetected.get) + assert(!threadingIssueDetected.get) } private def internalTestMessagesDispatchedToHandlersAreExecutedInFIFOOrder: Unit = { @@ -154,7 +154,7 @@ class EventBasedThreadPoolDispatcherTest extends TestCase { dispatcher.messageQueue.append(new MessageInvocation(key1, new java.lang.Integer(i), None, None)) dispatcher.messageQueue.append(new MessageInvocation(key2, new java.lang.Integer(i), None, None)) } - assertTrue(handleLatch.await(5, TimeUnit.SECONDS)) - assertFalse(threadingIssueDetected.get) + assert(handleLatch.await(5, TimeUnit.SECONDS)) + assert(!threadingIssueDetected.get) } } diff --git a/akka-actors/src/test/scala/InMemoryActorSpec.scala b/akka-actors/src/test/scala/InMemoryActorTest.scala similarity index 76% rename from akka-actors/src/test/scala/InMemoryActorSpec.scala rename to akka-actors/src/test/scala/InMemoryActorTest.scala index 2f599ca85c..83c105d69f 100644 --- a/akka-actors/src/test/scala/InMemoryActorSpec.scala +++ b/akka-actors/src/test/scala/InMemoryActorTest.scala @@ -1,9 +1,8 @@ package se.scalablesolutions.akka.actor -import junit.framework.TestCase +import org.scalatest.junit.JUnitSuite +import org.junit.Test -import org.junit.{Test, Before} -import org.junit.Assert._ import se.scalablesolutions.akka.state.{TransactionalState, TransactionalMap, TransactionalRef, TransactionalVector} case class GetMapState(key: String) @@ -86,31 +85,31 @@ class InMemFailerActor extends Actor { } } -class InMemoryActorSpec extends TestCase { +class InMemoryActorTest extends JUnitSuite { /* @Test - def testOneWayMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { + def shouldOneWayMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { val stateful = new InMemStatefulActor stateful.start stateful ! SetMapStateOneWay("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init") // set init state Thread.sleep(1000) stateful ! SuccessOneWay("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired Thread.sleep(1000) - assertEquals("new state", (stateful !! GetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess")).get) + assert("new state" === (stateful !! GetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess")).get) } */ @Test - def testMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { + def shouldMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { val stateful = new InMemStatefulActor stateful.start stateful !! SetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init") // set init state stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired - assertEquals("new state", (stateful !! GetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess")).get) + assert("new state" === (stateful !! GetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess")).get) } /* @Test - def testOneWayMapShouldRollbackStateForStatefulServerInCaseOfFailure = { + def shouldOneWayMapShouldRollbackStateForStatefulServerInCaseOfFailure = { val stateful = new InMemStatefulActor stateful.start val failer = new InMemFailerActor @@ -119,11 +118,11 @@ class InMemoryActorSpec extends TestCase { Thread.sleep(1000) stateful ! FailureOneWay("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method Thread.sleep(1000) - assertEquals("init", (stateful !! GetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure")).get) // check that state is == init state + assert("init" === (stateful !! GetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure")).get) // check that state is == init state } */ @Test - def testMapShouldRollbackStateForStatefulServerInCaseOfFailure = { + def shouldMapShouldRollbackStateForStatefulServerInCaseOfFailure = { val stateful = new InMemStatefulActor stateful.start stateful !! SetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init") // set init state @@ -133,31 +132,31 @@ class InMemoryActorSpec extends TestCase { stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method fail("should have thrown an exception") } catch {case e: RuntimeException => {}} - assertEquals("init", (stateful !! GetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure")).get) // check that state is == init state + assert("init" === (stateful !! GetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure")).get) // check that state is == init state } /* @Test - def testOneWayVectorShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { + def shouldOneWayVectorShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { val stateful = new InMemStatefulActor stateful.start stateful ! SetVectorStateOneWay("init") // set init state Thread.sleep(1000) stateful ! SuccessOneWay("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired Thread.sleep(1000) - assertEquals(2, (stateful !! GetVectorSize).get) + assert(2 === (stateful !! GetVectorSize).get) } */ @Test - def testVectorShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { + def shouldVectorShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { val stateful = new InMemStatefulActor stateful.start stateful !! SetVectorState("init") // set init state stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired - assertEquals(2, (stateful !! GetVectorSize).get) + assert(2 === (stateful !! GetVectorSize).get) } /* @Test - def testOneWayVectorShouldRollbackStateForStatefulServerInCaseOfFailure = { + def shouldOneWayVectorShouldRollbackStateForStatefulServerInCaseOfFailure = { val stateful = new InMemStatefulActor stateful.start stateful ! SetVectorStateOneWay("init") // set init state @@ -166,11 +165,11 @@ class InMemoryActorSpec extends TestCase { failer.start stateful ! FailureOneWay("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method Thread.sleep(1000) - assertEquals(1, (stateful !! GetVectorSize).get) + assert(1 === (stateful !! GetVectorSize).get) } */ @Test - def testVectorShouldRollbackStateForStatefulServerInCaseOfFailure = { + def shouldVectorShouldRollbackStateForStatefulServerInCaseOfFailure = { val stateful = new InMemStatefulActor stateful.start stateful !! SetVectorState("init") // set init state @@ -180,31 +179,31 @@ class InMemoryActorSpec extends TestCase { stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method fail("should have thrown an exception") } catch {case e: RuntimeException => {}} - assertEquals(1, (stateful !! GetVectorSize).get) + assert(1 === (stateful !! GetVectorSize).get) } /* @Test - def testOneWayRefShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { + def shouldOneWayRefShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { val stateful = new InMemStatefulActor stateful.start stateful ! SetRefStateOneWay("init") // set init state Thread.sleep(1000) stateful ! SuccessOneWay("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired Thread.sleep(1000) - assertEquals("new state", (stateful !! GetRefState).get) + assert("new state" === (stateful !! GetRefState).get) } */ @Test - def testRefShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { + def shouldRefShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { val stateful = new InMemStatefulActor stateful.start stateful !! SetRefState("init") // set init state stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired - assertEquals("new state", (stateful !! GetRefState).get) + assert("new state" === (stateful !! GetRefState).get) } /* @Test - def testOneWayRefShouldRollbackStateForStatefulServerInCaseOfFailure = { + def shouldOneWayRefShouldRollbackStateForStatefulServerInCaseOfFailure = { val stateful = new InMemStatefulActor stateful.start stateful ! SetRefStateOneWay("init") // set init state @@ -213,11 +212,11 @@ class InMemoryActorSpec extends TestCase { failer.start stateful ! FailureOneWay("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method Thread.sleep(1000) - assertEquals("init", (stateful !! GetRefState).get) // check that state is == init state + assert("init" === (stateful !! GetRefState).get) // check that state is == init state } */ @Test - def testRefShouldRollbackStateForStatefulServerInCaseOfFailure = { + def shouldRefShouldRollbackStateForStatefulServerInCaseOfFailure = { val stateful = new InMemStatefulActor stateful.start stateful !! SetRefState("init") // set init state @@ -227,6 +226,6 @@ class InMemoryActorSpec extends TestCase { stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method fail("should have thrown an exception") } catch {case e: RuntimeException => {}} - assertEquals("init", (stateful !! GetRefState).get) // check that state is == init state + assert("init" === (stateful !! GetRefState).get) // check that state is == init state } } diff --git a/akka-actors/src/test/scala/RemoteActorSpec.scala b/akka-actors/src/test/scala/RemoteActorTest.scala similarity index 81% rename from akka-actors/src/test/scala/RemoteActorSpec.scala rename to akka-actors/src/test/scala/RemoteActorTest.scala index 5eaa58a855..a187c3f16a 100644 --- a/akka-actors/src/test/scala/RemoteActorSpec.scala +++ b/akka-actors/src/test/scala/RemoteActorTest.scala @@ -4,8 +4,8 @@ import java.util.concurrent.TimeUnit import junit.framework.TestCase import se.scalablesolutions.akka.nio.{RemoteServer, RemoteClient} -import org.junit.{Test, Before} -import org.junit.Assert._ +import org.scalatest.junit.JUnitSuite +import org.junit.Test object Global { var oneWay = "nada" @@ -26,7 +26,7 @@ class RemoteActorSpecActorBidirectional extends Actor { } } -class RemoteActorSpec extends TestCase { +class RemoteActorTest extends JUnitSuite { akka.Config.config new Thread(new Runnable() { def run = { @@ -38,41 +38,41 @@ class RemoteActorSpec extends TestCase { private val unit = TimeUnit.MILLISECONDS @Test - def testSendOneWay = { + def shouldSendOneWay = { implicit val timeout = 500000000L val actor = new RemoteActorSpecActorUnidirectional actor.makeRemote(RemoteServer.HOSTNAME, RemoteServer.PORT) actor.start val result = actor ! "OneWay" Thread.sleep(100) - assertEquals("received", Global.oneWay) + assert("received" === Global.oneWay) actor.stop } @Test - def testSendReplySync = { + def shouldSendReplySync = { implicit val timeout = 500000000L val actor = new RemoteActorSpecActorBidirectional actor.makeRemote(RemoteServer.HOSTNAME, RemoteServer.PORT) actor.start val result: String = actor !? "Hello" - assertEquals("World", result) + assert("World" === result) actor.stop } @Test - def testSendReplyAsync = { + def shouldSendReplyAsync = { implicit val timeout = 500000000L val actor = new RemoteActorSpecActorBidirectional actor.makeRemote(RemoteServer.HOSTNAME, RemoteServer.PORT) actor.start val result = actor !! "Hello" - assertEquals("World", result.get.asInstanceOf[String]) + assert("World" === result.get.asInstanceOf[String]) actor.stop } @Test - def testSendReceiveException = { + def shouldSendReceiveException = { implicit val timeout = 500000000L val actor = new RemoteActorSpecActorBidirectional actor.makeRemote(RemoteServer.HOSTNAME, RemoteServer.PORT) @@ -82,7 +82,7 @@ class RemoteActorSpec extends TestCase { fail("Should have thrown an exception") } catch { case e => - assertEquals("expected", e.getMessage()) + assert("expected" === e.getMessage()) } actor.stop } diff --git a/akka-actors/src/test/scala/RemoteSupervisorSpec.scala b/akka-actors/src/test/scala/RemoteSupervisorTest.scala similarity index 90% rename from akka-actors/src/test/scala/RemoteSupervisorSpec.scala rename to akka-actors/src/test/scala/RemoteSupervisorTest.scala index dfc97959c9..adbce545a1 100644 --- a/akka-actors/src/test/scala/RemoteSupervisorSpec.scala +++ b/akka-actors/src/test/scala/RemoteSupervisorTest.scala @@ -8,9 +8,8 @@ import akka.serialization.BinaryString import nio.{RemoteClient, RemoteServer} import config.ScalaConfig._ -//import com.jteigen.scalatest.JUnit4Runner -import org.junit.runner.RunWith -import org.scalatest.Suite +import org.scalatest.junit.JUnitSuite +import org.junit.Test object Log { var messageLog: String = "" @@ -19,8 +18,7 @@ object Log { /** * @author Jonas Bonér */ -//@RunWith(classOf[JUnit4Runner]) -class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { +class RemoteSupervisorTest extends JUnitSuite { akka.Config.config new Thread(new Runnable() { @@ -34,7 +32,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { var pingpong2: RemotePingPong2Actor = _ var pingpong3: RemotePingPong3Actor = _ - def testStartServer = { + @Test def shouldStartServer = { Log.messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor @@ -44,12 +42,12 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testKillSingleActorOneForOne = { + @Test def shouldKillSingleActorOneForOne = { Log.messageLog = "" val sup = getSingleActorOneForOneSupervisor sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! BinaryString("Die") } Thread.sleep(500) @@ -58,7 +56,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testCallKillCallSingleActorOneForOne = { + @Test def shouldCallKillCallSingleActorOneForOne = { Log.messageLog = "" val sup = getSingleActorOneForOneSupervisor sup ! StartSupervisor @@ -70,7 +68,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { expect("ping") { Log.messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! BinaryString("Die") } Thread.sleep(500) @@ -86,12 +84,12 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testKillSingleActorAllForOne = { + @Test def shouldKillSingleActorAllForOne = { Log.messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! BinaryString("Die") } Thread.sleep(500) @@ -100,7 +98,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testCallKillCallSingleActorAllForOne = { + @Test def shouldCallKillCallSingleActorAllForOne = { Log.messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor @@ -112,7 +110,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { expect("ping") { Log.messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! BinaryString("Die") } Thread.sleep(500) @@ -128,12 +126,12 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testKillMultipleActorsOneForOne = { + @Test def shouldKillMultipleActorsOneForOne = { Log.messageLog = "" val sup = getMultipleActorsOneForOneConf sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong3 !! BinaryString("Die") } Thread.sleep(500) @@ -162,7 +160,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { expect("pingpingping") { Log.messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 !! BinaryString("Die") } Thread.sleep(500) @@ -186,12 +184,12 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testKillMultipleActorsAllForOne = { + @Test def shouldKillMultipleActorsAllForOne = { Log.messageLog = "" val sup = getMultipleActorsAllForOneConf sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 !! BinaryString("Die") } Thread.sleep(500) @@ -220,7 +218,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { expect("pingpingping") { Log.messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 !! BinaryString("Die") } Thread.sleep(500) @@ -245,7 +243,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } /* - def testOneWayKillSingleActorOneForOne = { + @Test def shouldOneWayKillSingleActorOneForOne = { Logg.messageLog = "" val sup = getSingleActorOneForOneSupervisor sup ! StartSupervisor @@ -257,7 +255,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testOneWayCallKillCallSingleActorOneForOne = { + @Test def shouldOneWayCallKillCallSingleActorOneForOne = { Logg.messageLog = "" val sup = getSingleActorOneForOneSupervisor sup ! StartSupervisor @@ -281,12 +279,12 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { */ /* - def testOneWayKillSingleActorAllForOne = { + @Test def shouldOneWayKillSingleActorAllForOne = { Logg.messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 ! BinaryString("Die") } Thread.sleep(500) @@ -295,7 +293,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testOneWayCallKillCallSingleActorAllForOne = { + @Test def shouldOneWayCallKillCallSingleActorAllForOne = { Logg.messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor @@ -307,7 +305,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { expect("ping") { Logg.messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 ! BinaryString("Die") } Thread.sleep(500) @@ -323,12 +321,12 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testOneWayKillMultipleActorsOneForOne = { + @Test def shouldOneWayKillMultipleActorsOneForOne = { Logg.messageLog = "" val sup = getMultipleActorsOneForOneConf sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong3 ! BinaryString("Die") } Thread.sleep(500) @@ -357,7 +355,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { expect("pingpingping") { Logg.messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 ! BinaryString("Die") } Thread.sleep(500) @@ -381,12 +379,12 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { } } - def testOneWayKillMultipleActorsAllForOne = { + @Test def shouldOneWayKillMultipleActorsAllForOne = { Logg.messageLog = "" val sup = getMultipleActorsAllForOneConf sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 ! BinaryString("Die") } Thread.sleep(500) @@ -415,7 +413,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { expect("pingpingping") { Logg.messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 ! BinaryString("Die") } Thread.sleep(500) @@ -441,11 +439,11 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite { */ /* - def testNestedSupervisorsTerminateFirstLevelActorAllForOne = { + @Test def shouldNestedSupervisorsTerminateFirstLevelActorAllForOne = { Logg.messageLog = "" val sup = getNestedSupervisorsAllForOneConf sup ! StartSupervisor - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! BinaryString("Die") } Thread.sleep(500) diff --git a/akka-actors/src/test/scala/SchedulerSpec.scala b/akka-actors/src/test/scala/SchedulerTest.scala similarity index 70% rename from akka-actors/src/test/scala/SchedulerSpec.scala rename to akka-actors/src/test/scala/SchedulerTest.scala index b7b801bce6..029872a295 100644 --- a/akka-actors/src/test/scala/SchedulerSpec.scala +++ b/akka-actors/src/test/scala/SchedulerTest.scala @@ -2,11 +2,12 @@ package se.scalablesolutions.akka.actor import java.util.concurrent.TimeUnit -import org.junit.Assert._ +import org.scalatest.junit.JUnitSuite +import org.junit.Test -class SchedulerSpec extends junit.framework.TestCase { +class SchedulerTest extends JUnitSuite { - def testScheduler = { + @Test def schedulerShouldSchedule = { var count = 0 case object Tick val actor = new Actor() { @@ -18,6 +19,6 @@ class SchedulerSpec extends junit.framework.TestCase { Scheduler.schedule(actor, Tick, 0L, 1L, TimeUnit.SECONDS) Thread.sleep(5000) Scheduler.shutdown - assertTrue(count > 0) + assert(count > 0) } } \ No newline at end of file diff --git a/akka-actors/src/test/scala/SupervisorSpec.scala b/akka-actors/src/test/scala/SupervisorTest.scala similarity index 90% rename from akka-actors/src/test/scala/SupervisorSpec.scala rename to akka-actors/src/test/scala/SupervisorTest.scala index f9b77ceac6..d62b68989b 100644 --- a/akka-actors/src/test/scala/SupervisorSpec.scala +++ b/akka-actors/src/test/scala/SupervisorTest.scala @@ -6,15 +6,13 @@ package se.scalablesolutions.akka.actor import config.ScalaConfig._ -//import com.jteigen.scalatest.JUnit4Runner -import org.junit.runner.RunWith -import org.scalatest.Suite +import org.scalatest.junit.JUnitSuite +import org.junit.Test /** * @author Jonas Bonér */ -//@RunWith(classOf[JUnit4Runner]) -class SupervisorSpec extends junit.framework.TestCase with Suite { +class SupervisorTest extends JUnitSuite { var messageLog: String = "" var oneWayLog: String = "" @@ -23,7 +21,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { var pingpong2: PingPong2Actor = _ var pingpong3: PingPong3Actor = _ - def testStartServer = { + @Test def shouldStartServer = { messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor @@ -33,12 +31,12 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testKillSingleActorOneForOne = { + @Test def shouldKillSingleActorOneForOne = { messageLog = "" val sup = getSingleActorOneForOneSupervisor sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! Die } Thread.sleep(500) @@ -47,7 +45,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testCallKillCallSingleActorOneForOne = { + @Test def shouldCallKillCallSingleActorOneForOne = { messageLog = "" val sup = getSingleActorOneForOneSupervisor sup ! StartSupervisor @@ -59,7 +57,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { expect("ping") { messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! Die } Thread.sleep(500) @@ -75,12 +73,12 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testKillSingleActorAllForOne = { + @Test def shouldKillSingleActorAllForOne = { messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! Die } Thread.sleep(500) @@ -89,7 +87,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testCallKillCallSingleActorAllForOne = { + @Test def shouldCallKillCallSingleActorAllForOne = { messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor @@ -101,7 +99,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { expect("ping") { messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! Die } Thread.sleep(500) @@ -117,12 +115,12 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testKillMultipleActorsOneForOne = { + @Test def shouldKillMultipleActorsOneForOne = { messageLog = "" val sup = getMultipleActorsOneForOneConf sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong3 !! Die } Thread.sleep(500) @@ -151,7 +149,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { expect("pingpingping") { messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 !! Die } Thread.sleep(500) @@ -175,12 +173,12 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testKillMultipleActorsAllForOne = { + @Test def shouldKillMultipleActorsAllForOne = { messageLog = "" val sup = getMultipleActorsAllForOneConf sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 !! Die } Thread.sleep(500) @@ -209,7 +207,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { expect("pingpingping") { messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 !! Die } Thread.sleep(500) @@ -233,7 +231,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testOneWayKillSingleActorOneForOne = { + @Test def shouldOneWayKillSingleActorOneForOne = { messageLog = "" val sup = getSingleActorOneForOneSupervisor sup ! StartSupervisor @@ -245,7 +243,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testOneWayCallKillCallSingleActorOneForOne = { + @Test def shouldOneWayCallKillCallSingleActorOneForOne = { messageLog = "" val sup = getSingleActorOneForOneSupervisor sup ! StartSupervisor @@ -268,12 +266,12 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } /* - def testOneWayKillSingleActorAllForOne = { + @Test def shouldOneWayKillSingleActorAllForOne = { messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 ! Die } Thread.sleep(500) @@ -282,7 +280,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testOneWayCallKillCallSingleActorAllForOne = { + @Test def shouldOneWayCallKillCallSingleActorAllForOne = { messageLog = "" val sup = getSingleActorAllForOneSupervisor sup ! StartSupervisor @@ -294,7 +292,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { expect("ping") { messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 ! Die } Thread.sleep(500) @@ -310,12 +308,12 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testOneWayKillMultipleActorsOneForOne = { + @Test def shouldOneWayKillMultipleActorsOneForOne = { messageLog = "" val sup = getMultipleActorsOneForOneConf sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong3 ! Die } Thread.sleep(500) @@ -344,7 +342,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { expect("pingpingping") { messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 ! Die } Thread.sleep(500) @@ -368,12 +366,12 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { } } - def testOneWayKillMultipleActorsAllForOne = { + @Test def shouldOneWayKillMultipleActorsAllForOne = { messageLog = "" val sup = getMultipleActorsAllForOneConf sup ! StartSupervisor Thread.sleep(500) - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 ! Die } Thread.sleep(500) @@ -402,7 +400,7 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { expect("pingpingping") { messageLog } - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong2 ! Die } Thread.sleep(500) @@ -428,11 +426,11 @@ class SupervisorSpec extends junit.framework.TestCase with Suite { */ /* - def testNestedSupervisorsTerminateFirstLevelActorAllForOne = { + @Test def shouldNestedSupervisorsTerminateFirstLevelActorAllForOne = { messageLog = "" val sup = getNestedSupervisorsAllForOneConf sup ! StartSupervisor - intercept(classOf[RuntimeException]) { + intercept[RuntimeException] { pingpong1 !! Die } Thread.sleep(500) diff --git a/akka-actors/src/test/scala/ThreadBasedActorSpec.scala b/akka-actors/src/test/scala/ThreadBasedActorTest.scala similarity index 74% rename from akka-actors/src/test/scala/ThreadBasedActorSpec.scala rename to akka-actors/src/test/scala/ThreadBasedActorTest.scala index 1fb04abeca..6d30ec58db 100644 --- a/akka-actors/src/test/scala/ThreadBasedActorSpec.scala +++ b/akka-actors/src/test/scala/ThreadBasedActorTest.scala @@ -2,11 +2,12 @@ package se.scalablesolutions.akka.actor import java.util.concurrent.TimeUnit -import junit.framework.Assert._ +import org.scalatest.junit.JUnitSuite +import org.junit.Test import se.scalablesolutions.akka.dispatch.Dispatchers -class ThreadBasedActorSpec extends junit.framework.TestCase { +class ThreadBasedActorTest extends JUnitSuite { private val unit = TimeUnit.MILLISECONDS class TestActor extends Actor { @@ -20,7 +21,7 @@ class ThreadBasedActorSpec extends junit.framework.TestCase { } } - def testSendOneWay = { + @Test def shouldSendOneWay = { implicit val timeout = 5000L var oneWay = "nada" val actor = new Actor { @@ -31,29 +32,29 @@ class ThreadBasedActorSpec extends junit.framework.TestCase { actor.start val result = actor ! "OneWay" Thread.sleep(100) - assertEquals("received", oneWay) + assert("received" === oneWay) actor.stop } - def testSendReplySync = { + @Test def shouldSendReplySync = { implicit val timeout = 5000L val actor = new TestActor actor.start val result: String = actor !? "Hello" - assertEquals("World", result) + assert("World" === result) actor.stop } - def testSendReplyAsync = { + @Test def shouldSendReplyAsync = { implicit val timeout = 5000L val actor = new TestActor actor.start val result = actor !! "Hello" - assertEquals("World", result.get.asInstanceOf[String]) + assert("World" === result.get.asInstanceOf[String]) actor.stop } - def testSendReceiveException = { + @Test def shouldSendReceiveException = { implicit val timeout = 5000L val actor = new TestActor actor.start @@ -62,7 +63,7 @@ class ThreadBasedActorSpec extends junit.framework.TestCase { fail("Should have thrown an exception") } catch { case e => - assertEquals("expected", e.getMessage()) + assert("expected" === e.getMessage()) } actor.stop } diff --git a/akka-actors/src/test/scala/ThreadBasedDispatcherTest.scala b/akka-actors/src/test/scala/ThreadBasedDispatcherTest.scala index 31140f5a86..e5f4a6f1d4 100644 --- a/akka-actors/src/test/scala/ThreadBasedDispatcherTest.scala +++ b/akka-actors/src/test/scala/ThreadBasedDispatcherTest.scala @@ -5,12 +5,13 @@ import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.locks.Lock import java.util.concurrent.locks.ReentrantLock + +import org.scalatest.junit.JUnitSuite import org.junit.{Test, Before} -import org.junit.Assert._ -import junit.framework.TestCase + import se.scalablesolutions.akka.actor.Actor -class ThreadBasedDispatcherTest extends TestCase { +class ThreadBasedDispatcherTest extends JUnitSuite { private var threadingIssueDetected: AtomicBoolean = null val key1 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} } val key2 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} } @@ -36,17 +37,17 @@ class ThreadBasedDispatcherTest extends TestCase { } @Before - override def setUp = { + def setUp = { threadingIssueDetected = new AtomicBoolean(false) } @Test - def testMessagesDispatchedToTheSameHandlerAreExecutedSequentially = { + def shouldMessagesDispatchedToTheSameHandlerAreExecutedSequentially = { internalTestMessagesDispatchedToTheSameHandlerAreExecutedSequentially } @Test - def testMessagesDispatchedToHandlersAreExecutedInFIFOOrder = { + def shouldMessagesDispatchedToHandlersAreExecutedInFIFOOrder = { internalTestMessagesDispatchedToHandlersAreExecutedInFIFOOrder } @@ -58,8 +59,8 @@ class ThreadBasedDispatcherTest extends TestCase { for (i <- 0 until 100) { dispatcher.messageQueue.append(new MessageInvocation(key1, new Object, None, None)) } - assertTrue(handleLatch.await(5, TimeUnit.SECONDS)) - assertFalse(threadingIssueDetected.get) + assert(handleLatch.await(5, TimeUnit.SECONDS)) + assert(!threadingIssueDetected.get) } private def internalTestMessagesDispatchedToHandlersAreExecutedInFIFOOrder: Unit = { @@ -79,8 +80,8 @@ class ThreadBasedDispatcherTest extends TestCase { for (i <- 0 until 100) { dispatcher.messageQueue.append(new MessageInvocation(key1, new Integer(i), None, None)) } - assertTrue(handleLatch.await(5, TimeUnit.SECONDS)) - assertFalse(threadingIssueDetected.get) + assert(handleLatch.await(5, TimeUnit.SECONDS)) + assert(!threadingIssueDetected.get) dispatcher.shutdown } } diff --git a/akka-actors/src/test/scala/TransactionClasherSpec.scala b/akka-actors/src/test/scala/TransactionClasherSpec.scala deleted file mode 100644 index 4679ff7872..0000000000 --- a/akka-actors/src/test/scala/TransactionClasherSpec.scala +++ /dev/null @@ -1,144 +0,0 @@ -package se.scalablesolutions.akka.actor - -import junit.framework.TestCase - -import org.junit.{Test, Before} -import org.junit.Assert._ - -import state.TransactionalState - -class TxActor(clasher: Actor) extends Actor { - timeout = 1000000 - makeTransactionRequired - - def receive: PartialFunction[Any, Unit] = { - case msg: AnyRef => - clasher !! msg - reply(msg) - } -} - -class TxClasherActor extends Actor { - val vector = TransactionalState.newVector[String] - timeout = 1000000 - makeTransactionRequired - var count = 0 - def receive: PartialFunction[Any, Unit] = { - case "First" => - if (count == 0) Thread.sleep(5000) - count += 1 - println("FIRST") - vector.add("First") - println("--- VECTOR: " + vector) - reply("First") - case "Second" => - println("SECOND") - vector.add("Second") - println("--- VECTOR: " + vector) - reply("Second") - case "Index0" => - reply(vector(0)) - case "Index1" => - reply(vector(1)) - } -} - -class TxActorOneWay(clasher: Actor) extends Actor { - timeout = 1000000 - makeTransactionRequired - - def receive: PartialFunction[Any, Unit] = { - case msg: AnyRef => - clasher ! msg - } -} - -class TxClasherActorOneWay extends Actor { - val vector = TransactionalState.newVector[String] - timeout = 1000000 - makeTransactionRequired - var count = 0 - def receive: PartialFunction[Any, Unit] = { - case "First" => - if (count == 0) Thread.sleep(5000) - count += 1 - println("FIRST") - vector.add("First") - println("--- VECTOR: " + vector) - case "Second" => - println("SECOND") - vector.add("Second") - println("--- VECTOR: " + vector) - case "Index0" => - reply(vector(0)) - case "Index1" => - reply(vector(1)) - } -} - -class TransactionClasherSpec extends TestCase { - @Test - def testBangBangClash = { - val clasher = new TxClasherActor - clasher.start - val txActor1 = new TxActor(clasher) - txActor1.start - val txActor2 = new TxActor(clasher) - txActor2.start - - val t1 = new Thread(new Runnable() { - def run = { - txActor1 !! "First" - } - }).start - Thread.sleep(1000) - try { - txActor2 !! "Second" - fail("Expected Exception") - } catch { case e: Exception => {} } - } - - @Test - def testBangClash = { - val clasher = new TxClasherActorOneWay - clasher.start - val txActor1 = new TxActorOneWay(clasher) - txActor1.start - val txActor2 = new TxActorOneWay(clasher) - txActor2.start - - val t1 = new Thread(new Runnable() { - def run = { - txActor1 ! "First" - } - }).start - Thread.sleep(1000) - try { - txActor2 ! "Second" - fail("Expected Exception") - } catch { case e: Exception => {} } - } - - /* - @Test - def testX = { - val clasher = new TxClasherActor - clasher.start - val txActor1 = new TxActor(clasher) - txActor1.start - val txActor2 = new TxActor(clasher) - txActor2.start - - val t1 = new Thread(new Runnable() { - def run = { - txActor1 !! "First" - } - }).start - Thread.sleep(1000) - val res2 = txActor2 !! "Second" - Thread.sleep(10000) - assertEquals("Second", (clasher !! "Index0").get) - assertEquals("First", (clasher !! "Index1").get) - } - */ -} diff --git a/config/akka-reference.conf b/config/akka-reference.conf index 04c9f5a57a..8aa9dfd6d7 100644 --- a/config/akka-reference.conf +++ b/config/akka-reference.conf @@ -36,14 +36,6 @@ distributed = off # not implemented yet - - service = on - hostname = "localhost" - port = 9998 - filters = "se.scalablesolutions.akka.security.AkkaSecurityFilterFactory" - authenticator = "se.scalablesolutions.akka.security.samples.BasicAuthenticationService" - - service = on @@ -57,6 +49,14 @@ + + service = on + hostname = "localhost" + port = 9998 + filters = "se.scalablesolutions.akka.security.AkkaSecurityFilterFactory" + authenticator = "se.scalablesolutions.akka.security.samples.BasicAuthenticationService" + + hostname = "127.0.0.1" # IP address or hostname of one of the Cassandra cluster's seeds diff --git a/embedded-repo/com/twitter/scala-json/1.0/scala-json-1.0.jar b/embedded-repo/com/twitter/scala-json/1.0/scala-json-1.0.jar deleted file mode 100644 index df0ec2eaa607156859f2b390da2e8769261899c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37976 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 diff --git a/embedded-repo/com/twitter/scala-json/1.0/scala-json-1.0.pom b/embedded-repo/com/twitter/scala-json/1.0/scala-json-1.0.pom deleted file mode 100644 index dd4add411e..0000000000 --- a/embedded-repo/com/twitter/scala-json/1.0/scala-json-1.0.pom +++ /dev/null @@ -1,8 +0,0 @@ - - - 4.0.0 - com.twitter - scala-json - 0.1 - jar - \ No newline at end of file