aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/api
diff options
context:
space:
mode:
authorFerenc Szabo <frncmx@gmail.com>2019-04-11 18:44:15 +0800
committerViktor TrĂ³n <viktor.tron@gmail.com>2019-04-11 18:44:15 +0800
commit26b50e3ebe3be197c68763e71e41926ed7df0863 (patch)
treeefe8e25640577328a87a6eafae7c68270f206fb5 /swarm/api
parent54dfce8af7aa0f4561cd1ede5ea820b15f235ab0 (diff)
downloadgo-tangerine-26b50e3ebe3be197c68763e71e41926ed7df0863.tar
go-tangerine-26b50e3ebe3be197c68763e71e41926ed7df0863.tar.gz
go-tangerine-26b50e3ebe3be197c68763e71e41926ed7df0863.tar.bz2
go-tangerine-26b50e3ebe3be197c68763e71e41926ed7df0863.tar.lz
go-tangerine-26b50e3ebe3be197c68763e71e41926ed7df0863.tar.xz
go-tangerine-26b50e3ebe3be197c68763e71e41926ed7df0863.tar.zst
go-tangerine-26b50e3ebe3be197c68763e71e41926ed7df0863.zip
cmd/swarm: fix resource leaks in tests (#19443)
* swarm/api: fix file descriptor leak in NewTestSwarmServer Swarm storage (localstore) was not closed. That resulted a "too many open files" error if `TestClientUploadDownloadRawEncrypted` was run with `-count 1000`. * cmd/swarm: speed up StartNewNodes() by parallelization Reduce cluster startup time from 13s to 7s. * swarm/api: disable flaky TestClientUploadDownloadRawEncrypted with -race * swarm/storage: disable flaky TestLDBStoreCollectGarbage (-race) With race detection turned on the disabled cases often fail with: "ldbstore_test.go:535: expected surplus chunk 150 to be missing, but got no error" * cmd/swarm: fix process leak in TestACT and TestSwarmUp Each test run we start 3 nodes, but we did not terminate them. So those 3 nodes continued eating up 1.2GB (3.4GB with -race) after test completion. 6b6c4d1c2754f8dd70172ab58d7ee33cf9058c7d changed how we start clusters to speed up tests. The changeset merged together test cases and introduced a global cluster. But "forgot" about termination. Let's get rid of "global cluster" so we have a clear owner of termination (some time sacrifice), while leaving subtests to use the same cluster.
Diffstat (limited to 'swarm/api')
-rw-r--r--swarm/api/client/client_test.go8
-rw-r--r--swarm/api/http/test_server.go35
2 files changed, 26 insertions, 17 deletions
diff --git a/swarm/api/client/client_test.go b/swarm/api/client/client_test.go
index 39f6e4797..9c9bde5d6 100644
--- a/swarm/api/client/client_test.go
+++ b/swarm/api/client/client_test.go
@@ -25,6 +25,8 @@ import (
"sort"
"testing"
+ "github.com/ethereum/go-ethereum/swarm/testutil"
+
"github.com/ethereum/go-ethereum/swarm/storage"
"github.com/ethereum/go-ethereum/swarm/storage/feed/lookup"
@@ -43,7 +45,13 @@ func serverFunc(api *api.API) swarmhttp.TestServer {
func TestClientUploadDownloadRaw(t *testing.T) {
testClientUploadDownloadRaw(false, t)
}
+
func TestClientUploadDownloadRawEncrypted(t *testing.T) {
+ if testutil.RaceEnabled {
+ t.Skip("flaky with -race on Travis")
+ // See: https://github.com/ethersphere/go-ethereum/issues/1254
+ }
+
testClientUploadDownloadRaw(true, t)
}
diff --git a/swarm/api/http/test_server.go b/swarm/api/http/test_server.go
index 9245c9c5b..97fdf0d8a 100644
--- a/swarm/api/http/test_server.go
+++ b/swarm/api/http/test_server.go
@@ -33,44 +33,45 @@ type TestServer interface {
}
func NewTestSwarmServer(t *testing.T, serverFunc func(*api.API) TestServer, resolver api.Resolver) *TestSwarmServer {
- dir, err := ioutil.TempDir("", "swarm-storage-test")
+ swarmDir, err := ioutil.TempDir("", "swarm-storage-test")
if err != nil {
t.Fatal(err)
}
- storeparams := storage.NewDefaultLocalStoreParams()
- storeparams.DbCapacity = 5000000
- storeparams.CacheCapacity = 5000
- storeparams.Init(dir)
- localStore, err := storage.NewLocalStore(storeparams, nil)
+
+ storeParams := storage.NewDefaultLocalStoreParams()
+ storeParams.DbCapacity = 5000000
+ storeParams.CacheCapacity = 5000
+ storeParams.Init(swarmDir)
+ localStore, err := storage.NewLocalStore(storeParams, nil)
if err != nil {
- os.RemoveAll(dir)
+ os.RemoveAll(swarmDir)
t.Fatal(err)
}
fileStore := storage.NewFileStore(localStore, storage.NewFileStoreParams())
-
// Swarm feeds test setup
feedsDir, err := ioutil.TempDir("", "swarm-feeds-test")
if err != nil {
t.Fatal(err)
}
- rhparams := &feed.HandlerParams{}
- rh, err := feed.NewTestHandler(feedsDir, rhparams)
+ feeds, err := feed.NewTestHandler(feedsDir, &feed.HandlerParams{})
if err != nil {
t.Fatal(err)
}
- a := api.NewAPI(fileStore, resolver, rh.Handler, nil)
- srv := httptest.NewServer(serverFunc(a))
+ swarmApi := api.NewAPI(fileStore, resolver, feeds.Handler, nil)
+ apiServer := httptest.NewServer(serverFunc(swarmApi))
+
tss := &TestSwarmServer{
- Server: srv,
+ Server: apiServer,
FileStore: fileStore,
- dir: dir,
+ dir: swarmDir,
Hasher: storage.MakeHashFunc(storage.DefaultHash)(),
cleanup: func() {
- srv.Close()
- rh.Close()
- os.RemoveAll(dir)
+ apiServer.Close()
+ fileStore.Close()
+ feeds.Close()
+ os.RemoveAll(swarmDir)
os.RemoveAll(feedsDir)
},
CurrentTime: 42,