Skip to content

Commit 4ce46a3

Browse files
committed
Add more tests for ByteBuffer
1 parent 5c77085 commit 4ce46a3

File tree

1 file changed

+145
-44
lines changed

1 file changed

+145
-44
lines changed

msgpack-core/src/test/scala/org/msgpack/core/MessageUnpackerTest.scala

Lines changed: 145 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,22 @@ class MessageUnpackerTest extends MessagePackSpec {
345345

346346
"be faster then msgpack-v6 skip" taggedAs ("cmp-skip") in {
347347

348+
trait Fixture {
349+
val unpacker: MessageUnpacker
350+
def run {
351+
var count = 0
352+
try {
353+
while (unpacker.hasNext) {
354+
unpacker.skipValue()
355+
count += 1
356+
}
357+
}
358+
finally {
359+
unpacker.close()
360+
}
361+
}
362+
}
363+
348364
val data = testData3(10000)
349365
val N = 100
350366

@@ -367,21 +383,29 @@ class MessageUnpackerTest extends MessagePackSpec {
367383
unpacker.close()
368384
}
369385

370-
block("v7") {
371-
val unpacker = Random.shuffle(unpackers(data)).head
372-
var count = 0
373-
try {
374-
while (unpacker.hasNext) {
375-
unpacker.skipValue()
376-
count += 1
377-
}
378-
}
379-
finally
380-
unpacker.close()
386+
block("v7-array") {
387+
new Fixture { override val unpacker = MessagePack.newDefaultUnpacker(data) }.run
388+
}
389+
390+
block("v7-array-buffer") {
391+
new Fixture {
392+
val bb = ByteBuffer.allocate(data.length)
393+
bb.put(data).flip()
394+
override val unpacker = MessagePack.newDefaultUnpacker(bb)
395+
}.run
396+
}
397+
block("v7-direct-buffer") {
398+
new Fixture {
399+
val db = ByteBuffer.allocateDirect(data.length)
400+
db.put(data).flip()
401+
override val unpacker = MessagePack.newDefaultUnpacker(db)
402+
}.run
381403
}
382404
}
383405

384-
t("v7").averageWithoutMinMax should be <= t("v6").averageWithoutMinMax
406+
t("v7-array").averageWithoutMinMax should be <= t("v6").averageWithoutMinMax
407+
t("v7-array-buffer").averageWithoutMinMax should be <= t("v6").averageWithoutMinMax
408+
t("v7-direct-buffer").averageWithoutMinMax should be <= t("v6").averageWithoutMinMax
385409
}
386410

387411
import org.msgpack.`type`.{ValueType => ValueTypeV6}
@@ -448,6 +472,20 @@ class MessageUnpackerTest extends MessagePackSpec {
448472
unpacker.skipValue()
449473
}
450474
}
475+
trait Fixture {
476+
val unpacker : MessageUnpacker
477+
def run {
478+
var count = 0
479+
try {
480+
while (unpacker.hasNext) {
481+
readValue(unpacker)
482+
count += 1
483+
}
484+
}
485+
finally
486+
unpacker.close()
487+
}
488+
}
451489

452490
val data = testData3(10000)
453491
val N = 100
@@ -469,22 +507,29 @@ class MessageUnpackerTest extends MessagePackSpec {
469507
unpacker.close()
470508
}
471509

472-
block("v7") {
473-
val unpacker = Random.shuffle(unpackers(data)).head
474-
var count = 0
475-
try {
476-
while (unpacker.hasNext) {
477-
readValue(unpacker)
478-
count += 1
479-
}
480-
}
481-
finally
482-
unpacker.close()
510+
block("v7-array") {
511+
new Fixture { override val unpacker = MessagePack.newDefaultUnpacker(data) }.run
483512
}
484-
}
485513

486-
t("v7").averageWithoutMinMax should be <= t("v6").averageWithoutMinMax
514+
block("v7-array-buffer") {
515+
new Fixture {
516+
val bb = ByteBuffer.allocate(data.length)
517+
bb.put(data).flip()
518+
override val unpacker = MessagePack.newDefaultUnpacker(bb)
519+
}.run
520+
}
521+
block("v7-direct-buffer") {
522+
new Fixture {
523+
val db = ByteBuffer.allocateDirect(data.length)
524+
db.put(data).flip()
525+
override val unpacker = MessagePack.newDefaultUnpacker(db)
526+
}.run
527+
}
528+
}
487529

