diff --git a/errors/errors.go b/errors/errors.go index 75364382..5076d44c 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -27,56 +27,56 @@ const ( ) var ( - ErrClientNotFound = NewGatewaydError( + ErrClientNotFound = NewGatewayDError( ErrCodeClientNotFound, "client not found", nil) - ErrClientNotConnected = NewGatewaydError( + ErrClientNotConnected = NewGatewayDError( ErrCodeClientNotConnected, "client is not connected", nil) - ErrClientConnectionFailed = NewGatewaydError( + ErrClientConnectionFailed = NewGatewayDError( ErrCodeClientConnectionFailed, "failed to create a new connection", nil) - ErrNetworkNotSupported = NewGatewaydError( + ErrNetworkNotSupported = NewGatewayDError( ErrCodeNetworkNotSupported, "network is not supported", nil) - ErrResolveFailed = NewGatewaydError( + ErrResolveFailed = NewGatewayDError( ErrCodeResolveFailed, "failed to resolve address", nil) - ErrPoolExhausted = NewGatewaydError( + ErrPoolExhausted = NewGatewayDError( ErrCodePoolExhausted, "pool is exhausted", nil) - ErrFailedToStartServer = NewGatewaydError( + ErrFailedToStartServer = NewGatewayDError( ErrCodeStartServerFailed, "failed to start server", nil) - ErrPluginNotFound = NewGatewaydError( + ErrPluginNotFound = NewGatewayDError( ErrCodePluginNotFound, "plugin not found", nil) - ErrPluginNotReady = NewGatewaydError( + ErrPluginNotReady = NewGatewayDError( ErrCodePluginNotReady, "plugin is not ready", nil) - ErrFailedToStartPlugin = NewGatewaydError( + ErrFailedToStartPlugin = NewGatewayDError( ErrCodeStartPluginFailed, "failed to start plugin", nil) - ErrFailedToGetRPCClient = NewGatewaydError( + ErrFailedToGetRPCClient = NewGatewayDError( ErrCodeGetRPCClientFailed, "failed to get RPC client", nil) - ErrFailedToDispensePlugin = NewGatewaydError( + ErrFailedToDispensePlugin = NewGatewayDError( ErrCodeDispensePluginFailed, "failed to dispense plugin", nil) - ErrClientReceiveFailed = NewGatewaydError( + ErrClientReceiveFailed = NewGatewayDError( ErrCodeClientReceiveFailed, "couldn't receive data from the server", nil) - ErrClientSendFailed = NewGatewaydError( + ErrClientSendFailed = NewGatewayDError( ErrCodeClientSendFailed, "couldn't send data to the server", nil) - ErrServerSendFailed = NewGatewaydError( + ErrServerSendFailed = NewGatewayDError( ErrCodeServerSendFailed, "couldn't send data to the client", nil) - ErrServerReceiveFailed = NewGatewaydError( + ErrServerReceiveFailed = NewGatewayDError( ErrCodeServerReceiveFailed, "couldn't receive data from the client", nil) - ErrPutFailed = NewGatewaydError( + ErrPutFailed = NewGatewayDError( ErrCodePutFailed, "failed to put in pool", nil) - ErrCastFailed = NewGatewaydError( + ErrCastFailed = NewGatewayDError( ErrCodeCastFailed, "failed to cast", nil) - ErrHookVerificationFailed = NewGatewaydError( + ErrHookVerificationFailed = NewGatewayDError( ErrCodeHookVerificationFailed, "failed to verify hook", nil) - ErrFileNotFound = NewGatewaydError( + ErrFileNotFound = NewGatewayDError( ErrCodeFileNotFound, "file not found", nil) - ErrFileOpenFailed = NewGatewaydError( + ErrFileOpenFailed = NewGatewayDError( ErrCodeFileOpenFailed, "failed to open file", nil) - ErrFileReadFailed = NewGatewaydError( + ErrFileReadFailed = NewGatewayDError( ErrCodeFileReadFailed, "failed to read file", nil) ) diff --git a/errors/gatewayd_error.go b/errors/gatewayd_error.go index be7dbab9..e5cd3d49 100644 --- a/errors/gatewayd_error.go +++ b/errors/gatewayd_error.go @@ -10,7 +10,7 @@ type GatewayDError struct { OriginalError error } -func NewGatewaydError(code ErrCode, message string, err error) *GatewayDError { +func NewGatewayDError(code ErrCode, message string, err error) *GatewayDError { return &GatewayDError{ Code: code, Message: message, diff --git a/errors/gatewayd_error_test.go b/errors/gatewayd_error_test.go new file mode 100644 index 00000000..e50ca451 --- /dev/null +++ b/errors/gatewayd_error_test.go @@ -0,0 +1,23 @@ +package errors + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewGatewayDError(t *testing.T) { + err := NewGatewayDError(ErrCodeUnknown, "test", nil) + assert.NotNil(t, err) + assert.Equal(t, err.Code, ErrCodeUnknown) + assert.Equal(t, err.Error(), "test") + assert.Equal(t, err.Message, "test") + assert.Nil(t, err.OriginalError) + + origErr := errors.New("original error") //nolint:goerr113 + assert.NotNil(t, err.Wrap(origErr)) + assert.Equal(t, err.OriginalError, origErr) + assert.Equal(t, origErr, err.Unwrap()) + assert.Equal(t, err.Error(), "test, OriginalError: original error") +} diff --git a/network/client.go b/network/client.go index d67bf2b5..b92937ae 100644 --- a/network/client.go +++ b/network/client.go @@ -13,6 +13,13 @@ const ( DefaultSeed = 1000 ) +type ClientInterface interface { + Send(data []byte) (int, *gerr.GatewayDError) + Receive() (int, []byte, *gerr.GatewayDError) + Close() + IsConnected() bool +} + type Client struct { net.Conn @@ -25,6 +32,8 @@ type Client struct { // TODO: add read/write deadline and deal with timeouts } +var _ ClientInterface = &Client{} + // TODO: implement a better connection management algorithm func NewClient(network, address string, receiveBufferSize int, logger zerolog.Logger) *Client {