2022-01-11 16:31:59 +00:00
|
|
|
package blockstore
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"testing"
|
|
|
|
|
2022-11-07 18:39:31 +00:00
|
|
|
ipld "github.com/ipfs/go-ipld-format"
|
2022-11-07 20:07:29 +00:00
|
|
|
"github.com/stretchr/testify/require"
|
2022-01-11 16:31:59 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
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())
|
2022-01-12 20:03:34 +00:00
|
|
|
|
2022-11-07 18:39:31 +00:00
|
|
|
// Regression test for a deadlock.
|
|
|
|
_, err = ab.Get(ctx, b3.Cid())
|
|
|
|
require.True(t, ipld.IsNotFound(err))
|
|
|
|
|
2022-01-12 20:03:34 +00:00
|
|
|
require.NoError(t, ab.Flush(ctx))
|
|
|
|
require.NoError(t, ab.Shutdown(ctx))
|
2022-01-11 16:31:59 +00:00
|
|
|
}
|