2004489016
Because we use testify, this is less useful than normal, but this is still best practice for table-driven tests.
59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package udp
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
var golden = []struct {
|
|
createdAt int64
|
|
now int64
|
|
ip string
|
|
key string
|
|
valid bool
|
|
}{
|
|
{0, 1, "127.0.0.1", "", true},
|
|
{0, 420420, "127.0.0.1", "", false},
|
|
{0, 0, "[::]", "", true},
|
|
}
|
|
|
|
func TestVerification(t *testing.T) {
|
|
for _, tt := range golden {
|
|
t.Run(fmt.Sprintf("%s created at %d verified at %d", tt.ip, tt.createdAt, tt.now), func(t *testing.T) {
|
|
cid := NewConnectionID(net.ParseIP(tt.ip), time.Unix(tt.createdAt, 0), tt.key)
|
|
got := ValidConnectionID(cid, net.ParseIP(tt.ip), time.Unix(tt.now, 0), time.Minute, tt.key)
|
|
if got != tt.valid {
|
|
t.Errorf("expected validity: %t got validity: %t", tt.valid, got)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func BenchmarkNewConnectionID(b *testing.B) {
|
|
ip := net.ParseIP("127.0.0.1")
|
|
key := "some random string that is hopefully at least this long"
|
|
createdAt := time.Now()
|
|
sum := int64(0)
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
cid := NewConnectionID(ip, createdAt, key)
|
|
sum += int64(cid[7])
|
|
}
|
|
|
|
_ = sum
|
|
}
|
|
|
|
func BenchmarkValidConnectionID(b *testing.B) {
|
|
ip := net.ParseIP("127.0.0.1")
|
|
key := "some random string that is hopefully at least this long"
|
|
createdAt := time.Now()
|
|
cid := NewConnectionID(ip, createdAt, key)
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
if !ValidConnectionID(cid, ip, createdAt, 10*time.Second, key) {
|
|
b.FailNow()
|
|
}
|
|
}
|
|
}
|