github.com/filecoin-project/specs-actors/v4@v4.0.2/actors/migration/nv10/util_test.go (about) 1 package nv10_test 2 3 import ( 4 "testing" 5 6 "github.com/filecoin-project/specs-actors/v4/actors/migration/nv10" 7 atesting "github.com/filecoin-project/specs-actors/v4/support/testing" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestMemMigrationCache(t *testing.T) { 12 cache := nv10.NewMemMigrationCache() 13 cid1 := atesting.MakeCID("foo", nil) 14 cid2 := atesting.MakeCID("bar", nil) 15 require.NoError(t, cache.Write("first", cid1)) 16 17 // We see the key we wrote. 18 found, result, err := cache.Read("first") 19 require.True(t, found) 20 require.NoError(t, err) 21 require.Equal(t, cid1, result) 22 23 // Make sure we can't find random keys. 24 found, _, err = cache.Read("other") 25 require.False(t, found) 26 require.NoError(t, err) 27 28 newCache := cache.Clone() 29 require.NoError(t, newCache.Write("second", cid2)) 30 31 // We see both keys. 32 found, result, err = newCache.Read("first") 33 require.True(t, found) 34 require.NoError(t, err) 35 require.Equal(t, cid1, result) 36 37 found, result, err = newCache.Read("second") 38 require.True(t, found) 39 require.NoError(t, err) 40 require.Equal(t, cid2, result) 41 42 // But the original cache was not updated. 43 found, _, err = cache.Read("second") 44 require.False(t, found) 45 require.NoError(t, err) 46 47 // Now write back to the original cache. 48 cache.Update(newCache) 49 50 // And make sure that worked. 51 found, result, err = cache.Read("second") 52 require.True(t, found) 53 require.NoError(t, err) 54 require.Equal(t, cid2, result) 55 }