mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
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`.
This commit is contained in:
parent
54cd3e89a4
commit
985f2b8ceb
1 changed files with 18 additions and 17 deletions
|
|
@ -33,44 +33,45 @@ type TestServer interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTestSwarmServer(t *testing.T, serverFunc func(*api.API) TestServer, resolver api.Resolver) *TestSwarmServer {
|
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 {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
storeparams := storage.NewDefaultLocalStoreParams()
|
|
||||||
storeparams.DbCapacity = 5000000
|
storeParams := storage.NewDefaultLocalStoreParams()
|
||||||
storeparams.CacheCapacity = 5000
|
storeParams.DbCapacity = 5000000
|
||||||
storeparams.Init(dir)
|
storeParams.CacheCapacity = 5000
|
||||||
localStore, err := storage.NewLocalStore(storeparams, nil)
|
storeParams.Init(swarmDir)
|
||||||
|
localStore, err := storage.NewLocalStore(storeParams, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
os.RemoveAll(dir)
|
os.RemoveAll(swarmDir)
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
fileStore := storage.NewFileStore(localStore, storage.NewFileStoreParams())
|
fileStore := storage.NewFileStore(localStore, storage.NewFileStoreParams())
|
||||||
|
|
||||||
// Swarm feeds test setup
|
// Swarm feeds test setup
|
||||||
feedsDir, err := ioutil.TempDir("", "swarm-feeds-test")
|
feedsDir, err := ioutil.TempDir("", "swarm-feeds-test")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
rhparams := &feed.HandlerParams{}
|
feeds, err := feed.NewTestHandler(feedsDir, &feed.HandlerParams{})
|
||||||
rh, err := feed.NewTestHandler(feedsDir, rhparams)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
a := api.NewAPI(fileStore, resolver, rh.Handler, nil)
|
swarmApi := api.NewAPI(fileStore, resolver, feeds.Handler, nil)
|
||||||
srv := httptest.NewServer(serverFunc(a))
|
apiServer := httptest.NewServer(serverFunc(swarmApi))
|
||||||
|
|
||||||
tss := &TestSwarmServer{
|
tss := &TestSwarmServer{
|
||||||
Server: srv,
|
Server: apiServer,
|
||||||
FileStore: fileStore,
|
FileStore: fileStore,
|
||||||
dir: dir,
|
dir: swarmDir,
|
||||||
Hasher: storage.MakeHashFunc(storage.DefaultHash)(),
|
Hasher: storage.MakeHashFunc(storage.DefaultHash)(),
|
||||||
cleanup: func() {
|
cleanup: func() {
|
||||||
srv.Close()
|
apiServer.Close()
|
||||||
rh.Close()
|
fileStore.Close()
|
||||||
os.RemoveAll(dir)
|
feeds.Close()
|
||||||
|
os.RemoveAll(swarmDir)
|
||||||
os.RemoveAll(feedsDir)
|
os.RemoveAll(feedsDir)
|
||||||
},
|
},
|
||||||
CurrentTime: 42,
|
CurrentTime: 42,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue