Report VPN pressure score in smoke

This commit is contained in:
2026-05-16 13:27:10 +03:00
parent f9ff0a4631
commit ba67b6e712
2 changed files with 7 additions and 3 deletions
@@ -49,6 +49,7 @@ type smokeReport struct {
FabricVPNBulkWindow int `json:"fabric_vpn_bulk_parallel_window"` FabricVPNBulkWindow int `json:"fabric_vpn_bulk_parallel_window"`
FabricVPNInteractiveWin int `json:"fabric_vpn_interactive_parallel_window"` FabricVPNInteractiveWin int `json:"fabric_vpn_interactive_parallel_window"`
FabricVPNPressureLevel string `json:"fabric_vpn_pressure_level"` FabricVPNPressureLevel string `json:"fabric_vpn_pressure_level"`
FabricVPNPressureScore int `json:"fabric_vpn_pressure_score"`
FabricVPNPressureReason []string `json:"fabric_vpn_pressure_reasons"` FabricVPNPressureReason []string `json:"fabric_vpn_pressure_reasons"`
FabricVPNRouteRecovered bool `json:"fabric_vpn_route_recovered"` FabricVPNRouteRecovered bool `json:"fabric_vpn_route_recovered"`
FabricVPNRouteSwitches uint64 `json:"fabric_vpn_route_switch_count"` FabricVPNRouteSwitches uint64 `json:"fabric_vpn_route_switch_count"`
@@ -159,7 +160,7 @@ func run(ctx context.Context) (smokeReport, error) {
if err != nil { if err != nil {
return smokeReport{}, fmt.Errorf("fabric vpn packet session smoke: %w", err) return smokeReport{}, fmt.Errorf("fabric vpn packet session smoke: %w", err)
} }
fabricVPNBulkPressure, fabricVPNBulkChannels, fabricVPNInteractiveChannels, fabricVPNBulkWindow, fabricVPNInteractiveWindow, fabricVPNPressureLevel, fabricVPNPressureReasons := smokeVPNFlowSchedulerBulkPressure() fabricVPNBulkPressure, fabricVPNBulkChannels, fabricVPNInteractiveChannels, fabricVPNBulkWindow, fabricVPNInteractiveWindow, fabricVPNPressureLevel, fabricVPNPressureScore, fabricVPNPressureReasons := smokeVPNFlowSchedulerBulkPressure()
fabricVPNRouteRecovered, fabricVPNRouteSwitches, fabricVPNRecoveryMS, fabricVPNRecoveryMaxMS, fabricVPNRecoveryAvgMS, fabricVPNRecoveryReason := smokeVPNFlowSchedulerRouteRecovery() fabricVPNRouteRecovered, fabricVPNRouteSwitches, fabricVPNRecoveryMS, fabricVPNRecoveryMaxMS, fabricVPNRecoveryAvgMS, fabricVPNRecoveryReason := smokeVPNFlowSchedulerRouteRecovery()
fabricQUICAccepted, fabricQUICEndpoint, fabricQUICPressure, err := smokeQUICFabricSession(ctx) fabricQUICAccepted, fabricQUICEndpoint, fabricQUICPressure, err := smokeQUICFabricSession(ctx)
if err != nil { if err != nil {
@@ -187,6 +188,7 @@ func run(ctx context.Context) (smokeReport, error) {
FabricVPNBulkWindow: fabricVPNBulkWindow, FabricVPNBulkWindow: fabricVPNBulkWindow,
FabricVPNInteractiveWin: fabricVPNInteractiveWindow, FabricVPNInteractiveWin: fabricVPNInteractiveWindow,
FabricVPNPressureLevel: fabricVPNPressureLevel, FabricVPNPressureLevel: fabricVPNPressureLevel,
FabricVPNPressureScore: fabricVPNPressureScore,
FabricVPNPressureReason: fabricVPNPressureReasons, FabricVPNPressureReason: fabricVPNPressureReasons,
FabricVPNRouteRecovered: fabricVPNRouteRecovered, FabricVPNRouteRecovered: fabricVPNRouteRecovered,
FabricVPNRouteSwitches: fabricVPNRouteSwitches, FabricVPNRouteSwitches: fabricVPNRouteSwitches,
@@ -207,7 +209,7 @@ func run(ctx context.Context) (smokeReport, error) {
}, nil }, nil
} }
func smokeVPNFlowSchedulerBulkPressure() (bool, int, int, int, int, string, []string) { func smokeVPNFlowSchedulerBulkPressure() (bool, int, int, int, int, string, int, []string) {
scheduler := vpnruntime.NewFabricFlowScheduler(32, 16) scheduler := vpnruntime.NewFabricFlowScheduler(32, 16)
bulkPacket := []byte("bulk") bulkPacket := []byte("bulk")
interactivePacket := []byte("interactive-rdp-like") interactivePacket := []byte("interactive-rdp-like")
@@ -230,6 +232,7 @@ func smokeVPNFlowSchedulerBulkPressure() (bool, int, int, int, int, string, []st
snapshot.RecommendedParallelWindows[vpnruntime.FabricTrafficClassBulk], snapshot.RecommendedParallelWindows[vpnruntime.FabricTrafficClassBulk],
snapshot.RecommendedParallelWindows[vpnruntime.FabricTrafficClassInteractive], snapshot.RecommendedParallelWindows[vpnruntime.FabricTrafficClassInteractive],
snapshot.PressureLevel, snapshot.PressureLevel,
snapshot.PressureScore,
snapshot.PressureReasons snapshot.PressureReasons
} }
@@ -467,7 +467,8 @@ route failures, route recovery, slow channels, bulk pressure, and adaptive
backpressure. backpressure.
The same pressure classification includes a bounded 0-100 score for automated The same pressure classification includes a bounded 0-100 score for automated
route, endpoint, and node comparisons. route, endpoint, and node comparisons.
`mesh-live-smoke` reports the mixed-load scheduler pressure level and reasons. `mesh-live-smoke` reports the mixed-load scheduler pressure level, score, and
reasons.
Endpoint ranking treats `capacity_limited` observations as a soft pressure Endpoint ranking treats `capacity_limited` observations as a soft pressure
penalty instead of a hard recent failure, enabling load spreading without penalty instead of a hard recent failure, enabling load spreading without
marking the carrier unhealthy. marking the carrier unhealthy.