10 qt "github.com/frankban/quicktest"
11 "github.com/stretchr/testify/require"
13 "github.com/anacrolix/torrent/internal/testutil"
14 "github.com/anacrolix/torrent/storage"
17 func TestBoltPieceCompletionClosedWhenClientClosed(t *testing.T) {
19 cfg := TestingConfig(t)
20 pc, err := storage.NewBoltPieceCompletion(cfg.DataDir)
21 require.NoError(t, err)
22 ci := storage.NewFileWithCompletion(cfg.DataDir, pc)
24 cfg.DefaultStorage = ci
25 cl, err := NewClient(cfg)
26 c.Assert(err, qt.IsNil, qt.Commentf("%#v", err))
28 // And again, https://github.com/anacrolix/torrent/issues/158
29 cl, err = NewClient(cfg)
30 require.NoError(t, err)
34 func TestIssue335(t *testing.T) {
35 dir, mi := testutil.GreetingTestTorrent()
37 err := os.RemoveAll(dir)
39 t.Fatalf("removing torrent dummy data dir: %v", err)
42 logErr := func(f func() error, msg string) {
44 t.Logf("%s: %v", msg, err)
49 cfg := TestingConfig(t)
53 comp, err := storage.NewBoltPieceCompletion(dir)
55 c.Assert(err, qt.IsNil)
56 defer logErr(comp.Close, "closing bolt piece completion")
57 mmapStorage := storage.NewMMapWithCompletion(dir, comp)
58 defer logErr(mmapStorage.Close, "closing mmap storage")
59 cfg.DefaultStorage = mmapStorage
60 cl, err := NewClient(cfg)
61 c.Assert(err, qt.IsNil)
63 tor, new, err := cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
64 c.Assert(err, qt.IsNil)
65 c.Assert(new, qt.IsTrue)
66 c.Assert(cl.WaitAll(), qt.IsTrue)
68 _, new, err = cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
69 c.Assert(err, qt.IsNil)
70 c.Assert(new, qt.IsTrue)
71 c.Assert(cl.WaitAll(), qt.IsTrue)