mirror of
https://github.com/soypat/lneto.git
synced 2026-08-21 06:59:04 +00:00
tls: add pcap capturing
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package tls_test
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/soypat/lneto/x/tls"
|
||||
)
|
||||
|
||||
// StringConst must name defined values as String does, GREASE values "GREASE"
|
||||
// and everything else "unknown", over the whole range and without allocating.
|
||||
// A constant added without extending a StringConst switch fails here.
|
||||
func TestStringConst(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
n int
|
||||
grease bool // type carries GREASE values
|
||||
str func(int) string
|
||||
cst func(int) string
|
||||
}{
|
||||
{"ContentType", 1 << 8, false,
|
||||
func(i int) string { return tls.ContentType(i).String() },
|
||||
func(i int) string { return tls.ContentType(i).StringConst() }},
|
||||
{"HandshakeType", 1 << 8, false,
|
||||
func(i int) string { return tls.HandshakeType(i).String() },
|
||||
func(i int) string { return tls.HandshakeType(i).StringConst() }},
|
||||
{"AlertLevel", 1 << 8, false,
|
||||
func(i int) string { return tls.AlertLevel(i).String() },
|
||||
func(i int) string { return tls.AlertLevel(i).StringConst() }},
|
||||
{"AlertDescription", 1 << 8, false,
|
||||
func(i int) string { return tls.AlertDescription(i).String() },
|
||||
func(i int) string { return tls.AlertDescription(i).StringConst() }},
|
||||
{"ExtensionType", 1 << 16, true,
|
||||
func(i int) string { return tls.ExtensionType(i).String() },
|
||||
func(i int) string { return tls.ExtensionType(i).StringConst() }},
|
||||
{"NamedGroup", 1 << 16, true,
|
||||
func(i int) string { return tls.NamedGroup(i).String() },
|
||||
func(i int) string { return tls.NamedGroup(i).StringConst() }},
|
||||
{"SignatureScheme", 1 << 16, true,
|
||||
func(i int) string { return tls.SignatureScheme(i).String() },
|
||||
func(i int) string { return tls.SignatureScheme(i).StringConst() }},
|
||||
{"CipherSuite", 1 << 16, true,
|
||||
func(i int) string { return tls.CipherSuite(i).String() },
|
||||
func(i int) string { return tls.CipherSuite(i).StringConst() }},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
for i := range tc.n {
|
||||
str, cst := tc.str(i), tc.cst(i)
|
||||
if !strings.ContainsRune(str, '(') { // stringer names undefined values "Type(9)".
|
||||
if cst != str {
|
||||
t.Fatalf("%s(%d)=%q want %q", tc.name, i, cst, str)
|
||||
}
|
||||
continue
|
||||
}
|
||||
want := "unknown"
|
||||
if tc.grease && tls.IsGREASE(uint16(i)) {
|
||||
want = "GREASE"
|
||||
}
|
||||
if cst != want {
|
||||
t.Fatalf("%s(%d)=%q want %q", tc.name, i, cst, want)
|
||||
}
|
||||
}
|
||||
allocs := testing.AllocsPerRun(1, func() {
|
||||
for i := range tc.n {
|
||||
_ = tc.cst(i)
|
||||
}
|
||||
})
|
||||
if allocs != 0 {
|
||||
t.Errorf("%s allocated %v times", tc.name, allocs)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user