github.com/ethereum-optimism/optimism@v1.7.2/op-node/p2p/store/ip_ban_book_test.go (about) 1 package store 2 3 import ( 4 "context" 5 "net" 6 "testing" 7 "time" 8 9 "github.com/ethereum-optimism/optimism/op-service/clock" 10 "github.com/ethereum-optimism/optimism/op-service/testlog" 11 "github.com/ethereum/go-ethereum/log" 12 ds "github.com/ipfs/go-datastore" 13 "github.com/ipfs/go-datastore/sync" 14 "github.com/stretchr/testify/require" 15 ) 16 17 func TestGetUnknownIPBan(t *testing.T) { 18 book := createMemoryIPBanBook(t) 19 defer book.Close() 20 exp, err := book.GetIPBanExpiration(net.IPv4(1, 2, 3, 4)) 21 require.Same(t, UnknownBanErr, err) 22 require.Equal(t, time.Time{}, exp) 23 } 24 25 func TestRoundTripIPBan(t *testing.T) { 26 book := createMemoryIPBanBook(t) 27 defer book.Close() 28 expiry := time.Unix(2484924, 0) 29 ip := net.IPv4(1, 2, 3, 4) 30 require.NoError(t, book.SetIPBanExpiration(ip, expiry)) 31 result, err := book.GetIPBanExpiration(ip) 32 require.NoError(t, err) 33 require.Equal(t, result, expiry) 34 } 35 36 func createMemoryIPBanBook(t *testing.T) *ipBanBook { 37 store := sync.MutexWrap(ds.NewMapDatastore()) 38 logger := testlog.Logger(t, log.LevelInfo) 39 c := clock.NewDeterministicClock(time.UnixMilli(100)) 40 book, err := newIPBanBook(context.Background(), logger, c, store) 41 require.NoError(t, err) 42 return book 43 }