diff --git a/itest/lnd_rpc_middleware_interceptor_test.go b/itest/lnd_rpc_middleware_interceptor_test.go index 7c99f6f20..92042c980 100644 --- a/itest/lnd_rpc_middleware_interceptor_test.go +++ b/itest/lnd_rpc_middleware_interceptor_test.go @@ -153,9 +153,13 @@ func testRPCMiddlewareInterceptor(ht *lntest.HarnessTest) { // And finally make sure mandatory middleware is always checked for any // RPC request. ht.Run("mandatory middleware", func(tt *testing.T) { - st := ht.Subtest(tt) - middlewareMandatoryTest(st, alice) + middlewareMandatoryTest(ht, alice) }) + + // We now shut down the node manually to prevent the test from failing + // because we can't call the stop RPC if we unregister the middleware + // in the defer statement above. + ht.KillNode(alice) } // middlewareRegistrationRestrictionTests tests all restrictions that apply to @@ -593,11 +597,6 @@ func middlewareMandatoryTest(ht *lntest.HarnessTest, node *node.HarnessNode) { time.Sleep(500 * time.Millisecond) node.RPC.ListChannels(&lnrpc.ListChannelsRequest{}) node.RPC.SubscribeInvoices(&lnrpc.InvoiceSubscription{}) - - // We now shut down the node manually to prevent the test from failing - // because we can't call the stop RPC if we unregister the middleware - // in the defer statement above. - ht.KillNode(node) } // assertInterceptedType makes sure that the intercept message sent by the RPC diff --git a/lntest/harness.go b/lntest/harness.go index 3af2ecd73..ea7c922ee 100644 --- a/lntest/harness.go +++ b/lntest/harness.go @@ -841,9 +841,10 @@ func (h *HarnessTest) NewNodeRemoteSigner(name string, extraArgs []string, return hn } -// KillNode kills the node (but won't wait for the node process to stop). +// KillNode kills the node and waits for the node process to stop. func (h *HarnessTest) KillNode(hn *node.HarnessNode) { - require.NoErrorf(h, hn.Kill(), "%s: kill got error", hn.Name()) + h.Logf("Manually killing the node %s", hn.Name()) + require.NoErrorf(h, hn.KillAndWait(), "%s: kill got error", hn.Name()) delete(h.manager.activeNodes, hn.Cfg.NodeID) } diff --git a/lntest/node/harness_node.go b/lntest/node/harness_node.go index 7415dfed2..ea4664a50 100644 --- a/lntest/node/harness_node.go +++ b/lntest/node/harness_node.go @@ -796,6 +796,18 @@ func (hn *HarnessNode) Kill() error { return hn.cmd.Process.Kill() } +// KillAndWait kills the lnd process and waits for it to finish. +func (hn *HarnessNode) KillAndWait() error { + err := hn.cmd.Process.Kill() + if err != nil { + return err + } + + _, err = hn.cmd.Process.Wait() + + return err +} + // printErrf prints an error to the console. func (hn *HarnessNode) printErrf(format string, a ...interface{}) { fmt.Printf("itest error from [%s:%s]: %s\n", //nolint:forbidigo