//go:build !wasm // +build !wasm package torrent import ( "os" "testing" "github.com/anacrolix/torrent/internal/testutil" "github.com/anacrolix/torrent/storage" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestBoltPieceCompletionClosedWhenClientClosed(t *testing.T) { cfg := TestingConfig(t) pc, err := storage.NewBoltPieceCompletion(cfg.DataDir) require.NoError(t, err) ci := storage.NewFileWithCompletion(cfg.DataDir, pc) defer ci.Close() cfg.DefaultStorage = ci cl, err := NewClient(cfg) require.NoError(t, err) cl.Close() // And again, https://github.com/anacrolix/torrent/issues/158 cl, err = NewClient(cfg) require.NoError(t, err) cl.Close() } func TestIssue335(t *testing.T) { dir, mi := testutil.GreetingTestTorrent() defer os.RemoveAll(dir) cfg := TestingConfig(t) cfg.Seed = false cfg.Debug = true cfg.DataDir = dir comp, err := storage.NewBoltPieceCompletion(dir) require.NoError(t, err) defer comp.Close() cfg.DefaultStorage = storage.NewMMapWithCompletion(dir, comp) cl, err := NewClient(cfg) require.NoError(t, err) defer cl.Close() tor, new, err := cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi)) require.NoError(t, err) assert.True(t, new) require.True(t, cl.WaitAll()) tor.Drop() _, new, err = cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi)) require.NoError(t, err) assert.True(t, new) require.True(t, cl.WaitAll()) }