78 lines
2.3 KiB
Go
78 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)
|
||
|
})
|
||
|
}
|