package blockstore import ( "context" "testing" ipld "github.com/ipfs/go-ipld-format" "github.com/stretchr/testify/require" ) func TestAutobatchBlockstore(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() ab := NewAutobatch(ctx, NewMemory(), len(b0.RawData())+len(b1.RawData())-1) require.NoError(t, ab.Put(ctx, b0)) require.NoError(t, ab.Put(ctx, b1)) require.NoError(t, ab.Put(ctx, b2)) v0, err := ab.Get(ctx, b0.Cid()) require.NoError(t, err) require.Equal(t, b0.RawData(), v0.RawData()) v1, err := ab.Get(ctx, b1.Cid()) require.NoError(t, err) require.Equal(t, b1.RawData(), v1.RawData()) v2, err := ab.Get(ctx, b2.Cid()) require.NoError(t, err) require.Equal(t, b2.RawData(), v2.RawData()) // Regression test for a deadlock. _, err = ab.Get(ctx, b3.Cid()) require.True(t, ipld.IsNotFound(err)) require.NoError(t, ab.Flush(ctx)) require.NoError(t, ab.Shutdown(ctx)) }