]> Sergey Matveev's repositories - btrtrc.git/blob - client-nowasm_test.go
Drop support for go 1.20
[btrtrc.git] / client-nowasm_test.go
1 //go:build !wasm
2 // +build !wasm
3
4 package torrent
5
6 import (
7         "os"
8         "testing"
9
10         qt "github.com/frankban/quicktest"
11         "github.com/stretchr/testify/require"
12
13         "github.com/anacrolix/torrent/internal/testutil"
14         "github.com/anacrolix/torrent/storage"
15 )
16
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)
22         defer ci.Close()
23         cfg.DefaultStorage = ci
24         cl, err := NewClient(cfg)
25         require.NoError(t, err)
26         cl.Close()
27         // And again, https://github.com/anacrolix/torrent/issues/158
28         cl, err = NewClient(cfg)
29         require.NoError(t, err)
30         cl.Close()
31 }
32
33 func TestIssue335(t *testing.T) {
34         dir, mi := testutil.GreetingTestTorrent()
35         defer func() {
36                 err := os.RemoveAll(dir)
37                 if err != nil {
38                         t.Fatalf("removing torrent dummy data dir: %v", err)
39                 }
40         }()
41         logErr := func(f func() error, msg string) {
42                 err := f()
43                 t.Logf("%s: %v", msg, err)
44                 if err != nil {
45                         t.Fail()
46                 }
47         }
48         cfg := TestingConfig(t)
49         cfg.Seed = false
50         cfg.Debug = true
51         cfg.DataDir = dir
52         comp, err := storage.NewBoltPieceCompletion(dir)
53         c := qt.New(t)
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)
61         defer cl.Close()
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)
66         tor.Drop()
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)
71 }