github.com/ethereum-optimism/optimism@v1.7.2/op-node/p2p/store/peer_ban_book_test.go (about)

     1  package store
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/ethereum-optimism/optimism/op-service/clock"
     9  	"github.com/ethereum-optimism/optimism/op-service/testlog"
    10  	"github.com/ethereum/go-ethereum/log"
    11  	ds "github.com/ipfs/go-datastore"
    12  	"github.com/ipfs/go-datastore/sync"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestGetUnknownPeerBan(t *testing.T) {
    17  	book := createMemoryPeerBanBook(t)
    18  	defer book.Close()
    19  	exp, err := book.GetPeerBanExpiration("a")
    20  	require.Same(t, UnknownBanErr, err)
    21  	require.Equal(t, time.Time{}, exp)
    22  }
    23  
    24  func TestRoundTripPeerBan(t *testing.T) {
    25  	book := createMemoryPeerBanBook(t)
    26  	defer book.Close()
    27  	expiry := time.Unix(2484924, 0)
    28  	require.NoError(t, book.SetPeerBanExpiration("a", expiry))
    29  	result, err := book.GetPeerBanExpiration("a")
    30  	require.NoError(t, err)
    31  	require.Equal(t, result, expiry)
    32  }
    33  
    34  func createMemoryPeerBanBook(t *testing.T) *peerBanBook {
    35  	store := sync.MutexWrap(ds.NewMapDatastore())
    36  	logger := testlog.Logger(t, log.LevelInfo)
    37  	c := clock.NewDeterministicClock(time.UnixMilli(100))
    38  	book, err := newPeerBanBook(context.Background(), logger, c, store)
    39  	require.NoError(t, err)
    40  	return book
    41  }