@@ -32,6 +32,36 @@ class KryoSerializerSuite extends FunSuite with SharedSparkContext {
3232 conf.set(" spark.serializer" , " org.apache.spark.serializer.KryoSerializer" )
3333 conf.set(" spark.kryo.registrator" , classOf [MyRegistrator ].getName)
3434
35+ test(" configuration limits" ) {
36+ val conf1 = conf.clone()
37+ val kryoBufferProperty = " spark.kryoserializer.buffer"
38+ val kryoBufferMaxProperty = " spark.kryoserializer.buffer.max"
39+ conf1.set(kryoBufferProperty, " 64k" )
40+ conf1.set(kryoBufferMaxProperty, " 64m" )
41+ new KryoSerializer (conf1).newInstance()
42+ // 2048m = 2097152k
43+ conf1.set(kryoBufferProperty, " 2097151k" )
44+ conf1.set(kryoBufferMaxProperty, " 64m" )
45+ // should not throw exception when kryoBufferMaxProperty < kryoBufferProperty
46+ new KryoSerializer (conf1).newInstance()
47+ conf1.set(kryoBufferMaxProperty, " 2097151k" )
48+ new KryoSerializer (conf1).newInstance()
49+ val conf2 = conf.clone()
50+ conf2.set(kryoBufferProperty, " 2048m" )
51+ val thrown1 = intercept[IllegalArgumentException ](new KryoSerializer (conf2).newInstance())
52+ assert(thrown1.getMessage.contains(kryoBufferProperty))
53+ val conf3 = conf.clone()
54+ conf3.set(kryoBufferMaxProperty, " 2048m" )
55+ val thrown2 = intercept[IllegalArgumentException ](new KryoSerializer (conf3).newInstance())
56+ assert(thrown2.getMessage.contains(kryoBufferMaxProperty))
57+ val conf4 = conf.clone()
58+ conf4.set(kryoBufferProperty, " 2g" )
59+ conf4.set(kryoBufferMaxProperty, " 3g" )
60+ val thrown3 = intercept[IllegalArgumentException ](new KryoSerializer (conf4).newInstance())
61+ assert(thrown3.getMessage.contains(kryoBufferProperty))
62+ assert(! thrown3.getMessage.contains(kryoBufferMaxProperty))
63+ }
64+
3565 test(" basic types" ) {
3666 val ser = new KryoSerializer (conf).newInstance()
3767 def check [T : ClassTag ](t : T ) {
0 commit comments