@Override
    public SofaResponse invoke(FilterInvoker invoker, SofaRequest request) throws SofaRpcException {
        // consumer side, if in provider side,loadTest always false
        SofaTracerSpan currentSpan = SofaTraceContextHolder.getSofaTraceContext().getCurrentSpan();
        boolean loadTest = TracerUtils.isLoadTest(currentSpan);
        if (loadTest) {
            RpcInvokeContext.getContext().addCustomHeader(HEAD_KEY_TRAFFIC_TYPE.name(), PRESSURE);
        }

        // provider side ,if in consumer side, metadata == null
        Metadata metadata = TracingContextKey.getKeyMetadata().get();
        if (metadata != null) {
            String s = metadata.get(HEAD_KEY_TRAFFIC_TYPE);
            if (PRESSURE.equals(s)) {
                currentSpan.getSofaTracerSpanContext().setBizBaggageItem(MARK, T);
            }
        }
        return invoker.invoke(request);
    }
@Test
    public void testProviderPressure() {
        Metadata metadata = new Metadata();
        metadata.put(HEAD_KEY_TRAFFIC_TYPE, "pressure");
        Context context = Context.current().withValue(TracingContextKey.getKeyMetadata(), metadata);
        context.attach();

        PressureMarkTransformFilter filter = new PressureMarkTransformFilter();
        filter.invoke(invoker, request);

        SofaTracerSpan currentSpan = SofaTraceContextHolder.getSofaTraceContext().getCurrentSpan();
        Assert.assertTrue(TracerUtils.isLoadTest(currentSpan));
    }