MCPcopy Create free account
hub / github.com/CPChain/chain / TestContextServices

Function TestContextServices

node/service_test.go:51–83  ·  view source on GitHub ↗

Tests that already constructed services can be retrieves by later ones.

(t *testing.T)

Source from the content-addressed store, hash-verified

49
50// Tests that already constructed services can be retrieves by later ones.
51func TestContextServices(t *testing.T) {
52 stack, err := New(testNodeConfig())
53 if err != nil {
54 t.Fatalf("failed to create protocol stack: %v", err)
55 }
56 // Define a verifier that ensures a NoopA is before it and NoopB after
57 verifier := func(ctx *ServiceContext) (Service, error) {
58 var objA *NoopServiceA
59 if ctx.Service(&objA) != nil {
60 return nil, fmt.Errorf("former service not found")
61 }
62 var objB *NoopServiceB
63 if err := ctx.Service(&objB); err != ErrServiceUnknown {
64 return nil, fmt.Errorf("latters lookup error mismatch: have %v, want %v", err, ErrServiceUnknown)
65 }
66 return new(NoopService), nil
67 }
68 // Register the collection of services
69 if err := stack.Register(NewNoopServiceA); err != nil {
70 t.Fatalf("former failed to register service: %v", err)
71 }
72 if err := stack.Register(verifier); err != nil {
73 t.Fatalf("failed to register service verifier: %v", err)
74 }
75 if err := stack.Register(NewNoopServiceB); err != nil {
76 t.Fatalf("latter failed to register service: %v", err)
77 }
78 // Start the protocol stack and ensure services are constructed in order
79 if err := stack.Start(); err != nil {
80 t.Fatalf("failed to start stack: %v", err)
81 }
82 defer stack.Stop()
83}

Callers

nothing calls this directly

Calls 6

testNodeConfigFunction · 0.85
NewFunction · 0.70
StartMethod · 0.65
StopMethod · 0.65
ServiceMethod · 0.45
RegisterMethod · 0.45

Tested by

no test coverage detected