]> Sergey Matveev's repositories - btrtrc.git/blob - client-nowasm_test.go
Drop peer request alloc reservations when peer is closed
[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         "github.com/anacrolix/torrent/internal/testutil"
11         "github.com/anacrolix/torrent/storage"
12         "github.com/stretchr/testify/assert"
13         "github.com/stretchr/testify/require"
14 )
15
16 func TestBoltPieceCompletionClosedWhenClientClosed(t *testing.T) {
17         cfg := TestingConfig(t)
18         pc, err := storage.NewBoltPieceCompletion(cfg.DataDir)
19         require.NoError(t, err)
20         ci := storage.NewFileWithCompletion(cfg.DataDir, pc)
21         defer ci.Close()
22         cfg.DefaultStorage = ci
23         cl, err := NewClient(cfg)
24         require.NoError(t, err)
25         cl.Close()
26         // And again, https://github.com/anacrolix/torrent/issues/158
27         cl, err = NewClient(cfg)
28         require.NoError(t, err)
29         cl.Close()
30 }
31
32 func TestIssue335(t *testing.T) {
33         dir, mi := testutil.GreetingTestTorrent()
34         defer os.RemoveAll(dir)
35         cfg := TestingConfig(t)
36         cfg.Seed = false
37         cfg.Debug = true
38         cfg.DataDir = dir
39         comp, err := storage.NewBoltPieceCompletion(dir)
40         require.NoError(t, err)
41         defer comp.Close()
42         cfg.DefaultStorage = storage.NewMMapWithCompletion(dir, comp)
43         cl, err := NewClient(cfg)
44         require.NoError(t, err)
45         defer cl.Close()
46         tor, new, err := cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
47         require.NoError(t, err)
48         assert.True(t, new)
49         require.True(t, cl.WaitAll())
50         tor.Drop()
51         _, new, err = cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
52         require.NoError(t, err)
53         assert.True(t, new)
54         require.True(t, cl.WaitAll())
55 }