multi: registration complete MW interceptor msg
In this commit, we change the flow of the rpc middleware registration a bit. In order to allow a client to add rpc middleware interceptors in a deterministic order, we now make the server send a "registration complete" message to the client after compeleting the registration process so that the client knows when it can go ahead and register the next client.
This commit is contained in:
6 files changed
+566
-485
No files matched your search
@@ -68,7 +68,7 @@ func testRPCMiddlewareInterceptor(net *lntest.NetworkHarness, t *harnessTest) {
|
||||
tt, net.Alice, &lnrpc.MiddlewareRegistration{
|
||||
MiddlewareName: "itest-interceptor",
|
||||
ReadOnlyMode: true,
|
||||
},
|
||||
}, true,
|
||||
)
|
||||
defer registration.cancel()
|
||||
|
||||
@@ -86,7 +86,7 @@ func testRPCMiddlewareInterceptor(net *lntest.NetworkHarness, t *harnessTest) {
|
||||
tt, net.Alice, &lnrpc.MiddlewareRegistration{
|
||||
MiddlewareName: "itest-interceptor",
|
||||
CustomMacaroonCaveatName: "itest-caveat",
|
||||
},
|
||||
}, true,
|
||||
)
|
||||
defer registration.cancel()
|
||||
|
||||
@@ -103,7 +103,7 @@ func testRPCMiddlewareInterceptor(net *lntest.NetworkHarness, t *harnessTest) {
|
||||
tt, net.Alice, &lnrpc.MiddlewareRegistration{
|
||||
MiddlewareName: "itest-interceptor",
|
||||
ReadOnlyMode: true,
|
||||
},
|
||||
}, true,
|
||||
)
|
||||
defer registration.cancel()
|
||||
|
||||
@@ -120,7 +120,7 @@ func testRPCMiddlewareInterceptor(net *lntest.NetworkHarness, t *harnessTest) {
|
||||
tt, net.Alice, &lnrpc.MiddlewareRegistration{
|
||||
MiddlewareName: "itest-interceptor",
|
||||
CustomMacaroonCaveatName: "itest-caveat",
|
||||
},
|
||||
}, true,
|
||||
)
|
||||
defer registration.cancel()
|
||||
|
||||
@@ -174,7 +174,7 @@ func middlewareRegistrationRestrictionTests(t *testing.T,
|
||||
|
||||
t.Run(fmt.Sprintf("%d", idx), func(tt *testing.T) {
|
||||
invalidName := registerMiddleware(
|
||||
tt, node, tc.registration,
|
||||
tt, node, tc.registration, false,
|
||||
)
|
||||
_, err := invalidName.stream.Recv()
|
||||
require.Error(tt, err)
|
||||
@@ -578,7 +578,7 @@ func middlewareMandatoryTest(t *testing.T, node *lntest.HarnessNode,
|
||||
t, node, &lnrpc.MiddlewareRegistration{
|
||||
MiddlewareName: "itest-interceptor",
|
||||
CustomMacaroonCaveatName: "itest-caveat",
|
||||
},
|
||||
}, true,
|
||||
)
|
||||
defer registration.cancel()
|
||||
|
||||
@@ -649,7 +649,8 @@ type middlewareHarness struct {
|
||||
// registerMiddleware creates a new middleware harness and sends the initial
|
||||
// register message to the RPC server.
|
||||
func registerMiddleware(t *testing.T, node *lntest.HarnessNode,
|
||||
registration *lnrpc.MiddlewareRegistration) *middlewareHarness {
|
||||
registration *lnrpc.MiddlewareRegistration,
|
||||
waitForRegister bool) *middlewareHarness {
|
||||
|
||||
ctxc, cancel := context.WithCancel(context.Background())
|
||||
|
||||
@@ -663,6 +664,13 @@ func registerMiddleware(t *testing.T, node *lntest.HarnessNode,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
if waitForRegister {
|
||||
// Wait for the registration complete message.
|
||||
regCompleteMsg, err := middlewareStream.Recv()
|
||||
require.NoError(t, err)
|
||||
require.True(t, regCompleteMsg.GetRegComplete())
|
||||
}
|
||||
|
||||
return &middlewareHarness{
|
||||
t: t,
|
||||
cancel: cancel,
|
||||
|
||||
Reference in new issue
Block a user