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) {
18 cfg := TestingConfig(t)
19 pc, err := storage.NewBoltPieceCompletion(cfg.DataDir)
20 require.NoError(t, err)
21 ci := storage.NewFileWithCompletion(cfg.DataDir, pc)
23 cfg.DefaultStorage = ci
24 cl, err := NewClient(cfg)
25 require.NoError(t, err)
27 // And again, https://github.com/anacrolix/torrent/issues/158
28 cl, err = NewClient(cfg)
29 require.NoError(t, err)
33 func TestIssue335(t *testing.T) {
34 dir, mi := testutil.GreetingTestTorrent()
36 err := os.RemoveAll(dir)
38 t.Fatalf("removing torrent dummy data dir: %v", err)
41 logErr := func(f func() error, msg string) {
43 t.Logf("%s: %v", msg, err)
48 cfg := TestingConfig(t)
52 comp, err := storage.NewBoltPieceCompletion(dir)
54 c.Assert(err, qt.IsNil)
55 defer logErr(comp.Close, "closing bolt piece completion")
56 mmapStorage := storage.NewMMapWithCompletion(dir, comp)
57 defer logErr(mmapStorage.Close, "closing mmap storage")
58 cfg.DefaultStorage = mmapStorage
59 cl, err := NewClient(cfg)
60 c.Assert(err, qt.IsNil)
62 tor, new, err := cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
63 c.Assert(err, qt.IsNil)
64 c.Assert(new, qt.IsTrue)
65 c.Assert(cl.WaitAll(), qt.IsTrue)
67 _, new, err = cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
68 c.Assert(err, qt.IsNil)
69 c.Assert(new, qt.IsTrue)
70 c.Assert(cl.WaitAll(), qt.IsTrue)