kra-new/internal/data/runtime_clients_test.go

39 lines
1.0 KiB
Go

package data
import "testing"
type reloadableTestClient struct{ id int }
func TestReloadableReclaimsRepublishedClient(t *testing.T) {
first := &reloadableTestClient{id: 1}
second := &reloadableTestClient{id: 2}
closed := map[*reloadableTestClient]int{}
clients := newReloadable(first, func(client *reloadableTestClient) { closed[client]++ })
clients.replace(second)
clients.replace(first)
if clients.retired.take(first) {
t.Fatal("republished client remained scheduled for retirement")
}
clients.close()
if closed[first] != 1 {
t.Fatalf("active client closed %d times, want 1", closed[first])
}
if closed[second] != 1 {
t.Fatalf("retired client closed %d times, want 1", closed[second])
}
}
func TestReloadableCloseDeduplicatesHandles(t *testing.T) {
client := &reloadableTestClient{id: 1}
closed := 0
clients := newReloadable(client, func(*reloadableTestClient) { closed++ })
clients.retired.items = append(clients.retired.items, client, client)
clients.close()
if closed != 1 {
t.Fatalf("client closed %d times, want 1", closed)
}
}