Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .avalanche-golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ linters:
- unparam
- unused
- usestdlibvars
- usetesting
- whitespace
settings:
depguard:
Expand Down Expand Up @@ -228,6 +229,14 @@ linters:
# Mark all local variables as used.
# default: true
local-variables-are-used: false
usetesting:
os-create-temp: true # Disallow `os.CreateTemp("", ...)`
os-mkdir-temp: true # Disallow `os.MkdirTemp()`
os-setenv: true # Disallow `os.Setenv()`
os-temp-dir: true # Disallow `os.TempDir()`
os-chdir: true # Disallow `os.Chdir()`
context-background: true # Disallow `context.Background()`
context-todo: true # Disallow `context.TODO()`
exclusions:
generated: lax
presets:
Expand Down
3 changes: 1 addition & 2 deletions eth/gasprice/fee_info_provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package gasprice

import (
"context"
"math/big"
"sync"
"testing"
Expand Down Expand Up @@ -54,7 +53,7 @@ func TestFeeInfoProviderCacheSize(t *testing.T) {
// to test eviction behavior.
for i := 0; i < size+feeCacheExtraSlots+overflow; i++ {
header := &types.Header{Number: big.NewInt(int64(i))}
_, err := f.addHeader(context.Background(), header)
_, err := f.addHeader(t.Context(), header)
require.NoError(t, err)
}

Expand Down
2 changes: 1 addition & 1 deletion internal/ethapi/api.coreth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ func TestSuggestPriceOptions(t *testing.T) {
}
api := NewEthereumAPI(backend)

got, err := api.SuggestPriceOptions(context.Background())
got, err := api.SuggestPriceOptions(t.Context())
require.NoError(err)
require.Equal(test.want, got)
})
Expand Down
5 changes: 2 additions & 3 deletions internal/ethapi/api_extra_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package ethapi

import (
"context"
"errors"
"math/big"
"os"
Expand Down Expand Up @@ -47,7 +46,7 @@ func TestBlockchainAPI_GetChainConfig(t *testing.T) {

api := NewBlockChainAPI(backend)

gotConfig := api.GetChainConfig(context.Background())
gotConfig := api.GetChainConfig(t.Context())
assert.Equal(t, wantConfig, gotConfig)
}

Expand Down Expand Up @@ -77,7 +76,7 @@ func TestBlockchainAPI_CallDetailed(t *testing.T) {
}))

