Make statsmanager and interfacemanager independent. Add reconnect logic for EventMonitoring

This commit is contained in:
Pim van Pelt
2025-06-24 07:36:10 +02:00
parent 1889934a9c
commit 3401c96112
5 changed files with 196 additions and 51 deletions

View File

@@ -11,8 +11,7 @@ import (
func TestNewStatsManager(t *testing.T) {
client := NewVPPClient()
interfaceManager := NewInterfaceManager(client)
manager := NewStatsManager(client, interfaceManager)
manager := NewStatsManager(client)
if manager == nil {
t.Fatal("NewStatsManager() returned nil")
@@ -22,10 +21,6 @@ func TestNewStatsManager(t *testing.T) {
t.Error("StatsManager should store the provided client")
}
if manager.interfaceManager != interfaceManager {
t.Error("StatsManager should store the provided interface manager")
}
if manager.period != time.Duration(*Period)*time.Second {
t.Errorf("Expected period %v, got %v", time.Duration(*Period)*time.Second, manager.period)
}
@@ -41,8 +36,7 @@ func TestNewStatsManager(t *testing.T) {
func TestStatsManagerSetStatsCallback(t *testing.T) {
client := NewVPPClient()
interfaceManager := NewInterfaceManager(client)
manager := NewStatsManager(client, interfaceManager)
manager := NewStatsManager(client)
var callbackCalled bool
var receivedStats *api.InterfaceStats
@@ -91,8 +85,7 @@ func TestStatsManagerSetStatsCallback(t *testing.T) {
func TestStatsManagerSetPeriod(t *testing.T) {
client := NewVPPClient()
interfaceManager := NewInterfaceManager(client)
manager := NewStatsManager(client, interfaceManager)
manager := NewStatsManager(client)
newPeriod := 5 * time.Second
manager.SetPeriod(newPeriod)
@@ -104,8 +97,7 @@ func TestStatsManagerSetPeriod(t *testing.T) {
func TestStatsManagerStartStopStatsRoutine(t *testing.T) {
client := NewVPPClient()
interfaceManager := NewInterfaceManager(client)
manager := NewStatsManager(client, interfaceManager)
manager := NewStatsManager(client)
if manager.running {
t.Error("StatsManager should not be running initially")
@@ -133,8 +125,7 @@ func TestStatsManagerStartStopStatsRoutine(t *testing.T) {
func TestStatsManagerGetInterfaceStatsWithoutConnection(t *testing.T) {
client := NewVPPClient()
interfaceManager := NewInterfaceManager(client)
manager := NewStatsManager(client, interfaceManager)
manager := NewStatsManager(client)
_, err := manager.GetInterfaceStats()
if err == nil {
@@ -215,8 +206,7 @@ func TestStatsCallback(t *testing.T) {
func TestStatsManagerQueryAndReportStatsWithoutConnection(t *testing.T) {
client := NewVPPClient()
interfaceManager := NewInterfaceManager(client)
manager := NewStatsManager(client, interfaceManager)
manager := NewStatsManager(client)
// Should return false when not connected
if manager.queryAndReportStats() {
@@ -226,8 +216,7 @@ func TestStatsManagerQueryAndReportStatsWithoutConnection(t *testing.T) {
func TestStatsManagerWithShortPeriod(t *testing.T) {
client := NewVPPClient()
interfaceManager := NewInterfaceManager(client)
manager := NewStatsManager(client, interfaceManager)
manager := NewStatsManager(client)
// Set a very short period for testing
manager.SetPeriod(10 * time.Millisecond)