public static boolean validateTracerDigest(JSONObject jsonObject, String type, String protocol) {

        LOGGER.info("validateField,value=" + jsonObject.toJSONString());

        String tracerId = jsonObject.getString(RpcSpanTags.TRACERID);
        String spanId = jsonObject.getString(RpcSpanTags.SPANID);
        String timeStamp = jsonObject.getString(RpcSpanTags.TIMESTAMP);
        String service = jsonObject.getString(RpcSpanTags.SERVICE);
        String method = jsonObject.getString(RpcSpanTags.METHOD);
        String threadName = jsonObject.getString(RpcSpanTags.CURRENT_THREAD_NAME);
        String localApp = jsonObject.getString(RpcSpanTags.LOCAL_APP);
        String router = jsonObject.getString(RpcSpanTags.ROUTE_RECORD);
        String resultCode = jsonObject.getString(RpcSpanTags.RESULT_CODE);
        String baggage = jsonObject.getString(RpcSpanTags.BAGGAGE);
        String currentProtocol = jsonObject.getString(RpcSpanTags.PROTOCOL);
        String bizTime = jsonObject.getString(RpcSpanTags.SERVER_BIZ_TIME);
        String reqSize = jsonObject.getString(RpcSpanTags.REQ_SIZE);
        String respSize = jsonObject.getString(RpcSpanTags.RESP_SIZE);
        String remoteIp = jsonObject.getString(RpcSpanTags.REMOTE_IP);
        String localIp = jsonObject.getString(RpcSpanTags.LOCAL_IP);
        String localPort = jsonObject.getString(RpcSpanTags.LOCAL_PORT);
        String reqSerializeTime = jsonObject.getString(RpcSpanTags.REQ_SERIALIZE_TIME);
        String respDeserializeTime = jsonObject.getString(RpcSpanTags.RESP_DESERIALIZE_TIME);
        String reqDeserializeTime = jsonObject.getString(RpcSpanTags.REQ_DESERIALIZE_TIME);
        String respSerializeTime = jsonObject.getString(RpcSpanTags.RESP_SERIALIZE_TIME);
        String remoteApp = jsonObject.getString(RpcSpanTags.REMOTE_APP);
        String clientElapseTime = jsonObject.getString(RpcSpanTags.CLIENT_ELAPSE_TIME);
        String clientConnTime = jsonObject.getString(RpcSpanTags.CLIENT_CONN_TIME);
        String invokeType = jsonObject.getString(RpcSpanTags.INVOKE_TYPE);
        String serverWaitTime = jsonObject.getString(RpcSpanTags.SERVER_THREAD_POOL_WAIT_TIME);

        if ("client".equalsIgnoreCase(type)) {

            if (RpcConstants.PROTOCOL_TYPE_BOLT.equalsIgnoreCase(protocol)) {
                return validateField(tracerId, spanId, timeStamp, service, router, resultCode, method, localApp,
                    threadName, invokeType, currentProtocol, respSize, localIp, localPort, reqSerializeTime,
                    respDeserializeTime, remoteApp, clientElapseTime, clientConnTime, remoteIp);

            } else if (RpcConstants.PROTOCOL_TYPE_REST.equalsIgnoreCase(protocol)) {
                return validateField(tracerId, spanId, timeStamp, service, router, resultCode, method, localApp,
                    threadName, invokeType, currentProtocol, localPort, remoteIp, localIp, clientElapseTime);

            } else {
                return false;
            }

        } else if ("server".equalsIgnoreCase(type)) {
            if (RpcConstants.PROTOCOL_TYPE_BOLT.equalsIgnoreCase(protocol)) {
                return validateField(tracerId, spanId, timeStamp, service, resultCode, method,
                    threadName, bizTime, reqSize, respSize, invokeType, remoteIp, currentProtocol, remoteApp,
                    reqDeserializeTime, respSerializeTime, serverWaitTime);

            } else if (RpcConstants.PROTOCOL_TYPE_REST.equalsIgnoreCase(protocol)) {
                return validateField(tracerId, spanId, timeStamp, service, resultCode, method,
                    threadName, bizTime, reqSize, respSize, invokeType, remoteIp, currentProtocol, remoteApp);
            } else {
                return false;
            }

        } else {
            return false;
        }
    }
@param jsonObject
@param type
@param protocol
@return
test/test-integration/src/test/java/com/alipay/sofa/rpc/server/tracer/util/TracerChecker.java