testcase for MongoStorage : needs a running Mongo instance

This commit is contained in:
debasishg 2009-08-12 23:32:32 +05:30
parent b4bb7a057d
commit cbb1dc1de2

View file

@ -0,0 +1,122 @@
package se.scalablesolutions.akka.kernel.state
import junit.framework.TestCase
import org.junit.{Test, Before}
import org.junit.Assert._
class MongoStorageSpec extends TestCase {
val changeSet = new scala.collection.mutable.ArrayBuffer[AnyRef]
override def setUp = {
MongoStorage.coll.drop
}
@Test
def testVectorInsertForTransactionId = {
changeSet += "debasish" // string
changeSet += List(1, 2, 3) // Scala List
val l = new java.util.ArrayList[Int] // Java List
l.add(100)
l.add(200)
changeSet += l
MongoStorage.insertVectorStorageEntriesFor("U-A1", changeSet.toList)
assertEquals(
3,
MongoStorage.getVectorStorageSizeFor("U-A1"))
changeSet.clear
// changeSet should be reinitialized
changeSet += List(12, 23, 45)
changeSet += "maulindu"
MongoStorage.insertVectorStorageEntriesFor("U-A1", changeSet.toList)
assertEquals(
5,
MongoStorage.getVectorStorageSizeFor("U-A1"))
// add more to the same changeSet
changeSet += "ramanendu"
changeSet += Map(1 -> "dg", 2 -> "mc")
// add for a diff transaction
MongoStorage.insertVectorStorageEntriesFor("U-A2", changeSet.toList)
assertEquals(
4,
MongoStorage.getVectorStorageSizeFor("U-A2"))
// previous transaction change set should remain same
assertEquals(
5,
MongoStorage.getVectorStorageSizeFor("U-A1"))
// test single element entry
MongoStorage.insertVectorStorageEntryFor("U-A1", Map(1->1, 2->4, 3->9))
assertEquals(
6,
MongoStorage.getVectorStorageSizeFor("U-A1"))
}
@Test
def testVectorFetchForKeys = {
// initially everything 0
assertEquals(
0,
MongoStorage.getVectorStorageSizeFor("U-A2"))
assertEquals(
0,
MongoStorage.getVectorStorageSizeFor("U-A1"))
// get some stuff
changeSet += "debasish"
changeSet += List(12, 13, 14)
MongoStorage.insertVectorStorageEntriesFor("U-A1", changeSet.toList)
assertEquals(
2,
MongoStorage.getVectorStorageSizeFor("U-A1"))
assertEquals(
"debasish",
MongoStorage.getVectorStorageEntryFor("U-A1", 0).asInstanceOf[String])
assertEquals(
List(12, 13, 14),
MongoStorage.getVectorStorageEntryFor("U-A1", 1).asInstanceOf[List[Int]])
changeSet.clear
changeSet += Map(1->1, 2->4, 3->9)
changeSet += BigInt(2310)
val l = new java.util.ArrayList[Int]
l.add(100)
l.add(200)
l.add(300)
changeSet += l
MongoStorage.insertVectorStorageEntriesFor("U-A1", changeSet.toList)
assertEquals(
5,
MongoStorage.getVectorStorageSizeFor("U-A1"))
val r =
MongoStorage.getVectorStorageRangeFor("U-A1", Some(1), None, 3)
assertEquals(3, r.size)
assertEquals(List(12, 13, 14), r(0).asInstanceOf[List[Int]])
}
@Test
def testVectorFetchForNonExistentKeys = {
try {
MongoStorage.getVectorStorageEntryFor("U-A1", 1)
fail("should throw an exception")
} catch {case e: Predef.NoSuchElementException => {}}
try {
MongoStorage.getVectorStorageRangeFor("U-A1", Some(2), None, 12)
fail("should throw an exception")
} catch {case e: Predef.NoSuchElementException => {}}
}
}