feat: persist authenticated queue probe RTT

This commit is contained in:
Josh Creek
2026-09-01 09:40:25 +01:00
parent 25cc182793
commit def60169a8
7 changed files with 131 additions and 2 deletions
+21
View File
@@ -136,3 +136,24 @@ func TestQueueConcurrentCreateKeepsOneActiveTicketPerPlayer(t *testing.T) {
t.Fatalf("concurrent creates succeeded %d times", succeeded)
}
}
func TestQueueRecordProbeBindsServerRTTToActivePlayerTicket(t *testing.T) {
now := time.Unix(1000, 0).UTC()
queue := NewQueue()
if _, err := queue.Create("player-a", "ticket-a", "create-key-123456", Candidate{PlayerID: "player-a", TicketID: "ticket-a", Playlist: Casual, EnqueuedAt: now}, now); err != nil {
t.Fatal(err)
}
if err := queue.RecordProbe("player-a", "EU", 42*time.Millisecond, now); err != nil {
t.Fatal(err)
}
ticket, err := queue.Get("player-a", "ticket-a", now)
if err != nil || ticket.Candidate.PredictedRTT["EU"] != 42 {
t.Fatalf("ticket=%+v err=%v", ticket, err)
}
if err := queue.RecordProbe("player-a", "NA", time.Millisecond, now.Add(QueueExpiryWindow)); err != ErrTicketExpired {
t.Fatalf("expired record err=%v", err)
}
if err := queue.RecordProbe("player-other", "EU", time.Millisecond, now); err != ErrTicketNotFound {
t.Fatalf("unknown player err=%v", err)
}
}