45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
package mesh
|
|
|
|
import "testing"
|
|
|
|
func TestFabricRoutePressureTrackerAppliesAndReleasesActiveChannels(t *testing.T) {
|
|
tracker := NewFabricRoutePressureTracker()
|
|
releaseA := tracker.Acquire("route-a")
|
|
releaseAAgain := tracker.Acquire("route-a")
|
|
releaseB := tracker.Acquire("route-b")
|
|
routeSet := FabricRouteSet{
|
|
TargetKind: FabricChannelTargetNode,
|
|
TargetID: "node-b",
|
|
Primary: testFabricRoute("route-a", "node-b", 10, 100, 3, true),
|
|
WarmStandby: []FabricRoute{
|
|
testFabricRoute("route-b", "node-b", 10, 100, 0, true),
|
|
},
|
|
}
|
|
|
|
withPressure := tracker.Apply(routeSet)
|
|
if withPressure.Primary.ActiveChannels != 5 {
|
|
t.Fatalf("primary active = %d, want 5", withPressure.Primary.ActiveChannels)
|
|
}
|
|
if withPressure.WarmStandby[0].ActiveChannels != 1 {
|
|
t.Fatalf("standby active = %d, want 1", withPressure.WarmStandby[0].ActiveChannels)
|
|
}
|
|
|
|
releaseA()
|
|
releaseA()
|
|
releaseAAgain()
|
|
releaseB()
|
|
snapshot := tracker.SnapshotPressure()
|
|
if len(snapshot.Active) != 0 || snapshot.ActiveTotal != 0 {
|
|
t.Fatalf("snapshot after release = %+v, want inactive", snapshot)
|
|
}
|
|
if snapshot.AcquiredTotal != 3 || snapshot.ReleasedTotal != 3 {
|
|
t.Fatalf("snapshot totals = %+v, want acquired/released 3", snapshot)
|
|
}
|
|
if snapshot.MaxActive["route-a"] != 2 || snapshot.MaxActive["route-b"] != 1 || snapshot.MaxActiveTotal != 3 {
|
|
t.Fatalf("snapshot max = %+v", snapshot)
|
|
}
|
|
if snapshot.LastAcquiredRoute != "route-b" || snapshot.LastReleasedRoute != "route-b" {
|
|
t.Fatalf("snapshot last routes = %+v", snapshot)
|
|
}
|
|
}
|