2018-06-09 08:50:42 +09:00
|
|
|
//
|
|
|
|
|
// Copyright (c) 2018- yutopp (yutopp@gmail.com)
|
|
|
|
|
//
|
|
|
|
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
|
|
|
// file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
package message
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
"testing"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestDecodeCommon(t *testing.T) {
|
|
|
|
|
for _, tc := range testCases {
|
|
|
|
|
tc := tc // capture
|
|
|
|
|
|
|
|
|
|
t.Run(tc.Name, func(t *testing.T) {
|
|
|
|
|
t.Parallel()
|
|
|
|
|
|
2018-07-23 20:31:34 +09:00
|
|
|
buf := bytes.NewReader(tc.Binary)
|
2018-10-05 17:21:35 +09:00
|
|
|
dec := NewDecoder(buf)
|
2018-06-21 20:23:36 +09:00
|
|
|
|
2018-06-09 08:50:42 +09:00
|
|
|
var msg Message
|
2018-10-05 17:21:35 +09:00
|
|
|
err := dec.Decode(tc.TypeID, &msg)
|
2018-06-09 08:50:42 +09:00
|
|
|
assert.Nil(t, err)
|
2018-10-05 20:59:56 +09:00
|
|
|
assertEqualMessage(t, tc.Value, msg)
|
2018-06-09 08:50:42 +09:00
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-06-21 20:23:36 +09:00
|
|
|
|
2018-10-05 16:58:41 +09:00
|
|
|
func BenchmarkDecode5KBVideoMessage(b *testing.B) {
|
|
|
|
|
sizes := []struct {
|
|
|
|
|
name string
|
|
|
|
|
len int
|
|
|
|
|
}{
|
|
|
|
|
{"5KB", 5 * 1024},
|
|
|
|
|
{"2MB", 2 * 1024 * 1024},
|
2018-07-23 20:31:34 +09:00
|
|
|
}
|
2018-10-05 16:58:41 +09:00
|
|
|
for _, size := range sizes {
|
|
|
|
|
b.Run(size.name, func(b *testing.B) {
|
|
|
|
|
buf := make([]byte, size.len)
|
2018-10-05 20:59:56 +09:00
|
|
|
r := bytes.NewReader(buf)
|
|
|
|
|
dec := NewDecoder(r)
|
2018-07-23 20:31:34 +09:00
|
|
|
|
2018-10-05 16:58:41 +09:00
|
|
|
b.ResetTimer()
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
2018-10-05 20:59:56 +09:00
|
|
|
r.Reset(buf)
|
2018-10-05 17:21:35 +09:00
|
|
|
|
2018-10-05 16:58:41 +09:00
|
|
|
var msg Message
|
2018-10-05 17:21:35 +09:00
|
|
|
dec.Decode(TypeIDVideoMessage, &msg)
|
2018-10-05 16:58:41 +09:00
|
|
|
}
|
|
|
|
|
})
|
2018-07-23 20:31:34 +09:00
|
|
|
}
|
|
|
|
|
}
|