result, err := api.CallDetailed(
context.Background(),
t.Context(),
TransactionArgs{
From: &accounts[0].addr,
To: &accounts[1].addr,
Expand Down
98 changes: 49 additions & 49 deletions network/network_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func TestNetworkDoesNotConnectToItself(t *testing.T) {
ctx := snowtest.Context(t, snowtest.CChainID)
n, err := NewNetwork(ctx, nil, nil, 1, prometheus.NewRegistry())
require.NoError(t, err)
require.NoError(t, n.Connected(context.Background(), ctx.NodeID, defaultPeerVersion))
require.NoError(t, n.Connected(t.Context(), ctx.NodeID, defaultPeerVersion))
require.Zero(t, n.Size())
}

Expand All @@ -71,7 +71,7 @@ func TestRequestAnyRequestsRoutingAndResponse(t *testing.T) {
senderWg.Add(1)
go func() {
defer senderWg.Done()
if err := net.AppRequest(context.Background(), nodeID, requestID, time.Now().Add(5*time.Second), requestBytes); err != nil {
if err := net.AppRequest(t.Context(), nodeID, requestID, time.Now().Add(5*time.Second), requestBytes); err != nil {
panic(err)
}
}()
Expand All @@ -81,7 +81,7 @@ func TestRequestAnyRequestsRoutingAndResponse(t *testing.T) {
senderWg.Add(1)
go func() {
defer senderWg.Done()
if err := net.AppResponse(context.Background(), nodeID, requestID, responseBytes); err != nil {
if err := net.AppResponse(t.Context(), nodeID, requestID, responseBytes); err != nil {
panic(err)
}
atomic.AddUint32(&callNum, 1)
Expand All @@ -96,12 +96,12 @@ func TestRequestAnyRequestsRoutingAndResponse(t *testing.T) {
require.NoError(t, err)
net.SetRequestHandler(&HelloGreetingRequestHandler{codec: codecManager})
nodeID := ids.GenerateTestNodeID()
require.NoError(t, net.Connected(context.Background(), nodeID, defaultPeerVersion))
require.NoError(t, net.Connected(t.Context(), nodeID, defaultPeerVersion))

requestMessage := HelloRequest{Message: "this is a request"}

defer net.Shutdown()
require.NoError(t, net.Connected(context.Background(), nodeID, defaultPeerVersion))
require.NoError(t, net.Connected(t.Context(), nodeID, defaultPeerVersion))

totalRequests := 5000
numCallsPerRequest := 1 // on sending response
Expand All @@ -114,7 +114,7 @@ func TestRequestAnyRequestsRoutingAndResponse(t *testing.T) {
defer wg.Done()
requestBytes, err := message.RequestToBytes(codecManager, requestMessage)
assert.NoError(t, err)
responseBytes, _, err := net.SendSyncedAppRequestAny(context.Background(), defaultPeerVersion, requestBytes)
responseBytes, _, err := net.SendSyncedAppRequestAny(t.Context(), defaultPeerVersion, requestBytes)
assert.NoError(t, err)
assert.NotNil(t, responseBytes)

Expand Down Expand Up @@ -153,7 +153,7 @@ func TestAppRequestOnCtxCancellation(t *testing.T) {
require.NoError(t, err)

nodeID := ids.GenerateTestNodeID()
ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithCancel(t.Context())
// cancel context prior to sending
cancel()
err = net.SendAppRequest(ctx, nodeID, requestBytes, nil)
Expand All @@ -175,7 +175,7 @@ func TestRequestRequestsRoutingAndResponse(t *testing.T) {
senderWg.Add(1)
go func() {
defer senderWg.Done()
if err := net.AppRequest(context.Background(), nodeID, requestID, time.Now().Add(5*time.Second), requestBytes); err != nil {
if err := net.AppRequest(t.Context(), nodeID, requestID, time.Now().Add(5*time.Second), requestBytes); err != nil {
panic(err)
}
}()
Expand All @@ -185,7 +185,7 @@ func TestRequestRequestsRoutingAndResponse(t *testing.T) {
senderWg.Add(1)
go func() {
defer senderWg.Done()
if err := net.AppResponse(context.Background(), nodeID, requestID, responseBytes); err != nil {
if err := net.AppResponse(t.Context(), nodeID, requestID, responseBytes); err != nil {
panic(err)
}
atomic.AddUint32(&callNum, 1)
Expand All @@ -208,7 +208,7 @@ func TestRequestRequestsRoutingAndResponse(t *testing.T) {
ids.GenerateTestNodeID(),
}
for _, nodeID := range nodes {
require.NoError(t, net.Connected(context.Background(), nodeID, defaultPeerVersion))
require.NoError(t, net.Connected(t.Context(), nodeID, defaultPeerVersion))
}

requestMessage := HelloRequest{Message: "this is a request"}
Expand All @@ -228,7 +228,7 @@ func TestRequestRequestsRoutingAndResponse(t *testing.T) {
defer wg.Done()
requestBytes, err := message.RequestToBytes(codecManager, requestMessage)
assert.NoError(t, err)
responseBytes, err := net.SendSyncedAppRequest(context.Background(), nodeID, requestBytes)
responseBytes, err := net.SendSyncedAppRequest(t.Context(), nodeID, requestBytes)
assert.NoError(t, err)
assert.NotNil(t, responseBytes)

Expand All @@ -248,7 +248,7 @@ func TestRequestRequestsRoutingAndResponse(t *testing.T) {
}

// ensure empty nodeID is not allowed
err = net.SendAppRequest(context.Background(), ids.EmptyNodeID, []byte("hello there"), nil)
err = net.SendAppRequest(t.Context(), ids.EmptyNodeID, []byte("hello there"), nil)
require.ErrorIs(t, err, errEmptyNodeID)
}

Expand Down Expand Up @@ -276,17 +276,17 @@ func TestAppRequestOnShutdown(t *testing.T) {
net, err := NewNetwork(ctx, sender, codecManager, 1, prometheus.NewRegistry())
require.NoError(t, err)
nodeID := ids.GenerateTestNodeID()
require.NoError(t, net.Connected(context.Background(), nodeID, defaultPeerVersion))
require.NoError(t, net.Connected(t.Context(), nodeID, defaultPeerVersion))

requestMessage := HelloRequest{Message: "this is a request"}
require.NoError(t, net.Connected(context.Background(), nodeID, defaultPeerVersion))
require.NoError(t, net.Connected(t.Context(), nodeID, defaultPeerVersion))

wg.Add(1)
go func() {
defer wg.Done()
requestBytes, err := message.RequestToBytes(codecManager, requestMessage)
assert.NoError(t, err)
responseBytes, _, err := net.SendSyncedAppRequestAny(context.Background(), defaultPeerVersion, requestBytes)
responseBytes, _, err := net.SendSyncedAppRequestAny(t.Context(), defaultPeerVersion, requestBytes)
assert.ErrorIs(t, err, errRequestFailed)
assert.Nil(t, responseBytes)
}()
Expand Down Expand Up @@ -326,7 +326,7 @@ func TestSyncedAppRequestAnyOnCtxCancellation(t *testing.T) {
net.SetRequestHandler(&HelloGreetingRequestHandler{codec: codecManager})
require.NoError(t,
net.Connected(
context.Background(),
t.Context(),
ids.GenerateTestNodeID(),
version.CurrentApp,
),
Expand All @@ -337,7 +337,7 @@ func TestSyncedAppRequestAnyOnCtxCancellation(t *testing.T) {
require.NoError(t, err)

// cancel context prior to sending
ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithCancel(t.Context())
cancel()
_, _, err = net.SendSyncedAppRequestAny(ctx, defaultPeerVersion, requestBytes)
require.ErrorIs(t, err, context.Canceled)
Expand All @@ -350,7 +350,7 @@ func TestSyncedAppRequestAnyOnCtxCancellation(t *testing.T) {

// Cancel context after sending
require.Empty(t, net.(*network).outstandingRequestHandlers) // no outstanding requests
ctx, cancel = context.WithCancel(context.Background())
ctx, cancel = context.WithCancel(t.Context())
doneChan := make(chan struct{})
go func() {
_, _, err = net.SendSyncedAppRequestAny(ctx, defaultPeerVersion, requestBytes)
Expand All @@ -366,7 +366,7 @@ func TestSyncedAppRequestAnyOnCtxCancellation(t *testing.T) {
// Should still be able to process a response after cancelling.
require.Len(t, net.(*network).outstandingRequestHandlers, 1) // context cancellation SendAppRequestAny failure doesn't clear
require.NoError(t, net.AppResponse(
context.Background(),
t.Context(),
sentAppRequestInfo.nodeID,
sentAppRequestInfo.requestID,
[]byte{}))
Expand All @@ -392,7 +392,7 @@ func TestRequestMinVersion(t *testing.T) {
if err != nil {
panic(err)
}
assert.NoError(t, net.AppResponse(context.Background(), nodeID, reqID, responseBytes))
assert.NoError(t, net.AppResponse(t.Context(), nodeID, reqID, responseBytes))
}()
return nil
},
Expand All @@ -407,7 +407,7 @@ func TestRequestMinVersion(t *testing.T) {
require.NoError(t, err)
require.NoError(t,
net.Connected(
context.Background(),
t.Context(),
nodeID,
&version.Application{
Name: version.Client,
Expand All @@ -420,7 +420,7 @@ func TestRequestMinVersion(t *testing.T) {

// ensure version does not match
responseBytes, _, err := net.SendSyncedAppRequestAny(
context.Background(),
t.Context(),
&version.Application{
Name: version.Client,
Major: 2,
Expand All @@ -433,7 +433,7 @@ func TestRequestMinVersion(t *testing.T) {
require.Nil(t, responseBytes)

// ensure version matches and the request goes through
responseBytes, _, err = net.SendSyncedAppRequestAny(context.Background(), defaultPeerVersion, requestBytes)
responseBytes, _, err = net.SendSyncedAppRequestAny(t.Context(), defaultPeerVersion, requestBytes)
require.NoError(t, err)

var response TestMessage
Expand Down Expand Up @@ -471,12 +471,12 @@ func TestOnRequestHonoursDeadline(t *testing.T) {

requestHandler.response, err = marshalStruct(codecManager, TestMessage{Message: "hi there"})
require.NoError(t, err)
require.NoError(t, net.AppRequest(context.Background(), nodeID, 0, time.Now().Add(1*time.Millisecond), requestBytes))
require.NoError(t, net.AppRequest(t.Context(), nodeID, 0, time.Now().Add(1*time.Millisecond), requestBytes))
// ensure the handler didn't get called (as peer.Network would've dropped the request)
require.Zero(t, requestHandler.calls)

requestHandler.processingDuration = 0
require.NoError(t, net.AppRequest(context.Background(), nodeID, 2, time.Now().Add(250*time.Millisecond), requestBytes))
require.NoError(t, net.AppRequest(t.Context(), nodeID, 2, time.Now().Add(250*time.Millisecond), requestBytes))
require.True(t, responded)
require.Equal(t, uint32(1), requestHandler.calls)
}
Expand All @@ -495,7 +495,7 @@ func TestHandleInvalidMessages(t *testing.T) {
require.NoError(t, err)
clientNetwork.SetRequestHandler(&testRequestHandler{})

require.NoError(t, clientNetwork.Connected(context.Background(), nodeID, defaultPeerVersion))
require.NoError(t, clientNetwork.Connected(t.Context(), nodeID, defaultPeerVersion))

defer clientNetwork.Shutdown()

Expand All @@ -516,30 +516,30 @@ func TestHandleInvalidMessages(t *testing.T) {
var nilResponse []byte

// Check for edge cases
require.NoError(t, clientNetwork.AppGossip(context.Background(), nodeID, gossipMsg))
require.NoError(t, clientNetwork.AppGossip(context.Background(), nodeID, requestMessage))
require.NoError(t, clientNetwork.AppGossip(context.Background(), nodeID, garbageResponse))
require.NoError(t, clientNetwork.AppGossip(context.Background(), nodeID, emptyResponse))
require.NoError(t, clientNetwork.AppGossip(context.Background(), nodeID, nilResponse))
require.NoError(t, clientNetwork.AppRequest(context.Background(), nodeID, requestID, time.Now().Add(time.Second), gossipMsg))
require.NoError(t, clientNetwork.AppRequest(context.Background(), nodeID, requestID, time.Now().Add(time.Second), requestMessage))
require.NoError(t, clientNetwork.AppRequest(context.Background(), nodeID, requestID, time.Now().Add(time.Second), garbageResponse))
require.NoError(t, clientNetwork.AppRequest(context.Background(), nodeID, requestID, time.Now().Add(time.Second), emptyResponse))
require.NoError(t, clientNetwork.AppRequest(context.Background(), nodeID, requestID, time.Now().Add(time.Second), nilResponse))

err = clientNetwork.AppResponse(context.Background(), nodeID, requestID, gossipMsg)
require.NoError(t, clientNetwork.AppGossip(t.Context(), nodeID, gossipMsg))
require.NoError(t, clientNetwork.AppGossip(t.Context(), nodeID, requestMessage))
require.NoError(t, clientNetwork.AppGossip(t.Context(), nodeID, garbageResponse))
require.NoError(t, clientNetwork.AppGossip(t.Context(), nodeID, emptyResponse))
require.NoError(t, clientNetwork.AppGossip(t.Context(), nodeID, nilResponse))
require.NoError(t, clientNetwork.AppRequest(t.Context(), nodeID, requestID, time.Now().Add(time.Second), gossipMsg))
require.NoError(t, clientNetwork.AppRequest(t.Context(), nodeID, requestID, time.Now().Add(time.Second), requestMessage))
require.NoError(t, clientNetwork.AppRequest(t.Context(), nodeID, requestID, time.Now().Add(time.Second), garbageResponse))
require.NoError(t, clientNetwork.AppRequest(t.Context(), nodeID, requestID, time.Now().Add(time.Second), emptyResponse))
require.NoError(t, clientNetwork.AppRequest(t.Context(), nodeID, requestID, time.Now().Add(time.Second), nilResponse))

err = clientNetwork.AppResponse(t.Context(), nodeID, requestID, gossipMsg)
require.ErrorIs(t, err, p2p.ErrUnrequestedResponse)

err = clientNetwork.AppResponse(context.Background(), nodeID, requestID, requestMessage)
err = clientNetwork.AppResponse(t.Context(), nodeID, requestID, requestMessage)
require.ErrorIs(t, err, p2p.ErrUnrequestedResponse)

err = clientNetwork.AppResponse(context.Background(), nodeID, requestID, garbageResponse)
err = clientNetwork.AppResponse(t.Context(), nodeID, requestID, garbageResponse)
require.ErrorIs(t, err, p2p.ErrUnrequestedResponse)

err = clientNetwork.AppResponse(context.Background(), nodeID, requestID, emptyResponse)
err = clientNetwork.AppResponse(t.Context(), nodeID, requestID, emptyResponse)
require.ErrorIs(t, err, p2p.ErrUnrequestedResponse)

err = clientNetwork.AppResponse(context.Background(), nodeID, requestID, nilResponse)
err = clientNetwork.AppResponse(t.Context(), nodeID, requestID, nilResponse)
require.ErrorIs(t, err, p2p.ErrUnrequestedResponse)
}

Expand All @@ -555,7 +555,7 @@ func TestNetworkPropagatesRequestHandlerError(t *testing.T) {
errTest := errors.New("test error")
clientNetwork.SetRequestHandler(&testRequestHandler{err: errTest}) // Return an error from the request handler

require.NoError(t, clientNetwork.Connected(context.Background(), nodeID, defaultPeerVersion))
require.NoError(t, clientNetwork.Connected(t.Context(), nodeID, defaultPeerVersion))

defer clientNetwork.Shutdown()

Expand All @@ -564,7 +564,7 @@ func TestNetworkPropagatesRequestHandlerError(t *testing.T) {
require.NoError(t, err)

// Check that if the request handler returns an error, it is propagated as a fatal error.
err = clientNetwork.AppRequest(context.Background(), nodeID, requestID, time.Now().Add(time.Second), requestMessage)
err = clientNetwork.AppRequest(t.Context(), nodeID, requestID, time.Now().Add(time.Second), requestMessage)
require.ErrorIs(t, err, errTest)
}

Expand All @@ -576,8 +576,8 @@ func TestNetworkAppRequestAfterShutdown(t *testing.T) {
require.NoError(err)
net.Shutdown()

require.NoError(net.SendAppRequest(context.Background(), ids.GenerateTestNodeID(), nil, nil))
require.NoError(net.SendAppRequest(context.Background(), ids.GenerateTestNodeID(), nil, nil))
require.NoError(net.SendAppRequest(t.Context(), ids.GenerateTestNodeID(), nil, nil))
require.NoError(net.SendAppRequest(t.Context(), ids.GenerateTestNodeID(), nil, nil))
}

func TestNetworkRouting(t *testing.T) {
Expand All @@ -602,13 +602,13 @@ func TestNetworkRouting(t *testing.T) {
nodeID := ids.GenerateTestNodeID()
foobar := append([]byte{byte(protocol)}, []byte("foobar")...)
// forward it to the sdk handler
require.NoError(network.AppRequest(context.Background(), nodeID, 1, time.Now().Add(5*time.Second), foobar))
require.NoError(network.AppRequest(t.Context(), nodeID, 1, time.Now().Add(5*time.Second), foobar))
require.True(handler.appRequested)

err = network.AppResponse(context.Background(), ids.GenerateTestNodeID(), 1, foobar)
err = network.AppResponse(t.Context(), ids.GenerateTestNodeID(), 1, foobar)
require.ErrorIs(err, p2p.ErrUnrequestedResponse)

err = network.AppRequestFailed(context.Background(), nodeID, 1, common.ErrTimeout)
err = network.AppRequestFailed(t.Context(), nodeID, 1, common.ErrTimeout)
require.ErrorIs(err, p2p.ErrUnrequestedResponse)
}

Expand Down
Loading
Loading