Record project continuation changes
This commit is contained in:
@@ -324,10 +324,13 @@ func TestFabricFlowSchedulerDropsWhenChannelQueueIsFull(t *testing.T) {
|
||||
packetA := testIPv4TCPPacket([4]byte{10, 77, 0, 2}, [4]byte{192, 168, 200, 95}, 51000, 3389)
|
||||
packetB := testIPv4TCPPacket([4]byte{10, 77, 0, 2}, [4]byte{192, 168, 200, 95}, 51000, 3389)
|
||||
|
||||
batches := scheduler.ScheduleClientPackets([][]byte{packetA, packetB})
|
||||
batches, dropped := scheduler.scheduleClientPackets("", "", [][]byte{packetA, packetB})
|
||||
if len(batches) != 1 || len(batches[0].Packets) != 1 {
|
||||
t.Fatalf("batches = %#v, want one accepted packet", batches)
|
||||
}
|
||||
if dropped != 1 {
|
||||
t.Fatalf("dropped = %d, want per-call drop count 1", dropped)
|
||||
}
|
||||
snapshot := scheduler.Snapshot()
|
||||
if snapshot.Dropped != 1 || !snapshot.BackpressureActive {
|
||||
t.Fatalf("snapshot = %+v, want one dropped packet and active backpressure", snapshot)
|
||||
@@ -1069,6 +1072,60 @@ func TestFabricClientPacketIngressIsolatesRouteMemoryPerVPNConnection(t *testing
|
||||
}
|
||||
}
|
||||
|
||||
func TestFabricClientPacketIngressRouteSelectionUsesUpdatedRuntimeIdentity(t *testing.T) {
|
||||
transport := &captureManyProductionTransport{}
|
||||
ingress := &FabricClientPacketIngress{
|
||||
ForwardTransport: transport,
|
||||
Inbox: NewFabricPacketInbox(8),
|
||||
ClusterID: "cluster-1",
|
||||
LocalNodeID: "entry-1",
|
||||
Routes: func() []mesh.SyntheticRoute {
|
||||
return []mesh.SyntheticRoute{{
|
||||
RouteID: "route-entry-1",
|
||||
ClusterID: "cluster-1",
|
||||
SourceNodeID: "entry-1",
|
||||
DestinationNodeID: "exit-1",
|
||||
Hops: []string{"entry-1", "relay-1", "exit-1"},
|
||||
AllowedChannels: []string{mesh.ProductionChannelVPNPacket},
|
||||
ExpiresAt: time.Now().UTC().Add(time.Minute),
|
||||
MaxTTL: 8,
|
||||
}}
|
||||
},
|
||||
}
|
||||
ingress.UpdateRuntime(
|
||||
transport,
|
||||
NewFabricPacketInbox(8),
|
||||
"cluster-1",
|
||||
"entry-2",
|
||||
nil,
|
||||
func() []mesh.SyntheticRoute {
|
||||
return []mesh.SyntheticRoute{{
|
||||
RouteID: "route-entry-2",
|
||||
ClusterID: "cluster-1",
|
||||
SourceNodeID: "entry-2",
|
||||
DestinationNodeID: "exit-2",
|
||||
Hops: []string{"entry-2", "relay-2", "exit-2"},
|
||||
AllowedChannels: []string{mesh.ProductionChannelVPNPacket},
|
||||
ExpiresAt: time.Now().UTC().Add(time.Minute),
|
||||
MaxTTL: 8,
|
||||
}}
|
||||
},
|
||||
"policy-updated",
|
||||
)
|
||||
|
||||
packet := testIPv4TCPPacket([4]byte{10, 77, 0, 2}, [4]byte{192, 168, 200, 95}, 51000, 443)
|
||||
if err := ingress.SendClientPacketBatch(context.Background(), "", "vpn-1", [][]byte{packet}); err != nil {
|
||||
t.Fatalf("send after runtime update: %v", err)
|
||||
}
|
||||
if len(transport.envelopes) != 1 {
|
||||
t.Fatalf("envelopes = %d, want one send", len(transport.envelopes))
|
||||
}
|
||||
envelope := transport.envelopes[0]
|
||||
if envelope.RouteID != "route-entry-2" || envelope.SourceNodeID != "entry-2" || transport.calls[0] != "relay-2" {
|
||||
t.Fatalf("envelope route/source/next-hop = %s/%s/%s, want updated entry-2 route", envelope.RouteID, envelope.SourceNodeID, transport.calls[0])
|
||||
}
|
||||
}
|
||||
|
||||
func TestFabricClientPacketIngressParallelFlowWindowDoesNotBlockIndependentChannel(t *testing.T) {
|
||||
scheduler := NewFabricFlowScheduler(8, 16)
|
||||
slowPacket, fastPacket := packetsForOrderedDistinctChannels(scheduler.shardCountValue())
|
||||
|
||||
Reference in New Issue
Block a user