github.com/decred/dcrlnd@v0.7.6/channeldb/gossiper_test.go (about) 1 package channeldb 2 3 import ( 4 "errors" 5 "testing" 6 "time" 7 8 "github.com/decred/dcrlnd/routing/route" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestGossiperTS(t *testing.T) { 13 db, cleanup, err := MakeTestDB() 14 require.NoError(t, err) 15 defer cleanup() 16 17 // Try to read the ts of an unrecorded peer. 18 _, err = db.ReadPeerLastGossipMsgTS(testPub) 19 if !errors.Is(err, ErrNoPeerLastGossipMsgTS) { 20 t.Fatalf("Unexpected error: got %v, want %v", err, ErrNoPeerLastGossipMsgTS) 21 } 22 23 var ( 24 testPub2 = route.Vertex{2, 2, 2} 25 wantTS = time.Unix(200, 23) 26 ) 27 28 // Write a test TS. 29 err = db.UpdatePeerLastGossipMsgTS(testPub2, wantTS) 30 require.NoError(t, err) 31 32 // Read back the test TS. 33 gotTS, err := db.ReadPeerLastGossipMsgTS(testPub2) 34 require.NoError(t, err) 35 require.Equal(t, wantTS, gotTS) 36 37 // Write a TS that is before the last recorded TS. This should error. 38 err = db.UpdatePeerLastGossipMsgTS(testPub2, wantTS.Add(-1)) 39 if !errors.Is(err, ErrOutdatedLastGossipMsgTS) { 40 t.Fatalf("Unexpected error: got %v, want %v", err, ErrOutdatedLastGossipMsgTS) 41 } 42 43 // The TS should still be the old one. 44 gotTS, err = db.ReadPeerLastGossipMsgTS(testPub2) 45 require.NoError(t, err) 46 require.Equal(t, wantTS, gotTS) 47 48 // Write a TS that is after the last recorded TS. 49 newWantTS := wantTS.Add(1) 50 err = db.UpdatePeerLastGossipMsgTS(testPub2, newWantTS) 51 require.NoError(t, err) 52 53 // The TS should have been updated. 54 gotTS, err = db.ReadPeerLastGossipMsgTS(testPub2) 55 require.NoError(t, err) 56 require.Equal(t, newWantTS, gotTS) 57 }