Fix of issue #235

This commit is contained in:
Jonas Bonér 2010-05-28 16:32:11 +02:00
parent 94b5caf25f
commit ffce95a769
4 changed files with 37 additions and 25 deletions

View file

@ -281,10 +281,16 @@ object Transaction {
tx.transaction = Some(mtx)
setTransaction(Some(tx))
txSet.registerOnCommitTask(new Runnable() {
def run = tx.commit
def run = {
log.trace("=========> Committing transaction [%s]", mtx)
tx.commit
}
})
txSet.registerOnAbortTask(new Runnable() {
def run = tx.abort
def run = {
log.trace("=========> Aborting transaction [%s]", mtx)
tx.abort
}
})
}
}.execute()

View file

@ -100,7 +100,7 @@ class AccountActor extends Transactor {
import org.scalatest.junit.JUnitSuite
class RedisPersistentActorSpec extends JUnitSuite {
@Test
def testSuccessfulDebit = {
def testSuccessfulDebit {
val bactor = actorOf[AccountActor]
bactor.start
val failer = actorOf[PersistentFailerActor]
@ -108,39 +108,45 @@ class RedisPersistentActorSpec extends JUnitSuite {
val acc = "a-123"
val a: Option[BigInt] = bactor !! Credit(acc, 5000)
println("a = " + a)
println("----------- SIZE 0 " + (bactor !! LogSize).get)
bactor !! Credit(acc, 5000)
println("----------- SIZE 1 " + (bactor !! LogSize).get)
println(bactor !! Balance(acc))
/**
bactor !! Debit("a-123", 3000, failer)
val c: Int = (bactor !! LogSize).get
println(c)
bactor !! Debit("a-123", 3000, failer)
assertEquals(BigInt(2000), (bactor !! Balance("a-123")).get)
val d: Int = (bactor !! LogSize).get
println(d)
println("----------- SIZE 2 " + (bactor !! LogSize).get)
bactor !! Credit("a-123", 7000)
assertEquals(BigInt(9000), (bactor !! Balance("a-123")).get)
bactor !! Debit(acc, 3000, failer)
println("----------- SIZE 3 " + (bactor !! LogSize).get)
assertEquals(BigInt(2000), (bactor !! Balance(acc)).get)
println("----------- SIZE 4 " + (bactor !! LogSize).get)
bactor !! Debit("a-123", 8000, failer)
assertEquals(BigInt(1000), (bactor !! Balance("a-123")).get)
bactor !! Credit(acc, 7000)
println("----------- SIZE 5 " + (bactor !! LogSize).get)
assertEquals(BigInt(9000), (bactor !! Balance(acc)).get)
println("----------- SIZE 6 " + (bactor !! LogSize).get)
bactor !! Debit(acc, 8000, failer)
println("----------- SIZE 7 " + (bactor !! LogSize).get)
assertEquals(BigInt(1000), (bactor !! Balance(acc)).get)
println("----------- SIZE 8 " + (bactor !! LogSize).get)
assert(7 === (bactor !! LogSize).get) // Not counting the failed transaction => 7
val c: Int = (bactor !! LogSize).get
println(c)
assertTrue(7 == c)
import scala.collection.mutable.ArrayBuffer
assert((bactor !! Log(0, 7)).get.asInstanceOf[ArrayBuffer[String]].size == 7)
assert((bactor !! Log(0, 0)).get.asInstanceOf[ArrayBuffer[String]].size == 0)
assert((bactor !! Log(1, 2)).get.asInstanceOf[ArrayBuffer[String]].size == 1)
assert((bactor !! Log(6, 7)).get.asInstanceOf[ArrayBuffer[String]].size == 1)
assert((bactor !! Log(0, 1)).get.asInstanceOf[ArrayBuffer[String]].size == 1)
**/
}
/**
@Test
def testUnsuccessfulDebit = {
def testUnsuccessfulDebit {
val bactor = actorOf(new AccountActor)
bactor.start
bactor !! Credit("a-123", 5000)
@ -161,7 +167,7 @@ class RedisPersistentActorSpec extends JUnitSuite {
}
@Test
def testUnsuccessfulMultiDebit = {
def testUnsuccessfulMultiDebit {
val bactor = actorOf(new AccountActor)
bactor.start
bactor !! Credit("a-123", 5000)

View file

@ -8,7 +8,7 @@
<log>
filename = "./logs/akka.log"
roll = "daily" # Options: never, hourly, daily, sunday/monday/...
level = "debug" # Options: fatal, critical, error, warning, info, debug, trace
level = "trace" # Options: fatal, critical, error, warning, info, debug, trace
console = on
# syslog_host = ""
# syslog_server_name = ""

View file

@ -223,7 +223,7 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) {
class AkkaRedisProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) {
val redis = "com.redis" % "redisclient" % "2.8.0.RC2-1.4-SNAPSHOT" % "compile"
override def testOptions = TestFilter((name: String) => name.endsWith("Test")) :: Nil
//override def testOptions = TestFilter((name: String) => name.endsWith("Test")) :: Nil
}
class AkkaMongoProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) {