From e896a505e273a5a275f4a4d58470beddea8146df Mon Sep 17 00:00:00 2001
From: Tathagata Das <tathagata.das1565@gmail.com>
Date: Sun, 17 Jun 2012 16:11:12 -0700
Subject: [PATCH] Added testcase for ByteBufferInputStream bugs.

---
 .../spark/storage/BlockManagerSuite.scala     | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/core/src/test/scala/spark/storage/BlockManagerSuite.scala b/core/src/test/scala/spark/storage/BlockManagerSuite.scala
index 63501f0613..14ff5f8e3d 100644
--- a/core/src/test/scala/spark/storage/BlockManagerSuite.scala
+++ b/core/src/test/scala/spark/storage/BlockManagerSuite.scala
@@ -1,15 +1,18 @@
 package spark.storage
 
 import spark.KryoSerializer
+import spark.util.ByteBufferInputStream
 
 import org.scalatest.FunSuite
 import org.scalatest.BeforeAndAfter
 
+import java.nio.ByteBuffer
+
 class BlockManagerSuite extends FunSuite with BeforeAndAfter{
   before {
      BlockManagerMaster.startBlockManagerMaster(true, true)
   }
-  
+
   test("manager-master interaction") {
     val store = new BlockManager(2000, new KryoSerializer)
     val a1 = new Array[Byte](400)
@@ -208,5 +211,17 @@ class BlockManagerSuite extends FunSuite with BeforeAndAfter{
     assert(store.get("list3").get.size === 2)
     assert(store.get("list4") != None, "list4 was not in store")
     assert(store.get("list4").get.size === 2)
-  } 
+  }
+
+  test("ByteBufferInputStream bugs") {
+    val buffer = ByteBuffer.wrap(Array[Int](254, 255, 0, 1, 2).map(_.toByte).toArray)
+    val stream = new ByteBufferInputStream(buffer)
+    val temp = new Array[Byte](10)
+    assert(stream.read() === 254, "unexpected byte read")
+    assert(stream.read() === 255, "unexpected byte read")
+    assert(stream.read() === 0, "unexpected byte read")
+    assert(stream.read(temp, 0, temp.length) === 2, "unexpected number of bytes read")
+    assert(stream.read() === -1, "end of stream not signalled")
+    assert(stream.read(temp, 0, temp.length) === -1, "end of stream not signalled")
+  }
 }
-- 
GitLab