1
0
Fork 0
telegraf/plugins/inputs/intel_baseband/sock_connector_test.go
Daniel Baumann 4978089aab
Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-24 07:26:29 +02:00

77 lines
2.3 KiB
Go

//go:build linux && amd64
package intel_baseband
import (
"errors"
"testing"
"time"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
"github.com/influxdata/telegraf/plugins/inputs/intel_baseband/mocks"
)
func TestWriteCommandToSocket(t *testing.T) {
t.Run("correct execution of the function", func(t *testing.T) {
conn := &mocks.Conn{}
conn.On("Write", mock.Anything).Return(2, nil)
conn.On("SetWriteDeadline", mock.Anything).Return(nil)
connector := socketConnector{connection: conn}
err := connector.writeCommandToSocket(0x00)
require.NoError(t, err)
defer conn.AssertExpectations(t)
})
t.Run("without setting up a connection it should return an error", func(t *testing.T) {
connector := socketConnector{}
err := connector.writeCommandToSocket(0x00)
require.Error(t, err)
require.ErrorContains(t, err, "connection had not been established before")
})
t.Run("handling timeout setting error", func(t *testing.T) {
conn := &mocks.Conn{}
conn.On("SetWriteDeadline", mock.Anything).Return(errors.New("deadline set error"))
connector := socketConnector{connection: conn}
err := connector.writeCommandToSocket(0x00)
require.Error(t, err)
require.ErrorContains(t, err, "failed to set timeout for request")
require.ErrorContains(t, err, "deadline set error")
defer conn.AssertExpectations(t)
})
t.Run("handling net.Write error", func(t *testing.T) {
var unsupportedCommand byte = 0x99
conn := &mocks.Conn{}
conn.On("Write", []byte{unsupportedCommand, 0x00}).Return(0, errors.New("unsupported command"))
conn.On("SetWriteDeadline", mock.Anything).Return(nil)
connector := socketConnector{connection: conn}
err := connector.writeCommandToSocket(unsupportedCommand)
require.Error(t, err)
require.ErrorContains(t, err, "failed to send request to socket")
require.ErrorContains(t, err, "unsupported command")
defer conn.AssertExpectations(t)
})
}
func TestDumpTelemetryToLog(t *testing.T) {
t.Run("with correct temporary socket should return only an error related to the inability to refresh telemetry", func(t *testing.T) {
tempSocket := newTempSocket(t)
defer tempSocket.Close()
tempLogFile := newTempLogFile(t)
defer tempLogFile.close()
connector := newSocketConnector(tempSocket.pathToSocket, 5*time.Second)
err := connector.dumpTelemetryToLog()
require.NoError(t, err)
})
}