mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 02:42:27 +00:00
node: close Node instances in tests
This commit is contained in:
parent
c1416b61ee
commit
a342c89941
4 changed files with 29 additions and 3 deletions
|
|
@ -38,14 +38,22 @@ func TestDatadirCreation(t *testing.T) {
|
||||||
}
|
}
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
if _, err := New(&Config{DataDir: dir}); err != nil {
|
node, err := New(&Config{DataDir: dir})
|
||||||
|
if err != nil {
|
||||||
t.Fatalf("failed to create stack with existing datadir: %v", err)
|
t.Fatalf("failed to create stack with existing datadir: %v", err)
|
||||||
}
|
}
|
||||||
|
if err := node.Close(); err != nil {
|
||||||
|
t.Fatalf("failed to close node: %v", err)
|
||||||
|
}
|
||||||
// Generate a long non-existing datadir path and check that it gets created by a node
|
// Generate a long non-existing datadir path and check that it gets created by a node
|
||||||
dir = filepath.Join(dir, "a", "b", "c", "d", "e", "f")
|
dir = filepath.Join(dir, "a", "b", "c", "d", "e", "f")
|
||||||
if _, err := New(&Config{DataDir: dir}); err != nil {
|
node, err = New(&Config{DataDir: dir})
|
||||||
|
if err != nil {
|
||||||
t.Fatalf("failed to create stack with creatable datadir: %v", err)
|
t.Fatalf("failed to create stack with creatable datadir: %v", err)
|
||||||
}
|
}
|
||||||
|
if err := node.Close(); err != nil {
|
||||||
|
t.Fatalf("failed to close node: %v", err)
|
||||||
|
}
|
||||||
if _, err := os.Stat(dir); err != nil {
|
if _, err := os.Stat(dir); err != nil {
|
||||||
t.Fatalf("freshly created datadir not accessible: %v", err)
|
t.Fatalf("freshly created datadir not accessible: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -57,8 +65,12 @@ func TestDatadirCreation(t *testing.T) {
|
||||||
defer os.Remove(file.Name())
|
defer os.Remove(file.Name())
|
||||||
|
|
||||||
dir = filepath.Join(file.Name(), "invalid/path")
|
dir = filepath.Join(file.Name(), "invalid/path")
|
||||||
if _, err := New(&Config{DataDir: dir}); err == nil {
|
node, err = New(&Config{DataDir: dir})
|
||||||
|
if err == nil {
|
||||||
t.Fatalf("protocol stack created with an invalid datadir")
|
t.Fatalf("protocol stack created with an invalid datadir")
|
||||||
|
if err := node.Close(); err != nil {
|
||||||
|
t.Fatalf("failed to close node: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ func ExampleService() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to create network node: %v", err)
|
log.Fatalf("Failed to create network node: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Create and register a simple network service. This is done through the definition
|
// Create and register a simple network service. This is done through the definition
|
||||||
// of a node.ServiceConstructor that will instantiate a node.Service. The reason for
|
// of a node.ServiceConstructor that will instantiate a node.Service. The reason for
|
||||||
// the factory method approach is to support service restarts without relying on the
|
// the factory method approach is to support service restarts without relying on the
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ func TestNodeLifeCycle(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Ensure that a stopped node can be stopped again
|
// Ensure that a stopped node can be stopped again
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
if err := stack.Stop(); err != ErrNodeStopped {
|
if err := stack.Stop(); err != ErrNodeStopped {
|
||||||
|
|
@ -88,6 +89,7 @@ func TestNodeUsedDataDir(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create original protocol stack: %v", err)
|
t.Fatalf("failed to create original protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer original.Close()
|
||||||
if err := original.Start(); err != nil {
|
if err := original.Start(); err != nil {
|
||||||
t.Fatalf("failed to start original protocol stack: %v", err)
|
t.Fatalf("failed to start original protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -98,6 +100,7 @@ func TestNodeUsedDataDir(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create duplicate protocol stack: %v", err)
|
t.Fatalf("failed to create duplicate protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer duplicate.Close()
|
||||||
if err := duplicate.Start(); err != ErrDatadirUsed {
|
if err := duplicate.Start(); err != ErrDatadirUsed {
|
||||||
t.Fatalf("duplicate datadir failure mismatch: have %v, want %v", err, ErrDatadirUsed)
|
t.Fatalf("duplicate datadir failure mismatch: have %v, want %v", err, ErrDatadirUsed)
|
||||||
}
|
}
|
||||||
|
|
@ -109,6 +112,7 @@ func TestServiceRegistry(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Register a batch of unique services and ensure they start successfully
|
// Register a batch of unique services and ensure they start successfully
|
||||||
services := []ServiceConstructor{NewNoopServiceA, NewNoopServiceB, NewNoopServiceC}
|
services := []ServiceConstructor{NewNoopServiceA, NewNoopServiceB, NewNoopServiceC}
|
||||||
for i, constructor := range services {
|
for i, constructor := range services {
|
||||||
|
|
@ -141,6 +145,7 @@ func TestServiceLifeCycle(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Register a batch of life-cycle instrumented services
|
// Register a batch of life-cycle instrumented services
|
||||||
services := map[string]InstrumentingWrapper{
|
services := map[string]InstrumentingWrapper{
|
||||||
"A": InstrumentedServiceMakerA,
|
"A": InstrumentedServiceMakerA,
|
||||||
|
|
@ -191,6 +196,7 @@ func TestServiceRestarts(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Define a service that does not support restarts
|
// Define a service that does not support restarts
|
||||||
var (
|
var (
|
||||||
running bool
|
running bool
|
||||||
|
|
@ -239,6 +245,7 @@ func TestServiceConstructionAbortion(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Define a batch of good services
|
// Define a batch of good services
|
||||||
services := map[string]InstrumentingWrapper{
|
services := map[string]InstrumentingWrapper{
|
||||||
"A": InstrumentedServiceMakerA,
|
"A": InstrumentedServiceMakerA,
|
||||||
|
|
@ -286,6 +293,7 @@ func TestServiceStartupAbortion(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Register a batch of good services
|
// Register a batch of good services
|
||||||
services := map[string]InstrumentingWrapper{
|
services := map[string]InstrumentingWrapper{
|
||||||
"A": InstrumentedServiceMakerA,
|
"A": InstrumentedServiceMakerA,
|
||||||
|
|
@ -339,6 +347,7 @@ func TestServiceTerminationGuarantee(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Register a batch of good services
|
// Register a batch of good services
|
||||||
services := map[string]InstrumentingWrapper{
|
services := map[string]InstrumentingWrapper{
|
||||||
"A": InstrumentedServiceMakerA,
|
"A": InstrumentedServiceMakerA,
|
||||||
|
|
@ -414,6 +423,7 @@ func TestServiceRetrieval(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
if err := stack.Register(NewNoopService); err != nil {
|
if err := stack.Register(NewNoopService); err != nil {
|
||||||
t.Fatalf("noop service registration failed: %v", err)
|
t.Fatalf("noop service registration failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -449,6 +459,7 @@ func TestProtocolGather(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Register a batch of services with some configured number of protocols
|
// Register a batch of services with some configured number of protocols
|
||||||
services := map[string]struct {
|
services := map[string]struct {
|
||||||
Count int
|
Count int
|
||||||
|
|
@ -505,6 +516,7 @@ func TestAPIGather(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Register a batch of services with some configured APIs
|
// Register a batch of services with some configured APIs
|
||||||
calls := make(chan string, 1)
|
calls := make(chan string, 1)
|
||||||
makeAPI := func(result string) *OneMethodAPI {
|
makeAPI := func(result string) *OneMethodAPI {
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@ func TestContextServices(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create protocol stack: %v", err)
|
t.Fatalf("failed to create protocol stack: %v", err)
|
||||||
}
|
}
|
||||||
|
defer stack.Close()
|
||||||
// Define a verifier that ensures a NoopA is before it and NoopB after
|
// Define a verifier that ensures a NoopA is before it and NoopB after
|
||||||
verifier := func(ctx *ServiceContext) (Service, error) {
|
verifier := func(ctx *ServiceContext) (Service, error) {
|
||||||
var objA *NoopServiceA
|
var objA *NoopServiceA
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue