Files
VerseVDI-Data-Plane/gateway/resource_test.go

65 lines
1.9 KiB
Go

package gateway
import (
"context"
"net"
"testing"
"time"
)
func TestGatewaySlowReaderStillCleansUpWithinBound(t *testing.T) {
harness := newGatewayTransportHarness(t)
for sequence := 0; sequence < 10_000; sequence++ {
harness.session.EmitVideo([]byte{byte(sequence)})
}
if err := harness.client.Close(); err != nil {
t.Fatal(err)
}
harness.waitReleased(t)
}
func TestGatewayDropsVideoPastQueueResidenceBound(t *testing.T) {
harness := newGatewayTransportHarness(t)
harness.drainInitialMedia(t)
before := harness.server.Metrics().MediaDrops
harness.session.video <- ProviderMedia{
Payload: []byte("stale-complete-frame"), ReceivedAt: time.Now().Add(-time.Second),
EnqueuedAt: time.Now().Add(-nativeApolloVideoQueueLatency - time.Millisecond),
}
ctx, cancel := context.WithTimeout(context.Background(), 150*time.Millisecond)
defer cancel()
if frame, err := harness.client.ReceiveFrame(ctx); err == nil {
t.Fatalf("expired provider frame crossed the public transport: %#v", frame)
}
if drops := harness.server.Metrics().MediaDrops - before; drops != 1 {
t.Fatalf("expired queue drops = %d, want 1", drops)
}
}
func TestGatewayMalformedUDPDoesNotAmplify(t *testing.T) {
harness := newGatewayTransportHarness(t)
connection, err := net.DialUDP("udp", nil, harness.server.Addr().(*net.UDPAddr))
if err != nil {
t.Fatal(err)
}
defer connection.Close()
request := []byte("invalid")
if _, err := connection.Write(request); err != nil {
t.Fatal(err)
}
if err := connection.SetReadDeadline(time.Now().Add(100 * time.Millisecond)); err != nil {
t.Fatal(err)
}
response := make([]byte, len(request)*3+1)
count, _, err := connection.ReadFromUDP(response)
if err != nil {
if timeout, ok := err.(net.Error); ok && timeout.Timeout() {
return
}
t.Fatal(err)
}
if count > len(request)*3 {
t.Fatalf("malformed UDP amplified %d bytes to %d", len(request), count)
}
}