]> Sergey Matveev's repositories - btrtrc.git/blob - client-nowasm_test.go
Add check that torrent data cleanup works in TestIssue335
[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/stretchr/testify/assert"
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         cfg := TestingConfig(t)
42         cfg.Seed = false
43         cfg.Debug = true
44         cfg.DataDir = dir
45         comp, err := storage.NewBoltPieceCompletion(dir)
46         require.NoError(t, err)
47         defer comp.Close()
48         cfg.DefaultStorage = storage.NewMMapWithCompletion(dir, comp)
49         cl, err := NewClient(cfg)
50         require.NoError(t, err)
51         defer cl.Close()
52         tor, new, err := cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
53         require.NoError(t, err)
54         assert.True(t, new)
55         require.True(t, cl.WaitAll())
56         tor.Drop()
57         _, new, err = cl.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
58         require.NoError(t, err)
59         assert.True(t, new)
60         require.True(t, cl.WaitAll())
61 }