analyzer: make http3/quic handling more reliable
This commit is contained in:
39
analyzer/udp/internal/quic/payload_test.go
Normal file
39
analyzer/udp/internal/quic/payload_test.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package quic
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestExtractCryptoFrames_Interleaved(t *testing.T) {
|
||||
// PADDING, CRYPTO(offset=0,"abc"), PING, STREAM(len=2), CRYPTO(offset=3,"de")
|
||||
payload := []byte{
|
||||
0x00,
|
||||
0x06, 0x00, 0x03, 'a', 'b', 'c',
|
||||
0x01,
|
||||
0x0a, 0x01, 0x02, 'z', 'z',
|
||||
0x06, 0x03, 0x02, 'd', 'e',
|
||||
}
|
||||
|
||||
frames, err := extractCryptoFrames(bytes.NewReader(payload))
|
||||
if err != nil {
|
||||
t.Fatalf("extractCryptoFrames() error = %v", err)
|
||||
}
|
||||
if len(frames) != 2 {
|
||||
t.Fatalf("extractCryptoFrames() len = %d, want 2", len(frames))
|
||||
}
|
||||
if frames[0].Offset != 0 || string(frames[0].Data) != "abc" {
|
||||
t.Fatalf("frame0 = %+v, want offset=0 data=abc", frames[0])
|
||||
}
|
||||
if frames[1].Offset != 3 || string(frames[1].Data) != "de" {
|
||||
t.Fatalf("frame1 = %+v, want offset=3 data=de", frames[1])
|
||||
}
|
||||
}
|
||||
|
||||
func TestExtractCryptoFrames_UnsupportedFrame(t *testing.T) {
|
||||
// 0x20 is currently unsupported in this parser.
|
||||
_, err := extractCryptoFrames(bytes.NewReader([]byte{0x20}))
|
||||
if err == nil {
|
||||
t.Fatal("extractCryptoFrames() error = nil, want non-nil")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user