Skip to content

Commit 01d37b0

Browse files
committed
added test suite
1 parent edf4384 commit 01d37b0

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

core/src/test/scala/org/apache/spark/serializer/KryoSerializerSuite.scala

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,21 @@
1717

1818
package org.apache.spark.serializer
1919

20-
import java.io.{ByteArrayInputStream, ByteArrayOutputStream}
20+
import java.io.{ByteArrayInputStream, ByteArrayOutputStream, FileOutputStream, FileInputStream}
2121

2222
import scala.collection.JavaConverters._
2323
import scala.collection.mutable
2424
import scala.reflect.ClassTag
2525

2626
import com.esotericsoftware.kryo.Kryo
27+
import com.esotericsoftware.kryo.io.{Input => KryoInput, Output => KryoOutput}
28+
29+
import org.roaringbitmap.RoaringBitmap
2730

2831
import org.apache.spark.{SharedSparkContext, SparkConf, SparkFunSuite}
2932
import org.apache.spark.scheduler.HighlyCompressedMapStatus
3033
import org.apache.spark.serializer.KryoTest._
34+
import org.apache.spark.util.Utils
3135
import org.apache.spark.storage.BlockManagerId
3236

3337
class KryoSerializerSuite extends SparkFunSuite with SharedSparkContext {
@@ -350,6 +354,28 @@ class KryoSerializerSuite extends SparkFunSuite with SharedSparkContext {
350354
assert(thrown.getMessage.contains(kryoBufferMaxProperty))
351355
}
352356

357+
test("SPARK-12222: deserialize RoaringBitmap throw Buffer underflow exception") {
358+
val dir = Utils.createTempDir()
359+
val tmpfile = dir.toString + "/RoaringBitmap"
360+
val outStream = new FileOutputStream(tmpfile)
361+
val output = new KryoOutput(outStream)
362+
val bitmap = new RoaringBitmap
363+
bitmap.add(1)
364+
bitmap.add(3)
365+
bitmap.add(5)
366+
bitmap.serialize(new KryoOutputDataOutputBridge(output))
367+
output.flush()
368+
output.close()
369+
370+
val inStream = new FileInputStream(tmpfile)
371+
val input = new KryoInput(inStream)
372+
val ret = new RoaringBitmap
373+
ret.deserialize(new KryoInputDataInputBridge(input))
374+
input.close()
375+
assert(ret == bitmap)
376+
Utils.deleteRecursively(dir)
377+
}
378+
353379
test("getAutoReset") {
354380
val ser = new KryoSerializer(new SparkConf).newInstance().asInstanceOf[KryoSerializerInstance]
355381
assert(ser.getAutoReset)

0 commit comments

Comments
 (0)