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 }