530+
t("v7-array").averageWithoutMinMax should be <= t("v6").averageWithoutMinMax
531+
t("v7-array-buffer").averageWithoutMinMax should be <= t("v6").averageWithoutMinMax
532+
t("v7-direct-buffer").averageWithoutMinMax should be <= t("v6").averageWithoutMinMax
488533

489534
}
490535

@@ -500,6 +545,35 @@ class MessageUnpackerTest extends MessagePackSpec {
500545
}
501546
packer.close()
502547

548+
trait Fixture {
549+
val unpacker : MessageUnpacker
550+
val loop : Int
551+
def run {
552+
var i = 0
553+
try {
554+
while (i < loop) {
555+
val len = unpacker.unpackBinaryHeader()
556+
val out = new Array[Byte](len)
557+
unpacker.readPayload(out, 0, len)
558+
i += 1
559+
}
560+
}
561+
finally
562+
unpacker.close()
563+
}
564+
def runRef {
565+
var i = 0
566+
try {
567+
while (i < loop) {
568+
val len = unpacker.unpackBinaryHeader()
569+
val out = unpacker.readPayloadAsReference(len)
570+
i += 1
571+
}
572+
}
573+
finally
574+
unpacker.close()
575+
}
576+
}
503577
val b = bos.toByteArray
504578
time("unpackBinary", repeat = 100) {
505579
block("v6") {
@@ -513,27 +587,54 @@ class MessageUnpackerTest extends MessagePackSpec {
513587
unpacker.close()
514588
}
515589

516-
block("v7") {
517-
val unpacker = Random.shuffle(unpackers(b)).head
518-
var i = 0
519-
while (i < R) {
520-
val len = unpacker.unpackBinaryHeader()
521-
val out = new Array[Byte](len)
522-
unpacker.readPayload(out, 0, len)
523-
i += 1
524-
}
525-
unpacker.close()
590+
block("v7-array") {
591+
new Fixture {
592+
override val unpacker = MessagePack.newDefaultUnpacker(b)
593+
override val loop = R
594+
}.run
526595
}
527596

528-
block("v7-ref") {
529-
val unpacker = Random.shuffle(unpackers(b)).head
530-
var i = 0
531-
while (i < R) {
532-
val len = unpacker.unpackBinaryHeader()
533-
val out = unpacker.readPayloadAsReference(len)
534-
i += 1
535-
}
536-
unpacker.close()
597+
block("v7-array-buffer") {
598+
new Fixture {
599+
val bb = ByteBuffer.allocate(b.length)
600+
bb.put(b).flip()
601+
override val unpacker = MessagePack.newDefaultUnpacker(bb)
602+
override val loop = R
603+
}.run
604+
}
605+
606+
block("v7-direct-buffer") {
607+
new Fixture {
608+
val db = ByteBuffer.allocateDirect(b.length)
609+
db.put(b).flip()
610+
override val unpacker = MessagePack.newDefaultUnpacker(db)
611+
override val loop = R
612+
}.run
613+
}
614+
615+
block("v7-ref-array") {
616+
new Fixture {
617+
override val unpacker = MessagePack.newDefaultUnpacker(b)
618+
override val loop = R
619+
}.run
620+
}
621+
622+
block("v7-ref-array-buffer") {
623+
new Fixture {
624+
val bb = ByteBuffer.allocate(b.length)
625+
bb.put(b).flip()
626+
override val unpacker = MessagePack.newDefaultUnpacker(bb)
627+
override val loop = R
628+
}.run
629+
}
630+
631+
block("v7-ref-direct-buffer") {
632+
new Fixture {
633+
val db = ByteBuffer.allocateDirect(b.length)
634+
db.put(b).flip()
635+
override val unpacker = MessagePack.newDefaultUnpacker(db)
636+
override val loop = R
637+
}.run
537638
}
538639
}
539640
}

0 commit comments

Comments
 (0)