Use testing.T.Name instead of missinggo.GetTestName
This handles subtests correctly, and removes the need to specify when to export due to collisions with the old function.
This commit is contained in:
parent
a9102abf1d
commit
3d7a95a65d
@ -465,7 +465,7 @@ func testDownloadCancel(t *testing.T, ps testDownloadCancelParams) {
|
|||||||
seeder, err := NewClient(cfg)
|
seeder, err := NewClient(cfg)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer seeder.Close()
|
defer seeder.Close()
|
||||||
defer testutil.ExportStatusWriter(seeder, "s")()
|
defer testutil.ExportStatusWriter(seeder, "s", t)()
|
||||||
seederTorrent, _, _ := seeder.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
|
seederTorrent, _, _ := seeder.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
|
||||||
seederTorrent.VerifyData()
|
seederTorrent.VerifyData()
|
||||||
leecherDataDir, err := ioutil.TempDir("", "")
|
leecherDataDir, err := ioutil.TempDir("", "")
|
||||||
@ -481,7 +481,7 @@ func testDownloadCancel(t *testing.T, ps testDownloadCancelParams) {
|
|||||||
leecher, err := NewClient(cfg)
|
leecher, err := NewClient(cfg)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer leecher.Close()
|
defer leecher.Close()
|
||||||
defer testutil.ExportStatusWriter(leecher, "l")()
|
defer testutil.ExportStatusWriter(leecher, "l", t)()
|
||||||
leecherGreeting, new, err := leecher.AddTorrentSpec(func() (ret *TorrentSpec) {
|
leecherGreeting, new, err := leecher.AddTorrentSpec(func() (ret *TorrentSpec) {
|
||||||
ret = TorrentSpecFromMetaInfo(mi)
|
ret = TorrentSpecFromMetaInfo(mi)
|
||||||
ret.ChunkSize = 2
|
ret.ChunkSize = 2
|
||||||
@ -620,7 +620,7 @@ func TestSetMaxEstablishedConn(t *testing.T) {
|
|||||||
defer cl.Close()
|
defer cl.Close()
|
||||||
tt, _ := cl.AddTorrentInfoHash(ih)
|
tt, _ := cl.AddTorrentInfoHash(ih)
|
||||||
tt.SetMaxEstablishedConns(2)
|
tt.SetMaxEstablishedConns(2)
|
||||||
defer testutil.ExportStatusWriter(cl, fmt.Sprintf("%d", i))()
|
defer testutil.ExportStatusWriter(cl, fmt.Sprintf("%d", i), t)()
|
||||||
tts = append(tts, tt)
|
tts = append(tts, tt)
|
||||||
}
|
}
|
||||||
addPeers := func() {
|
addPeers := func() {
|
||||||
@ -700,7 +700,7 @@ func testSeederLeecherPair(t *testing.T, seeder func(*ClientConfig), leecher fun
|
|||||||
server, err := NewClient(cfg)
|
server, err := NewClient(cfg)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer server.Close()
|
defer server.Close()
|
||||||
defer testutil.ExportStatusWriter(server, "s")()
|
defer testutil.ExportStatusWriter(server, "s", t)()
|
||||||
magnet1 := makeMagnet(t, server, cfg.DataDir, "test1")
|
magnet1 := makeMagnet(t, server, cfg.DataDir, "test1")
|
||||||
// Extra torrents are added to test the seeder having to match incoming obfuscated headers
|
// Extra torrents are added to test the seeder having to match incoming obfuscated headers
|
||||||
// against more than one torrent. See issue #114
|
// against more than one torrent. See issue #114
|
||||||
@ -714,7 +714,7 @@ func testSeederLeecherPair(t *testing.T, seeder func(*ClientConfig), leecher fun
|
|||||||
client, err := NewClient(cfg)
|
client, err := NewClient(cfg)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer client.Close()
|
defer client.Close()
|
||||||
defer testutil.ExportStatusWriter(client, "c")()
|
defer testutil.ExportStatusWriter(client, "c", t)()
|
||||||
tr, err := client.AddMagnet(magnet1)
|
tr, err := client.AddMagnet(magnet1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
tr.AddClientPeer(server)
|
tr.AddClientPeer(server)
|
||||||
|
@ -175,7 +175,7 @@ func TestDownloadOnDemand(t *testing.T) {
|
|||||||
seeder, err := torrent.NewClient(cfg)
|
seeder, err := torrent.NewClient(cfg)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer seeder.Close()
|
defer seeder.Close()
|
||||||
defer testutil.ExportStatusWriter(seeder, "s")()
|
defer testutil.ExportStatusWriter(seeder, "s", t)()
|
||||||
// Just to mix things up, the seeder starts with the data, but the leecher
|
// Just to mix things up, the seeder starts with the data, but the leecher
|
||||||
// starts with the metainfo.
|
// starts with the metainfo.
|
||||||
seederTorrent, err := seeder.AddMagnet(fmt.Sprintf("magnet:?xt=urn:btih:%s", layout.Metainfo.HashInfoBytes().HexString()))
|
seederTorrent, err := seeder.AddMagnet(fmt.Sprintf("magnet:?xt=urn:btih:%s", layout.Metainfo.HashInfoBytes().HexString()))
|
||||||
@ -194,7 +194,7 @@ func TestDownloadOnDemand(t *testing.T) {
|
|||||||
cfg.ListenPort = 0
|
cfg.ListenPort = 0
|
||||||
leecher, err := torrent.NewClient(cfg)
|
leecher, err := torrent.NewClient(cfg)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
testutil.ExportStatusWriter(leecher, "l")()
|
testutil.ExportStatusWriter(leecher, "l", t)()
|
||||||
defer leecher.Close()
|
defer leecher.Close()
|
||||||
leecherTorrent, err := leecher.AddTorrent(layout.Metainfo)
|
leecherTorrent, err := leecher.AddTorrent(layout.Metainfo)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -5,24 +5,24 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sync"
|
"sync"
|
||||||
|
"testing"
|
||||||
|
|
||||||
_ "github.com/anacrolix/envpprof"
|
_ "github.com/anacrolix/envpprof"
|
||||||
"github.com/anacrolix/missinggo"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type StatusWriter interface {
|
type StatusWriter interface {
|
||||||
WriteStatus(io.Writer)
|
WriteStatus(io.Writer)
|
||||||
}
|
}
|
||||||
|
|
||||||
// The key is the route pattern. The value is nil when the resource is
|
// The key is the route pattern. The value is nil when the resource is released.
|
||||||
// released.
|
|
||||||
var (
|
var (
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
sws = map[string]StatusWriter{}
|
sws = map[string]StatusWriter{}
|
||||||
)
|
)
|
||||||
|
|
||||||
func ExportStatusWriter(sw StatusWriter, path string) (release func()) {
|
func ExportStatusWriter(sw StatusWriter, path string, t *testing.T) (release func()) {
|
||||||
pattern := fmt.Sprintf("/%s/%s", missinggo.GetTestName(), path)
|
pattern := fmt.Sprintf("/%s/%s", t.Name(), path)
|
||||||
|
t.Logf("exporting status path %q", pattern)
|
||||||
release = func() {
|
release = func() {
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
|
@ -46,14 +46,14 @@ func testReceiveChunkStorageFailure(t *testing.T, seederFast bool) {
|
|||||||
seederClient, err := torrent.NewClient(seederClientConfig)
|
seederClient, err := torrent.NewClient(seederClientConfig)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer seederClient.Close()
|
defer seederClient.Close()
|
||||||
defer testutil.ExportStatusWriter(seederClient, "s")()
|
defer testutil.ExportStatusWriter(seederClient, "s", t)()
|
||||||
leecherClientConfig := torrent.TestingConfig()
|
leecherClientConfig := torrent.TestingConfig()
|
||||||
leecherClientConfig.Debug = true
|
leecherClientConfig.Debug = true
|
||||||
justOneNetwork(leecherClientConfig)
|
justOneNetwork(leecherClientConfig)
|
||||||
leecherClient, err := torrent.NewClient(leecherClientConfig)
|
leecherClient, err := torrent.NewClient(leecherClientConfig)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer leecherClient.Close()
|
defer leecherClient.Close()
|
||||||
defer testutil.ExportStatusWriter(leecherClient, "l")()
|
defer testutil.ExportStatusWriter(leecherClient, "l", t)()
|
||||||
info, err := metainfo.UnmarshalInfo()
|
info, err := metainfo.UnmarshalInfo()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
leecherStorage := diskFullStorage{
|
leecherStorage := diskFullStorage{
|
||||||
|
@ -23,7 +23,6 @@ type testClientTransferParams struct {
|
|||||||
Responsive bool
|
Responsive bool
|
||||||
Readahead int64
|
Readahead int64
|
||||||
SetReadahead bool
|
SetReadahead bool
|
||||||
ExportClientStatus bool
|
|
||||||
LeecherStorage func(string) storage.ClientImplCloser
|
LeecherStorage func(string) storage.ClientImplCloser
|
||||||
SeederStorage func(string) storage.ClientImplCloser
|
SeederStorage func(string) storage.ClientImplCloser
|
||||||
SeederUploadRateLimiter *rate.Limiter
|
SeederUploadRateLimiter *rate.Limiter
|
||||||
@ -70,9 +69,7 @@ func testClientTransfer(t *testing.T, ps testClientTransferParams) {
|
|||||||
if ps.ConfigureSeeder.Client != nil {
|
if ps.ConfigureSeeder.Client != nil {
|
||||||
ps.ConfigureSeeder.Client(seeder)
|
ps.ConfigureSeeder.Client(seeder)
|
||||||
}
|
}
|
||||||
if ps.ExportClientStatus {
|
defer testutil.ExportStatusWriter(seeder, "s", t)()
|
||||||
defer testutil.ExportStatusWriter(seeder, "s")()
|
|
||||||
}
|
|
||||||
seederTorrent, _, _ := seeder.AddTorrentSpec(torrent.TorrentSpecFromMetaInfo(mi))
|
seederTorrent, _, _ := seeder.AddTorrentSpec(torrent.TorrentSpecFromMetaInfo(mi))
|
||||||
// Run a Stats right after Closing the Client. This will trigger the Stats
|
// Run a Stats right after Closing the Client. This will trigger the Stats
|
||||||
// panic in #214 caused by RemoteAddr on Closed uTP sockets.
|
// panic in #214 caused by RemoteAddr on Closed uTP sockets.
|
||||||
@ -104,9 +101,7 @@ func testClientTransfer(t *testing.T, ps testClientTransferParams) {
|
|||||||
if ps.ConfigureLeecher.Client != nil {
|
if ps.ConfigureLeecher.Client != nil {
|
||||||
ps.ConfigureLeecher.Client(leecher)
|
ps.ConfigureLeecher.Client(leecher)
|
||||||
}
|
}
|
||||||
if ps.ExportClientStatus {
|
defer testutil.ExportStatusWriter(leecher, "l", t)()
|
||||||
defer testutil.ExportStatusWriter(leecher, "l")()
|
|
||||||
}
|
|
||||||
leecherTorrent, new, err := leecher.AddTorrentSpec(func() (ret *torrent.TorrentSpec) {
|
leecherTorrent, new, err := leecher.AddTorrentSpec(func() (ret *torrent.TorrentSpec) {
|
||||||
ret = torrent.TorrentSpecFromMetaInfo(mi)
|
ret = torrent.TorrentSpecFromMetaInfo(mi)
|
||||||
ret.ChunkSize = 2
|
ret.ChunkSize = 2
|
||||||
@ -193,7 +188,6 @@ type storageFactory func(string) storage.ClientImplCloser
|
|||||||
|
|
||||||
func TestClientTransferDefault(t *testing.T) {
|
func TestClientTransferDefault(t *testing.T) {
|
||||||
testClientTransfer(t, testClientTransferParams{
|
testClientTransfer(t, testClientTransferParams{
|
||||||
ExportClientStatus: true,
|
|
||||||
LeecherStorage: newFileCacheClientStorageFactory(fileCacheClientStorageFactoryParams{
|
LeecherStorage: newFileCacheClientStorageFactory(fileCacheClientStorageFactoryParams{
|
||||||
Wrapper: fileCachePieceResourceStorage,
|
Wrapper: fileCachePieceResourceStorage,
|
||||||
}),
|
}),
|
||||||
@ -202,7 +196,6 @@ func TestClientTransferDefault(t *testing.T) {
|
|||||||
|
|
||||||
func TestClientTransferDefaultNoMetadata(t *testing.T) {
|
func TestClientTransferDefaultNoMetadata(t *testing.T) {
|
||||||
testClientTransfer(t, testClientTransferParams{
|
testClientTransfer(t, testClientTransferParams{
|
||||||
ExportClientStatus: true,
|
|
||||||
LeecherStorage: newFileCacheClientStorageFactory(fileCacheClientStorageFactoryParams{
|
LeecherStorage: newFileCacheClientStorageFactory(fileCacheClientStorageFactoryParams{
|
||||||
Wrapper: fileCachePieceResourceStorage,
|
Wrapper: fileCachePieceResourceStorage,
|
||||||
}),
|
}),
|
||||||
@ -217,7 +210,6 @@ func TestClientTransferRateLimitedUpload(t *testing.T) {
|
|||||||
// chunks are 2 bytes in length. Then the smallest burst we can run
|
// chunks are 2 bytes in length. Then the smallest burst we can run
|
||||||
// with is 2. Time taken is (13-burst)/rate.
|
// with is 2. Time taken is (13-burst)/rate.
|
||||||
SeederUploadRateLimiter: rate.NewLimiter(11, 2),
|
SeederUploadRateLimiter: rate.NewLimiter(11, 2),
|
||||||
ExportClientStatus: true,
|
|
||||||
})
|
})
|
||||||
require.True(t, time.Since(started) > time.Second)
|
require.True(t, time.Since(started) > time.Second)
|
||||||
}
|
}
|
||||||
@ -244,8 +236,7 @@ func testClientTransferSmallCache(t *testing.T, setReadahead bool, readahead int
|
|||||||
SetReadahead: setReadahead,
|
SetReadahead: setReadahead,
|
||||||
// Can't readahead too far or the cache will thrash and drop data we
|
// Can't readahead too far or the cache will thrash and drop data we
|
||||||
// thought we had.
|
// thought we had.
|
||||||
Readahead: readahead,
|
Readahead: readahead,
|
||||||
ExportClientStatus: true,
|
|
||||||
|
|
||||||
// These tests don't work well with more than 1 connection to the seeder.
|
// These tests don't work well with more than 1 connection to the seeder.
|
||||||
ConfigureLeecher: ConfigureClient{
|
ConfigureLeecher: ConfigureClient{
|
||||||
@ -285,7 +276,7 @@ func TestClientTransferVarious(t *testing.T) {
|
|||||||
// Seeder storage
|
// Seeder storage
|
||||||
for _, ss := range []struct {
|
for _, ss := range []struct {
|
||||||
name string
|
name string
|
||||||
f func(string) storage.ClientImplCloser
|
f storageFactory
|
||||||
}{
|
}{
|
||||||
{"File", storage.NewFile},
|
{"File", storage.NewFile},
|
||||||
{"Mmap", storage.NewMMap},
|
{"Mmap", storage.NewMMap},
|
||||||
@ -331,7 +322,7 @@ func TestSeedAfterDownloading(t *testing.T) {
|
|||||||
seeder, err := torrent.NewClient(cfg)
|
seeder, err := torrent.NewClient(cfg)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer seeder.Close()
|
defer seeder.Close()
|
||||||
defer testutil.ExportStatusWriter(seeder, "s")()
|
defer testutil.ExportStatusWriter(seeder, "s", t)()
|
||||||
seederTorrent, ok, err := seeder.AddTorrentSpec(torrent.TorrentSpecFromMetaInfo(mi))
|
seederTorrent, ok, err := seeder.AddTorrentSpec(torrent.TorrentSpecFromMetaInfo(mi))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
@ -345,7 +336,7 @@ func TestSeedAfterDownloading(t *testing.T) {
|
|||||||
leecher, err := torrent.NewClient(cfg)
|
leecher, err := torrent.NewClient(cfg)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer leecher.Close()
|
defer leecher.Close()
|
||||||
defer testutil.ExportStatusWriter(leecher, "l")()
|
defer testutil.ExportStatusWriter(leecher, "l", t)()
|
||||||
|
|
||||||
cfg = torrent.TestingConfig()
|
cfg = torrent.TestingConfig()
|
||||||
cfg.Seed = false
|
cfg.Seed = false
|
||||||
@ -355,7 +346,7 @@ func TestSeedAfterDownloading(t *testing.T) {
|
|||||||
leecherLeecher, _ := torrent.NewClient(cfg)
|
leecherLeecher, _ := torrent.NewClient(cfg)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer leecherLeecher.Close()
|
defer leecherLeecher.Close()
|
||||||
defer testutil.ExportStatusWriter(leecherLeecher, "ll")()
|
defer testutil.ExportStatusWriter(leecherLeecher, "ll", t)()
|
||||||
leecherGreeting, ok, err := leecher.AddTorrentSpec(func() (ret *torrent.TorrentSpec) {
|
leecherGreeting, ok, err := leecher.AddTorrentSpec(func() (ret *torrent.TorrentSpec) {
|
||||||
ret = torrent.TorrentSpecFromMetaInfo(mi)
|
ret = torrent.TorrentSpecFromMetaInfo(mi)
|
||||||
ret.ChunkSize = 2
|
ret.ChunkSize = 2
|
||||||
|
Loading…
x
Reference in New Issue
Block a user