})
}
-func TestClientTransferRateLimited(t *testing.T) {
+func TestClientTransferRateLimitedUpload(t *testing.T) {
started := time.Now()
testClientTransfer(t, testClientTransferParams{
// We are uploading 13 bytes (the length of the greeting torrent). The
require.True(t, time.Since(started) > time.Second)
}
+func TestClientTransferRateLimitedDownload(t *testing.T) {
+ testClientTransfer(t, testClientTransferParams{
+ LeecherDownloadRateLimiter: rate.NewLimiter(512, 512),
+ })
+}
+
func fileCachePieceResourceStorage(fc *filecache.Cache) storage.ClientImpl {
return storage.NewResourcePieces(fc.AsResourceProvider())
}
}
type testClientTransferParams struct {
- Responsive bool
- Readahead int64
- SetReadahead bool
- ExportClientStatus bool
- LeecherStorage func(string) storage.ClientImpl
- SeederStorage func(string) storage.ClientImpl
- SeederUploadRateLimiter *rate.Limiter
+ Responsive bool
+ Readahead int64
+ SetReadahead bool
+ ExportClientStatus bool
+ LeecherStorage func(string) storage.ClientImpl
+ SeederStorage func(string) storage.ClientImpl
+ SeederUploadRateLimiter *rate.Limiter
+ LeecherDownloadRateLimiter *rate.Limiter
}
// Creates a seeder and a leecher, and ensures the data transfers when a read
} else {
cfg.DefaultStorage = ps.LeecherStorage(leecherDataDir)
}
+ cfg.DownloadRateLimiter = ps.LeecherDownloadRateLimiter
// cfg.ListenAddr = "localhost:4001"
leecher, err := NewClient(&cfg)
require.NoError(t, err)