mirror of https://github.com/q191201771/lal.git
[test] rtmp: unit test for chunk divider
parent
0188225b8b
commit
4f68ac85ed
@ -0,0 +1,73 @@
|
||||
// Copyright 2023, Chef. All rights reserved.
|
||||
// https://github.com/q191201771/lal
|
||||
//
|
||||
// Use of this source code is governed by a MIT-style license
|
||||
// that can be found in the License file.
|
||||
//
|
||||
// Author: Chef (191201771@qq.com)
|
||||
|
||||
package rtmp
|
||||
|
||||
import (
|
||||
"github.com/q191201771/lal/pkg/base"
|
||||
"github.com/q191201771/naza/pkg/assert"
|
||||
"github.com/q191201771/naza/pkg/bele"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMessage2Chunks(t *testing.T) {
|
||||
capa := LocalChunkSize * 10
|
||||
goldBuf := make([]byte, capa)
|
||||
for i := 0; i < capa; i++ {
|
||||
goldBuf[i] = byte(i % 256)
|
||||
}
|
||||
|
||||
var packFn = func(testLen uint32) []byte {
|
||||
h := base.RtmpHeader{
|
||||
Csid: CsidVideo,
|
||||
MsgLen: testLen,
|
||||
MsgTypeId: base.RtmpTypeIdVideo,
|
||||
MsgStreamId: Msid1,
|
||||
TimestampAbs: 123,
|
||||
}
|
||||
return Message2Chunks(goldBuf[:testLen], &h)
|
||||
}
|
||||
|
||||
// 07 00 00 7b 00 00 01 09 01 00 00 00 00
|
||||
// csid timestamp len typeid streamid v
|
||||
|
||||
goldHeaderHex := []byte{7, 0, 0, 0x7b, 0, 0, 1, 9, 1, 0, 0, 0}
|
||||
testLenArray1 := []int{1, 2, 4095, 4096}
|
||||
for _, testLen := range testLenArray1 {
|
||||
m := packFn(uint32(testLen))
|
||||
bele.BePutUint24(goldHeaderHex[4:], uint32(testLen))
|
||||
assert.Equal(t, append(goldHeaderHex, goldBuf[:testLen]...), m)
|
||||
}
|
||||
|
||||
goldHeaderHex21 := []byte{7, 0, 0, 0x7b, 0, 0, 1, 9, 1, 0, 0, 0}
|
||||
goldHeaderHex22 := []byte{0xc7} // c fmt=3, 7 csid
|
||||
testLenArray2 := []int{4097, 4098, 8191, 8192}
|
||||
for _, testLen := range testLenArray2 {
|
||||
m := packFn(uint32(testLen))
|
||||
bele.BePutUint24(goldHeaderHex21[4:], uint32(testLen))
|
||||
exp := append(goldHeaderHex21, goldBuf[:4096]...)
|
||||
exp = append(exp, goldHeaderHex22...)
|
||||
exp = append(exp, goldBuf[4096:testLen]...)
|
||||
assert.Equal(t, exp, m)
|
||||
}
|
||||
|
||||
goldHeaderHex31 := []byte{7, 0, 0, 0x7b, 0, 0, 1, 9, 1, 0, 0, 0}
|
||||
goldHeaderHex32 := []byte{0xc7} // c fmt=3, 7 csid
|
||||
goldHeaderHex33 := []byte{0xc7} // c fmt=3, 7 csid
|
||||
testLenArray3 := []int{8193, 8194, 4096 * 3}
|
||||
for _, testLen := range testLenArray3 {
|
||||
m := packFn(uint32(testLen))
|
||||
bele.BePutUint24(goldHeaderHex31[4:], uint32(testLen))
|
||||
exp := append(goldHeaderHex31, goldBuf[:4096]...)
|
||||
exp = append(exp, goldHeaderHex32...)
|
||||
exp = append(exp, goldBuf[4096:8192]...)
|
||||
exp = append(exp, goldHeaderHex33...)
|
||||
exp = append(exp, goldBuf[8192:testLen]...)
|
||||
assert.Equal(t, exp, m)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue