Remove redundant constructor, h/t sergio
This commit is contained in:
9
debian/changelog
vendored
9
debian/changelog
vendored
@@ -1,3 +1,12 @@
|
|||||||
|
govpp-snmp-agentx (1.1.7-1) bookworm; urgency=medium
|
||||||
|
|
||||||
|
* Refactor VPPClient constructor to use idiomatic Go patterns
|
||||||
|
* Remove redundant NewVPPClient() constructor function
|
||||||
|
* Update all code to use direct struct initialization (&VPPClient{})
|
||||||
|
* Improve code maintainability and follow Go best practices
|
||||||
|
|
||||||
|
-- Pim van Pelt <pim@ipng.ch> Fri, 15 Nov 2024 00:00:00 +0000
|
||||||
|
|
||||||
govpp-snmp-agentx (1.1.6-1) bookworm; urgency=medium
|
govpp-snmp-agentx (1.1.6-1) bookworm; urgency=medium
|
||||||
|
|
||||||
* Replace forked go-agentx dependency with upstream github.com/posteo/go-agentx
|
* Replace forked go-agentx dependency with upstream github.com/posteo/go-agentx
|
||||||
|
|||||||
@@ -45,4 +45,4 @@ func StartAgentXRoutine(interfaceMIB *ifmib.InterfaceMIB) error {
|
|||||||
|
|
||||||
logger.Printf("Successfully registered with AgentX at %s://%s", network, address)
|
logger.Printf("Successfully registered with AgentX at %s://%s", network, address)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ func TestAgentXAddrFlagParsing(t *testing.T) {
|
|||||||
// Test Unix socket path
|
// Test Unix socket path
|
||||||
testAddr := "/var/run/test.sock"
|
testAddr := "/var/run/test.sock"
|
||||||
*AgentXAddr = testAddr
|
*AgentXAddr = testAddr
|
||||||
|
|
||||||
if *AgentXAddr != testAddr {
|
if *AgentXAddr != testAddr {
|
||||||
t.Errorf("Expected AgentX address to be '%s', got '%s'", testAddr, *AgentXAddr)
|
t.Errorf("Expected AgentX address to be '%s', got '%s'", testAddr, *AgentXAddr)
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@ func TestAgentXAddrFlagParsing(t *testing.T) {
|
|||||||
// Test TCP address
|
// Test TCP address
|
||||||
testAddr = "192.168.1.1:705"
|
testAddr = "192.168.1.1:705"
|
||||||
*AgentXAddr = testAddr
|
*AgentXAddr = testAddr
|
||||||
|
|
||||||
if *AgentXAddr != testAddr {
|
if *AgentXAddr != testAddr {
|
||||||
t.Errorf("Expected AgentX address to be '%s', got '%s'", testAddr, *AgentXAddr)
|
t.Errorf("Expected AgentX address to be '%s', got '%s'", testAddr, *AgentXAddr)
|
||||||
}
|
}
|
||||||
@@ -43,12 +43,12 @@ func TestFlagRegistration(t *testing.T) {
|
|||||||
t.Error("Expected agentx.addr flag to be registered")
|
t.Error("Expected agentx.addr flag to be registered")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if f.DefValue != "localhost:705" {
|
if f.DefValue != "localhost:705" {
|
||||||
t.Errorf("Expected flag default value to be 'localhost:705', got '%s'", f.DefValue)
|
t.Errorf("Expected flag default value to be 'localhost:705', got '%s'", f.DefValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
if f.Usage != "Address to connect to (hostname:port or Unix socket path)" {
|
if f.Usage != "Address to connect to (hostname:port or Unix socket path)" {
|
||||||
t.Errorf("Unexpected flag usage string: %s", f.Usage)
|
t.Errorf("Unexpected flag usage string: %s", f.Usage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ package config
|
|||||||
// Global configuration variables
|
// Global configuration variables
|
||||||
var (
|
var (
|
||||||
Debug bool
|
Debug bool
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -27,4 +27,4 @@ func TestDebugFlagSet(t *testing.T) {
|
|||||||
if Debug != false {
|
if Debug != false {
|
||||||
t.Errorf("Expected Debug to be false after setting, got %v", Debug)
|
t.Errorf("Expected Debug to be false after setting, got %v", Debug)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"govpp-snmp-agentx/config"
|
"govpp-snmp-agentx/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -16,15 +16,15 @@ func getCallerInfo() string {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return "unknown:unknown"
|
return "unknown:unknown"
|
||||||
}
|
}
|
||||||
|
|
||||||
fn := runtime.FuncForPC(pc)
|
fn := runtime.FuncForPC(pc)
|
||||||
if fn == nil {
|
if fn == nil {
|
||||||
return "unknown:unknown"
|
return "unknown:unknown"
|
||||||
}
|
}
|
||||||
|
|
||||||
funcName := filepath.Base(fn.Name())
|
funcName := filepath.Base(fn.Name())
|
||||||
fileName := filepath.Base(file)
|
fileName := filepath.Base(file)
|
||||||
|
|
||||||
return fmt.Sprintf("%s:%s", fileName, funcName)
|
return fmt.Sprintf("%s:%s", fileName, funcName)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,4 +49,4 @@ func Debugf(format string, args ...interface{}) {
|
|||||||
// Sync flushes any buffered log entries (no-op for fmt.Println)
|
// Sync flushes any buffered log entries (no-op for fmt.Println)
|
||||||
func Sync() {
|
func Sync() {
|
||||||
// No buffering with fmt.Println, so this is a no-op
|
// No buffering with fmt.Println, so this is a no-op
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,11 +33,11 @@ func TestPrintf(t *testing.T) {
|
|||||||
if !strings.HasPrefix(output, "INFO ") {
|
if !strings.HasPrefix(output, "INFO ") {
|
||||||
t.Errorf("Expected output to start with 'INFO ', got: %s", output)
|
t.Errorf("Expected output to start with 'INFO ', got: %s", output)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !strings.Contains(output, "logger_test.go:logger.TestPrintf") {
|
if !strings.Contains(output, "logger_test.go:logger.TestPrintf") {
|
||||||
t.Errorf("Expected output to contain caller info, got: %s", output)
|
t.Errorf("Expected output to contain caller info, got: %s", output)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !strings.Contains(output, "test message: hello") {
|
if !strings.Contains(output, "test message: hello") {
|
||||||
t.Errorf("Expected output to contain message, got: %s", output)
|
t.Errorf("Expected output to contain message, got: %s", output)
|
||||||
}
|
}
|
||||||
@@ -71,7 +71,7 @@ func TestDebugfWithDebugEnabled(t *testing.T) {
|
|||||||
if !strings.HasPrefix(output, "DEBUG ") {
|
if !strings.HasPrefix(output, "DEBUG ") {
|
||||||
t.Errorf("Expected output to start with 'DEBUG ', got: %s", output)
|
t.Errorf("Expected output to start with 'DEBUG ', got: %s", output)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !strings.Contains(output, "debug message: test") {
|
if !strings.Contains(output, "debug message: test") {
|
||||||
t.Errorf("Expected output to contain message, got: %s", output)
|
t.Errorf("Expected output to contain message, got: %s", output)
|
||||||
}
|
}
|
||||||
@@ -110,4 +110,4 @@ func TestDebugfWithDebugDisabled(t *testing.T) {
|
|||||||
func TestSync(t *testing.T) {
|
func TestSync(t *testing.T) {
|
||||||
// Test that Sync doesn't panic (it's a no-op now)
|
// Test that Sync doesn't panic (it's a no-op now)
|
||||||
Sync()
|
Sync()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import (
|
|||||||
"govpp-snmp-agentx/vpp"
|
"govpp-snmp-agentx/vpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
const Version = "1.1.6-1"
|
const Version = "1.1.7-1"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
debug := flag.Bool("debug", false, "Enable debug logging")
|
debug := flag.Bool("debug", false, "Enable debug logging")
|
||||||
@@ -46,7 +46,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create VPP client and managers
|
// Create VPP client and managers
|
||||||
vppClient := vpp.NewVPPClient()
|
vppClient := &vpp.VPPClient{}
|
||||||
interfaceManager := vpp.NewInterfaceManager(vppClient)
|
interfaceManager := vpp.NewInterfaceManager(vppClient)
|
||||||
statsManager := vpp.NewStatsManager(vppClient)
|
statsManager := vpp.NewStatsManager(vppClient)
|
||||||
|
|
||||||
|
|||||||
@@ -29,11 +29,6 @@ type VPPClient struct {
|
|||||||
connected bool
|
connected bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewVPPClient creates a new VPP client instance
|
|
||||||
func NewVPPClient() *VPPClient {
|
|
||||||
return &VPPClient{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Connect establishes connections to both VPP API and Stats sockets
|
// Connect establishes connections to both VPP API and Stats sockets
|
||||||
func (c *VPPClient) Connect() error {
|
func (c *VPPClient) Connect() error {
|
||||||
logger.Debugf("Connecting to VPP (API: %s, Stats: %s)", *ApiAddr, *StatsAddr)
|
logger.Debugf("Connecting to VPP (API: %s, Stats: %s)", *ApiAddr, *StatsAddr)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestNewInterfaceManager(t *testing.T) {
|
func TestNewInterfaceManager(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewInterfaceManager(client)
|
manager := NewInterfaceManager(client)
|
||||||
|
|
||||||
if manager == nil {
|
if manager == nil {
|
||||||
@@ -36,7 +36,7 @@ func TestNewInterfaceManager(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestInterfaceManagerSetEventCallback(t *testing.T) {
|
func TestInterfaceManagerSetEventCallback(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewInterfaceManager(client)
|
manager := NewInterfaceManager(client)
|
||||||
|
|
||||||
var callbackCalled bool
|
var callbackCalled bool
|
||||||
@@ -82,7 +82,7 @@ func TestInterfaceManagerSetEventCallback(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestInterfaceManagerGetAllInterfaceDetailsWithoutConnection(t *testing.T) {
|
func TestInterfaceManagerGetAllInterfaceDetailsWithoutConnection(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewInterfaceManager(client)
|
manager := NewInterfaceManager(client)
|
||||||
|
|
||||||
_, err := manager.GetAllInterfaceDetails()
|
_, err := manager.GetAllInterfaceDetails()
|
||||||
@@ -101,7 +101,7 @@ func TestInterfaceManagerGetAllInterfaceDetailsWithoutConnection(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestInterfaceManagerStartEventWatcherWithoutConnection(t *testing.T) {
|
func TestInterfaceManagerStartEventWatcherWithoutConnection(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewInterfaceManager(client)
|
manager := NewInterfaceManager(client)
|
||||||
|
|
||||||
err := manager.StartEventWatcher()
|
err := manager.StartEventWatcher()
|
||||||
@@ -120,7 +120,7 @@ func TestInterfaceManagerStartEventWatcherWithoutConnection(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestInterfaceManagerHandleInterfaceEventWithoutCallback(t *testing.T) {
|
func TestInterfaceManagerHandleInterfaceEventWithoutCallback(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewInterfaceManager(client)
|
manager := NewInterfaceManager(client)
|
||||||
|
|
||||||
// Should not panic when callback is nil
|
// Should not panic when callback is nil
|
||||||
@@ -128,7 +128,7 @@ func TestInterfaceManagerHandleInterfaceEventWithoutCallback(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestInterfaceManagerInitializeEventWatchingWithoutConnection(t *testing.T) {
|
func TestInterfaceManagerInitializeEventWatchingWithoutConnection(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewInterfaceManager(client)
|
manager := NewInterfaceManager(client)
|
||||||
|
|
||||||
err := manager.InitializeEventWatching()
|
err := manager.InitializeEventWatching()
|
||||||
@@ -220,7 +220,7 @@ func TestInterfaceEventCallback(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestInterfaceManagerStartStopEventMonitoring(t *testing.T) {
|
func TestInterfaceManagerStartStopEventMonitoring(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewInterfaceManager(client)
|
manager := NewInterfaceManager(client)
|
||||||
|
|
||||||
if manager.running {
|
if manager.running {
|
||||||
@@ -248,7 +248,7 @@ func TestInterfaceManagerStartStopEventMonitoring(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestInterfaceManagerEventMonitoringWithConnectionChanges(t *testing.T) {
|
func TestInterfaceManagerEventMonitoringWithConnectionChanges(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewInterfaceManager(client)
|
manager := NewInterfaceManager(client)
|
||||||
|
|
||||||
// Set a callback to track calls
|
// Set a callback to track calls
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestNewStatsManager(t *testing.T) {
|
func TestNewStatsManager(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewStatsManager(client)
|
manager := NewStatsManager(client)
|
||||||
|
|
||||||
if manager == nil {
|
if manager == nil {
|
||||||
@@ -36,7 +36,7 @@ func TestNewStatsManager(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStatsManagerSetStatsCallback(t *testing.T) {
|
func TestStatsManagerSetStatsCallback(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewStatsManager(client)
|
manager := NewStatsManager(client)
|
||||||
|
|
||||||
var callbackCalled bool
|
var callbackCalled bool
|
||||||
@@ -85,7 +85,7 @@ func TestStatsManagerSetStatsCallback(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStatsManagerSetPeriod(t *testing.T) {
|
func TestStatsManagerSetPeriod(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewStatsManager(client)
|
manager := NewStatsManager(client)
|
||||||
|
|
||||||
newPeriod := 5 * time.Second
|
newPeriod := 5 * time.Second
|
||||||
@@ -97,7 +97,7 @@ func TestStatsManagerSetPeriod(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStatsManagerStartStopStatsRoutine(t *testing.T) {
|
func TestStatsManagerStartStopStatsRoutine(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewStatsManager(client)
|
manager := NewStatsManager(client)
|
||||||
|
|
||||||
if manager.running {
|
if manager.running {
|
||||||
@@ -125,7 +125,7 @@ func TestStatsManagerStartStopStatsRoutine(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStatsManagerGetInterfaceStatsWithoutConnection(t *testing.T) {
|
func TestStatsManagerGetInterfaceStatsWithoutConnection(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewStatsManager(client)
|
manager := NewStatsManager(client)
|
||||||
|
|
||||||
_, err := manager.GetInterfaceStats()
|
_, err := manager.GetInterfaceStats()
|
||||||
@@ -206,7 +206,7 @@ func TestStatsCallback(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStatsManagerQueryAndReportStatsWithoutConnection(t *testing.T) {
|
func TestStatsManagerQueryAndReportStatsWithoutConnection(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewStatsManager(client)
|
manager := NewStatsManager(client)
|
||||||
|
|
||||||
// Should return false when not connected
|
// Should return false when not connected
|
||||||
@@ -216,7 +216,7 @@ func TestStatsManagerQueryAndReportStatsWithoutConnection(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStatsManagerWithShortPeriod(t *testing.T) {
|
func TestStatsManagerWithShortPeriod(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
manager := NewStatsManager(client)
|
manager := NewStatsManager(client)
|
||||||
|
|
||||||
// Set a very short period for testing
|
// Set a very short period for testing
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestNewVPPClient(t *testing.T) {
|
func TestNewVPPClient(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
|
|
||||||
if client == nil {
|
if client == nil {
|
||||||
t.Fatal("NewVPPClient() returned nil")
|
t.Fatal("NewVPPClient() returned nil")
|
||||||
@@ -27,7 +27,7 @@ func TestNewVPPClient(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestVPPClientDisconnect(t *testing.T) {
|
func TestVPPClientDisconnect(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
|
|
||||||
// Should be safe to call disconnect on unconnected client
|
// Should be safe to call disconnect on unconnected client
|
||||||
client.Disconnect()
|
client.Disconnect()
|
||||||
@@ -38,7 +38,7 @@ func TestVPPClientDisconnect(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestVPPClientNewAPIChannelWithoutConnection(t *testing.T) {
|
func TestVPPClientNewAPIChannelWithoutConnection(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
|
|
||||||
_, err := client.NewAPIChannel()
|
_, err := client.NewAPIChannel()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@@ -56,7 +56,7 @@ func TestVPPClientNewAPIChannelWithoutConnection(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestVPPClientCheckLivenessWithoutConnection(t *testing.T) {
|
func TestVPPClientCheckLivenessWithoutConnection(t *testing.T) {
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
|
|
||||||
if client.CheckLiveness() {
|
if client.CheckLiveness() {
|
||||||
t.Error("CheckLiveness() should return false when not connected")
|
t.Error("CheckLiveness() should return false when not connected")
|
||||||
@@ -86,7 +86,7 @@ func TestVPPClientConnectWithInvalidPaths(t *testing.T) {
|
|||||||
*StatsAddr = origStatsAddr
|
*StatsAddr = origStatsAddr
|
||||||
}()
|
}()
|
||||||
|
|
||||||
client := NewVPPClient()
|
client := &VPPClient{}
|
||||||
err := client.Connect()
|
err := client.Connect()
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user