@Override
    public Mono<Void> execute(final ServerWebExchange exchange, final ShenyuPluginChain chain) {
        ShenyuContext shenyuContext = exchange.getAttribute(Constants.CONTEXT);
        assert shenyuContext != null;
        return writerMap.get(shenyuContext.getRpcType()).writeWith(exchange, chain);
    }
@Test
    public void testExecute() {
        ServerWebExchange httpExchange = generateServerWebExchange(RpcTypeEnum.HTTP.getName());
        StepVerifier.create(responsePlugin.execute(httpExchange, chain)).expectSubscription().verifyComplete();

        ServerWebExchange springCloudExchange = generateServerWebExchange(RpcTypeEnum.SPRING_CLOUD.getName());
        StepVerifier.create(responsePlugin.execute(springCloudExchange, chain)).expectSubscription().verifyComplete();

        ServerWebExchange dubboExchange = generateServerWebExchange(RpcTypeEnum.DUBBO.getName());
        StepVerifier.create(responsePlugin.execute(dubboExchange, chain)).expectSubscription().verifyComplete();

        ServerWebExchange sofaExchange = generateServerWebExchange(RpcTypeEnum.SOFA.getName());
        StepVerifier.create(responsePlugin.execute(sofaExchange, chain)).expectSubscription().verifyComplete();

        ServerWebExchange grpcExchange = generateServerWebExchange(RpcTypeEnum.GRPC.getName());
        StepVerifier.create(responsePlugin.execute(grpcExchange, chain)).expectSubscription().verifyComplete();

        ServerWebExchange motanExchange = generateServerWebExchange(RpcTypeEnum.MOTAN.getName());
        StepVerifier.create(responsePlugin.execute(motanExchange, chain)).expectSubscription().verifyComplete();

        ServerWebExchange tarsExchange = generateServerWebExchange(RpcTypeEnum.TARS.getName());
        StepVerifier.create(responsePlugin.execute(tarsExchange, chain)).expectSubscription().verifyComplete();
    }