package datatrack_test
import (
"testing"
"time"
"github.com/stretchr/testify/require"
"github.com/livekit/protocol/datatrack"
"github.com/livekit/protocol/datatrack/datatracktest"
)
func FuzzPacketUnmarshal(f *testing.F) {
f.Add([]byte{
0x18, 0x00, 0x0d, 0x05, 0x1a, 0x0a, 0x27, 0x0f,
0xde, 0xad, 0xbe, 0xef, 0xff, 0xfe, 0xfd, 0xfc,
0xfb, 0xfa,
})
f.Add([]byte{
0x14, 0x00, 0x0d, 0x05, 0x1a, 0x0a, 0x27, 0x0f,
0xde, 0xad, 0xbe, 0xef, 0x00, 0x04, 0x01, 0x10,
0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72,
0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74,
0xff, 0xfe, 0xfd, 0xfc,
})
f.Add([]byte{
0x14, 0x00, 0x0d, 0x05, 0x1a, 0x0a, 0x27, 0x0f,
0xde, 0xad, 0xbe, 0xef, 0x00, 0x03, 0x01, 0x0b,
0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
0x61, 0x6e, 0x74, 0x00, 0xff, 0xfe, 0xfd, 0xfc,
})
for _, raw := range datatracktest.GenerateRawDataPackets(1, 1, 1, 4, 600, 10*time.Millisecond) {
f.Add(raw)
}
f.Fuzz(func(t *testing.T, data []byte) {
var p datatrack.Packet
if err := p.Unmarshal(data); err != nil {
return
}
buf, err := p.Marshal()
require.NoError(t, err)
var p2 datatrack.Packet
require.NoError(t, p2.Unmarshal(buf))
require.Equal(t, p, p2)
})
}