github.com/decred/dcrlnd@v0.7.6/routing/shards/shard_tracker_test.go (about) 1 package shards_test 2 3 import ( 4 "crypto/rand" 5 "testing" 6 7 "github.com/decred/dcrlnd/lntypes" 8 "github.com/decred/dcrlnd/routing/shards" 9 "github.com/stretchr/testify/require" 10 ) 11 12 // TestSimpleShardTracker tests that the simple tracker that keeps a map from 13 // attemptID-> payment hash works. 14 func TestSimpleShardTracker(t *testing.T) { 15 var testHashes [2]lntypes.Hash 16 for i := range testHashes { 17 _, err := rand.Read(testHashes[i][:]) 18 require.NoError(t, err) 19 } 20 21 startAttempts := map[uint64]lntypes.Hash{ 22 1: testHashes[1], 23 } 24 25 tracker := shards.NewSimpleShardTracker(testHashes[0], startAttempts) 26 27 // Trying to retrieve a hash for id 0 should result in an error. 28 _, err := tracker.GetHash(0) 29 require.Error(t, err) 30 31 // Getting id 1 should workd. 32 hash1, err := tracker.GetHash(1) 33 require.NoError(t, err) 34 35 require.Equal(t, testHashes[1], hash1) 36 37 // Finally, create a new shard and immediately retrieve the hash. 38 shard, err := tracker.NewShard(2, false) 39 require.NoError(t, err) 40 41 // It's hash should be the tracker's overall payment hash. 42 hash2, err := tracker.GetHash(2) 43 require.NoError(t, err) 44 45 require.Equal(t, testHashes[0], shard.Hash()) 46 require.Equal(t, testHashes[0], hash2) 47 }