From 4ecbd764608533362ad00bd6c695ca4e3e992fb4 Mon Sep 17 00:00:00 2001 From: yaoyinglong <906271196@qq.com> Date: Mon, 28 Apr 2025 18:52:46 +0800 Subject: [PATCH 01/13] feat: Add support for Thrift 0.9.1 and later versions --- .../thrift-0.9.1/javaagent/build.gradle.kts | 19 + .../v0_9_1/AbstractProtocolWrapper.java | 22 + .../v0_9_1/AsyncMethodCallbackWrapper.java | 67 + .../thrift/v0_9_1/ThriftSingletons.java | 29 + .../client/ClientOutProtocolWrapper.java | 143 + .../client/ClientProtocolFactoryWrapper.java | 41 + .../ThriftAsyncClientInstrumentation.java | 44 + .../ThriftAsyncMethodCallInstrumentation.java | 64 + .../ThriftAsyncWriteArgsInstrumentation.java | 87 + ...riftClientCommonInstrumentationModule.java | 36 + .../client/ThriftClientInstrumentation.java | 128 + .../ThriftClientInstrumentationModule.java | 35 + .../v3/ThriftClientInstrumentation.java | 129 + .../v3/ThriftClientInstrumentationModule.java | 34 + .../server/ServerInProtocolWrapper.java | 133 + .../server/ServerProtocolFactoryWrapper.java | 28 + .../ThriftAsyncProcessInstrumentation.java | 58 + ...riftBaseAsyncProcessorInstrumentation.java | 73 + .../ThriftBaseProcessorInstrumentation.java | 83 + .../ThriftFrameBufferInstrumentation.java | 45 + ...iftMutiplexedProcessorInstrumentation.java | 84 + .../server/ThriftServerInstrumentation.java | 44 + .../ThriftServerInstrumentationModule.java | 40 + .../server/ThriftServletInstrumentation.java | 43 + .../thrift/v0_9_1/NoReturnTest.java | 1051 +++ .../thrift/v0_9_1/OneWayErrorTest.java | 935 +++ .../thrift/v0_9_1/OneWayTest.java | 918 ++ .../thrift/v0_9_1/SayHelloTest.java | 1064 +++ .../thrift/v0_9_1/ThriftBaseTest.java | 902 ++ .../thrift/v0_9_1/WithErrorTest.java | 961 +++ .../v0_9_1/server/ThriftServiceAsyncImpl.java | 75 + .../v0_9_1/server/ThriftServiceImpl.java | 71 + .../thrift/v0_9_1/thrift/Account.java | 478 ++ .../thrift/v0_9_1/thrift/ThriftService.java | 7438 +++++++++++++++++ .../thrift/v0_9_1/thrift/User.java | 579 ++ .../thrift/v0_9_1/thrift/UserAccount.java | 488 ++ .../thrift-common/library/build.gradle.kts | 10 + .../thrift/common/RequestScopeContext.java | 33 + .../thrift/common/SocketAccessor.java | 86 + .../common/ThriftAttributesExtractor.java | 27 + .../thrift/common/ThriftHeaderGetter.java | 27 + .../thrift/common/ThriftHeaderSetter.java | 23 + .../common/ThriftInstrumenterFactory.java | 51 + .../thrift/common/ThriftRequest.java | 33 + .../common/ThriftRpcAttributesGetter.java | 30 + .../common/ThriftSpanNameExtractor.java | 15 + .../common/ThriftSpanStatusExtractor.java | 28 + .../thrift/common/client/MethodAccessor.java | 31 + .../ThriftClientNetworkAttributesGetter.java | 34 + .../ThriftServerNetworkAttributesGetter.java | 38 + settings.gradle.kts | 2 + 51 files changed, 16937 insertions(+) create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AbstractProtocolWrapper.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AsyncMethodCallbackWrapper.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftSingletons.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentationModule.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentationModule.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerProtocolFactoryWrapper.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftAsyncProcessInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseAsyncProcessorInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftFrameBufferInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMutiplexedProcessorInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServletInstrumentation.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/Account.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/User.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/UserAccount.java create mode 100644 instrumentation/thrift/thrift-common/library/build.gradle.kts create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/RequestScopeContext.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/SocketAccessor.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftAttributesExtractor.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderSetter.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRequest.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanNameExtractor.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanStatusExtractor.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java create mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/server/ThriftServerNetworkAttributesGetter.java diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts new file mode 100644 index 000000000000..fbb70e456cf8 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + id("otel.javaagent-instrumentation") +} + +muzzle { + pass { + group.set("org.apache.thrift") + module.set("libthrift") + versions.set("[0.9.1,)") + } +} + +dependencies { + compileOnly("org.apache.thrift:libthrift:0.9.1") + implementation(project(":instrumentation:thrift:thrift-common:library")) + + testImplementation("org.apache.thrift:libthrift:0.9.1") + testImplementation("javax.annotation:javax.annotation-api:1.3.2") +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AbstractProtocolWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AbstractProtocolWrapper.java new file mode 100644 index 000000000000..478493322327 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AbstractProtocolWrapper.java @@ -0,0 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolDecorator; + +/** + * Note that the 8888th field of record is reserved for transporting trace header. Because Thrift + * doesn't support to transport metadata. + */ +public abstract class AbstractProtocolWrapper extends TProtocolDecorator { + public static final String OT_MAGIC_FIELD = "OT_MAGIC_FIELD"; + public static final short OT_MAGIC_FIELD_ID = 8888; + + public AbstractProtocolWrapper(TProtocol protocol) { + super(protocol); + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AsyncMethodCallbackWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AsyncMethodCallbackWrapper.java new file mode 100644 index 000000000000..cac2a854b3bd --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AsyncMethodCallbackWrapper.java @@ -0,0 +1,67 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.serverInstrumenter; + +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; +import org.apache.thrift.async.AsyncMethodCallback; + +public final class AsyncMethodCallbackWrapper implements AsyncMethodCallback { + private final AsyncMethodCallback delegate; + private RequestScopeContext requestScopeContext; + private final boolean isServer; + + public AsyncMethodCallbackWrapper(AsyncMethodCallback methodCallback, boolean isServer) { + this.delegate = methodCallback; + this.isServer = isServer; + } + + public void setRequestScopeContext(RequestScopeContext requestScopeContext) { + this.requestScopeContext = requestScopeContext; + } + + @Override + public void onComplete(T t) { + try { + if (this.requestScopeContext == null) { + return; + } + this.requestScopeContext.close(); + Context context = this.requestScopeContext.getContext(); + ThriftRequest request = this.requestScopeContext.getRequest(); + if (isServer) { + serverInstrumenter().end(context, request, 0, null); + } else { + clientInstrumenter().end(context, request, 0, null); + } + } finally { + this.delegate.onComplete(t); + } + } + + @Override + public void onError(Exception e) { + try { + if (this.requestScopeContext == null) { + return; + } + this.requestScopeContext.close(); + Context context = this.requestScopeContext.getContext(); + ThriftRequest request = this.requestScopeContext.getRequest(); + if (isServer) { + serverInstrumenter().end(context, request, 1, e); + } else { + clientInstrumenter().end(context, request, 1, e); + } + } finally { + this.delegate.onError(e); + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftSingletons.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftSingletons.java new file mode 100644 index 000000000000..c22dd1b56304 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftSingletons.java @@ -0,0 +1,29 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.thrift.common.ThriftInstrumenterFactory; +import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; + +public final class ThriftSingletons { + private static final String INSTRUMENTATION_NAME = "io.opentelemetry.thrift-0.9.1"; + + private static final Instrumenter CLIENT_INSTRUMENTER = + ThriftInstrumenterFactory.clientInstrumenter(INSTRUMENTATION_NAME); + private static final Instrumenter SERVER_INSTRUMENTER = + ThriftInstrumenterFactory.serverInstrumenter(INSTRUMENTATION_NAME); + + public static Instrumenter clientInstrumenter() { + return CLIENT_INSTRUMENTER; + } + + public static Instrumenter serverInstrumenter() { + return SERVER_INSTRUMENTER; + } + + private ThriftSingletons() {} +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java new file mode 100644 index 000000000000..71a73f6f6097 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java @@ -0,0 +1,143 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; + +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; + +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.instrumentation.thrift.common.SocketAccessor; +import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; +import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AbstractProtocolWrapper; +import java.net.Socket; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import org.apache.thrift.TException; +import org.apache.thrift.protocol.TField; +import org.apache.thrift.protocol.TMap; +import org.apache.thrift.protocol.TMessage; +import org.apache.thrift.protocol.TMessageType; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TType; +import org.apache.thrift.transport.TTransport; + +@SuppressWarnings("all") +public final class ClientOutProtocolWrapper extends AbstractProtocolWrapper { + public static final String ONE_WAY_METHOD_NAME_PREFIX = "recv_"; + private volatile RequestScopeContext requestScopeContext; + public TTransport transport; + private boolean injected = true; + private String methodName; + private final Set voidMethodNames; + private String serviceName; + private byte type = -1; + private byte originType; + + public ClientOutProtocolWrapper( + TProtocol protocol, String serviceName, Set voidMethodNames) { + super(protocol); + this.serviceName = serviceName; + this.voidMethodNames = voidMethodNames; + } + + @Override + public void writeMessageBegin(TMessage message) throws TException { + this.injected = false; + this.methodName = message.name; + this.originType = message.type; + // Compatible with version 0.9.1 and 0.9.2 asynchronous logic + if (message.type == TMessageType.ONEWAY || this.type == -1) { + this.type = message.type; + } + if (!this.isOneway()) { + if (this.voidMethodNames != null + && this.voidMethodNames.contains(this.methodName) + && !this.voidMethodNames.contains(ONE_WAY_METHOD_NAME_PREFIX + this.methodName)) { + this.type = TMessageType.ONEWAY; + } + } + try { + if (this.requestScopeContext == null) { + Socket socket = SocketAccessor.getSocket(super.getTransport()); + if (socket == null) { + socket = SocketAccessor.getSocket(this.transport); + } + ThriftRequest request = + ThriftRequest.create(this.serviceName, this.methodName, socket, new HashMap<>()); + Context parentContext = Java8BytecodeBridge.currentContext(); + if (!clientInstrumenter().shouldStart(parentContext, request)) { + return; + } + Context context = clientInstrumenter().start(parentContext, request); + this.requestScopeContext = RequestScopeContext.create(request, null, context); + } + } finally { + if (this.isOneway() && message.type != TMessageType.ONEWAY) { + TMessage onewayMessage = new TMessage(message.name, TMessageType.ONEWAY, message.seqid); + super.writeMessageBegin(onewayMessage); + } else { + super.writeMessageBegin(message); + } + } + } + + @Override + public void writeFieldStop() throws TException { + try { + if (!this.injected && this.requestScopeContext != null) { + ThriftRequest request = this.requestScopeContext.getRequest(); + this.writeHeader(request.getHeader()); + } + } finally { + this.injected = true; + super.writeFieldStop(); + } + } + + public void writeHeader(Map header) throws TException { + super.writeFieldBegin(new TField(OT_MAGIC_FIELD, TType.MAP, OT_MAGIC_FIELD_ID)); + super.writeMapBegin(new TMap(TType.STRING, TType.STRING, header.size())); + + Set> entries = header.entrySet(); + for (Map.Entry entry : entries) { + super.writeString(entry.getKey()); + super.writeString(entry.getValue()); + } + + super.writeMapEnd(); + super.writeFieldEnd(); + } + + public boolean isOneway() { + return this.type == TMessageType.ONEWAY; + } + + public boolean isChangeToOneway() { + return this.type != this.originType; + } + + public void updateTransport(TTransport transport) { + this.transport = transport; + } + + public RequestScopeContext getRequestScopeContext() { + return requestScopeContext; + } + + public void setRequestScopeContext(RequestScopeContext requestScopeContext) { + this.requestScopeContext = requestScopeContext; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public void setType(byte type) { + this.type = type; + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java new file mode 100644 index 000000000000..0e869b5be690 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; + +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TTransport; + +@SuppressWarnings({"serial"}) +public final class ClientProtocolFactoryWrapper implements TProtocolFactory { + public TProtocolFactory delegate; + public TTransport transport; + public String serviceName; + + @Override + public TProtocol getProtocol(TTransport transport) { + TProtocol protocol = this.delegate.getProtocol(transport); + if (protocol instanceof ClientOutProtocolWrapper) { + if (transport != null) { + ((ClientOutProtocolWrapper) protocol).updateTransport(this.transport); + } + ((ClientOutProtocolWrapper) protocol).setServiceName(this.serviceName); + return protocol; + } + protocol = new ClientOutProtocolWrapper(protocol, this.serviceName, null); + if (transport != null) { + ((ClientOutProtocolWrapper) protocol).updateTransport(this.transport); + } + return protocol; + } + + public ClientProtocolFactoryWrapper( + TProtocolFactory protocolFactory, TTransport transport, String serviceName) { + this.delegate = protocolFactory; + this.transport = transport; + this.serviceName = serviceName; + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java new file mode 100644 index 000000000000..22cd63a452cc --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java @@ -0,0 +1,44 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.named; + +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TTransport; + +public final class ThriftAsyncClientInstrumentation implements TypeInstrumentation { + @Override + public ElementMatcher typeMatcher() { + return extendsClass(named("org.apache.thrift.async.TAsyncClient")); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isConstructor(), ThriftAsyncClientInstrumentation.class.getName() + "$ConstructorAdvice"); + } + + public static class ConstructorAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void onEnter( + @Advice.Origin("#t") String serviceName, + @Advice.Argument(value = 0, readOnly = false) TProtocolFactory factory, + @Advice.Argument(value = 2) TTransport transport) { + if (factory instanceof ClientProtocolFactoryWrapper) { + return; + } + factory = new ClientProtocolFactoryWrapper(factory, transport, serviceName); + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java new file mode 100644 index 000000000000..9d189c9a02df --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java @@ -0,0 +1,64 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; + +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.takesArgument; + +import io.opentelemetry.instrumentation.api.util.VirtualField; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AsyncMethodCallbackWrapper; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncMethodCall; + +public final class ThriftAsyncMethodCallInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return named("org.apache.thrift.async.TAsyncMethodCall"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isConstructor().and(takesArgument(3, named("org.apache.thrift.async.AsyncMethodCallback"))), + ThriftAsyncMethodCallInstrumentation.class.getName() + "$ConstructorAdvice"); + + transformer.applyAdviceToMethod( + isMethod().and(named("prepareMethodCall")), + ThriftAsyncMethodCallInstrumentation.class.getName() + "$MethodCallAdvice"); + } + + public static class ConstructorAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void onEnter( + @Advice.Argument(value = 3, readOnly = false) AsyncMethodCallback callback) { + if (callback instanceof AsyncMethodCallbackWrapper) { + return; + } + callback = new AsyncMethodCallbackWrapper<>(callback, false); + } + } + + public static class MethodCallAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void methodEnter( + @Advice.This TAsyncMethodCall thiz, + @Advice.FieldValue(value = "callback") AsyncMethodCallback callback) { + if (callback instanceof AsyncMethodCallbackWrapper) { + VirtualField, AsyncMethodCallback> virtualField = + VirtualField.find(TAsyncMethodCall.class, AsyncMethodCallback.class); + virtualField.set(thiz, callback); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java new file mode 100644 index 000000000000..895489f6a0ac --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java @@ -0,0 +1,87 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.named; + +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.api.util.VirtualField; +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.instrumentation.thrift.common.client.MethodAccessor; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AsyncMethodCallbackWrapper; +import java.util.Set; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncMethodCall; +import org.apache.thrift.protocol.TMessageType; +import org.apache.thrift.protocol.TProtocol; + +public final class ThriftAsyncWriteArgsInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return extendsClass(named("org.apache.thrift.async.TAsyncMethodCall")); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isMethod().and(named("write_args")), + ThriftAsyncWriteArgsInstrumentation.class.getName() + "$WriteArgsAdvice"); + } + + public static class WriteArgsAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void methodEnter( + @Advice.Origin("#t") String serviceName, @Advice.Argument(value = 0) TProtocol protocol) { + if (protocol instanceof ClientOutProtocolWrapper) { + Set methodNames = MethodAccessor.voidMethodNames(serviceName); + // Compatible with asynchronous oneway method + if (methodNames.contains("getResult")) { + ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) protocol; + wrapper.setType(TMessageType.ONEWAY); + } + } + } + + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + public static void methodExit( + @Advice.This TAsyncMethodCall methodCall, + @Advice.Argument(value = 0) TProtocol protocol, + @Advice.Thrown Throwable throwable) { + if (protocol instanceof ClientOutProtocolWrapper) { + ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) protocol; + RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); + if (requestScopeContext == null) { + return; + } + // wrapper.isChangeToOneway() judgment logic is for compatibility with version 0.9.1 + // the return value is void but is not oneway method + if (throwable != null) { + requestScopeContext.close(); + Context context = requestScopeContext.getContext(); + clientInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); + wrapper.setRequestScopeContext(null); + return; + } + + VirtualField, AsyncMethodCallback> callbackVirtualField = + VirtualField.find(TAsyncMethodCall.class, AsyncMethodCallback.class); + AsyncMethodCallback callback = callbackVirtualField.get(methodCall); + if (callback instanceof AsyncMethodCallbackWrapper) { + ((AsyncMethodCallbackWrapper) callback).setRequestScopeContext(requestScopeContext); + } + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java new file mode 100644 index 000000000000..70055624500f --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java @@ -0,0 +1,36 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; +import static java.util.Arrays.asList; + +import com.google.auto.service.AutoService; +import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; + +@AutoService(InstrumentationModule.class) +public final class ThriftClientCommonInstrumentationModule extends InstrumentationModule { + + public ThriftClientCommonInstrumentationModule() { + super("thrift", "thrift-0.9.1", "thrift-0.9.1-client"); + } + + @Override + public ElementMatcher.Junction classLoaderMatcher() { + return hasClassesNamed("org.apache.thrift.protocol.TProtocolDecorator"); + } + + @Override + public List typeInstrumentations() { + return asList( + new ThriftAsyncClientInstrumentation(), + new ThriftAsyncMethodCallInstrumentation(), + new ThriftAsyncWriteArgsInstrumentation()); + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java new file mode 100644 index 000000000000..d991f84ce16f --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java @@ -0,0 +1,128 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.isProtected; +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.takesArguments; + +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.instrumentation.thrift.common.client.MethodAccessor; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import java.util.Set; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.protocol.TProtocol; + +public final class ThriftClientInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return extendsClass(named("org.apache.thrift.TServiceClient")); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isConstructor().and(takesArguments(1)), + ThriftClientInstrumentation.class.getName() + "$ConstructorOneAdvice"); + + transformer.applyAdviceToMethod( + isConstructor().and(takesArguments(2)), + ThriftClientInstrumentation.class.getName() + "$ConstructorTowAdvice"); + + transformer.applyAdviceToMethod( + isMethod().and(isProtected()).and(named("sendBase")), + ThriftClientInstrumentation.class.getName() + "$ClientSendAdvice"); + + transformer.applyAdviceToMethod( + isMethod().and(named("receiveBase")), + ThriftClientInstrumentation.class.getName() + "$ClientReceiveAdvice"); + } + + public static class ConstructorOneAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void onEnter( + @Advice.Origin("#t") String serviceName, + @Advice.Argument(value = 0, readOnly = false) TProtocol inProtocol) { + Set voidMethodNames = MethodAccessor.voidMethodNames(serviceName); + if (!(inProtocol instanceof ClientOutProtocolWrapper)) { + inProtocol = new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); + } + } + } + + public static class ConstructorTowAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void onEnter( + @Advice.Origin("#t") String serviceName, + @Advice.Argument(value = 0, readOnly = false) TProtocol inProtocol, + @Advice.Argument(value = 1, readOnly = false) TProtocol outProtocol) { + Set voidMethodNames = MethodAccessor.voidMethodNames(serviceName); + if (!(inProtocol instanceof ClientOutProtocolWrapper)) { + inProtocol = new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); + } + if (!(outProtocol instanceof ClientOutProtocolWrapper)) { + outProtocol = new ClientOutProtocolWrapper(outProtocol, serviceName, voidMethodNames); + } + } + } + + public static class ClientSendAdvice { + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + public static void methodExit( + @Advice.FieldValue(value = "oprot_") TProtocol outProtocol, + @Advice.Thrown Throwable throwable) { + if (outProtocol != null && outProtocol instanceof ClientOutProtocolWrapper) { + ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) outProtocol; + RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); + if (requestScopeContext == null) { + return; + } + + Context context = requestScopeContext.getContext(); + if (throwable != null) { + requestScopeContext.close(); + clientInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); + wrapper.setRequestScopeContext(null); + return; + } + + if (wrapper.isOneway()) { + requestScopeContext.close(); + clientInstrumenter().end(context, requestScopeContext.getRequest(), 0, null); + wrapper.setRequestScopeContext(null); + } + } + } + } + + public static class ClientReceiveAdvice { + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + public static void methodExit( + @Advice.Thrown Throwable throwable, + @Advice.FieldValue(value = "oprot_") TProtocol outProtocol) { + if (outProtocol != null && outProtocol instanceof ClientOutProtocolWrapper) { + ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) outProtocol; + RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); + if (requestScopeContext == null) { + return; + } + requestScopeContext.close(); + Context context = requestScopeContext.getContext(); + clientInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); + wrapper.setRequestScopeContext(null); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentationModule.java new file mode 100644 index 000000000000..18b786f31260 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentationModule.java @@ -0,0 +1,35 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; +import static java.util.Arrays.asList; +import static net.bytebuddy.matcher.ElementMatchers.not; + +import com.google.auto.service.AutoService; +import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; + +@AutoService(InstrumentationModule.class) +public final class ThriftClientInstrumentationModule extends InstrumentationModule { + + public ThriftClientInstrumentationModule() { + super("thrift", "thrift-0.9.1", "thrift-0.9.1-client"); + } + + @Override + public ElementMatcher.Junction classLoaderMatcher() { + return hasClassesNamed("org.apache.thrift.protocol.TProtocolDecorator") + .and(not(hasClassesNamed("org.apache.thrift.TAsyncProcessor"))); + } + + @Override + public List typeInstrumentations() { + return asList(new ThriftClientInstrumentation()); + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentation.java new file mode 100644 index 000000000000..8687a5f55457 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentation.java @@ -0,0 +1,129 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client.v3; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.isPrivate; +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.takesArguments; + +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.instrumentation.thrift.common.client.MethodAccessor; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client.ClientOutProtocolWrapper; +import java.util.Set; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.protocol.TProtocol; + +public final class ThriftClientInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return extendsClass(named("org.apache.thrift.TServiceClient")); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isConstructor().and(takesArguments(1)), + ThriftClientInstrumentation.class.getName() + "$ConstructorOneAdvice"); + + transformer.applyAdviceToMethod( + isConstructor().and(takesArguments(2)), + ThriftClientInstrumentation.class.getName() + "$ConstructorTowAdvice"); + + transformer.applyAdviceToMethod( + isMethod().and(isPrivate()).and(named("sendBase")), + ThriftClientInstrumentation.class.getName() + "$ClientSendAdvice"); + + transformer.applyAdviceToMethod( + isMethod().and(named("receiveBase")), + ThriftClientInstrumentation.class.getName() + "$ClientReceiveAdvice"); + } + + public static class ConstructorOneAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void onEnter( + @Advice.Origin("#t") String serviceName, + @Advice.Argument(value = 0, readOnly = false) TProtocol inProtocol) { + Set voidMethodNames = MethodAccessor.voidMethodNames(serviceName); + if (!(inProtocol instanceof ClientOutProtocolWrapper)) { + inProtocol = new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); + } + } + } + + public static class ConstructorTowAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void onEnter( + @Advice.Origin("#t") String serviceName, + @Advice.Argument(value = 0, readOnly = false) TProtocol inProtocol, + @Advice.Argument(value = 1, readOnly = false) TProtocol outProtocol) { + Set voidMethodNames = MethodAccessor.voidMethodNames(serviceName); + if (!(inProtocol instanceof ClientOutProtocolWrapper)) { + inProtocol = new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); + } + if (!(outProtocol instanceof ClientOutProtocolWrapper)) { + outProtocol = new ClientOutProtocolWrapper(outProtocol, serviceName, voidMethodNames); + } + } + } + + public static class ClientSendAdvice { + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + public static void methodExit( + @Advice.FieldValue(value = "oprot_") TProtocol outProtocol, + @Advice.Thrown Throwable throwable) { + if (outProtocol != null && outProtocol instanceof ClientOutProtocolWrapper) { + ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) outProtocol; + RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); + if (requestScopeContext == null) { + return; + } + + Context context = requestScopeContext.getContext(); + if (throwable != null) { + requestScopeContext.close(); + clientInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); + wrapper.setRequestScopeContext(null); + return; + } + + if (wrapper.isOneway()) { + requestScopeContext.close(); + clientInstrumenter().end(context, requestScopeContext.getRequest(), 0, null); + wrapper.setRequestScopeContext(null); + } + } + } + } + + public static class ClientReceiveAdvice { + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + public static void methodExit( + @Advice.Thrown Throwable throwable, + @Advice.FieldValue(value = "oprot_") TProtocol outProtocol) { + if (outProtocol != null && outProtocol instanceof ClientOutProtocolWrapper) { + ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) outProtocol; + RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); + if (requestScopeContext == null) { + return; + } + requestScopeContext.close(); + Context context = requestScopeContext.getContext(); + clientInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); + wrapper.setRequestScopeContext(null); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentationModule.java new file mode 100644 index 000000000000..34f86ab1354b --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentationModule.java @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client.v3; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; +import static java.util.Arrays.asList; + +import com.google.auto.service.AutoService; +import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; + +@AutoService(InstrumentationModule.class) +public final class ThriftClientInstrumentationModule extends InstrumentationModule { + + public ThriftClientInstrumentationModule() { + super("thrift", "thrift-0.9.1", "thrift-0.9.3-client"); + } + + @Override + public ElementMatcher.Junction classLoaderMatcher() { + return hasClassesNamed("org.apache.thrift.protocol.TProtocolDecorator") + .and(hasClassesNamed("org.apache.thrift.TAsyncProcessor")); + } + + @Override + public List typeInstrumentations() { + return asList(new ThriftClientInstrumentation()); + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java new file mode 100644 index 000000000000..5fdfa9fb37a4 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java @@ -0,0 +1,133 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.serverInstrumenter; + +import io.opentelemetry.context.Context; +import io.opentelemetry.context.Scope; +import io.opentelemetry.instrumentation.api.internal.Timer; +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.instrumentation.thrift.common.SocketAccessor; +import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; +import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AbstractProtocolWrapper; +import java.net.Socket; +import java.util.HashMap; +import java.util.Map; +import org.apache.thrift.TException; +import org.apache.thrift.protocol.TField; +import org.apache.thrift.protocol.TMap; +import org.apache.thrift.protocol.TMessage; +import org.apache.thrift.protocol.TMessageType; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TType; +import org.apache.thrift.transport.TTransport; + +public final class ServerInProtocolWrapper extends AbstractProtocolWrapper { + + private volatile RequestScopeContext requestScopeContext; + private String methodName; + private String serviceName; + public TTransport transport; + private byte type; + private Timer timer; + + public ServerInProtocolWrapper(TProtocol protocol) { + super(protocol); + } + + @Override + public TMessage readMessageBegin() throws TException { + TMessage message = super.readMessageBegin(); + this.methodName = message.name; + this.type = message.type; + this.timer = Timer.start(); + return message; + } + + @Override + public TField readFieldBegin() throws TException { + TField field = super.readFieldBegin(); + if (field.id == OT_MAGIC_FIELD_ID && field.type == TType.MAP) { + try { + TMap map = super.readMapBegin(); + Map header = new HashMap<>(map.size); + + for (int i = 0; i < map.size; i++) { + header.put(readString(), readString()); + } + + Socket socket = SocketAccessor.getSocket(super.getTransport()); + if (socket == null) { + socket = SocketAccessor.getSocket(this.transport); + } + ThriftRequest request = + ThriftRequest.create(this.serviceName, this.methodName, socket, header); + Context parentContext = Java8BytecodeBridge.currentContext(); + if (!serverInstrumenter().shouldStart(parentContext, request)) { + return field; + } + Context context = serverInstrumenter().start(parentContext, request); + this.requestScopeContext = RequestScopeContext.create(request, null, context); + } finally { + super.readMapEnd(); + super.readFieldEnd(); + } + return this.readFieldBegin(); + } + return field; + } + + @Override + public void readMessageEnd() throws TException { + super.readMessageEnd(); + if (this.requestScopeContext == null) { + Socket socket = SocketAccessor.getSocket(super.getTransport()); + ThriftRequest request = + ThriftRequest.create(this.serviceName, this.methodName, socket, new HashMap<>()); + Context parentContext = Java8BytecodeBridge.currentContext(); + if (!serverInstrumenter().shouldStart(parentContext, request)) { + return; + } + Context context = serverInstrumenter().start(parentContext, request); + Scope scope = context.makeCurrent(); + this.requestScopeContext = RequestScopeContext.create(request, scope, context); + } + } + + public String getMethodName() { + return methodName; + } + + public boolean isOneway() { + return type == TMessageType.ONEWAY; + } + + public RequestScopeContext getRequestScopeContext() { + return requestScopeContext; + } + + public void setRequestScopeContext(RequestScopeContext requestScopeContext) { + this.requestScopeContext = requestScopeContext; + } + + public Timer getTimer() { + return timer; + } + + public String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public void setTransport(TTransport transport) { + this.transport = transport; + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerProtocolFactoryWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerProtocolFactoryWrapper.java new file mode 100644 index 000000000000..b860eea52397 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerProtocolFactoryWrapper.java @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TTransport; + +@SuppressWarnings({"serial"}) +public final class ServerProtocolFactoryWrapper implements TProtocolFactory { + public TProtocolFactory delegate; + + @Override + public TProtocol getProtocol(TTransport transport) { + TProtocol protocol = delegate.getProtocol(transport); + if (protocol instanceof ServerInProtocolWrapper) { + return protocol; + } + return new ServerInProtocolWrapper(protocol); + } + + public ServerProtocolFactoryWrapper(TProtocolFactory protocolFactory) { + this.delegate = protocolFactory; + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftAsyncProcessInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftAsyncProcessInstrumentation.java new file mode 100644 index 000000000000..64717331f879 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftAsyncProcessInstrumentation.java @@ -0,0 +1,58 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.named; + +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AsyncMethodCallbackWrapper; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.server.AbstractNonblockingServer; + +public final class ThriftAsyncProcessInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return extendsClass(named("org.apache.thrift.AsyncProcessFunction")); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isMethod().and(named("getResultHandler")), + ThriftAsyncProcessInstrumentation.class.getName() + "$GetResultHandlerAdvice"); + } + + public static class GetResultHandlerAdvice { + + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + public static void methodExit( + @Advice.Argument(value = 0) AbstractNonblockingServer.AsyncFrameBuffer fb, + @Advice.Return(readOnly = false) AsyncMethodCallback callback) { + TProtocol inProtocol = fb.getInputProtocol(); + if (inProtocol instanceof ServerInProtocolWrapper) { + ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; + RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); + if (requestScopeContext == null) { + return; + } + + AsyncMethodCallbackWrapper callbackWrapper = + new AsyncMethodCallbackWrapper<>(callback, true); + callbackWrapper.setRequestScopeContext(requestScopeContext); + callback = callbackWrapper; + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseAsyncProcessorInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseAsyncProcessorInstrumentation.java new file mode 100644 index 000000000000..52ec4f2de55a --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseAsyncProcessorInstrumentation.java @@ -0,0 +1,73 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.serverInstrumenter; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.takesArguments; + +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.server.AbstractNonblockingServer; + +public final class ThriftBaseAsyncProcessorInstrumentation implements TypeInstrumentation { + @Override + public ElementMatcher typeMatcher() { + return named("org.apache.thrift.TBaseAsyncProcessor"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isMethod().and(named("process")).and(takesArguments(1)), + ThriftBaseAsyncProcessorInstrumentation.class.getName() + "$ProcessAdvice"); + } + + public static class ProcessAdvice { + + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void methodEnter( + @Advice.Argument(0) AbstractNonblockingServer.AsyncFrameBuffer fb, + @Advice.FieldValue(value = "iface") Object iface) { + String serviceName = iface.getClass().getName(); + TProtocol inProtocol = fb.getInputProtocol(); + if (inProtocol instanceof ServerInProtocolWrapper) { + ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; + wrapper.setServiceName(serviceName); + } + } + + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + public static void methodExit( + @Advice.Argument(0) AbstractNonblockingServer.AsyncFrameBuffer fb, + @Advice.Thrown Throwable throwable) { + TProtocol inProtocol = fb.getInputProtocol(); + if (inProtocol instanceof ServerInProtocolWrapper) { + ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; + if (throwable == null && !wrapper.isOneway()) { + return; + } + + RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); + if (requestScopeContext == null) { + return; + } + + requestScopeContext.close(); + Context context = requestScopeContext.getContext(); + serverInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); + wrapper.setRequestScopeContext(null); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java new file mode 100644 index 000000000000..1c38bf51e084 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java @@ -0,0 +1,83 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.serverInstrumenter; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.named; + +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import java.lang.reflect.Field; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolDecorator; + +public final class ThriftBaseProcessorInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return named("org.apache.thrift.TBaseProcessor"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isMethod().and(named("process")), + ThriftBaseProcessorInstrumentation.class.getName() + "$ProcessAdvice"); + } + + public static class ProcessAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void methodEnter( + @Advice.Argument(value = 0) TProtocol inProtocol, + @Advice.FieldValue(value = "iface") Object iface) { + String serviceName = iface.getClass().getName(); + if (inProtocol instanceof ServerInProtocolWrapper) { + ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; + wrapper.setServiceName(serviceName); + } else if (inProtocol instanceof TProtocolDecorator) { + // TMultiplexedProcessor compatible + Field field = null; + try { + field = TProtocolDecorator.class.getDeclaredField("concreteProtocol"); + field.setAccessible(true); + Object obj = field.get(inProtocol); + if (obj != null && obj instanceof ServerInProtocolWrapper) { + ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) obj; + wrapper.setServiceName(serviceName); + } + } catch (Throwable ignored) { + // reflection error; in practice should never happen, we can ignore it + } + } + } + + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + public static void methodExit( + @Advice.Argument(value = 0) TProtocol inProtocol, @Advice.Thrown Throwable throwable) { + if (inProtocol instanceof ServerInProtocolWrapper) { + ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; + String methodName = wrapper.getMethodName(); + if (methodName == null || methodName.isEmpty()) { + return; + } + RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); + if (requestScopeContext == null) { + return; + } + requestScopeContext.close(); + Context context = requestScopeContext.getContext(); + serverInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); + wrapper.setRequestScopeContext(null); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftFrameBufferInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftFrameBufferInstrumentation.java new file mode 100644 index 000000000000..07f495d9ba75 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftFrameBufferInstrumentation.java @@ -0,0 +1,45 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.named; + +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.transport.TNonblockingTransport; + +public final class ThriftFrameBufferInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return named("org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer") + .or(named("org.apache.thrift.server.AbstractNonblockingServer$AsyncFrameBuffer")); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isMethod().and(named("invoke")), + ThriftFrameBufferInstrumentation.class.getName() + "$FrameBufferConstructorAdvice"); + } + + public static class FrameBufferConstructorAdvice { + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void methodEnter( + @Advice.FieldValue(value = "inProt_", readOnly = false) TProtocol inProtocol, + @Advice.FieldValue(value = "trans_") TNonblockingTransport transport) { + if (inProtocol instanceof ServerInProtocolWrapper) { + ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; + wrapper.setTransport(transport); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMutiplexedProcessorInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMutiplexedProcessorInstrumentation.java new file mode 100644 index 000000000000..3667dbad0dca --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMutiplexedProcessorInstrumentation.java @@ -0,0 +1,84 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.serverInstrumenter; +import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static net.bytebuddy.matcher.ElementMatchers.named; + +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil; +import io.opentelemetry.instrumentation.api.internal.Timer; +import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.instrumentation.thrift.common.SocketAccessor; +import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; +import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import java.net.Socket; +import java.util.HashMap; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.protocol.TProtocol; + +public final class ThriftMutiplexedProcessorInstrumentation implements TypeInstrumentation { + + @Override + public ElementMatcher typeMatcher() { + return named("org.apache.thrift.TMultiplexedProcessor"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isMethod().and(named("process")), + ThriftMutiplexedProcessorInstrumentation.class.getName() + "$ProcessAdvice"); + } + + public static class ProcessAdvice { + + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + public static void methodExit( + @Advice.Argument(value = 0) TProtocol inProtocol, @Advice.Thrown Throwable throwable) { + if (inProtocol instanceof ServerInProtocolWrapper) { + ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; + String methodName = wrapper.getMethodName(); + if (methodName == null || methodName.isEmpty()) { + return; + } + + RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); + if (requestScopeContext == null) { + if (throwable != null) { + Timer timer = wrapper.getTimer(); + Socket socket = SocketAccessor.getSocket(wrapper.getTransport()); + ThriftRequest request = + ThriftRequest.create( + wrapper.getServiceName(), wrapper.getMethodName(), socket, new HashMap<>()); + Context parentContext = Java8BytecodeBridge.currentContext(); + if (serverInstrumenter().shouldStart(parentContext, request)) { + InstrumenterUtil.startAndEnd( + serverInstrumenter(), + parentContext, + request, + null, + throwable, + timer.startTime(), + timer.now()); + wrapper.setRequestScopeContext(null); + } + } + return; + } + + requestScopeContext.close(); + Context context = requestScopeContext.getContext(); + serverInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentation.java new file mode 100644 index 000000000000..fd8f14ebf118 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentation.java @@ -0,0 +1,44 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.takesArguments; + +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.protocol.TProtocolFactory; + +public final class ThriftServerInstrumentation implements TypeInstrumentation { + @Override + public ElementMatcher typeMatcher() { + return named("org.apache.thrift.server.TServer"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isConstructor().and(takesArguments(1)), + ThriftServerInstrumentation.class.getName() + "$ServerConstructorAdvice"); + } + + public static class ServerConstructorAdvice { + + @Advice.OnMethodExit(suppress = Throwable.class) + public static void onExit( + @Advice.FieldValue(value = "inputProtocolFactory_", readOnly = false) + TProtocolFactory factory) { + if (factory instanceof ServerProtocolFactoryWrapper) { + return; + } + factory = new ServerProtocolFactoryWrapper(factory); + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java new file mode 100644 index 000000000000..c5fc96c892a7 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java @@ -0,0 +1,40 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; +import static java.util.Arrays.asList; + +import com.google.auto.service.AutoService; +import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; + +@AutoService(InstrumentationModule.class) +public final class ThriftServerInstrumentationModule extends InstrumentationModule { + + public ThriftServerInstrumentationModule() { + super("thrift", "thrift-0.9.1", "thrift-0.9.1-server"); + } + + @Override + public ElementMatcher.Junction classLoaderMatcher() { + return hasClassesNamed("org.apache.thrift.protocol.TProtocolDecorator"); + } + + @Override + public List typeInstrumentations() { + return asList( + new ThriftServerInstrumentation(), + new ThriftServletInstrumentation(), + new ThriftAsyncProcessInstrumentation(), + new ThriftFrameBufferInstrumentation(), + new ThriftBaseProcessorInstrumentation(), + new ThriftMutiplexedProcessorInstrumentation(), + new ThriftBaseAsyncProcessorInstrumentation()); + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServletInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServletInstrumentation.java new file mode 100644 index 000000000000..126235073983 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServletInstrumentation.java @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import static net.bytebuddy.matcher.ElementMatchers.isConstructor; +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.takesArguments; + +import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; +import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; +import net.bytebuddy.asm.Advice; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.thrift.protocol.TProtocolFactory; + +public final class ThriftServletInstrumentation implements TypeInstrumentation { + @Override + public ElementMatcher typeMatcher() { + return named("org.apache.thrift.server.TServlet"); + } + + @Override + public void transform(TypeTransformer transformer) { + transformer.applyAdviceToMethod( + isConstructor().and(takesArguments(1)), + ThriftServletInstrumentation.class.getName() + "$ServerConstructorAdvice"); + } + + public static class ServerConstructorAdvice { + + @Advice.OnMethodEnter(suppress = Throwable.class) + public static void onEnter( + @Advice.Argument(value = 1, readOnly = false) TProtocolFactory factory) { + if (factory instanceof ServerProtocolFactoryWrapper) { + return; + } + factory = new ServerProtocolFactoryWrapper(factory); + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java new file mode 100644 index 000000000000..66c0e3de239e --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java @@ -0,0 +1,1051 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFastFramedTransport; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +public class NoReturnTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncClientSyncSimpleServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientNoReturn(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); + } + + @Test + public void syncClientSyncSimpleServerNoReturnParallel() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerNoReturnParallel field: " + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerNoReturn() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncClientSyncThreadPoolServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientNoReturn(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); + } + + @Test + public void syncClientSyncThreadPoolServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerNoReturnParallel field: " + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerNoReturn() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientMultiNoReturn(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 5); + } + + @Test + public void syncClientMutiSyncSimpleServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientMultiNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerNoReturnParallel field: " + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync( + port, "noReturn", "syncHelloWorld:noReturn", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientAsyncThreadedSelectorServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorFastServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientAsyncThreadedSelectorFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorFastServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientNoReturn(port); + } + + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 5); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerNoReturn() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + for (int i = 0; i < 5; ++i) { + this.syncFramedClientMultiNoReturn(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 5); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientMultiNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync( + port, "noReturn", "syncHelloWorld:noReturn", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientSyncThreadedSelectorServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorFastServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientSyncThreadedSelectorFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorFastServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + for (int i = 0; i < 5; ++i) { + this.syncFramedClientNoReturn(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncThreadedSelectorServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerNoReturnMuti() + throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + for (int i = 0; i < 5; ++i) { + this.nonBlockClientNoReturn(port); + } + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 5); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientNoReturn(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncThreadedSelectorServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerNoReturnMuti() + throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + for (int i = 0; i < 5; ++i) { + this.nonBlockClientNoReturn(port); + } + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 5); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientNoReturn(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncThreadedSelectorServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientSyncNonblockingServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientSyncNonblockingFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncNonblockingFastServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientSyncNonblockingFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncNonblockingFastServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + for (int i = 0; i < 5; ++i) { + this.syncFramedClientNoReturn(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); + } + + @Test + public void syncFramedClientSyncNonblockingServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncNonblockingServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientSyncHsHaServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientSyncHsHaFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncHsHaFastServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientSyncHsHaFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncHsHaFastServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientNoReturn(port); + } + + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); + } + + @Test + public void syncFramedClientSyncHsHaServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncHsHaServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientAsyncNonblockingServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientNoReturn(port); + } + + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 5); + } + + @Test + public void syncFramedClientAsyncNonblockingServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncNonblockingServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientAsyncHsHaServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientAsyncHsHaFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncHsHaFastServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFastFramedClientAsyncHsHaFastServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncHsHaFastServer(port); + this.syncFastFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerNoReturnMuti() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientNoReturn(port); + } + + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 5); + } + + @Test + public void syncFramedClientAsyncHsHaServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientNoReturn(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncHsHaServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerNoReturnMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientNoReturn(port); + } + + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 5); + } + + @Test + public void nonBlockClientSyncNonblockingServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientNoReturn(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncNonblockingServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerNoReturnMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientNoReturn(port); + } + + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 5); + } + + @Test + public void nonBlockClientSyncHsHaServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientNoReturn(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncHsHaServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerNoReturnMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientNoReturn(port); + } + + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 5); + } + + @Test + public void nonBlockClientAsyncNonblockingServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientNoReturn(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncNonblockingServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerNoReturnMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientNoReturn(port); + } + + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 5); + } + + @Test + public void nonBlockClientAsyncHsHaServerNoReturnParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientNoReturn(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncHsHaServerNoReturnParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", threadCount); + } + + public void syncClientNoReturn(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.noReturn(1)); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiNoReturn(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.noReturn(1)); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientNoReturn(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(ThriftService.AsyncClient.noReturn_call s) {} + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.noReturn(1, callback)); + } + + public void syncFramedClientNoReturn(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.noReturn(1)); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFastFramedClientNoReturn(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFastFramedTransport framedTransport = new TFastFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.noReturn(1)); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiNoReturn(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.noReturn(1)); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java new file mode 100644 index 000000000000..a29bcca11157 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java @@ -0,0 +1,935 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +public class OneWayErrorTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncClientSyncSimpleServerOneWayWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientOneWayWithError(port); + } + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); + } + + @Test + public void syncClientSyncSimpleServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerOneWayWithError() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncClientSyncThreadPoolServerOneWayWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientOneWayWithError(port); + } + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); + } + + @Test + public void syncClientSyncThreadPoolServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWayWithErrorMuti() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientMultiOneWayWithError(port); + } + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 5); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientMultiOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWayWithErrorMuti() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 5); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayWithErrorMuti() + throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientMultiOneWayWithError(port); + } + + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 5); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientMultiOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWayWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncThreadedSelectorServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWayWithError() + throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWayWithErrorMuti() + throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 5); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWayWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncThreadedSelectorServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWayWithError() + throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWayWithErrorMuti() + throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 5); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWayWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncThreadedSelectorServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWayWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncNonblockingServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWayWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncHsHaServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWayWithErrorMuti() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 5); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncNonblockingServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWayWithErrorMuti() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 5); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWayWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncHsHaServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWayWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWayWithErrorMuti() + throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 5); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWayWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncNonblockingServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWayWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWayWithErrorMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 5); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWayWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncHsHaServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWayWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWayWithErrorMuti() + throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 5); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWayWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncNonblockingServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWayWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWayWithErrorMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWayWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 5); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWayWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWayWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncHsHaServerOneWayWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + public void syncClientOneWayWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.oneWayWithError()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiOneWayWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.oneWayWithError()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientOneWayWithError(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(ThriftService.AsyncClient.oneWayWithError_call no) {} + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.oneWayWithError(callback)); + } + + public void syncFramedClientOneWayWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.oneWayWithError()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiOneWayWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.oneWayWithError()); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java new file mode 100644 index 000000000000..431f1ff3dd4c --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java @@ -0,0 +1,918 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +public class OneWayTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerOneWay() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncClientSyncSimpleServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientOneWay(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); + } + + @Test + public void syncClientSyncSimpleServerOneWayParallel() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerOneWayParallel field: " + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerOneWay() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncClientSyncThreadPoolServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientOneWay(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); + } + + @Test + public void syncClientSyncThreadPoolServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerOneWayParallel field: " + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWay() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientMultiOneWay(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 5); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientMultiOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerOneWayParallel field: " + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync( + port, "oneWay", "syncHelloWorld:oneWay", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWay() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWay(port); + } + + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 5); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWay() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientMultiOneWay(port); + } + + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 5); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientMultiOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync( + port, "oneWay", "syncHelloWorld:oneWay", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWay() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWay(port); + } + + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncThreadedSelectorServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWayMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWay(port); + } + + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 5); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWay(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncThreadedSelectorServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWayMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWay(port); + } + + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 5); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWay(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncThreadedSelectorServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWay() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWay(port); + } + + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncNonblockingServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWay() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWay(port); + } + + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncHsHaServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWay() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWay(port); + } + + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 5); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncNonblockingServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWay() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWayMuti() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientOneWay(port); + } + + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 5); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientOneWay(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncHsHaServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWayMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWay(port); + } + + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 5); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWay(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncNonblockingServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWayMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWay(port); + } + + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 5); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWayParallel() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWay(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncHsHaServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWayMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWay(port); + } + + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 5); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWay(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncNonblockingServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWayMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientOneWay(port); + } + + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 5); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWayParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientOneWay(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncHsHaServerOneWayParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", threadCount); + } + + public void syncClientOneWay(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.oneWay()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiOneWay(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.oneWay()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientOneWay(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(ThriftService.AsyncClient.oneWay_call no) {} + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.oneWay(callback)); + } + + public void syncFramedClientOneWay(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.oneWay()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiOneWay(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.oneWay()); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java new file mode 100644 index 000000000000..a579632f3898 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java @@ -0,0 +1,1064 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFastFramedTransport; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.testcontainers.shaded.com.google.common.base.VerifyException; + +public class SayHelloTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncClientSyncSimpleServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientSayHello(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); + } + + @Test + public void syncClientSyncSimpleServerSayHelloParallel() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerSayHelloParallel field: " + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerSayHello() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncClientSyncThreadPoolServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientSayHello(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); + } + + @Test + public void syncClientSyncThreadPoolServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerSayHelloParallel field: " + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerSayHello() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientMultiSayHello(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 5); + } + + @Test + public void syncClientMutiSyncSimpleServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientMultiSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerSayHelloParallel field: " + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync( + port, "sayHello", "syncHelloWorld:sayHello", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientAsyncThreadedSelectorServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorFastServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorFastServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientAsyncThreadedSelectorFastServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorFastServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientSayHello(port); + } + + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 5); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerSayHello() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + for (int i = 0; i < 5; ++i) { + this.syncFramedClientMultiSayHello(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 5); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientMultiSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync( + port, "sayHello", "syncHelloWorld:sayHello", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientSyncThreadedSelectorServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorFastServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorFastServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientSyncThreadedSelectorFastServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorFastServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + for (int i = 0; i < 5; ++i) { + this.syncFramedClientSayHello(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncThreadedSelectorServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerSayHelloMuti() + throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + for (int i = 0; i < 5; ++i) { + this.nonBlockClientSayHello(port); + } + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 5); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientSayHello(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncThreadedSelectorServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerSayHelloMuti() + throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + for (int i = 0; i < 5; ++i) { + this.nonBlockClientSayHello(port); + } + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 5); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientSayHello(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncThreadedSelectorServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientSyncNonblockingServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientSyncNonblockingFastServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncNonblockingFastServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientSyncNonblockingFastServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncNonblockingFastServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + for (int i = 0; i < 5; ++i) { + this.syncFramedClientSayHello(port); + } + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); + } + + @Test + public void syncFramedClientSyncNonblockingServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncNonblockingServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientSyncHsHaServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientSyncHsHaFastServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncHsHaFastServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientSyncHsHaFastServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncHsHaFastServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientSayHello(port); + } + + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); + } + + @Test + public void syncFramedClientSyncHsHaServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncHsHaServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientAsyncNonblockingServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientSayHello(port); + } + + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 5); + } + + @Test + public void syncFramedClientAsyncNonblockingServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncNonblockingServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientAsyncHsHaServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientAsyncHsHaFastServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncHsHaFastServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFastFramedClientAsyncHsHaFastServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncHsHaFastServer(port); + this.syncFastFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerSayHelloMuti() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientSayHello(port); + } + + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 5); + } + + @Test + public void syncFramedClientAsyncHsHaServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientSayHello(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncHsHaServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerSayHelloMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientSayHello(port); + } + + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 5); + } + + @Test + public void nonBlockClientSyncNonblockingServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientSayHello(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncNonblockingServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerSayHelloMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientSayHello(port); + } + + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 5); + } + + @Test + public void nonBlockClientSyncHsHaServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientSayHello(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncHsHaServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerSayHelloMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientSayHello(port); + } + + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 5); + } + + @Test + public void nonBlockClientAsyncNonblockingServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientSayHello(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncNonblockingServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerSayHelloMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientSayHello(port); + } + + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 5); + } + + @Test + public void nonBlockClientAsyncHsHaServerSayHelloParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientSayHello(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncHsHaServerSayHelloParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", threadCount); + } + + public void syncClientSayHello(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); + assertThat(response).isEqualTo("Hello USs' Bob"); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiSayHello(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); + assertThat(response).isEqualTo("Hello USs' Bob"); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientSayHello(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(ThriftService.AsyncClient.sayHello_call s) { + try { + String result = s.getResult(); + assertThat(result).isEqualTo("Hello USs' Bob"); + } catch (TException e) { + throw new VerifyException(e); + } + } + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.sayHello("US", "Bob", callback)); + } + + public void syncFramedClientSayHello(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); + assertThat(response).isEqualTo("Hello USs' Bob"); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFastFramedClientSayHello(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFastFramedTransport framedTransport = new TFastFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); + assertThat(response).isEqualTo("Hello USs' Bob"); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiSayHello(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); + assertThat(response).isEqualTo("Hello USs' Bob"); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java new file mode 100644 index 000000000000..fd4e8fbcf352 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java @@ -0,0 +1,902 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; + +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceAsyncImpl; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceImpl; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; +import io.opentelemetry.sdk.testing.assertj.TraceAssert; +import io.opentelemetry.sdk.trace.data.StatusData; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.util.Random; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.function.Consumer; +import java.util.logging.Logger; +import org.apache.thrift.TMultiplexedProcessor; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.server.THsHaServer; +import org.apache.thrift.server.TNonblockingServer; +import org.apache.thrift.server.TServer; +import org.apache.thrift.server.TSimpleServer; +import org.apache.thrift.server.TThreadPoolServer; +import org.apache.thrift.server.TThreadedSelectorServer; +import org.apache.thrift.transport.TFastFramedTransport; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingServerSocket; +import org.apache.thrift.transport.TNonblockingServerTransport; +import org.apache.thrift.transport.TServerSocket; +import org.apache.thrift.transport.TServerTransport; +import org.apache.thrift.transport.TTransportException; +import org.assertj.core.api.AbstractAssert; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.testcontainers.shaded.com.google.common.base.VerifyException; + +public abstract class ThriftBaseTest { + private static final Logger logger = Logger.getLogger(ThriftBaseTest.class.getName()); + public TServer server; + public int port = 13100; + + private static final String ASYNC_CLIENT = + "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService$AsyncClient"; + private static final String SYNC_CLIENT = + "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService$Client"; + private static final String ASYNC_SERVER = + "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceAsyncImpl"; + private static final String SYNC_SERVER = + "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceImpl"; + private static final String PEER_ADDR = "127.0.0.1"; + + private static final String TRANSPORT_EXCEPTION = + "org.apache.thrift.transport.TTransportException"; + private static final String VERIFY_EXCEPTION = + "org.testcontainers.shaded.com.google.common.base.VerifyException"; + private static final String IO_EXCEPTION = "java.io.IOException"; + + private static final AttributeKey RPC_METHOD = AttributeKey.stringKey("rpc.method"); + private static final AttributeKey RPC_SERVICE = AttributeKey.stringKey("rpc.service"); + private static final AttributeKey RPC_SYSTEM = AttributeKey.stringKey("rpc.system"); + + private static final String EXCEPTION_EVENT_NAME = "exception"; + private static final AttributeKey EXCEPTION_MESSAGE = + AttributeKey.stringKey("exception.message"); + private static final AttributeKey EXCEPTION_TYPE = + AttributeKey.stringKey("exception.type"); + + public static final AttributeKey NETWORK_PEER_ADDRESS = + AttributeKey.stringKey("network.peer.address"); + public static final AttributeKey NETWORK_PEER_PORT = + AttributeKey.longKey("network.peer.port"); + + @RegisterExtension + protected static InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + protected InstrumentationExtension testing() { + return testing; + } + + @BeforeEach + public void before() { + ++this.port; + logger.info( + "before port=" + + this.port + + ", threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.testing().clearData(); + } + + @AfterEach + public void after() { + this.stopServer(); + } + + public int getPort() { + Random random = new Random(); + int newPort = this.port + random.nextInt(2000); + while (portNotRelease(newPort)) { + newPort = this.port + random.nextInt(2000); + } + return newPort; + } + + public static boolean portNotRelease(int port) { + Process process = null; + String pid = null; + try { + process = Runtime.getRuntime().exec("lsof -ti:" + port); + BufferedReader reader = + new BufferedReader( + new InputStreamReader(process.getInputStream(), Charset.defaultCharset())); + pid = reader.readLine(); + } catch (IOException e) { + throw new VerifyException(e); + } + return pid != null && !pid.isEmpty(); + } + + public void startSyncSimpleServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TServerTransport serverTransport = new TServerSocket(port); + this.server = new TSimpleServer(new TServer.Args(serverTransport).processor(processor)); + new Thread( + () -> { + logger.info( + "Starting startSyncSimpleServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startMultiSimpleServer(int port) throws TTransportException { + ThriftServiceImpl syncImpl = new ThriftServiceImpl(); + ThriftService.Processor syncProcessor = + new ThriftService.Processor(syncImpl); + ThriftServiceAsyncImpl asyncImpl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor asyncProcessor = + new ThriftService.AsyncProcessor(asyncImpl); + TMultiplexedProcessor multiplexedProcessor = new TMultiplexedProcessor(); + multiplexedProcessor.registerProcessor("syncHelloWorld", syncProcessor); + multiplexedProcessor.registerProcessor("asyncHelloWorld", asyncProcessor); + TServerTransport serverTransport = new TServerSocket(port); + this.server = + new TSimpleServer(new TServer.Args(serverTransport).processor(multiplexedProcessor)); + new Thread( + () -> { + logger.info( + "Starting startMultiSimpleServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startMultiThreadedSelectorServer(int port) throws TTransportException { + ThriftServiceImpl syncImpl = new ThriftServiceImpl(); + ThriftService.Processor syncProcessor = + new ThriftService.Processor(syncImpl); + ThriftServiceAsyncImpl asyncImpl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor asyncProcessor = + new ThriftService.AsyncProcessor(asyncImpl); + TMultiplexedProcessor multiplexedProcessor = new TMultiplexedProcessor(); + multiplexedProcessor.registerProcessor("syncHelloWorld", syncProcessor); + multiplexedProcessor.registerProcessor("asyncHelloWorld", asyncProcessor); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TThreadedSelectorServer.Args serverArgs = + new TThreadedSelectorServer.Args(transport) + .selectorThreads(5) + .workerThreads(10) + .acceptQueueSizePerThread(20) + .processor(multiplexedProcessor); + this.server = new TThreadedSelectorServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startMultiThreadedSelectorServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startSyncThreadedSelectorServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TThreadedSelectorServer.Args serverArgs = + new TThreadedSelectorServer.Args(transport) + .selectorThreads(5) + .workerThreads(10) + .acceptQueueSizePerThread(20) + .processor(processor); + this.server = new TThreadedSelectorServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startAsyncServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startSyncThreadedSelectorFastServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TThreadedSelectorServer.Args serverArgs = + new TThreadedSelectorServer.Args(transport) + .selectorThreads(5) + .workerThreads(10) + .acceptQueueSizePerThread(20) + .processor(processor) + .transportFactory(new TFastFramedTransport.Factory()); + this.server = new TThreadedSelectorServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startAsyncServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startAsyncThreadedSelectorServer(int port) throws TTransportException { + ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor processor = + new ThriftService.AsyncProcessor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TThreadedSelectorServer.Args serverArgs = + new TThreadedSelectorServer.Args(transport) + .selectorThreads(5) + .workerThreads(10) + .acceptQueueSizePerThread(20) + .processor(processor); + this.server = new TThreadedSelectorServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startNonBlockingServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startAsyncThreadedSelectorFastServer(int port) throws TTransportException { + ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor processor = + new ThriftService.AsyncProcessor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TThreadedSelectorServer.Args serverArgs = + new TThreadedSelectorServer.Args(transport) + .selectorThreads(5) + .workerThreads(10) + .acceptQueueSizePerThread(20) + .processor(processor) + .transportFactory(new TFastFramedTransport.Factory()); + this.server = new TThreadedSelectorServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startNonBlockingServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startSyncNonblockingServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TNonblockingServer.Args serverArgs = + new TNonblockingServer.Args(transport).processor(processor); + this.server = new TNonblockingServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startNonBlockingServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startSyncNonblockingFastServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TNonblockingServer.Args serverArgs = + new TNonblockingServer.Args(transport) + .processor(processor) + .transportFactory(new TFastFramedTransport.Factory()) + .protocolFactory(new TBinaryProtocol.Factory()); + this.server = new TNonblockingServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startNonBlockingServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startAsyncNonblockingServer(int port) throws TTransportException { + ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor processor = + new ThriftService.AsyncProcessor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TNonblockingServer.Args serverArgs = + new TNonblockingServer.Args(transport).processor(processor); + this.server = new TNonblockingServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startNonBlockingServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startSyncThreadPoolServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TServerSocket transport = new TServerSocket(port); + ExecutorService executor = Executors.newFixedThreadPool(5); + TThreadPoolServer.Args serverArgs = + new TThreadPoolServer.Args(transport).executorService(executor).processor(processor); + TServer server = new TThreadPoolServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startSyncThreadPoolServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + server.serve(); + }) + .start(); + } + + public void startSyncHsHaServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); + TFramedTransport.Factory transportFactory = new TFramedTransport.Factory(); + THsHaServer.Args serverArgs = + new THsHaServer.Args(transport) + .processor(processor) + .protocolFactory(protocolFactory) + .transportFactory(transportFactory); + this.server = new THsHaServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startSyncTHsHaServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startSyncHsHaFastServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); + TFastFramedTransport.Factory transportFactory = new TFastFramedTransport.Factory(); + THsHaServer.Args serverArgs = + new THsHaServer.Args(transport) + .processor(processor) + .protocolFactory(protocolFactory) + .transportFactory(transportFactory); + this.server = new THsHaServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startSyncTHsHaServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startAsyncHsHaServer(int port) throws TTransportException { + ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor processor = + new ThriftService.AsyncProcessor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); + TFramedTransport.Factory transportFactory = new TFramedTransport.Factory(); + THsHaServer.Args serverArgs = + new THsHaServer.Args(transport) + .processor(processor) + .protocolFactory(protocolFactory) + .transportFactory(transportFactory); + this.server = new THsHaServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startAsyncTHsHaServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void startAsyncHsHaFastServer(int port) throws TTransportException { + ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor processor = + new ThriftService.AsyncProcessor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); + TFastFramedTransport.Factory transportFactory = new TFastFramedTransport.Factory(); + THsHaServer.Args serverArgs = + new THsHaServer.Args(transport) + .processor(processor) + .protocolFactory(protocolFactory) + .transportFactory(transportFactory); + this.server = new THsHaServer(serverArgs); + new Thread( + () -> { + logger.info( + "Starting startAsyncTHsHaServer threadName=" + + Thread.currentThread().getName() + + ", threadId=" + + Thread.currentThread().getId()); + this.server.serve(); + }) + .start(); + } + + public void stopServer() { + if (this.server != null) { + this.server.stop(); + } + } + + public void waitAndAssertTracesClientSyncServerSync(int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.unset(), + null, + null); + } + + public void waitAndAssertTracesClientSyncServerSync( + int peerPort, String clientMethod, String serverMethod, int count) { + this.baseWaitAndAssertTraces( + clientMethod, + serverMethod, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.unset(), + null, + null); + } + + public void waitAndAssertTracesClientSyncServerSyncWithError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {null, "Internal error processing " + method}, + TRANSPORT_EXCEPTION, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientSyncServerSyncWithError( + int peerPort, String clientMethod, String serverMethod, int count) { + this.baseWaitAndAssertTraces( + clientMethod, + serverMethod, + count, + SYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {null, "Internal error processing " + clientMethod}, + TRANSPORT_EXCEPTION, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientSyncServerSyncOnewayError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientSyncServerSyncOnewayError( + int peerPort, String clientMethod, String serverMethod, int count) { + this.baseWaitAndAssertTraces( + clientMethod, + serverMethod, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientAsyncServerAsync(int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + ASYNC_SERVER, + StatusData.unset(), + null, + null); + } + + public void waitAndAssertTracesClientAsyncServerAsyncError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + ASYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientAsyncServerAsyncWithError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {"Read call frame size failed", "fail"}, + IO_EXCEPTION, + ASYNC_SERVER, + StatusData.error(), + new Object[] {"Read call frame size failed", "fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientAsyncServerSync(int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.unset(), + null, + null); + } + + public void waitAndAssertTracesClientAsyncServerSyncWithError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {"Read call frame size failed", "Internal error processing " + method}, + IO_EXCEPTION, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientAsyncServerSyncOnewayError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) // 测试代码 + public void waitAndAssertTracesClientSyncServerAsync(int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + ASYNC_SERVER, + StatusData.unset(), + null, + null); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) // 测试代码 + public void waitAndAssertTracesClientSyncServerAsyncError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + ASYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + public void waitAndAssertTracesClientSyncServerAsyncWithError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {null, "fail"}, + TRANSPORT_EXCEPTION, + ASYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + private void baseWaitAndAssertTraces( + String clientMethod, + String serverMethod, + int count, + String clientClass, + StatusData clientStatus, + int peerPort, + String peerAddr, + Object[] clientErrMsg, + String clientErrorType, + String serverClass, + StatusData serverStatus, + Object[] serverErrMsg, + String serverErrorType) { + Consumer[] consumers = new Consumer[count]; + Consumer traceAssertConsumer; + if (serverClass == null) { + traceAssertConsumer = + trace -> + trace.hasSpansSatisfyingExactly( + span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), + clientSpanDataAssertConsumer( + clientMethod, + clientClass, + clientStatus, + trace, + peerPort, + peerAddr, + clientErrMsg, + clientErrorType)); + } else { + traceAssertConsumer = + trace -> + trace.hasSpansSatisfyingExactly( + span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), + clientSpanDataAssertConsumer( + clientMethod, + clientClass, + clientStatus, + trace, + peerPort, + peerAddr, + clientErrMsg, + clientErrorType), + serverSpanDataAssertConsumer( + serverMethod, + serverClass, + serverStatus, + trace, + serverErrMsg, + serverErrorType)); + } + + for (int i = 0; i < count; ++i) { + consumers[i] = traceAssertConsumer; + } + this.testing().waitAndAssertTraces(consumers); + } + + @SuppressWarnings({"ReturnValueIgnored"}) + private static Consumer clientSpanDataAssertConsumer( + String clientMethod, + String clientClass, + StatusData statusData, + TraceAssert trace, + int peerPort, + String peerAddr, + Object[] errMsg, + String errorType) { + Consumer consumer = + span -> + span.hasName(clientMethod) + .hasKind(SpanKind.CLIENT) + .hasParent(trace.getSpan(0)) + .hasStatus(statusData) + .hasAttributesSatisfying( + equalTo(NETWORK_PEER_PORT, peerPort), + equalTo(NETWORK_PEER_ADDRESS, peerAddr), + equalTo(RPC_SYSTEM, "thrift"), + equalTo(RPC_SERVICE, clientClass), + equalTo(RPC_METHOD, clientMethod)); + if (statusData == StatusData.error()) { + consumer = + consumer.andThen( + span -> + span.hasEventsSatisfyingExactly( + event -> + event + .hasName(EXCEPTION_EVENT_NAME) + .hasAttributesSatisfyingExactly( + satisfies(EXCEPTION_MESSAGE, val -> val.isIn(errMsg)), + satisfies( + AttributeKey.stringKey("exception.stacktrace"), + AbstractAssert::isNotNull), + equalTo(EXCEPTION_TYPE, errorType)))); + } + return consumer; + } + + @SuppressWarnings({"ReturnValueIgnored"}) + private static Consumer serverSpanDataAssertConsumer( + String serverMethod, + String serverClass, + StatusData statusData, + TraceAssert trace, + Object[] errMsg, + String errorType) { + Consumer consumer = + span -> + span.hasName(serverMethod) + .hasKind(SpanKind.SERVER) + .hasParent(trace.getSpan(1)) + .hasStatus(statusData) + .hasAttributesSatisfying( + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + equalTo(RPC_SYSTEM, "thrift"), + equalTo(RPC_SERVICE, serverClass), + equalTo(RPC_METHOD, serverMethod)); + if (statusData == StatusData.error()) { + consumer = + consumer.andThen( + span -> + span.hasEventsSatisfyingExactly( + event -> + event + .hasName(EXCEPTION_EVENT_NAME) + .hasAttributesSatisfyingExactly( + satisfies(EXCEPTION_MESSAGE, val -> val.isIn(errMsg)), + satisfies( + AttributeKey.stringKey("exception.stacktrace"), + AbstractAssert::isNotNull), + equalTo(EXCEPTION_TYPE, errorType)))); + } + return consumer; + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java new file mode 100644 index 000000000000..6c70af7a1983 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java @@ -0,0 +1,961 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.testcontainers.shaded.com.google.common.base.VerifyException; + +public class WithErrorTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerWithError() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncClientSyncSimpleServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientWithError(port); + } + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); + } + + @Test + public void syncClientSyncSimpleServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerWithError() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncClientSyncThreadPoolServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientWithError(port); + } + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); + } + + @Test + public void syncClientSyncThreadPoolServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerWithError() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + for (int i = 0; i < 5; ++i) { + this.syncClientMultiWithError(port); + } + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", 5); + } + + @Test + public void syncClientMutiSyncSimpleServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + AtomicInteger count = new AtomicInteger(0); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncClientMultiWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncClientSimpleServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerWithError() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientWithError(port); + } + + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 5); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerWithError() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientMultiWithError(port); + } + + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", 5); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientMultiWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncThreadedSelectorServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerWithError() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientWithError(port); + } + + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncThreadedSelectorServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerWithErrorMuti() + throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 5); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncThreadedSelectorServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerWithErrorMuti() + throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 5); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncThreadedSelectorServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerWithError() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientWithError(port); + } + + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); + } + + @Test + public void syncFramedClientSyncNonblockingServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncNonblockingServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerWithError() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientWithError(port); + } + + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); + } + + @Test + public void syncFramedClientSyncHsHaServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientSyncHsHaServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerWithError() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientWithError(port); + } + + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 5); + } + + @Test + public void syncFramedClientAsyncNonblockingServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncNonblockingServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerWithError() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerWithErrorMuti() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.syncFramedClientWithError(port); + } + + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 5); + } + + @Test + public void syncFramedClientAsyncHsHaServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.syncFramedClientWithError(port); + } catch (TException e) { + count.incrementAndGet(); + Assertions.fail( + "syncFramedClientAsyncHsHaServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerWithErrorMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 5); + } + + @Test + public void nonBlockClientSyncNonblockingServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncNonblockingServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerWithErrorMuti() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 5); + } + + @Test + public void nonBlockClientSyncHsHaServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientSyncHsHaServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerWithErrorMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 5); + } + + @Test + public void nonBlockClientAsyncNonblockingServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncNonblockingServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerWithErrorMuti() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + + for (int i = 0; i < 5; ++i) { + this.nonBlockClientWithError(port); + } + + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 5); + } + + @Test + public void nonBlockClientAsyncHsHaServerWithErrorParallel() + throws TException, InterruptedException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + AtomicInteger count = new AtomicInteger(); + int threadCount = 5; + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + this.nonBlockClientWithError(port); + } catch (IOException | TException e) { + count.incrementAndGet(); + Assertions.fail( + "nonBlockClientAsyncHsHaServerWithErrorParallel field: " + + e.getCause().getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + + latch.await(10L, TimeUnit.SECONDS); + assertThat(count.get()).isEqualTo(0); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", threadCount); + } + + public void syncClientWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + Exception error = null; + try { + this.testing().runWithSpan("parent", () -> client.withError()); + } catch (Exception e) { + error = e; + } + assertThat(error).isNotNull(); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + Exception error = null; + try { + this.testing().runWithSpan("parent", () -> client.withError()); + } catch (Exception e) { + error = e; + } + assertThat(error).isNotNull(); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientWithError(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(ThriftService.AsyncClient.withError_call s) { + try { + String result = s.getResult(); + assertThat(result).isEqualTo("Hello USs' Bob"); + } catch (TException e) { + throw new VerifyException(e); + } + } + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.withError(callback)); + } + + public void syncFramedClientWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + Exception error = null; + try { + this.testing().runWithSpan("parent", () -> client.withError()); + } catch (Exception e) { + error = e; + } + assertThat(error).isNotNull(); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + Exception error = null; + try { + this.testing().runWithSpan("parent", () -> client.withError()); + } catch (Exception e) { + error = e; + } + assertThat(error).isNotNull(); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java new file mode 100644 index 000000000000..f4bb58637cc1 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java @@ -0,0 +1,75 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.Account; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.User; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.UserAccount; +import java.util.concurrent.TimeUnit; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.testcontainers.shaded.com.google.common.base.VerifyException; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused", "all"}) +public class ThriftServiceAsyncImpl implements ThriftService.AsyncIface { + public ThriftServiceAsyncImpl() {} + + @Override + public void sayHello(String zone, String name, AsyncMethodCallback resultHandler) + throws TException { + resultHandler.onComplete("Hello " + zone + "s' " + name); + } + + @Override + public void withDelay(int delay, AsyncMethodCallback resultHandler) throws TException { + try { + TimeUnit.SECONDS.sleep(delay); + } catch (InterruptedException var4) { + InterruptedException e = var4; + throw new VerifyException(e); + } + + resultHandler.onComplete("delay " + delay); + } + + @Override + public void withoutArgs(AsyncMethodCallback resultHandler) throws TException { + resultHandler.onComplete("no args"); + } + + @Override + public void withError(AsyncMethodCallback resultHandler) throws TException { + throw new VerifyException("fail"); + } + + @Override + public void withCollisioin(String input, AsyncMethodCallback resultHandler) throws TException { + resultHandler.onComplete(input); + } + + @Override + public void noReturn(int delay, AsyncMethodCallback resultHandler) throws TException { + resultHandler.onComplete(null); + } + + @Override + public void oneWayHasArgs(int delay, AsyncMethodCallback resultHandler) throws TException {} + + @Override + public void oneWay(AsyncMethodCallback resultHandler) throws TException {} + + @Override + public void oneWayWithError(AsyncMethodCallback resultHandler) throws TException { + throw new VerifyException("fail"); + } + + @Override + public void data(User user, Account account, AsyncMethodCallback resultHandler) + throws TException { + resultHandler.onComplete(new UserAccount(user, account)); + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java new file mode 100644 index 000000000000..8dfc7e76e59a --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java @@ -0,0 +1,71 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.Account; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.User; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.UserAccount; +import java.util.concurrent.TimeUnit; +import org.apache.thrift.TException; +import org.testcontainers.shaded.com.google.common.base.VerifyException; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused", "all"}) +public class ThriftServiceImpl implements ThriftService.Iface { + + public ThriftServiceImpl() {} + + @Override + public String sayHello(String zone, String name) { + return "Hello " + zone + "s' " + name; + } + + @Override + public String withDelay(int delay) { + try { + TimeUnit.SECONDS.sleep((long) delay); + } catch (InterruptedException var3) { + InterruptedException e = var3; + throw new VerifyException(e); + } + + return "delay " + delay; + } + + @Override + public String withoutArgs() { + return "no args"; + } + + @Override + public String withError() { + throw new VerifyException("fail"); + } + + @Override + public String withCollisioin(String input) { + return input; + } + + @Override + public void noReturn(int delay) throws TException {} + + @Override + public void oneWayHasArgs(int delay) throws TException {} + + @Override + public void oneWay() {} + + @Override + public void oneWayWithError() { + throw new VerifyException("fail"); + } + + @Override + public UserAccount data(User user, Account account) { + return new UserAccount(user, account); + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/Account.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/Account.java new file mode 100644 index 000000000000..94893048b070 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/Account.java @@ -0,0 +1,478 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; + +import java.util.Collections; +import java.util.EnumMap; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; +import org.apache.thrift.protocol.TTupleProtocol; +import org.apache.thrift.scheme.IScheme; +import org.apache.thrift.scheme.SchemeFactory; +import org.apache.thrift.scheme.StandardScheme; +import org.apache.thrift.scheme.TupleScheme; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) +public class Account + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("Account"); + + private static final org.apache.thrift.protocol.TField ZONE_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "zone", org.apache.thrift.protocol.TType.STRING, (short) 1); + private static final org.apache.thrift.protocol.TField CARD_ID_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "cardId", org.apache.thrift.protocol.TType.STRING, (short) 2); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new AccountStandardSchemeFactory()); + schemes.put(TupleScheme.class, new AccountTupleSchemeFactory()); + } + + public String zone; // required + public String cardId; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ZONE((short) 1, "zone"), + CARD_ID((short) 2, "cardId"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // ZONE + return ZONE; + case 2: // CARD_ID + return CARD_ID; + default: + return null; + } + } + + /** Find the _Fields constant that matches fieldId, throwing an exception if it is not found. */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.ZONE, + new org.apache.thrift.meta_data.FieldMetaData( + "zone", + org.apache.thrift.TFieldRequirementType.REQUIRED, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + tmpMap.put( + _Fields.CARD_ID, + new org.apache.thrift.meta_data.FieldMetaData( + "cardId", + org.apache.thrift.TFieldRequirementType.REQUIRED, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Account.class, metaDataMap); + } + + public Account() {} + + public Account(String zone, String cardId) { + this(); + this.zone = zone; + this.cardId = cardId; + } + + /** Performs a deep copy on other. */ + public Account(Account other) { + if (other.isSetZone()) { + this.zone = other.zone; + } + if (other.isSetCardId()) { + this.cardId = other.cardId; + } + } + + public Account deepCopy() { + return new Account(this); + } + + @Override + public void clear() { + this.zone = null; + this.cardId = null; + } + + public String getZone() { + return this.zone; + } + + public Account setZone(String zone) { + this.zone = zone; + return this; + } + + public void unsetZone() { + this.zone = null; + } + + /** Returns true if field zone is set (has been assigned a value) and false otherwise */ + public boolean isSetZone() { + return this.zone != null; + } + + public void setZoneIsSet(boolean value) { + if (!value) { + this.zone = null; + } + } + + public String getCardId() { + return this.cardId; + } + + public Account setCardId(String cardId) { + this.cardId = cardId; + return this; + } + + public void unsetCardId() { + this.cardId = null; + } + + /** Returns true if field cardId is set (has been assigned a value) and false otherwise */ + public boolean isSetCardId() { + return this.cardId != null; + } + + public void setCardIdIsSet(boolean value) { + if (!value) { + this.cardId = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case ZONE: + if (value == null) { + unsetZone(); + } else { + setZone((String) value); + } + break; + + case CARD_ID: + if (value == null) { + unsetCardId(); + } else { + setCardId((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case ZONE: + return getZone(); + + case CARD_ID: + return getCardId(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case ZONE: + return isSetZone(); + case CARD_ID: + return isSetCardId(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof Account) return this.equals((Account) that); + return false; + } + + public boolean equals(Account that) { + if (that == null) return false; + + boolean this_present_zone = true && this.isSetZone(); + boolean that_present_zone = true && that.isSetZone(); + if (this_present_zone || that_present_zone) { + if (!(this_present_zone && that_present_zone)) return false; + if (!this.zone.equals(that.zone)) return false; + } + + boolean this_present_cardId = true && this.isSetCardId(); + boolean that_present_cardId = true && that.isSetCardId(); + if (this_present_cardId || that_present_cardId) { + if (!(this_present_cardId && that_present_cardId)) return false; + if (!this.cardId.equals(that.cardId)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(Account other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetZone()).compareTo(other.isSetZone()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetZone()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.zone, other.zone); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetCardId()).compareTo(other.isSetCardId()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetCardId()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.cardId, other.cardId); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("Account("); + boolean first = true; + + sb.append("zone:"); + if (this.zone == null) { + sb.append("null"); + } else { + sb.append(this.zone); + } + first = false; + if (!first) sb.append(", "); + sb.append("cardId:"); + if (this.cardId == null) { + sb.append("null"); + } else { + sb.append(this.cardId); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + if (zone == null) { + throw new org.apache.thrift.protocol.TProtocolException( + "Required field 'zone' was not present! Struct: " + toString()); + } + if (cardId == null) { + throw new org.apache.thrift.protocol.TProtocolException( + "Required field 'cardId' was not present! Struct: " + toString()); + } + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class AccountStandardSchemeFactory implements SchemeFactory { + public AccountStandardScheme getScheme() { + return new AccountStandardScheme(); + } + } + + private static class AccountStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, Account struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // ZONE + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.zone = iprot.readString(); + struct.setZoneIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 2: // CARD_ID + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.cardId = iprot.readString(); + struct.setCardIdIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, Account struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.zone != null) { + oprot.writeFieldBegin(ZONE_FIELD_DESC); + oprot.writeString(struct.zone); + oprot.writeFieldEnd(); + } + if (struct.cardId != null) { + oprot.writeFieldBegin(CARD_ID_FIELD_DESC); + oprot.writeString(struct.cardId); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class AccountTupleSchemeFactory implements SchemeFactory { + public AccountTupleScheme getScheme() { + return new AccountTupleScheme(); + } + } + + private static class AccountTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, Account struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + oprot.writeString(struct.zone); + oprot.writeString(struct.cardId); + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, Account struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + struct.zone = iprot.readString(); + struct.setZoneIsSet(true); + struct.cardId = iprot.readString(); + struct.setCardIdIsSet(true); + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java new file mode 100644 index 000000000000..a842fbbf63b4 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java @@ -0,0 +1,7438 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; + +import java.util.BitSet; +import java.util.Collections; +import java.util.EnumMap; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; +import org.apache.thrift.EncodingUtils; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.protocol.TTupleProtocol; +import org.apache.thrift.scheme.IScheme; +import org.apache.thrift.scheme.SchemeFactory; +import org.apache.thrift.scheme.StandardScheme; +import org.apache.thrift.scheme.TupleScheme; +import org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) +public class ThriftService { + + public interface Iface { + + public String sayHello(String zone, String name) throws TException; + + public String withDelay(int delay) throws TException; + + public String withoutArgs() throws TException; + + public String withError() throws TException; + + public String withCollisioin(String input) throws TException; + + public void noReturn(int delay) throws TException; + + public void oneWayHasArgs(int delay) throws TException; + + public void oneWay() throws TException; + + public void oneWayWithError() throws TException; + + public UserAccount data(User user, Account account) throws TException; + } + + public interface AsyncIface { + + public void sayHello(String zone, String name, AsyncMethodCallback resultHandler) + throws TException; + + public void withDelay(int delay, AsyncMethodCallback resultHandler) throws TException; + + public void withoutArgs(AsyncMethodCallback resultHandler) throws TException; + + public void withError(AsyncMethodCallback resultHandler) throws TException; + + public void withCollisioin(String input, AsyncMethodCallback resultHandler) throws TException; + + public void noReturn(int delay, AsyncMethodCallback resultHandler) throws TException; + + public void oneWayHasArgs(int delay, AsyncMethodCallback resultHandler) throws TException; + + public void oneWay(AsyncMethodCallback resultHandler) throws TException; + + public void oneWayWithError(AsyncMethodCallback resultHandler) throws TException; + + public void data(User user, Account account, AsyncMethodCallback resultHandler) + throws TException; + } + + public static class Client extends org.apache.thrift.TServiceClient implements Iface { + public static class Factory implements org.apache.thrift.TServiceClientFactory { + public Factory() {} + + public Client getClient(org.apache.thrift.protocol.TProtocol prot) { + return new Client(prot); + } + + public Client getClient( + org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) { + return new Client(iprot, oprot); + } + } + + public Client(org.apache.thrift.protocol.TProtocol prot) { + super(prot, prot); + } + + public Client( + org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) { + super(iprot, oprot); + } + + public String sayHello(String zone, String name) throws TException { + send_sayHello(zone, name); + return recv_sayHello(); + } + + public void send_sayHello(String zone, String name) throws TException { + sayHello_args args = new sayHello_args(); + args.setZone(zone); + args.setName(name); + sendBase("sayHello", args); + } + + public String recv_sayHello() throws TException { + sayHello_result result = new sayHello_result(); + receiveBase(result, "sayHello"); + if (result.isSetSuccess()) { + return result.success; + } + throw new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.MISSING_RESULT, + "sayHello failed: unknown result"); + } + + public String withDelay(int delay) throws TException { + send_withDelay(delay); + return recv_withDelay(); + } + + public void send_withDelay(int delay) throws TException { + withDelay_args args = new withDelay_args(); + args.setDelay(delay); + sendBase("withDelay", args); + } + + public String recv_withDelay() throws TException { + withDelay_result result = new withDelay_result(); + receiveBase(result, "withDelay"); + if (result.isSetSuccess()) { + return result.success; + } + throw new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.MISSING_RESULT, + "withDelay failed: unknown result"); + } + + public String withoutArgs() throws TException { + send_withoutArgs(); + return recv_withoutArgs(); + } + + public void send_withoutArgs() throws TException { + withoutArgs_args args = new withoutArgs_args(); + sendBase("withoutArgs", args); + } + + public String recv_withoutArgs() throws TException { + withoutArgs_result result = new withoutArgs_result(); + receiveBase(result, "withoutArgs"); + if (result.isSetSuccess()) { + return result.success; + } + throw new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.MISSING_RESULT, + "withoutArgs failed: unknown result"); + } + + public String withError() throws TException { + send_withError(); + return recv_withError(); + } + + public void send_withError() throws TException { + withError_args args = new withError_args(); + sendBase("withError", args); + } + + public String recv_withError() throws TException { + withError_result result = new withError_result(); + receiveBase(result, "withError"); + if (result.isSetSuccess()) { + return result.success; + } + throw new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.MISSING_RESULT, + "withError failed: unknown result"); + } + + public String withCollisioin(String input) throws TException { + send_withCollisioin(input); + return recv_withCollisioin(); + } + + public void send_withCollisioin(String input) throws TException { + withCollisioin_args args = new withCollisioin_args(); + args.setInput(input); + sendBase("withCollisioin", args); + } + + public String recv_withCollisioin() throws TException { + withCollisioin_result result = new withCollisioin_result(); + receiveBase(result, "withCollisioin"); + if (result.isSetSuccess()) { + return result.success; + } + throw new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.MISSING_RESULT, + "withCollisioin failed: unknown result"); + } + + public void noReturn(int delay) throws TException { + send_noReturn(delay); + recv_noReturn(); + } + + public void send_noReturn(int delay) throws TException { + noReturn_args args = new noReturn_args(); + args.setDelay(delay); + sendBase("noReturn", args); + } + + public void recv_noReturn() throws TException { + noReturn_result result = new noReturn_result(); + receiveBase(result, "noReturn"); + return; + } + + public void oneWayHasArgs(int delay) throws TException { + send_oneWayHasArgs(delay); + } + + public void send_oneWayHasArgs(int delay) throws TException { + oneWayHasArgs_args args = new oneWayHasArgs_args(); + args.setDelay(delay); + sendBase("oneWayHasArgs", args); + } + + public void oneWay() throws TException { + send_oneWay(); + } + + public void send_oneWay() throws TException { + oneWay_args args = new oneWay_args(); + sendBase("oneWay", args); + } + + public void oneWayWithError() throws TException { + send_oneWayWithError(); + } + + public void send_oneWayWithError() throws TException { + oneWayWithError_args args = new oneWayWithError_args(); + sendBase("oneWayWithError", args); + } + + public UserAccount data(User user, Account account) throws TException { + send_data(user, account); + return recv_data(); + } + + public void send_data(User user, Account account) throws TException { + data_args args = new data_args(); + args.setUser(user); + args.setAccount(account); + sendBase("data", args); + } + + public UserAccount recv_data() throws TException { + data_result result = new data_result(); + receiveBase(result, "data"); + if (result.isSetSuccess()) { + return result.success; + } + throw new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.MISSING_RESULT, "data failed: unknown result"); + } + } + + public static class AsyncClient extends org.apache.thrift.async.TAsyncClient + implements AsyncIface { + public static class Factory + implements org.apache.thrift.async.TAsyncClientFactory { + private org.apache.thrift.async.TAsyncClientManager clientManager; + private org.apache.thrift.protocol.TProtocolFactory protocolFactory; + + public Factory( + org.apache.thrift.async.TAsyncClientManager clientManager, + org.apache.thrift.protocol.TProtocolFactory protocolFactory) { + this.clientManager = clientManager; + this.protocolFactory = protocolFactory; + } + + public AsyncClient getAsyncClient( + org.apache.thrift.transport.TNonblockingTransport transport) { + return new AsyncClient(protocolFactory, clientManager, transport); + } + } + + public AsyncClient( + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.async.TAsyncClientManager clientManager, + org.apache.thrift.transport.TNonblockingTransport transport) { + super(protocolFactory, clientManager, transport); + } + + public void sayHello(String zone, String name, AsyncMethodCallback resultHandler) + throws TException { + checkReady(); + sayHello_call method_call = + new sayHello_call(zone, name, resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class sayHello_call extends org.apache.thrift.async.TAsyncMethodCall { + private String zone; + private String name; + + public sayHello_call( + String zone, + String name, + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, false); + this.zone = zone; + this.name = name; + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "sayHello", org.apache.thrift.protocol.TMessageType.CALL, 0)); + sayHello_args args = new sayHello_args(); + args.setZone(zone); + args.setName(name); + args.write(prot); + prot.writeMessageEnd(); + } + + public String getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + return (new Client(prot)).recv_sayHello(); + } + } + + public void withDelay(int delay, AsyncMethodCallback resultHandler) throws TException { + checkReady(); + withDelay_call method_call = + new withDelay_call(delay, resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class withDelay_call extends org.apache.thrift.async.TAsyncMethodCall { + private int delay; + + public withDelay_call( + int delay, + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, false); + this.delay = delay; + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "withDelay", org.apache.thrift.protocol.TMessageType.CALL, 0)); + withDelay_args args = new withDelay_args(); + args.setDelay(delay); + args.write(prot); + prot.writeMessageEnd(); + } + + public String getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + return (new Client(prot)).recv_withDelay(); + } + } + + public void withoutArgs(AsyncMethodCallback resultHandler) throws TException { + checkReady(); + withoutArgs_call method_call = + new withoutArgs_call(resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class withoutArgs_call extends org.apache.thrift.async.TAsyncMethodCall { + public withoutArgs_call( + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, false); + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "withoutArgs", org.apache.thrift.protocol.TMessageType.CALL, 0)); + withoutArgs_args args = new withoutArgs_args(); + args.write(prot); + prot.writeMessageEnd(); + } + + public String getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + return (new Client(prot)).recv_withoutArgs(); + } + } + + public void withError(AsyncMethodCallback resultHandler) throws TException { + checkReady(); + withError_call method_call = + new withError_call(resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class withError_call extends org.apache.thrift.async.TAsyncMethodCall { + public withError_call( + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, false); + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "withError", org.apache.thrift.protocol.TMessageType.CALL, 0)); + withError_args args = new withError_args(); + args.write(prot); + prot.writeMessageEnd(); + } + + public String getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + return (new Client(prot)).recv_withError(); + } + } + + public void withCollisioin(String input, AsyncMethodCallback resultHandler) throws TException { + checkReady(); + withCollisioin_call method_call = + new withCollisioin_call(input, resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class withCollisioin_call extends org.apache.thrift.async.TAsyncMethodCall { + private String input; + + public withCollisioin_call( + String input, + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, false); + this.input = input; + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "withCollisioin", org.apache.thrift.protocol.TMessageType.CALL, 0)); + withCollisioin_args args = new withCollisioin_args(); + args.setInput(input); + args.write(prot); + prot.writeMessageEnd(); + } + + public String getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + return (new Client(prot)).recv_withCollisioin(); + } + } + + public void noReturn(int delay, AsyncMethodCallback resultHandler) throws TException { + checkReady(); + noReturn_call method_call = + new noReturn_call(delay, resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class noReturn_call extends org.apache.thrift.async.TAsyncMethodCall { + private int delay; + + public noReturn_call( + int delay, + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, false); + this.delay = delay; + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "noReturn", org.apache.thrift.protocol.TMessageType.CALL, 0)); + noReturn_args args = new noReturn_args(); + args.setDelay(delay); + args.write(prot); + prot.writeMessageEnd(); + } + + public void getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + (new Client(prot)).recv_noReturn(); + } + } + + public void oneWayHasArgs(int delay, AsyncMethodCallback resultHandler) throws TException { + checkReady(); + oneWayHasArgs_call method_call = + new oneWayHasArgs_call(delay, resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class oneWayHasArgs_call extends org.apache.thrift.async.TAsyncMethodCall { + private int delay; + + public oneWayHasArgs_call( + int delay, + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, true); + this.delay = delay; + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "oneWayHasArgs", org.apache.thrift.protocol.TMessageType.CALL, 0)); + oneWayHasArgs_args args = new oneWayHasArgs_args(); + args.setDelay(delay); + args.write(prot); + prot.writeMessageEnd(); + } + + public void getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + } + } + + public void oneWay(AsyncMethodCallback resultHandler) throws TException { + checkReady(); + oneWay_call method_call = + new oneWay_call(resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class oneWay_call extends org.apache.thrift.async.TAsyncMethodCall { + public oneWay_call( + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, true); + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "oneWay", org.apache.thrift.protocol.TMessageType.CALL, 0)); + oneWay_args args = new oneWay_args(); + args.write(prot); + prot.writeMessageEnd(); + } + + public void getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + } + } + + public void oneWayWithError(AsyncMethodCallback resultHandler) throws TException { + checkReady(); + oneWayWithError_call method_call = + new oneWayWithError_call(resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class oneWayWithError_call extends org.apache.thrift.async.TAsyncMethodCall { + public oneWayWithError_call( + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, true); + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "oneWayWithError", org.apache.thrift.protocol.TMessageType.CALL, 0)); + oneWayWithError_args args = new oneWayWithError_args(); + args.write(prot); + prot.writeMessageEnd(); + } + + public void getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + } + } + + public void data(User user, Account account, AsyncMethodCallback resultHandler) + throws TException { + checkReady(); + data_call method_call = + new data_call(user, account, resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class data_call extends org.apache.thrift.async.TAsyncMethodCall { + private User user; + private Account account; + + public data_call( + User user, + Account account, + AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws TException { + super(client, protocolFactory, transport, resultHandler, false); + this.user = user; + this.account = account; + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "data", org.apache.thrift.protocol.TMessageType.CALL, 0)); + data_args args = new data_args(); + args.setUser(user); + args.setAccount(account); + args.write(prot); + prot.writeMessageEnd(); + } + + public UserAccount getResult() throws TException { + if (getState() != State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + return (new Client(prot)).recv_data(); + } + } + } + + public static class Processor extends org.apache.thrift.TBaseProcessor + implements org.apache.thrift.TProcessor { + private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName()); + + public Processor(I iface) { + super( + iface, + getProcessMap( + new HashMap< + String, + org.apache.thrift.ProcessFunction>())); + } + + protected Processor( + I iface, + Map> + processMap) { + super(iface, getProcessMap(processMap)); + } + + private static + Map> + getProcessMap( + Map> + processMap) { + processMap.put("sayHello", new sayHello()); + processMap.put("withDelay", new withDelay()); + processMap.put("withoutArgs", new withoutArgs()); + processMap.put("withError", new withError()); + processMap.put("withCollisioin", new withCollisioin()); + processMap.put("noReturn", new noReturn()); + processMap.put("oneWayHasArgs", new oneWayHasArgs()); + processMap.put("oneWay", new oneWay()); + processMap.put("oneWayWithError", new oneWayWithError()); + processMap.put("data", new data()); + return processMap; + } + + public static class sayHello + extends org.apache.thrift.ProcessFunction { + public sayHello() { + super("sayHello"); + } + + public sayHello_args getEmptyArgsInstance() { + return new sayHello_args(); + } + + protected boolean isOneway() { + return false; + } + + public sayHello_result getResult(I iface, sayHello_args args) throws TException { + sayHello_result result = new sayHello_result(); + result.success = iface.sayHello(args.zone, args.name); + return result; + } + } + + public static class withDelay + extends org.apache.thrift.ProcessFunction { + public withDelay() { + super("withDelay"); + } + + public withDelay_args getEmptyArgsInstance() { + return new withDelay_args(); + } + + protected boolean isOneway() { + return false; + } + + public withDelay_result getResult(I iface, withDelay_args args) throws TException { + withDelay_result result = new withDelay_result(); + result.success = iface.withDelay(args.delay); + return result; + } + } + + public static class withoutArgs + extends org.apache.thrift.ProcessFunction { + public withoutArgs() { + super("withoutArgs"); + } + + public withoutArgs_args getEmptyArgsInstance() { + return new withoutArgs_args(); + } + + protected boolean isOneway() { + return false; + } + + public withoutArgs_result getResult(I iface, withoutArgs_args args) throws TException { + withoutArgs_result result = new withoutArgs_result(); + result.success = iface.withoutArgs(); + return result; + } + } + + public static class withError + extends org.apache.thrift.ProcessFunction { + public withError() { + super("withError"); + } + + public withError_args getEmptyArgsInstance() { + return new withError_args(); + } + + protected boolean isOneway() { + return false; + } + + public withError_result getResult(I iface, withError_args args) throws TException { + withError_result result = new withError_result(); + result.success = iface.withError(); + return result; + } + } + + public static class withCollisioin + extends org.apache.thrift.ProcessFunction { + public withCollisioin() { + super("withCollisioin"); + } + + public withCollisioin_args getEmptyArgsInstance() { + return new withCollisioin_args(); + } + + protected boolean isOneway() { + return false; + } + + public withCollisioin_result getResult(I iface, withCollisioin_args args) throws TException { + withCollisioin_result result = new withCollisioin_result(); + result.success = iface.withCollisioin(args.input); + return result; + } + } + + public static class noReturn + extends org.apache.thrift.ProcessFunction { + public noReturn() { + super("noReturn"); + } + + public noReturn_args getEmptyArgsInstance() { + return new noReturn_args(); + } + + protected boolean isOneway() { + return false; + } + + public noReturn_result getResult(I iface, noReturn_args args) throws TException { + noReturn_result result = new noReturn_result(); + iface.noReturn(args.delay); + return result; + } + } + + public static class oneWayHasArgs + extends org.apache.thrift.ProcessFunction { + public oneWayHasArgs() { + super("oneWayHasArgs"); + } + + public oneWayHasArgs_args getEmptyArgsInstance() { + return new oneWayHasArgs_args(); + } + + protected boolean isOneway() { + return true; + } + + public org.apache.thrift.TBase getResult(I iface, oneWayHasArgs_args args) throws TException { + iface.oneWayHasArgs(args.delay); + return null; + } + } + + public static class oneWay + extends org.apache.thrift.ProcessFunction { + public oneWay() { + super("oneWay"); + } + + public oneWay_args getEmptyArgsInstance() { + return new oneWay_args(); + } + + protected boolean isOneway() { + return true; + } + + public org.apache.thrift.TBase getResult(I iface, oneWay_args args) throws TException { + iface.oneWay(); + return null; + } + } + + public static class oneWayWithError + extends org.apache.thrift.ProcessFunction { + public oneWayWithError() { + super("oneWayWithError"); + } + + public oneWayWithError_args getEmptyArgsInstance() { + return new oneWayWithError_args(); + } + + protected boolean isOneway() { + return true; + } + + public org.apache.thrift.TBase getResult(I iface, oneWayWithError_args args) + throws TException { + iface.oneWayWithError(); + return null; + } + } + + public static class data + extends org.apache.thrift.ProcessFunction { + public data() { + super("data"); + } + + public data_args getEmptyArgsInstance() { + return new data_args(); + } + + protected boolean isOneway() { + return false; + } + + public data_result getResult(I iface, data_args args) throws TException { + data_result result = new data_result(); + result.success = iface.data(args.user, args.account); + return result; + } + } + } + + public static class AsyncProcessor + extends org.apache.thrift.TBaseAsyncProcessor { + private static final Logger LOGGER = LoggerFactory.getLogger(AsyncProcessor.class.getName()); + + public AsyncProcessor(I iface) { + super( + iface, + getProcessMap( + new HashMap< + String, + org.apache.thrift.AsyncProcessFunction< + I, ? extends org.apache.thrift.TBase, ?>>())); + } + + protected AsyncProcessor( + I iface, + Map> + processMap) { + super(iface, getProcessMap(processMap)); + } + + private static + Map> + getProcessMap( + Map< + String, + org.apache.thrift.AsyncProcessFunction< + I, ? extends org.apache.thrift.TBase, ?>> + processMap) { + processMap.put("sayHello", new sayHello()); + processMap.put("withDelay", new withDelay()); + processMap.put("withoutArgs", new withoutArgs()); + processMap.put("withError", new withError()); + processMap.put("withCollisioin", new withCollisioin()); + processMap.put("noReturn", new noReturn()); + processMap.put("oneWayHasArgs", new oneWayHasArgs()); + processMap.put("oneWay", new oneWay()); + processMap.put("oneWayWithError", new oneWayWithError()); + processMap.put("data", new data()); + return processMap; + } + + public static class sayHello + extends org.apache.thrift.AsyncProcessFunction { + public sayHello() { + super("sayHello"); + } + + public sayHello_args getEmptyArgsInstance() { + return new sayHello_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(String o) { + sayHello_result result = new sayHello_result(); + result.success = o; + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + sayHello_result result = new sayHello_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start(I iface, sayHello_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.sayHello(args.zone, args.name, resultHandler); + } + } + + public static class withDelay + extends org.apache.thrift.AsyncProcessFunction { + public withDelay() { + super("withDelay"); + } + + public withDelay_args getEmptyArgsInstance() { + return new withDelay_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(String o) { + withDelay_result result = new withDelay_result(); + result.success = o; + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + withDelay_result result = new withDelay_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start(I iface, withDelay_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.withDelay(args.delay, resultHandler); + } + } + + public static class withoutArgs + extends org.apache.thrift.AsyncProcessFunction { + public withoutArgs() { + super("withoutArgs"); + } + + public withoutArgs_args getEmptyArgsInstance() { + return new withoutArgs_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(String o) { + withoutArgs_result result = new withoutArgs_result(); + result.success = o; + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + withoutArgs_result result = new withoutArgs_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start(I iface, withoutArgs_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.withoutArgs(resultHandler); + } + } + + public static class withError + extends org.apache.thrift.AsyncProcessFunction { + public withError() { + super("withError"); + } + + public withError_args getEmptyArgsInstance() { + return new withError_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(String o) { + withError_result result = new withError_result(); + result.success = o; + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + withError_result result = new withError_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start(I iface, withError_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.withError(resultHandler); + } + } + + public static class withCollisioin + extends org.apache.thrift.AsyncProcessFunction { + public withCollisioin() { + super("withCollisioin"); + } + + public withCollisioin_args getEmptyArgsInstance() { + return new withCollisioin_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(String o) { + withCollisioin_result result = new withCollisioin_result(); + result.success = o; + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + withCollisioin_result result = new withCollisioin_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start( + I iface, withCollisioin_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.withCollisioin(args.input, resultHandler); + } + } + + public static class noReturn + extends org.apache.thrift.AsyncProcessFunction { + public noReturn() { + super("noReturn"); + } + + public noReturn_args getEmptyArgsInstance() { + return new noReturn_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(Void o) { + noReturn_result result = new noReturn_result(); + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + noReturn_result result = new noReturn_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start(I iface, noReturn_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.noReturn(args.delay, resultHandler); + } + } + + public static class oneWayHasArgs + extends org.apache.thrift.AsyncProcessFunction { + public oneWayHasArgs() { + super("oneWayHasArgs"); + } + + public oneWayHasArgs_args getEmptyArgsInstance() { + return new oneWayHasArgs_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(Void o) {} + + public void onError(Exception e) {} + }; + } + + protected boolean isOneway() { + return true; + } + + public void start(I iface, oneWayHasArgs_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.oneWayHasArgs(args.delay, resultHandler); + } + } + + public static class oneWay + extends org.apache.thrift.AsyncProcessFunction { + public oneWay() { + super("oneWay"); + } + + public oneWay_args getEmptyArgsInstance() { + return new oneWay_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(Void o) {} + + public void onError(Exception e) {} + }; + } + + protected boolean isOneway() { + return true; + } + + public void start(I iface, oneWay_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.oneWay(resultHandler); + } + } + + public static class oneWayWithError + extends org.apache.thrift.AsyncProcessFunction { + public oneWayWithError() { + super("oneWayWithError"); + } + + public oneWayWithError_args getEmptyArgsInstance() { + return new oneWayWithError_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(Void o) {} + + public void onError(Exception e) {} + }; + } + + protected boolean isOneway() { + return true; + } + + public void start(I iface, oneWayWithError_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.oneWayWithError(resultHandler); + } + } + + public static class data + extends org.apache.thrift.AsyncProcessFunction { + public data() { + super("data"); + } + + public data_args getEmptyArgsInstance() { + return new data_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(UserAccount o) { + data_result result = new data_result(); + result.success = o; + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + data_result result = new data_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start(I iface, data_args args, AsyncMethodCallback resultHandler) + throws TException { + iface.data(args.user, args.account, resultHandler); + } + } + } + + public static class sayHello_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("sayHello_args"); + + private static final org.apache.thrift.protocol.TField ZONE_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "zone", org.apache.thrift.protocol.TType.STRING, (short) 1); + private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "name", org.apache.thrift.protocol.TType.STRING, (short) 2); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new sayHello_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new sayHello_argsTupleSchemeFactory()); + } + + public String zone; // required + public String name; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ZONE((short) 1, "zone"), + NAME((short) 2, "name"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // ZONE + return ZONE; + case 2: // NAME + return NAME; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.ZONE, + new org.apache.thrift.meta_data.FieldMetaData( + "zone", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + tmpMap.put( + _Fields.NAME, + new org.apache.thrift.meta_data.FieldMetaData( + "name", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + sayHello_args.class, metaDataMap); + } + + public sayHello_args() {} + + public sayHello_args(String zone, String name) { + this(); + this.zone = zone; + this.name = name; + } + + /** Performs a deep copy on other. */ + public sayHello_args(sayHello_args other) { + if (other.isSetZone()) { + this.zone = other.zone; + } + if (other.isSetName()) { + this.name = other.name; + } + } + + public sayHello_args deepCopy() { + return new sayHello_args(this); + } + + @Override + public void clear() { + this.zone = null; + this.name = null; + } + + public String getZone() { + return this.zone; + } + + public sayHello_args setZone(String zone) { + this.zone = zone; + return this; + } + + public void unsetZone() { + this.zone = null; + } + + /** Returns true if field zone is set (has been assigned a value) and false otherwise */ + public boolean isSetZone() { + return this.zone != null; + } + + public void setZoneIsSet(boolean value) { + if (!value) { + this.zone = null; + } + } + + public String getName() { + return this.name; + } + + public sayHello_args setName(String name) { + this.name = name; + return this; + } + + public void unsetName() { + this.name = null; + } + + /** Returns true if field name is set (has been assigned a value) and false otherwise */ + public boolean isSetName() { + return this.name != null; + } + + public void setNameIsSet(boolean value) { + if (!value) { + this.name = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case ZONE: + if (value == null) { + unsetZone(); + } else { + setZone((String) value); + } + break; + + case NAME: + if (value == null) { + unsetName(); + } else { + setName((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case ZONE: + return getZone(); + + case NAME: + return getName(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case ZONE: + return isSetZone(); + case NAME: + return isSetName(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof sayHello_args) return this.equals((sayHello_args) that); + return false; + } + + public boolean equals(sayHello_args that) { + if (that == null) return false; + + boolean this_present_zone = true && this.isSetZone(); + boolean that_present_zone = true && that.isSetZone(); + if (this_present_zone || that_present_zone) { + if (!(this_present_zone && that_present_zone)) return false; + if (!this.zone.equals(that.zone)) return false; + } + + boolean this_present_name = true && this.isSetName(); + boolean that_present_name = true && that.isSetName(); + if (this_present_name || that_present_name) { + if (!(this_present_name && that_present_name)) return false; + if (!this.name.equals(that.name)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(sayHello_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetZone()).compareTo(other.isSetZone()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetZone()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.zone, other.zone); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetName()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("sayHello_args("); + boolean first = true; + + sb.append("zone:"); + if (this.zone == null) { + sb.append("null"); + } else { + sb.append(this.zone); + } + first = false; + if (!first) sb.append(", "); + sb.append("name:"); + if (this.name == null) { + sb.append("null"); + } else { + sb.append(this.name); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class sayHello_argsStandardSchemeFactory implements SchemeFactory { + public sayHello_argsStandardScheme getScheme() { + return new sayHello_argsStandardScheme(); + } + } + + private static class sayHello_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, sayHello_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // ZONE + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.zone = iprot.readString(); + struct.setZoneIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 2: // NAME + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.name = iprot.readString(); + struct.setNameIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, sayHello_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.zone != null) { + oprot.writeFieldBegin(ZONE_FIELD_DESC); + oprot.writeString(struct.zone); + oprot.writeFieldEnd(); + } + if (struct.name != null) { + oprot.writeFieldBegin(NAME_FIELD_DESC); + oprot.writeString(struct.name); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class sayHello_argsTupleSchemeFactory implements SchemeFactory { + public sayHello_argsTupleScheme getScheme() { + return new sayHello_argsTupleScheme(); + } + } + + private static class sayHello_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, sayHello_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetZone()) { + optionals.set(0); + } + if (struct.isSetName()) { + optionals.set(1); + } + oprot.writeBitSet(optionals, 2); + if (struct.isSetZone()) { + oprot.writeString(struct.zone); + } + if (struct.isSetName()) { + oprot.writeString(struct.name); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, sayHello_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(2); + if (incoming.get(0)) { + struct.zone = iprot.readString(); + struct.setZoneIsSet(true); + } + if (incoming.get(1)) { + struct.name = iprot.readString(); + struct.setNameIsSet(true); + } + } + } + } + + public static class sayHello_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("sayHello_result"); + + private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "success", org.apache.thrift.protocol.TType.STRING, (short) 0); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new sayHello_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new sayHello_resultTupleSchemeFactory()); + } + + public String success; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + SUCCESS((short) 0, "success"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 0: // SUCCESS + return SUCCESS; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.SUCCESS, + new org.apache.thrift.meta_data.FieldMetaData( + "success", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + sayHello_result.class, metaDataMap); + } + + public sayHello_result() {} + + public sayHello_result(String success) { + this(); + this.success = success; + } + + /** Performs a deep copy on other. */ + public sayHello_result(sayHello_result other) { + if (other.isSetSuccess()) { + this.success = other.success; + } + } + + public sayHello_result deepCopy() { + return new sayHello_result(this); + } + + @Override + public void clear() { + this.success = null; + } + + public String getSuccess() { + return this.success; + } + + public sayHello_result setSuccess(String success) { + this.success = success; + return this; + } + + public void unsetSuccess() { + this.success = null; + } + + /** Returns true if field success is set (has been assigned a value) and false otherwise */ + public boolean isSetSuccess() { + return this.success != null; + } + + public void setSuccessIsSet(boolean value) { + if (!value) { + this.success = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case SUCCESS: + if (value == null) { + unsetSuccess(); + } else { + setSuccess((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case SUCCESS: + return getSuccess(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case SUCCESS: + return isSetSuccess(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof sayHello_result) return this.equals((sayHello_result) that); + return false; + } + + public boolean equals(sayHello_result that) { + if (that == null) return false; + + boolean this_present_success = true && this.isSetSuccess(); + boolean that_present_success = true && that.isSetSuccess(); + if (this_present_success || that_present_success) { + if (!(this_present_success && that_present_success)) return false; + if (!this.success.equals(that.success)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(sayHello_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetSuccess()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("sayHello_result("); + boolean first = true; + + sb.append("success:"); + if (this.success == null) { + sb.append("null"); + } else { + sb.append(this.success); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class sayHello_resultStandardSchemeFactory implements SchemeFactory { + public sayHello_resultStandardScheme getScheme() { + return new sayHello_resultStandardScheme(); + } + } + + private static class sayHello_resultStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, sayHello_result struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 0: // SUCCESS + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, sayHello_result struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.success != null) { + oprot.writeFieldBegin(SUCCESS_FIELD_DESC); + oprot.writeString(struct.success); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class sayHello_resultTupleSchemeFactory implements SchemeFactory { + public sayHello_resultTupleScheme getScheme() { + return new sayHello_resultTupleScheme(); + } + } + + private static class sayHello_resultTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, sayHello_result struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetSuccess()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetSuccess()) { + oprot.writeString(struct.success); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, sayHello_result struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } + } + } + } + + public static class withDelay_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withDelay_args"); + + private static final org.apache.thrift.protocol.TField DELAY_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "delay", org.apache.thrift.protocol.TType.I32, (short) 1); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withDelay_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withDelay_argsTupleSchemeFactory()); + } + + public int delay; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + DELAY((short) 1, "delay"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // DELAY + return DELAY; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + private static final int __DELAY_ISSET_ID = 0; + private byte __isset_bitfield = 0; + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.DELAY, + new org.apache.thrift.meta_data.FieldMetaData( + "delay", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.I32))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withDelay_args.class, metaDataMap); + } + + public withDelay_args() {} + + public withDelay_args(int delay) { + this(); + this.delay = delay; + setDelayIsSet(true); + } + + /** Performs a deep copy on other. */ + public withDelay_args(withDelay_args other) { + __isset_bitfield = other.__isset_bitfield; + this.delay = other.delay; + } + + public withDelay_args deepCopy() { + return new withDelay_args(this); + } + + @Override + public void clear() { + setDelayIsSet(false); + this.delay = 0; + } + + public int getDelay() { + return this.delay; + } + + public withDelay_args setDelay(int delay) { + this.delay = delay; + setDelayIsSet(true); + return this; + } + + public void unsetDelay() { + __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DELAY_ISSET_ID); + } + + /** Returns true if field delay is set (has been assigned a value) and false otherwise */ + public boolean isSetDelay() { + return EncodingUtils.testBit(__isset_bitfield, __DELAY_ISSET_ID); + } + + public void setDelayIsSet(boolean value) { + __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DELAY_ISSET_ID, value); + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case DELAY: + if (value == null) { + unsetDelay(); + } else { + setDelay((Integer) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case DELAY: + return Integer.valueOf(getDelay()); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case DELAY: + return isSetDelay(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withDelay_args) return this.equals((withDelay_args) that); + return false; + } + + public boolean equals(withDelay_args that) { + if (that == null) return false; + + boolean this_present_delay = true; + boolean that_present_delay = true; + if (this_present_delay || that_present_delay) { + if (!(this_present_delay && that_present_delay)) return false; + if (this.delay != that.delay) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withDelay_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetDelay()).compareTo(other.isSetDelay()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetDelay()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.delay, other.delay); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withDelay_args("); + boolean first = true; + + sb.append("delay:"); + sb.append(this.delay); + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + // it doesn't seem like you should have to do this, but java serialization is wacky, and + // doesn't call the default constructor. + __isset_bitfield = 0; + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class withDelay_argsStandardSchemeFactory implements SchemeFactory { + public withDelay_argsStandardScheme getScheme() { + return new withDelay_argsStandardScheme(); + } + } + + private static class withDelay_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withDelay_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // DELAY + if (schemeField.type == org.apache.thrift.protocol.TType.I32) { + struct.delay = iprot.readI32(); + struct.setDelayIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withDelay_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldBegin(DELAY_FIELD_DESC); + oprot.writeI32(struct.delay); + oprot.writeFieldEnd(); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withDelay_argsTupleSchemeFactory implements SchemeFactory { + public withDelay_argsTupleScheme getScheme() { + return new withDelay_argsTupleScheme(); + } + } + + private static class withDelay_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withDelay_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetDelay()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetDelay()) { + oprot.writeI32(struct.delay); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withDelay_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.delay = iprot.readI32(); + struct.setDelayIsSet(true); + } + } + } + } + + public static class withDelay_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withDelay_result"); + + private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "success", org.apache.thrift.protocol.TType.STRING, (short) 0); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withDelay_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withDelay_resultTupleSchemeFactory()); + } + + public String success; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + SUCCESS((short) 0, "success"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 0: // SUCCESS + return SUCCESS; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.SUCCESS, + new org.apache.thrift.meta_data.FieldMetaData( + "success", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withDelay_result.class, metaDataMap); + } + + public withDelay_result() {} + + public withDelay_result(String success) { + this(); + this.success = success; + } + + /** Performs a deep copy on other. */ + public withDelay_result(withDelay_result other) { + if (other.isSetSuccess()) { + this.success = other.success; + } + } + + public withDelay_result deepCopy() { + return new withDelay_result(this); + } + + @Override + public void clear() { + this.success = null; + } + + public String getSuccess() { + return this.success; + } + + public withDelay_result setSuccess(String success) { + this.success = success; + return this; + } + + public void unsetSuccess() { + this.success = null; + } + + /** Returns true if field success is set (has been assigned a value) and false otherwise */ + public boolean isSetSuccess() { + return this.success != null; + } + + public void setSuccessIsSet(boolean value) { + if (!value) { + this.success = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case SUCCESS: + if (value == null) { + unsetSuccess(); + } else { + setSuccess((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case SUCCESS: + return getSuccess(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case SUCCESS: + return isSetSuccess(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withDelay_result) return this.equals((withDelay_result) that); + return false; + } + + public boolean equals(withDelay_result that) { + if (that == null) return false; + + boolean this_present_success = true && this.isSetSuccess(); + boolean that_present_success = true && that.isSetSuccess(); + if (this_present_success || that_present_success) { + if (!(this_present_success && that_present_success)) return false; + if (!this.success.equals(that.success)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withDelay_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetSuccess()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withDelay_result("); + boolean first = true; + + sb.append("success:"); + if (this.success == null) { + sb.append("null"); + } else { + sb.append(this.success); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class withDelay_resultStandardSchemeFactory implements SchemeFactory { + public withDelay_resultStandardScheme getScheme() { + return new withDelay_resultStandardScheme(); + } + } + + private static class withDelay_resultStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withDelay_result struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 0: // SUCCESS + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withDelay_result struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.success != null) { + oprot.writeFieldBegin(SUCCESS_FIELD_DESC); + oprot.writeString(struct.success); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withDelay_resultTupleSchemeFactory implements SchemeFactory { + public withDelay_resultTupleScheme getScheme() { + return new withDelay_resultTupleScheme(); + } + } + + private static class withDelay_resultTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withDelay_result struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetSuccess()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetSuccess()) { + oprot.writeString(struct.success); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withDelay_result struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } + } + } + } + + public static class withoutArgs_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withoutArgs_args"); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withoutArgs_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withoutArgs_argsTupleSchemeFactory()); + } + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ; + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withoutArgs_args.class, metaDataMap); + } + + public withoutArgs_args() {} + + /** Performs a deep copy on other. */ + public withoutArgs_args(withoutArgs_args other) {} + + public withoutArgs_args deepCopy() { + return new withoutArgs_args(this); + } + + @Override + public void clear() {} + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withoutArgs_args) return this.equals((withoutArgs_args) that); + return false; + } + + public boolean equals(withoutArgs_args that) { + if (that == null) return false; + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withoutArgs_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withoutArgs_args("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class withoutArgs_argsStandardSchemeFactory implements SchemeFactory { + public withoutArgs_argsStandardScheme getScheme() { + return new withoutArgs_argsStandardScheme(); + } + } + + private static class withoutArgs_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withoutArgs_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withoutArgs_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withoutArgs_argsTupleSchemeFactory implements SchemeFactory { + public withoutArgs_argsTupleScheme getScheme() { + return new withoutArgs_argsTupleScheme(); + } + } + + private static class withoutArgs_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withoutArgs_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withoutArgs_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + } + } + } + + public static class withoutArgs_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withoutArgs_result"); + + private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "success", org.apache.thrift.protocol.TType.STRING, (short) 0); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withoutArgs_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withoutArgs_resultTupleSchemeFactory()); + } + + public String success; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + SUCCESS((short) 0, "success"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 0: // SUCCESS + return SUCCESS; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.SUCCESS, + new org.apache.thrift.meta_data.FieldMetaData( + "success", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withoutArgs_result.class, metaDataMap); + } + + public withoutArgs_result() {} + + public withoutArgs_result(String success) { + this(); + this.success = success; + } + + /** Performs a deep copy on other. */ + public withoutArgs_result(withoutArgs_result other) { + if (other.isSetSuccess()) { + this.success = other.success; + } + } + + public withoutArgs_result deepCopy() { + return new withoutArgs_result(this); + } + + @Override + public void clear() { + this.success = null; + } + + public String getSuccess() { + return this.success; + } + + public withoutArgs_result setSuccess(String success) { + this.success = success; + return this; + } + + public void unsetSuccess() { + this.success = null; + } + + /** Returns true if field success is set (has been assigned a value) and false otherwise */ + public boolean isSetSuccess() { + return this.success != null; + } + + public void setSuccessIsSet(boolean value) { + if (!value) { + this.success = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case SUCCESS: + if (value == null) { + unsetSuccess(); + } else { + setSuccess((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case SUCCESS: + return getSuccess(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case SUCCESS: + return isSetSuccess(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withoutArgs_result) return this.equals((withoutArgs_result) that); + return false; + } + + public boolean equals(withoutArgs_result that) { + if (that == null) return false; + + boolean this_present_success = true && this.isSetSuccess(); + boolean that_present_success = true && that.isSetSuccess(); + if (this_present_success || that_present_success) { + if (!(this_present_success && that_present_success)) return false; + if (!this.success.equals(that.success)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withoutArgs_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetSuccess()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withoutArgs_result("); + boolean first = true; + + sb.append("success:"); + if (this.success == null) { + sb.append("null"); + } else { + sb.append(this.success); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class withoutArgs_resultStandardSchemeFactory implements SchemeFactory { + public withoutArgs_resultStandardScheme getScheme() { + return new withoutArgs_resultStandardScheme(); + } + } + + private static class withoutArgs_resultStandardScheme + extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withoutArgs_result struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 0: // SUCCESS + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withoutArgs_result struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.success != null) { + oprot.writeFieldBegin(SUCCESS_FIELD_DESC); + oprot.writeString(struct.success); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withoutArgs_resultTupleSchemeFactory implements SchemeFactory { + public withoutArgs_resultTupleScheme getScheme() { + return new withoutArgs_resultTupleScheme(); + } + } + + private static class withoutArgs_resultTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withoutArgs_result struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetSuccess()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetSuccess()) { + oprot.writeString(struct.success); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withoutArgs_result struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } + } + } + } + + public static class withError_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withError_args"); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withError_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withError_argsTupleSchemeFactory()); + } + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ; + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withError_args.class, metaDataMap); + } + + public withError_args() {} + + /** Performs a deep copy on other. */ + public withError_args(withError_args other) {} + + public withError_args deepCopy() { + return new withError_args(this); + } + + @Override + public void clear() {} + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withError_args) return this.equals((withError_args) that); + return false; + } + + public boolean equals(withError_args that) { + if (that == null) return false; + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withError_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withError_args("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class withError_argsStandardSchemeFactory implements SchemeFactory { + public withError_argsStandardScheme getScheme() { + return new withError_argsStandardScheme(); + } + } + + private static class withError_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withError_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withError_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withError_argsTupleSchemeFactory implements SchemeFactory { + public withError_argsTupleScheme getScheme() { + return new withError_argsTupleScheme(); + } + } + + private static class withError_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withError_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withError_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + } + } + } + + public static class withError_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withError_result"); + + private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "success", org.apache.thrift.protocol.TType.STRING, (short) 0); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withError_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withError_resultTupleSchemeFactory()); + } + + public String success; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + SUCCESS((short) 0, "success"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 0: // SUCCESS + return SUCCESS; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.SUCCESS, + new org.apache.thrift.meta_data.FieldMetaData( + "success", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withError_result.class, metaDataMap); + } + + public withError_result() {} + + public withError_result(String success) { + this(); + this.success = success; + } + + /** Performs a deep copy on other. */ + public withError_result(withError_result other) { + if (other.isSetSuccess()) { + this.success = other.success; + } + } + + public withError_result deepCopy() { + return new withError_result(this); + } + + @Override + public void clear() { + this.success = null; + } + + public String getSuccess() { + return this.success; + } + + public withError_result setSuccess(String success) { + this.success = success; + return this; + } + + public void unsetSuccess() { + this.success = null; + } + + /** Returns true if field success is set (has been assigned a value) and false otherwise */ + public boolean isSetSuccess() { + return this.success != null; + } + + public void setSuccessIsSet(boolean value) { + if (!value) { + this.success = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case SUCCESS: + if (value == null) { + unsetSuccess(); + } else { + setSuccess((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case SUCCESS: + return getSuccess(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case SUCCESS: + return isSetSuccess(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withError_result) return this.equals((withError_result) that); + return false; + } + + public boolean equals(withError_result that) { + if (that == null) return false; + + boolean this_present_success = true && this.isSetSuccess(); + boolean that_present_success = true && that.isSetSuccess(); + if (this_present_success || that_present_success) { + if (!(this_present_success && that_present_success)) return false; + if (!this.success.equals(that.success)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withError_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetSuccess()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withError_result("); + boolean first = true; + + sb.append("success:"); + if (this.success == null) { + sb.append("null"); + } else { + sb.append(this.success); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class withError_resultStandardSchemeFactory implements SchemeFactory { + public withError_resultStandardScheme getScheme() { + return new withError_resultStandardScheme(); + } + } + + private static class withError_resultStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withError_result struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 0: // SUCCESS + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withError_result struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.success != null) { + oprot.writeFieldBegin(SUCCESS_FIELD_DESC); + oprot.writeString(struct.success); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withError_resultTupleSchemeFactory implements SchemeFactory { + public withError_resultTupleScheme getScheme() { + return new withError_resultTupleScheme(); + } + } + + private static class withError_resultTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withError_result struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetSuccess()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetSuccess()) { + oprot.writeString(struct.success); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withError_result struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } + } + } + } + + public static class withCollisioin_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withCollisioin_args"); + + private static final org.apache.thrift.protocol.TField INPUT_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "input", org.apache.thrift.protocol.TType.STRING, (short) 3333); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withCollisioin_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withCollisioin_argsTupleSchemeFactory()); + } + + public String input; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + INPUT((short) 3333, "input"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 3333: // INPUT + return INPUT; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.INPUT, + new org.apache.thrift.meta_data.FieldMetaData( + "input", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withCollisioin_args.class, metaDataMap); + } + + public withCollisioin_args() {} + + public withCollisioin_args(String input) { + this(); + this.input = input; + } + + /** Performs a deep copy on other. */ + public withCollisioin_args(withCollisioin_args other) { + if (other.isSetInput()) { + this.input = other.input; + } + } + + public withCollisioin_args deepCopy() { + return new withCollisioin_args(this); + } + + @Override + public void clear() { + this.input = null; + } + + public String getInput() { + return this.input; + } + + public withCollisioin_args setInput(String input) { + this.input = input; + return this; + } + + public void unsetInput() { + this.input = null; + } + + /** Returns true if field input is set (has been assigned a value) and false otherwise */ + public boolean isSetInput() { + return this.input != null; + } + + public void setInputIsSet(boolean value) { + if (!value) { + this.input = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case INPUT: + if (value == null) { + unsetInput(); + } else { + setInput((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case INPUT: + return getInput(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case INPUT: + return isSetInput(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withCollisioin_args) return this.equals((withCollisioin_args) that); + return false; + } + + public boolean equals(withCollisioin_args that) { + if (that == null) return false; + + boolean this_present_input = true && this.isSetInput(); + boolean that_present_input = true && that.isSetInput(); + if (this_present_input || that_present_input) { + if (!(this_present_input && that_present_input)) return false; + if (!this.input.equals(that.input)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withCollisioin_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetInput()).compareTo(other.isSetInput()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetInput()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.input, other.input); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withCollisioin_args("); + boolean first = true; + + sb.append("input:"); + if (this.input == null) { + sb.append("null"); + } else { + sb.append(this.input); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class withCollisioin_argsStandardSchemeFactory implements SchemeFactory { + public withCollisioin_argsStandardScheme getScheme() { + return new withCollisioin_argsStandardScheme(); + } + } + + private static class withCollisioin_argsStandardScheme + extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withCollisioin_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 3333: // INPUT + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.input = iprot.readString(); + struct.setInputIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withCollisioin_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.input != null) { + oprot.writeFieldBegin(INPUT_FIELD_DESC); + oprot.writeString(struct.input); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withCollisioin_argsTupleSchemeFactory implements SchemeFactory { + public withCollisioin_argsTupleScheme getScheme() { + return new withCollisioin_argsTupleScheme(); + } + } + + private static class withCollisioin_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withCollisioin_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetInput()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetInput()) { + oprot.writeString(struct.input); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withCollisioin_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.input = iprot.readString(); + struct.setInputIsSet(true); + } + } + } + } + + public static class withCollisioin_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withCollisioin_result"); + + private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "success", org.apache.thrift.protocol.TType.STRING, (short) 0); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withCollisioin_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withCollisioin_resultTupleSchemeFactory()); + } + + public String success; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + SUCCESS((short) 0, "success"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 0: // SUCCESS + return SUCCESS; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.SUCCESS, + new org.apache.thrift.meta_data.FieldMetaData( + "success", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withCollisioin_result.class, metaDataMap); + } + + public withCollisioin_result() {} + + public withCollisioin_result(String success) { + this(); + this.success = success; + } + + /** Performs a deep copy on other. */ + public withCollisioin_result(withCollisioin_result other) { + if (other.isSetSuccess()) { + this.success = other.success; + } + } + + public withCollisioin_result deepCopy() { + return new withCollisioin_result(this); + } + + @Override + public void clear() { + this.success = null; + } + + public String getSuccess() { + return this.success; + } + + public withCollisioin_result setSuccess(String success) { + this.success = success; + return this; + } + + public void unsetSuccess() { + this.success = null; + } + + /** Returns true if field success is set (has been assigned a value) and false otherwise */ + public boolean isSetSuccess() { + return this.success != null; + } + + public void setSuccessIsSet(boolean value) { + if (!value) { + this.success = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case SUCCESS: + if (value == null) { + unsetSuccess(); + } else { + setSuccess((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case SUCCESS: + return getSuccess(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case SUCCESS: + return isSetSuccess(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withCollisioin_result) return this.equals((withCollisioin_result) that); + return false; + } + + public boolean equals(withCollisioin_result that) { + if (that == null) return false; + + boolean this_present_success = true && this.isSetSuccess(); + boolean that_present_success = true && that.isSetSuccess(); + if (this_present_success || that_present_success) { + if (!(this_present_success && that_present_success)) return false; + if (!this.success.equals(that.success)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withCollisioin_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetSuccess()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withCollisioin_result("); + boolean first = true; + + sb.append("success:"); + if (this.success == null) { + sb.append("null"); + } else { + sb.append(this.success); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class withCollisioin_resultStandardSchemeFactory implements SchemeFactory { + public withCollisioin_resultStandardScheme getScheme() { + return new withCollisioin_resultStandardScheme(); + } + } + + private static class withCollisioin_resultStandardScheme + extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withCollisioin_result struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 0: // SUCCESS + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withCollisioin_result struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.success != null) { + oprot.writeFieldBegin(SUCCESS_FIELD_DESC); + oprot.writeString(struct.success); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withCollisioin_resultTupleSchemeFactory implements SchemeFactory { + public withCollisioin_resultTupleScheme getScheme() { + return new withCollisioin_resultTupleScheme(); + } + } + + private static class withCollisioin_resultTupleScheme + extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withCollisioin_result struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetSuccess()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetSuccess()) { + oprot.writeString(struct.success); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withCollisioin_result struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } + } + } + } + + public static class noReturn_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("noReturn_args"); + + private static final org.apache.thrift.protocol.TField DELAY_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "delay", org.apache.thrift.protocol.TType.I32, (short) 1); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new noReturn_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new noReturn_argsTupleSchemeFactory()); + } + + public int delay; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + DELAY((short) 1, "delay"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // DELAY + return DELAY; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + private static final int __DELAY_ISSET_ID = 0; + private byte __isset_bitfield = 0; + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.DELAY, + new org.apache.thrift.meta_data.FieldMetaData( + "delay", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.I32))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + noReturn_args.class, metaDataMap); + } + + public noReturn_args() {} + + public noReturn_args(int delay) { + this(); + this.delay = delay; + setDelayIsSet(true); + } + + /** Performs a deep copy on other. */ + public noReturn_args(noReturn_args other) { + __isset_bitfield = other.__isset_bitfield; + this.delay = other.delay; + } + + public noReturn_args deepCopy() { + return new noReturn_args(this); + } + + @Override + public void clear() { + setDelayIsSet(false); + this.delay = 0; + } + + public int getDelay() { + return this.delay; + } + + public noReturn_args setDelay(int delay) { + this.delay = delay; + setDelayIsSet(true); + return this; + } + + public void unsetDelay() { + __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DELAY_ISSET_ID); + } + + /** Returns true if field delay is set (has been assigned a value) and false otherwise */ + public boolean isSetDelay() { + return EncodingUtils.testBit(__isset_bitfield, __DELAY_ISSET_ID); + } + + public void setDelayIsSet(boolean value) { + __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DELAY_ISSET_ID, value); + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case DELAY: + if (value == null) { + unsetDelay(); + } else { + setDelay((Integer) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case DELAY: + return Integer.valueOf(getDelay()); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case DELAY: + return isSetDelay(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof noReturn_args) return this.equals((noReturn_args) that); + return false; + } + + public boolean equals(noReturn_args that) { + if (that == null) return false; + + boolean this_present_delay = true; + boolean that_present_delay = true; + if (this_present_delay || that_present_delay) { + if (!(this_present_delay && that_present_delay)) return false; + if (this.delay != that.delay) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(noReturn_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetDelay()).compareTo(other.isSetDelay()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetDelay()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.delay, other.delay); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("noReturn_args("); + boolean first = true; + + sb.append("delay:"); + sb.append(this.delay); + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + // it doesn't seem like you should have to do this, but java serialization is wacky, and + // doesn't call the default constructor. + __isset_bitfield = 0; + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class noReturn_argsStandardSchemeFactory implements SchemeFactory { + public noReturn_argsStandardScheme getScheme() { + return new noReturn_argsStandardScheme(); + } + } + + private static class noReturn_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, noReturn_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // DELAY + if (schemeField.type == org.apache.thrift.protocol.TType.I32) { + struct.delay = iprot.readI32(); + struct.setDelayIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, noReturn_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldBegin(DELAY_FIELD_DESC); + oprot.writeI32(struct.delay); + oprot.writeFieldEnd(); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class noReturn_argsTupleSchemeFactory implements SchemeFactory { + public noReturn_argsTupleScheme getScheme() { + return new noReturn_argsTupleScheme(); + } + } + + private static class noReturn_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, noReturn_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetDelay()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetDelay()) { + oprot.writeI32(struct.delay); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, noReturn_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.delay = iprot.readI32(); + struct.setDelayIsSet(true); + } + } + } + } + + public static class noReturn_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("noReturn_result"); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new noReturn_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new noReturn_resultTupleSchemeFactory()); + } + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ; + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + noReturn_result.class, metaDataMap); + } + + public noReturn_result() {} + + /** Performs a deep copy on other. */ + public noReturn_result(noReturn_result other) {} + + public noReturn_result deepCopy() { + return new noReturn_result(this); + } + + @Override + public void clear() {} + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof noReturn_result) return this.equals((noReturn_result) that); + return false; + } + + public boolean equals(noReturn_result that) { + if (that == null) return false; + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(noReturn_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("noReturn_result("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class noReturn_resultStandardSchemeFactory implements SchemeFactory { + public noReturn_resultStandardScheme getScheme() { + return new noReturn_resultStandardScheme(); + } + } + + private static class noReturn_resultStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, noReturn_result struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, noReturn_result struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class noReturn_resultTupleSchemeFactory implements SchemeFactory { + public noReturn_resultTupleScheme getScheme() { + return new noReturn_resultTupleScheme(); + } + } + + private static class noReturn_resultTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, noReturn_result struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, noReturn_result struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + } + } + } + + public static class oneWayHasArgs_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("oneWayHasArgs_args"); + + private static final org.apache.thrift.protocol.TField DELAY_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "delay", org.apache.thrift.protocol.TType.I32, (short) 1); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new oneWayHasArgs_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new oneWayHasArgs_argsTupleSchemeFactory()); + } + + public int delay; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + DELAY((short) 1, "delay"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // DELAY + return DELAY; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + private static final int __DELAY_ISSET_ID = 0; + private byte __isset_bitfield = 0; + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.DELAY, + new org.apache.thrift.meta_data.FieldMetaData( + "delay", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.I32))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + oneWayHasArgs_args.class, metaDataMap); + } + + public oneWayHasArgs_args() {} + + public oneWayHasArgs_args(int delay) { + this(); + this.delay = delay; + setDelayIsSet(true); + } + + /** Performs a deep copy on other. */ + public oneWayHasArgs_args(oneWayHasArgs_args other) { + __isset_bitfield = other.__isset_bitfield; + this.delay = other.delay; + } + + public oneWayHasArgs_args deepCopy() { + return new oneWayHasArgs_args(this); + } + + @Override + public void clear() { + setDelayIsSet(false); + this.delay = 0; + } + + public int getDelay() { + return this.delay; + } + + public oneWayHasArgs_args setDelay(int delay) { + this.delay = delay; + setDelayIsSet(true); + return this; + } + + public void unsetDelay() { + __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DELAY_ISSET_ID); + } + + /** Returns true if field delay is set (has been assigned a value) and false otherwise */ + public boolean isSetDelay() { + return EncodingUtils.testBit(__isset_bitfield, __DELAY_ISSET_ID); + } + + public void setDelayIsSet(boolean value) { + __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DELAY_ISSET_ID, value); + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case DELAY: + if (value == null) { + unsetDelay(); + } else { + setDelay((Integer) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case DELAY: + return Integer.valueOf(getDelay()); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case DELAY: + return isSetDelay(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof oneWayHasArgs_args) return this.equals((oneWayHasArgs_args) that); + return false; + } + + public boolean equals(oneWayHasArgs_args that) { + if (that == null) return false; + + boolean this_present_delay = true; + boolean that_present_delay = true; + if (this_present_delay || that_present_delay) { + if (!(this_present_delay && that_present_delay)) return false; + if (this.delay != that.delay) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(oneWayHasArgs_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetDelay()).compareTo(other.isSetDelay()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetDelay()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.delay, other.delay); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("oneWayHasArgs_args("); + boolean first = true; + + sb.append("delay:"); + sb.append(this.delay); + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + // it doesn't seem like you should have to do this, but java serialization is wacky, and + // doesn't call the default constructor. + __isset_bitfield = 0; + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class oneWayHasArgs_argsStandardSchemeFactory implements SchemeFactory { + public oneWayHasArgs_argsStandardScheme getScheme() { + return new oneWayHasArgs_argsStandardScheme(); + } + } + + private static class oneWayHasArgs_argsStandardScheme + extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, oneWayHasArgs_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // DELAY + if (schemeField.type == org.apache.thrift.protocol.TType.I32) { + struct.delay = iprot.readI32(); + struct.setDelayIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, oneWayHasArgs_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldBegin(DELAY_FIELD_DESC); + oprot.writeI32(struct.delay); + oprot.writeFieldEnd(); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class oneWayHasArgs_argsTupleSchemeFactory implements SchemeFactory { + public oneWayHasArgs_argsTupleScheme getScheme() { + return new oneWayHasArgs_argsTupleScheme(); + } + } + + private static class oneWayHasArgs_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, oneWayHasArgs_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetDelay()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetDelay()) { + oprot.writeI32(struct.delay); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, oneWayHasArgs_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.delay = iprot.readI32(); + struct.setDelayIsSet(true); + } + } + } + } + + public static class oneWay_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("oneWay_args"); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new oneWay_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new oneWay_argsTupleSchemeFactory()); + } + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ; + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + oneWay_args.class, metaDataMap); + } + + public oneWay_args() {} + + /** Performs a deep copy on other. */ + public oneWay_args(oneWay_args other) {} + + public oneWay_args deepCopy() { + return new oneWay_args(this); + } + + @Override + public void clear() {} + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof oneWay_args) return this.equals((oneWay_args) that); + return false; + } + + public boolean equals(oneWay_args that) { + if (that == null) return false; + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(oneWay_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("oneWay_args("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class oneWay_argsStandardSchemeFactory implements SchemeFactory { + public oneWay_argsStandardScheme getScheme() { + return new oneWay_argsStandardScheme(); + } + } + + private static class oneWay_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, oneWay_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, oneWay_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class oneWay_argsTupleSchemeFactory implements SchemeFactory { + public oneWay_argsTupleScheme getScheme() { + return new oneWay_argsTupleScheme(); + } + } + + private static class oneWay_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, oneWay_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, oneWay_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + } + } + } + + public static class oneWayWithError_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("oneWayWithError_args"); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new oneWayWithError_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new oneWayWithError_argsTupleSchemeFactory()); + } + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ; + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + oneWayWithError_args.class, metaDataMap); + } + + public oneWayWithError_args() {} + + /** Performs a deep copy on other. */ + public oneWayWithError_args(oneWayWithError_args other) {} + + public oneWayWithError_args deepCopy() { + return new oneWayWithError_args(this); + } + + @Override + public void clear() {} + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof oneWayWithError_args) return this.equals((oneWayWithError_args) that); + return false; + } + + public boolean equals(oneWayWithError_args that) { + if (that == null) return false; + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(oneWayWithError_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("oneWayWithError_args("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class oneWayWithError_argsStandardSchemeFactory implements SchemeFactory { + public oneWayWithError_argsStandardScheme getScheme() { + return new oneWayWithError_argsStandardScheme(); + } + } + + private static class oneWayWithError_argsStandardScheme + extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, oneWayWithError_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, oneWayWithError_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class oneWayWithError_argsTupleSchemeFactory implements SchemeFactory { + public oneWayWithError_argsTupleScheme getScheme() { + return new oneWayWithError_argsTupleScheme(); + } + } + + private static class oneWayWithError_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, oneWayWithError_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, oneWayWithError_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + } + } + } + + public static class data_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("data_args"); + + private static final org.apache.thrift.protocol.TField USER_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "user", org.apache.thrift.protocol.TType.STRUCT, (short) 1); + private static final org.apache.thrift.protocol.TField ACCOUNT_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "account", org.apache.thrift.protocol.TType.STRUCT, (short) 2); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new data_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new data_argsTupleSchemeFactory()); + } + + public User user; // required + public Account account; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + USER((short) 1, "user"), + ACCOUNT((short) 2, "account"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // USER + return USER; + case 2: // ACCOUNT + return ACCOUNT; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.USER, + new org.apache.thrift.meta_data.FieldMetaData( + "user", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.StructMetaData( + org.apache.thrift.protocol.TType.STRUCT, User.class))); + tmpMap.put( + _Fields.ACCOUNT, + new org.apache.thrift.meta_data.FieldMetaData( + "account", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.StructMetaData( + org.apache.thrift.protocol.TType.STRUCT, Account.class))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(data_args.class, metaDataMap); + } + + public data_args() {} + + public data_args(User user, Account account) { + this(); + this.user = user; + this.account = account; + } + + /** Performs a deep copy on other. */ + public data_args(data_args other) { + if (other.isSetUser()) { + this.user = new User(other.user); + } + if (other.isSetAccount()) { + this.account = new Account(other.account); + } + } + + public data_args deepCopy() { + return new data_args(this); + } + + @Override + public void clear() { + this.user = null; + this.account = null; + } + + public User getUser() { + return this.user; + } + + public data_args setUser(User user) { + this.user = user; + return this; + } + + public void unsetUser() { + this.user = null; + } + + /** Returns true if field user is set (has been assigned a value) and false otherwise */ + public boolean isSetUser() { + return this.user != null; + } + + public void setUserIsSet(boolean value) { + if (!value) { + this.user = null; + } + } + + public Account getAccount() { + return this.account; + } + + public data_args setAccount(Account account) { + this.account = account; + return this; + } + + public void unsetAccount() { + this.account = null; + } + + /** Returns true if field account is set (has been assigned a value) and false otherwise */ + public boolean isSetAccount() { + return this.account != null; + } + + public void setAccountIsSet(boolean value) { + if (!value) { + this.account = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case USER: + if (value == null) { + unsetUser(); + } else { + setUser((User) value); + } + break; + + case ACCOUNT: + if (value == null) { + unsetAccount(); + } else { + setAccount((Account) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case USER: + return getUser(); + + case ACCOUNT: + return getAccount(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case USER: + return isSetUser(); + case ACCOUNT: + return isSetAccount(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof data_args) return this.equals((data_args) that); + return false; + } + + public boolean equals(data_args that) { + if (that == null) return false; + + boolean this_present_user = true && this.isSetUser(); + boolean that_present_user = true && that.isSetUser(); + if (this_present_user || that_present_user) { + if (!(this_present_user && that_present_user)) return false; + if (!this.user.equals(that.user)) return false; + } + + boolean this_present_account = true && this.isSetAccount(); + boolean that_present_account = true && that.isSetAccount(); + if (this_present_account || that_present_account) { + if (!(this_present_account && that_present_account)) return false; + if (!this.account.equals(that.account)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(data_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetUser()).compareTo(other.isSetUser()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetUser()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.user, other.user); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetAccount()).compareTo(other.isSetAccount()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetAccount()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.account, other.account); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("data_args("); + boolean first = true; + + sb.append("user:"); + if (this.user == null) { + sb.append("null"); + } else { + sb.append(this.user); + } + first = false; + if (!first) sb.append(", "); + sb.append("account:"); + if (this.account == null) { + sb.append("null"); + } else { + sb.append(this.account); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + if (user != null) { + user.validate(); + } + if (account != null) { + account.validate(); + } + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class data_argsStandardSchemeFactory implements SchemeFactory { + public data_argsStandardScheme getScheme() { + return new data_argsStandardScheme(); + } + } + + private static class data_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, data_args struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // USER + if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { + struct.user = new User(); + struct.user.read(iprot); + struct.setUserIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 2: // ACCOUNT + if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { + struct.account = new Account(); + struct.account.read(iprot); + struct.setAccountIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, data_args struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.user != null) { + oprot.writeFieldBegin(USER_FIELD_DESC); + struct.user.write(oprot); + oprot.writeFieldEnd(); + } + if (struct.account != null) { + oprot.writeFieldBegin(ACCOUNT_FIELD_DESC); + struct.account.write(oprot); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class data_argsTupleSchemeFactory implements SchemeFactory { + public data_argsTupleScheme getScheme() { + return new data_argsTupleScheme(); + } + } + + private static class data_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, data_args struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetUser()) { + optionals.set(0); + } + if (struct.isSetAccount()) { + optionals.set(1); + } + oprot.writeBitSet(optionals, 2); + if (struct.isSetUser()) { + struct.user.write(oprot); + } + if (struct.isSetAccount()) { + struct.account.write(oprot); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, data_args struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(2); + if (incoming.get(0)) { + struct.user = new User(); + struct.user.read(iprot); + struct.setUserIsSet(true); + } + if (incoming.get(1)) { + struct.account = new Account(); + struct.account.read(iprot); + struct.setAccountIsSet(true); + } + } + } + } + + public static class data_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("data_result"); + + private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "success", org.apache.thrift.protocol.TType.STRUCT, (short) 0); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new data_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new data_resultTupleSchemeFactory()); + } + + public UserAccount success; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + SUCCESS((short) 0, "success"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 0: // SUCCESS + return SUCCESS; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.SUCCESS, + new org.apache.thrift.meta_data.FieldMetaData( + "success", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.StructMetaData( + org.apache.thrift.protocol.TType.STRUCT, UserAccount.class))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + data_result.class, metaDataMap); + } + + public data_result() {} + + public data_result(UserAccount success) { + this(); + this.success = success; + } + + /** Performs a deep copy on other. */ + public data_result(data_result other) { + if (other.isSetSuccess()) { + this.success = new UserAccount(other.success); + } + } + + public data_result deepCopy() { + return new data_result(this); + } + + @Override + public void clear() { + this.success = null; + } + + public UserAccount getSuccess() { + return this.success; + } + + public data_result setSuccess(UserAccount success) { + this.success = success; + return this; + } + + public void unsetSuccess() { + this.success = null; + } + + /** Returns true if field success is set (has been assigned a value) and false otherwise */ + public boolean isSetSuccess() { + return this.success != null; + } + + public void setSuccessIsSet(boolean value) { + if (!value) { + this.success = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case SUCCESS: + if (value == null) { + unsetSuccess(); + } else { + setSuccess((UserAccount) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case SUCCESS: + return getSuccess(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case SUCCESS: + return isSetSuccess(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof data_result) return this.equals((data_result) that); + return false; + } + + public boolean equals(data_result that) { + if (that == null) return false; + + boolean this_present_success = true && this.isSetSuccess(); + boolean that_present_success = true && that.isSetSuccess(); + if (this_present_success || that_present_success) { + if (!(this_present_success && that_present_success)) return false; + if (!this.success.equals(that.success)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(data_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetSuccess()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("data_result("); + boolean first = true; + + sb.append("success:"); + if (this.success == null) { + sb.append("null"); + } else { + sb.append(this.success); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws TException { + // check for required fields + // check for sub-struct validity + if (success != null) { + success.validate(); + } + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (TException te) { + throw new java.io.IOException(te); + } + } + + private static class data_resultStandardSchemeFactory implements SchemeFactory { + public data_resultStandardScheme getScheme() { + return new data_resultStandardScheme(); + } + } + + private static class data_resultStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, data_result struct) + throws TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 0: // SUCCESS + if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { + struct.success = new UserAccount(); + struct.success.read(iprot); + struct.setSuccessIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, data_result struct) + throws TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.success != null) { + oprot.writeFieldBegin(SUCCESS_FIELD_DESC); + struct.success.write(oprot); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class data_resultTupleSchemeFactory implements SchemeFactory { + public data_resultTupleScheme getScheme() { + return new data_resultTupleScheme(); + } + } + + private static class data_resultTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, data_result struct) + throws TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetSuccess()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetSuccess()) { + struct.success.write(oprot); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, data_result struct) + throws TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.success = new UserAccount(); + struct.success.read(iprot); + struct.setSuccessIsSet(true); + } + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/User.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/User.java new file mode 100644 index 000000000000..ea27a86d548f --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/User.java @@ -0,0 +1,579 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; + +import java.util.Collections; +import java.util.EnumMap; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; +import org.apache.thrift.EncodingUtils; +import org.apache.thrift.protocol.TTupleProtocol; +import org.apache.thrift.scheme.IScheme; +import org.apache.thrift.scheme.SchemeFactory; +import org.apache.thrift.scheme.StandardScheme; +import org.apache.thrift.scheme.TupleScheme; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) +public class User + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("User"); + + private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "name", org.apache.thrift.protocol.TType.STRING, (short) 1); + private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "userId", org.apache.thrift.protocol.TType.STRING, (short) 2); + private static final org.apache.thrift.protocol.TField AGE_FIELD_DESC = + new org.apache.thrift.protocol.TField("age", org.apache.thrift.protocol.TType.I32, (short) 3); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new UserStandardSchemeFactory()); + schemes.put(TupleScheme.class, new UserTupleSchemeFactory()); + } + + public String name; // required + public String userId; // required + public int age; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + NAME((short) 1, "name"), + USER_ID((short) 2, "userId"), + AGE((short) 3, "age"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // NAME + return NAME; + case 2: // USER_ID + return USER_ID; + case 3: // AGE + return AGE; + default: + return null; + } + } + + /** Find the _Fields constant that matches fieldId, throwing an exception if it is not found. */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + private static final int __AGE_ISSET_ID = 0; + private byte __isset_bitfield = 0; + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.NAME, + new org.apache.thrift.meta_data.FieldMetaData( + "name", + org.apache.thrift.TFieldRequirementType.REQUIRED, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + tmpMap.put( + _Fields.USER_ID, + new org.apache.thrift.meta_data.FieldMetaData( + "userId", + org.apache.thrift.TFieldRequirementType.REQUIRED, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + tmpMap.put( + _Fields.AGE, + new org.apache.thrift.meta_data.FieldMetaData( + "age", + org.apache.thrift.TFieldRequirementType.REQUIRED, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.I32))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(User.class, metaDataMap); + } + + public User() {} + + public User(String name, String userId, int age) { + this(); + this.name = name; + this.userId = userId; + this.age = age; + setAgeIsSet(true); + } + + /** Performs a deep copy on other. */ + public User(User other) { + __isset_bitfield = other.__isset_bitfield; + if (other.isSetName()) { + this.name = other.name; + } + if (other.isSetUserId()) { + this.userId = other.userId; + } + this.age = other.age; + } + + public User deepCopy() { + return new User(this); + } + + @Override + public void clear() { + this.name = null; + this.userId = null; + setAgeIsSet(false); + this.age = 0; + } + + public String getName() { + return this.name; + } + + public User setName(String name) { + this.name = name; + return this; + } + + public void unsetName() { + this.name = null; + } + + /** Returns true if field name is set (has been assigned a value) and false otherwise */ + public boolean isSetName() { + return this.name != null; + } + + public void setNameIsSet(boolean value) { + if (!value) { + this.name = null; + } + } + + public String getUserId() { + return this.userId; + } + + public User setUserId(String userId) { + this.userId = userId; + return this; + } + + public void unsetUserId() { + this.userId = null; + } + + /** Returns true if field userId is set (has been assigned a value) and false otherwise */ + public boolean isSetUserId() { + return this.userId != null; + } + + public void setUserIdIsSet(boolean value) { + if (!value) { + this.userId = null; + } + } + + public int getAge() { + return this.age; + } + + public User setAge(int age) { + this.age = age; + setAgeIsSet(true); + return this; + } + + public void unsetAge() { + __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __AGE_ISSET_ID); + } + + /** Returns true if field age is set (has been assigned a value) and false otherwise */ + public boolean isSetAge() { + return EncodingUtils.testBit(__isset_bitfield, __AGE_ISSET_ID); + } + + public void setAgeIsSet(boolean value) { + __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __AGE_ISSET_ID, value); + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case NAME: + if (value == null) { + unsetName(); + } else { + setName((String) value); + } + break; + + case USER_ID: + if (value == null) { + unsetUserId(); + } else { + setUserId((String) value); + } + break; + + case AGE: + if (value == null) { + unsetAge(); + } else { + setAge((Integer) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case NAME: + return getName(); + + case USER_ID: + return getUserId(); + + case AGE: + return Integer.valueOf(getAge()); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case NAME: + return isSetName(); + case USER_ID: + return isSetUserId(); + case AGE: + return isSetAge(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof User) return this.equals((User) that); + return false; + } + + public boolean equals(User that) { + if (that == null) return false; + + boolean this_present_name = true && this.isSetName(); + boolean that_present_name = true && that.isSetName(); + if (this_present_name || that_present_name) { + if (!(this_present_name && that_present_name)) return false; + if (!this.name.equals(that.name)) return false; + } + + boolean this_present_userId = true && this.isSetUserId(); + boolean that_present_userId = true && that.isSetUserId(); + if (this_present_userId || that_present_userId) { + if (!(this_present_userId && that_present_userId)) return false; + if (!this.userId.equals(that.userId)) return false; + } + + boolean this_present_age = true; + boolean that_present_age = true; + if (this_present_age || that_present_age) { + if (!(this_present_age && that_present_age)) return false; + if (this.age != that.age) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(User other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetName()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetUserId()).compareTo(other.isSetUserId()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetUserId()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userId, other.userId); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetAge()).compareTo(other.isSetAge()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetAge()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.age, other.age); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("User("); + boolean first = true; + + sb.append("name:"); + if (this.name == null) { + sb.append("null"); + } else { + sb.append(this.name); + } + first = false; + if (!first) sb.append(", "); + sb.append("userId:"); + if (this.userId == null) { + sb.append("null"); + } else { + sb.append(this.userId); + } + first = false; + if (!first) sb.append(", "); + sb.append("age:"); + sb.append(this.age); + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + if (name == null) { + throw new org.apache.thrift.protocol.TProtocolException( + "Required field 'name' was not present! Struct: " + toString()); + } + if (userId == null) { + throw new org.apache.thrift.protocol.TProtocolException( + "Required field 'userId' was not present! Struct: " + toString()); + } + // alas, we cannot check 'age' because it's a primitive and you chose the non-beans generator. + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + // it doesn't seem like you should have to do this, but java serialization is wacky, and + // doesn't call the default constructor. + __isset_bitfield = 0; + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class UserStandardSchemeFactory implements SchemeFactory { + public UserStandardScheme getScheme() { + return new UserStandardScheme(); + } + } + + private static class UserStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, User struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // NAME + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.name = iprot.readString(); + struct.setNameIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 2: // USER_ID + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.userId = iprot.readString(); + struct.setUserIdIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 3: // AGE + if (schemeField.type == org.apache.thrift.protocol.TType.I32) { + struct.age = iprot.readI32(); + struct.setAgeIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate method + if (!struct.isSetAge()) { + throw new org.apache.thrift.protocol.TProtocolException( + "Required field 'age' was not found in serialized data! Struct: " + toString()); + } + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, User struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.name != null) { + oprot.writeFieldBegin(NAME_FIELD_DESC); + oprot.writeString(struct.name); + oprot.writeFieldEnd(); + } + if (struct.userId != null) { + oprot.writeFieldBegin(USER_ID_FIELD_DESC); + oprot.writeString(struct.userId); + oprot.writeFieldEnd(); + } + oprot.writeFieldBegin(AGE_FIELD_DESC); + oprot.writeI32(struct.age); + oprot.writeFieldEnd(); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class UserTupleSchemeFactory implements SchemeFactory { + public UserTupleScheme getScheme() { + return new UserTupleScheme(); + } + } + + private static class UserTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, User struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + oprot.writeString(struct.name); + oprot.writeString(struct.userId); + oprot.writeI32(struct.age); + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, User struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + struct.name = iprot.readString(); + struct.setNameIsSet(true); + struct.userId = iprot.readString(); + struct.setUserIdIsSet(true); + struct.age = iprot.readI32(); + struct.setAgeIsSet(true); + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/UserAccount.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/UserAccount.java new file mode 100644 index 000000000000..9cfb452f0ab0 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/UserAccount.java @@ -0,0 +1,488 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; + +import java.util.Collections; +import java.util.EnumMap; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; +import org.apache.thrift.protocol.TTupleProtocol; +import org.apache.thrift.scheme.IScheme; +import org.apache.thrift.scheme.SchemeFactory; +import org.apache.thrift.scheme.StandardScheme; +import org.apache.thrift.scheme.TupleScheme; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) +public class UserAccount + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("UserAccount"); + + private static final org.apache.thrift.protocol.TField USER_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "user", org.apache.thrift.protocol.TType.STRUCT, (short) 1); + private static final org.apache.thrift.protocol.TField ACCOUNT_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "account", org.apache.thrift.protocol.TType.STRUCT, (short) 2); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new UserAccountStandardSchemeFactory()); + schemes.put(TupleScheme.class, new UserAccountTupleSchemeFactory()); + } + + public User user; // required + public Account account; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + USER((short) 1, "user"), + ACCOUNT((short) 2, "account"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // USER + return USER; + case 2: // ACCOUNT + return ACCOUNT; + default: + return null; + } + } + + /** Find the _Fields constant that matches fieldId, throwing an exception if it is not found. */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.USER, + new org.apache.thrift.meta_data.FieldMetaData( + "user", + org.apache.thrift.TFieldRequirementType.REQUIRED, + new org.apache.thrift.meta_data.StructMetaData( + org.apache.thrift.protocol.TType.STRUCT, User.class))); + tmpMap.put( + _Fields.ACCOUNT, + new org.apache.thrift.meta_data.FieldMetaData( + "account", + org.apache.thrift.TFieldRequirementType.REQUIRED, + new org.apache.thrift.meta_data.StructMetaData( + org.apache.thrift.protocol.TType.STRUCT, Account.class))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UserAccount.class, metaDataMap); + } + + public UserAccount() {} + + public UserAccount(User user, Account account) { + this(); + this.user = user; + this.account = account; + } + + /** Performs a deep copy on other. */ + public UserAccount(UserAccount other) { + if (other.isSetUser()) { + this.user = new User(other.user); + } + if (other.isSetAccount()) { + this.account = new Account(other.account); + } + } + + public UserAccount deepCopy() { + return new UserAccount(this); + } + + @Override + public void clear() { + this.user = null; + this.account = null; + } + + public User getUser() { + return this.user; + } + + public UserAccount setUser(User user) { + this.user = user; + return this; + } + + public void unsetUser() { + this.user = null; + } + + /** Returns true if field user is set (has been assigned a value) and false otherwise */ + public boolean isSetUser() { + return this.user != null; + } + + public void setUserIsSet(boolean value) { + if (!value) { + this.user = null; + } + } + + public Account getAccount() { + return this.account; + } + + public UserAccount setAccount(Account account) { + this.account = account; + return this; + } + + public void unsetAccount() { + this.account = null; + } + + /** Returns true if field account is set (has been assigned a value) and false otherwise */ + public boolean isSetAccount() { + return this.account != null; + } + + public void setAccountIsSet(boolean value) { + if (!value) { + this.account = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case USER: + if (value == null) { + unsetUser(); + } else { + setUser((User) value); + } + break; + + case ACCOUNT: + if (value == null) { + unsetAccount(); + } else { + setAccount((Account) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case USER: + return getUser(); + + case ACCOUNT: + return getAccount(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case USER: + return isSetUser(); + case ACCOUNT: + return isSetAccount(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof UserAccount) return this.equals((UserAccount) that); + return false; + } + + public boolean equals(UserAccount that) { + if (that == null) return false; + + boolean this_present_user = true && this.isSetUser(); + boolean that_present_user = true && that.isSetUser(); + if (this_present_user || that_present_user) { + if (!(this_present_user && that_present_user)) return false; + if (!this.user.equals(that.user)) return false; + } + + boolean this_present_account = true && this.isSetAccount(); + boolean that_present_account = true && that.isSetAccount(); + if (this_present_account || that_present_account) { + if (!(this_present_account && that_present_account)) return false; + if (!this.account.equals(that.account)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(UserAccount other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetUser()).compareTo(other.isSetUser()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetUser()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.user, other.user); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetAccount()).compareTo(other.isSetAccount()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetAccount()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.account, other.account); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("UserAccount("); + boolean first = true; + + sb.append("user:"); + if (this.user == null) { + sb.append("null"); + } else { + sb.append(this.user); + } + first = false; + if (!first) sb.append(", "); + sb.append("account:"); + if (this.account == null) { + sb.append("null"); + } else { + sb.append(this.account); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + if (user == null) { + throw new org.apache.thrift.protocol.TProtocolException( + "Required field 'user' was not present! Struct: " + toString()); + } + if (account == null) { + throw new org.apache.thrift.protocol.TProtocolException( + "Required field 'account' was not present! Struct: " + toString()); + } + // check for sub-struct validity + if (user != null) { + user.validate(); + } + if (account != null) { + account.validate(); + } + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class UserAccountStandardSchemeFactory implements SchemeFactory { + public UserAccountStandardScheme getScheme() { + return new UserAccountStandardScheme(); + } + } + + private static class UserAccountStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, UserAccount struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // USER + if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { + struct.user = new User(); + struct.user.read(iprot); + struct.setUserIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 2: // ACCOUNT + if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { + struct.account = new Account(); + struct.account.read(iprot); + struct.setAccountIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, UserAccount struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.user != null) { + oprot.writeFieldBegin(USER_FIELD_DESC); + struct.user.write(oprot); + oprot.writeFieldEnd(); + } + if (struct.account != null) { + oprot.writeFieldBegin(ACCOUNT_FIELD_DESC); + struct.account.write(oprot); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class UserAccountTupleSchemeFactory implements SchemeFactory { + public UserAccountTupleScheme getScheme() { + return new UserAccountTupleScheme(); + } + } + + private static class UserAccountTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, UserAccount struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + struct.user.write(oprot); + struct.account.write(oprot); + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, UserAccount struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + struct.user = new User(); + struct.user.read(iprot); + struct.setUserIsSet(true); + struct.account = new Account(); + struct.account.read(iprot); + struct.setAccountIsSet(true); + } + } +} diff --git a/instrumentation/thrift/thrift-common/library/build.gradle.kts b/instrumentation/thrift/thrift-common/library/build.gradle.kts new file mode 100644 index 000000000000..44fee0f36f1d --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + id("otel.library-instrumentation") +} + +dependencies { + library("org.apache.thrift:libthrift:0.7.0") + compileOnly("javax.annotation:javax.annotation-api:1.3.2") + compileOnly("com.google.auto.value:auto-value-annotations") + annotationProcessor("com.google.auto.value:auto-value") +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/RequestScopeContext.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/RequestScopeContext.java new file mode 100644 index 000000000000..e7574c9be8ae --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/RequestScopeContext.java @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import com.google.auto.value.AutoValue; +import io.opentelemetry.context.Context; +import io.opentelemetry.context.Scope; +import javax.annotation.Nullable; + +@AutoValue +public abstract class RequestScopeContext { + + public static RequestScopeContext create( + ThriftRequest request, @Nullable Scope scope, Context context) { + return new AutoValue_RequestScopeContext(request, scope, context); + } + + public abstract ThriftRequest getRequest(); + + @Nullable + public abstract Scope getScope(); + + public abstract Context getContext(); + + public void close() { + if (getScope() != null) { + getScope().close(); + } + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/SocketAccessor.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/SocketAccessor.java new file mode 100644 index 000000000000..9858047bdd77 --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/SocketAccessor.java @@ -0,0 +1,86 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.net.Socket; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TSaslClientTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; + +public class SocketAccessor { + private static final String TRANSPORT = "transport_"; + private static final String UNDERLYING = "underlying"; + private static final String GET_INNER_TRANSPORT = "getInnerTransport"; + + private static final Class LAYERED_TRANSPORT = + getClass("org.apache.thrift.transport.layered.TLayeredTransport"); + private static final Class FRAMED_TRANSPORT = + getClass("org.apache.thrift.transport.TFramedTransport"); + private static final Class FAST_FRAMED_TRANSPORT = + getClass("org.apache.thrift.transport.TFastFramedTransport"); + + private SocketAccessor() {} + + public static Socket getSocket(TTransport transport) { + if (transport == null) { + return null; + } + try { + if (transport instanceof TSocket) { + return ((TSocket) transport).getSocket(); + } + if (transport instanceof TNonblockingSocket) { + return ((TNonblockingSocket) transport).getSocketChannel().socket(); + } + if (transport instanceof TSaslClientTransport) { + return getSocket(((TSaslClientTransport) transport).getUnderlyingTransport()); + } + Class thisClass = transport.getClass(); + Class superClass = thisClass.getSuperclass(); + Class layeredTransport = LAYERED_TRANSPORT; + if (superClass != null && superClass == layeredTransport) { + Method parentMethod = superClass.getMethod(GET_INNER_TRANSPORT); + Object result = parentMethod.invoke(transport); + if (result != null && result instanceof TTransport) { + return getSocket((TTransport) result); + } + } + + if (thisClass == FRAMED_TRANSPORT) { + return getInnerTransportSocket(thisClass, TRANSPORT, transport); + } + if (thisClass == FAST_FRAMED_TRANSPORT) { + return getInnerTransportSocket(thisClass, UNDERLYING, transport); + } + } catch (Throwable e) { + return null; + } + return null; + } + + public static Class getClass(String className) { + try { + return Class.forName(className); + } catch (Throwable e) { + return null; + } + } + + private static Socket getInnerTransportSocket( + Class thisClass, String targetField, TTransport transport) + throws NoSuchFieldException, IllegalAccessException { + Field field = thisClass.getDeclaredField(targetField); + field.setAccessible(true); + Object fieldTransport = field.get(transport); + if (fieldTransport instanceof TTransport) { + return getSocket((TTransport) fieldTransport); + } + return null; + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftAttributesExtractor.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftAttributesExtractor.java new file mode 100644 index 000000000000..a9091798255c --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftAttributesExtractor.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import io.opentelemetry.api.common.AttributesBuilder; +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; +import javax.annotation.Nullable; + +final class ThriftAttributesExtractor implements AttributesExtractor { + + @Override + public void onStart(AttributesBuilder attributes, Context parentContext, ThriftRequest request) { + // Request attributes captured on request end. + } + + @Override + public void onEnd( + AttributesBuilder attributes, + Context context, + ThriftRequest request, + @Nullable Integer status, + @Nullable Throwable error) {} +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java new file mode 100644 index 000000000000..89fbc6e2cad2 --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java @@ -0,0 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import io.opentelemetry.context.propagation.TextMapGetter; +import javax.annotation.Nullable; + +public enum ThriftHeaderGetter implements TextMapGetter { + INSTANCE; + + @Override + public Iterable keys(ThriftRequest request) { + return request.getHeader().keySet(); + } + + @Override + @Nullable + public String get(@Nullable ThriftRequest request, String key) { + if (request == null) { + return null; + } + return request.getHeader().get(key); + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderSetter.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderSetter.java new file mode 100644 index 000000000000..ecc6fd90d59b --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderSetter.java @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import io.opentelemetry.context.propagation.TextMapSetter; +import java.util.Map; +import javax.annotation.Nullable; + +public enum ThriftHeaderSetter implements TextMapSetter { + INSTANCE; + + @Override + public void set(@Nullable ThriftRequest request, String key, String value) { + if (request == null) { + return; + } + Map header = request.getHeader(); + header.put(key, value); + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java new file mode 100644 index 000000000000..b9f7617299bc --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientAttributesExtractor; +import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcClientMetrics; +import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcServerAttributesExtractor; +import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor; +import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; +import io.opentelemetry.instrumentation.thrift.common.client.ThriftClientNetworkAttributesGetter; +import io.opentelemetry.instrumentation.thrift.common.server.ThriftServerNetworkAttributesGetter; + +public final class ThriftInstrumenterFactory { + + public static Instrumenter clientInstrumenter( + String instrumentationName) { + ThriftClientNetworkAttributesGetter netClientAttributesGetter = + new ThriftClientNetworkAttributesGetter(); + ThriftRpcAttributesGetter rpcAttributesGetter = ThriftRpcAttributesGetter.INSTANCE; + return Instrumenter.builder( + GlobalOpenTelemetry.get(), instrumentationName, new ThriftSpanNameExtractor()) + .setSpanStatusExtractor(ThriftSpanStatusExtractor.INSTANCE) + .addAttributesExtractor(RpcClientAttributesExtractor.create(rpcAttributesGetter)) + .addAttributesExtractor(ServerAttributesExtractor.create(netClientAttributesGetter)) + .addAttributesExtractor(NetworkAttributesExtractor.create(netClientAttributesGetter)) + .addOperationMetrics(RpcClientMetrics.get()) + .buildClientInstrumenter(ThriftHeaderSetter.INSTANCE); + } + + public static Instrumenter serverInstrumenter( + String instrumentationName) { + ThriftServerNetworkAttributesGetter netServerAttributesGetter = + new ThriftServerNetworkAttributesGetter(); + ThriftRpcAttributesGetter rpcAttributesGetter = ThriftRpcAttributesGetter.INSTANCE; + return Instrumenter.builder( + GlobalOpenTelemetry.get(), instrumentationName, new ThriftSpanNameExtractor()) + .setSpanStatusExtractor(ThriftSpanStatusExtractor.INSTANCE) + .addAttributesExtractor(RpcServerAttributesExtractor.create(rpcAttributesGetter)) + .addAttributesExtractor(NetworkAttributesExtractor.create(netServerAttributesGetter)) + .addOperationMetrics(RpcServerMetrics.get()) + .buildServerInstrumenter(ThriftHeaderGetter.INSTANCE); + } + + private ThriftInstrumenterFactory() {} +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRequest.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRequest.java new file mode 100644 index 000000000000..e5d3fffa9379 --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRequest.java @@ -0,0 +1,33 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import com.google.auto.value.AutoValue; +import java.net.Socket; +import java.util.Map; +import javax.annotation.Nullable; + +@AutoValue +public abstract class ThriftRequest { + + public static ThriftRequest create( + @Nullable String serviceName, + String methodName, + @Nullable Socket socket, + Map header) { + return new AutoValue_ThriftRequest(serviceName, methodName, socket, header); + } + + @Nullable + public abstract String getServiceName(); + + public abstract String getMethodName(); + + @Nullable + public abstract Socket getSocket(); + + public abstract Map getHeader(); +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java new file mode 100644 index 000000000000..ba021f5ec730 --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java @@ -0,0 +1,30 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; +import javax.annotation.Nullable; + +public enum ThriftRpcAttributesGetter implements RpcAttributesGetter { + INSTANCE; + + @Override + public String getSystem(ThriftRequest request) { + return "thrift"; + } + + @Override + @Nullable + public String getService(ThriftRequest request) { + return request.getServiceName(); + } + + @Override + @Nullable + public String getMethod(ThriftRequest request) { + return request.getMethodName(); + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanNameExtractor.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanNameExtractor.java new file mode 100644 index 000000000000..553f0cc1f1d6 --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanNameExtractor.java @@ -0,0 +1,15 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; + +public final class ThriftSpanNameExtractor implements SpanNameExtractor { + @Override + public String extract(ThriftRequest request) { + return request.getMethodName(); + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanStatusExtractor.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanStatusExtractor.java new file mode 100644 index 000000000000..4b2972ee5116 --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanStatusExtractor.java @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common; + +import io.opentelemetry.api.trace.StatusCode; +import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusBuilder; +import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor; +import javax.annotation.Nullable; + +public final class ThriftSpanStatusExtractor + implements SpanStatusExtractor { + + public static final ThriftSpanStatusExtractor INSTANCE = new ThriftSpanStatusExtractor(); + + @Override + public void extract( + SpanStatusBuilder spanStatusBuilder, + ThriftRequest request, + @Nullable Integer status, + @Nullable Throwable error) { + if ((status != null && status > 0) || error != null) { + spanStatusBuilder.setStatus(StatusCode.ERROR); + } + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java new file mode 100644 index 000000000000..7c94ae7636fe --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java @@ -0,0 +1,31 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common.client; + +import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.Set; + +public class MethodAccessor { + + private MethodAccessor() {} + + public static Set voidMethodNames(String serviceName) { + Set methodNames = new HashSet<>(); + try { + Class clazz = Class.forName(serviceName); + Method[] declaredMethods = clazz.getDeclaredMethods(); + for (Method declaredMethod : declaredMethods) { + if (declaredMethod.getReturnType() == void.class) { + methodNames.add(declaredMethod.getName()); + } + } + } catch (ClassNotFoundException ignore) { + // ignore + } + return methodNames; + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java new file mode 100644 index 000000000000..d24d4924f0b3 --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common.client; + +import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesGetter; +import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesGetter; +import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; +import javax.annotation.Nullable; + +public final class ThriftClientNetworkAttributesGetter + implements ServerAttributesGetter, + NetworkAttributesGetter { + + @Nullable + @Override + public InetSocketAddress getNetworkPeerInetSocketAddress( + ThriftRequest request, @Nullable Integer integer) { + Socket socket = request.getSocket(); + if (socket == null) { + return null; + } + SocketAddress address = socket.getRemoteSocketAddress(); + if (address instanceof InetSocketAddress) { + return (InetSocketAddress) address; + } + return null; + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/server/ThriftServerNetworkAttributesGetter.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/server/ThriftServerNetworkAttributesGetter.java new file mode 100644 index 000000000000..1fe9bb8fe147 --- /dev/null +++ b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/server/ThriftServerNetworkAttributesGetter.java @@ -0,0 +1,38 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common.server; + +import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesGetter; +import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesGetter; +import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; +import javax.annotation.Nullable; + +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ +public final class ThriftServerNetworkAttributesGetter + implements ServerAttributesGetter, + NetworkAttributesGetter { + + @Override + @Nullable + public InetSocketAddress getNetworkPeerInetSocketAddress( + ThriftRequest request, @Nullable Integer status) { + Socket socket = request.getSocket(); + if (socket == null) { + return null; + } + SocketAddress address = socket.getRemoteSocketAddress(); + if (address instanceof InetSocketAddress) { + return (InetSocketAddress) address; + } + return null; + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 37b2859bcc6a..fa52828c9c61 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -616,6 +616,8 @@ include(":instrumentation:xxl-job:xxl-job-2.3.0:javaagent") include(":instrumentation:xxl-job:xxl-job-common:javaagent") include(":instrumentation:xxl-job:xxl-job-common:testing") include(":instrumentation:zio:zio-2.0:javaagent") +include(":instrumentation:thrift:thrift-0.9.1:javaagent") +include(":instrumentation:thrift:thrift-common:library") // benchmark include(":benchmark-overhead-jmh") From 937e1eecd5000d6534328666735d786812fb9caf Mon Sep 17 00:00:00 2001 From: yaoyinglong <906271196@qq.com> Date: Tue, 29 Apr 2025 20:57:26 +0800 Subject: [PATCH 02/13] feat: Adjust the Thrift service-related code required for testing to be regenerated during the build process. --- .../thrift-0.9.1/javaagent/build.gradle.kts | 32 + .../v0_9_1/server/ThriftServiceAsyncImpl.java | 35 - .../v0_9_1/server/ThriftServiceImpl.java | 34 - .../thrift/v0_9_1/thrift/Account.java | 478 -- .../thrift/v0_9_1/thrift/ThriftService.java | 7438 ----------------- .../thrift/v0_9_1/thrift/User.java | 579 -- .../thrift/v0_9_1/thrift/UserAccount.java | 488 -- .../src/test/resources/ThriftService.thrift | 10 + .../javaagent/src/test/resources/thrift | Bin 0 -> 3196232 bytes 9 files changed, 42 insertions(+), 9052 deletions(-) delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/Account.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/User.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/UserAccount.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift create mode 100755 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/thrift diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts index fbb70e456cf8..a91cd7bb0d75 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts @@ -9,6 +9,38 @@ muzzle { versions.set("[0.9.1,)") } } +val thriftExecutable = "./src/test/resources/thrift" +val thriftInputFile = "$projectDir/src/test/resources/ThriftService.thrift" +val thriftOutputDir = "$projectDir/src/test/java" + +var generateThrift = tasks.register("generateThrift") { + group = "build" + description = "Generate Java code from Thrift IDL files" + commandLine(thriftExecutable, "--gen", "java", "-out", thriftOutputDir, thriftInputFile) +} + +tasks.named("compileTestJava") { + dependsOn(generateThrift) + + doFirst { + source.forEach { file -> + if (file.absolutePath.contains("$thriftOutputDir/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java")) { + options.compilerArgs.add("-nowarn") + options.compilerArgs.add("-Xlint:-unchecked") + } + } + } +} + +tasks.named("checkstyleTest") { + exclude("**/thrift/ThriftService.java") +} + +spotless { + java { + targetExclude("**/thrift/ThriftService.java") + } +} dependencies { compileOnly("org.apache.thrift:libthrift:0.9.1") diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java index f4bb58637cc1..0aa95a9ca68e 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java @@ -5,11 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.Account; import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.User; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.UserAccount; -import java.util.concurrent.TimeUnit; import org.apache.thrift.TException; import org.apache.thrift.async.AsyncMethodCallback; import org.testcontainers.shaded.com.google.common.base.VerifyException; @@ -24,41 +20,16 @@ public void sayHello(String zone, String name, AsyncMethodCallback resultHandler resultHandler.onComplete("Hello " + zone + "s' " + name); } - @Override - public void withDelay(int delay, AsyncMethodCallback resultHandler) throws TException { - try { - TimeUnit.SECONDS.sleep(delay); - } catch (InterruptedException var4) { - InterruptedException e = var4; - throw new VerifyException(e); - } - - resultHandler.onComplete("delay " + delay); - } - - @Override - public void withoutArgs(AsyncMethodCallback resultHandler) throws TException { - resultHandler.onComplete("no args"); - } - @Override public void withError(AsyncMethodCallback resultHandler) throws TException { throw new VerifyException("fail"); } - @Override - public void withCollisioin(String input, AsyncMethodCallback resultHandler) throws TException { - resultHandler.onComplete(input); - } - @Override public void noReturn(int delay, AsyncMethodCallback resultHandler) throws TException { resultHandler.onComplete(null); } - @Override - public void oneWayHasArgs(int delay, AsyncMethodCallback resultHandler) throws TException {} - @Override public void oneWay(AsyncMethodCallback resultHandler) throws TException {} @@ -66,10 +37,4 @@ public void oneWay(AsyncMethodCallback resultHandler) throws TException {} public void oneWayWithError(AsyncMethodCallback resultHandler) throws TException { throw new VerifyException("fail"); } - - @Override - public void data(User user, Account account, AsyncMethodCallback resultHandler) - throws TException { - resultHandler.onComplete(new UserAccount(user, account)); - } } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java index 8dfc7e76e59a..3d38fe442eb3 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java @@ -5,11 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.Account; import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.User; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.UserAccount; -import java.util.concurrent.TimeUnit; import org.apache.thrift.TException; import org.testcontainers.shaded.com.google.common.base.VerifyException; @@ -23,39 +19,14 @@ public String sayHello(String zone, String name) { return "Hello " + zone + "s' " + name; } - @Override - public String withDelay(int delay) { - try { - TimeUnit.SECONDS.sleep((long) delay); - } catch (InterruptedException var3) { - InterruptedException e = var3; - throw new VerifyException(e); - } - - return "delay " + delay; - } - - @Override - public String withoutArgs() { - return "no args"; - } - @Override public String withError() { throw new VerifyException("fail"); } - @Override - public String withCollisioin(String input) { - return input; - } - @Override public void noReturn(int delay) throws TException {} - @Override - public void oneWayHasArgs(int delay) throws TException {} - @Override public void oneWay() {} @@ -63,9 +34,4 @@ public void oneWay() {} public void oneWayWithError() { throw new VerifyException("fail"); } - - @Override - public UserAccount data(User user, Account account) { - return new UserAccount(user, account); - } } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/Account.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/Account.java deleted file mode 100644 index 94893048b070..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/Account.java +++ /dev/null @@ -1,478 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; - -import java.util.Collections; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; -import org.apache.thrift.protocol.TTupleProtocol; -import org.apache.thrift.scheme.IScheme; -import org.apache.thrift.scheme.SchemeFactory; -import org.apache.thrift.scheme.StandardScheme; -import org.apache.thrift.scheme.TupleScheme; - -@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) -public class Account - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("Account"); - - private static final org.apache.thrift.protocol.TField ZONE_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "zone", org.apache.thrift.protocol.TType.STRING, (short) 1); - private static final org.apache.thrift.protocol.TField CARD_ID_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "cardId", org.apache.thrift.protocol.TType.STRING, (short) 2); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new AccountStandardSchemeFactory()); - schemes.put(TupleScheme.class, new AccountTupleSchemeFactory()); - } - - public String zone; // required - public String cardId; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ZONE((short) 1, "zone"), - CARD_ID((short) 2, "cardId"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // ZONE - return ZONE; - case 2: // CARD_ID - return CARD_ID; - default: - return null; - } - } - - /** Find the _Fields constant that matches fieldId, throwing an exception if it is not found. */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.ZONE, - new org.apache.thrift.meta_data.FieldMetaData( - "zone", - org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - tmpMap.put( - _Fields.CARD_ID, - new org.apache.thrift.meta_data.FieldMetaData( - "cardId", - org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Account.class, metaDataMap); - } - - public Account() {} - - public Account(String zone, String cardId) { - this(); - this.zone = zone; - this.cardId = cardId; - } - - /** Performs a deep copy on other. */ - public Account(Account other) { - if (other.isSetZone()) { - this.zone = other.zone; - } - if (other.isSetCardId()) { - this.cardId = other.cardId; - } - } - - public Account deepCopy() { - return new Account(this); - } - - @Override - public void clear() { - this.zone = null; - this.cardId = null; - } - - public String getZone() { - return this.zone; - } - - public Account setZone(String zone) { - this.zone = zone; - return this; - } - - public void unsetZone() { - this.zone = null; - } - - /** Returns true if field zone is set (has been assigned a value) and false otherwise */ - public boolean isSetZone() { - return this.zone != null; - } - - public void setZoneIsSet(boolean value) { - if (!value) { - this.zone = null; - } - } - - public String getCardId() { - return this.cardId; - } - - public Account setCardId(String cardId) { - this.cardId = cardId; - return this; - } - - public void unsetCardId() { - this.cardId = null; - } - - /** Returns true if field cardId is set (has been assigned a value) and false otherwise */ - public boolean isSetCardId() { - return this.cardId != null; - } - - public void setCardIdIsSet(boolean value) { - if (!value) { - this.cardId = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case ZONE: - if (value == null) { - unsetZone(); - } else { - setZone((String) value); - } - break; - - case CARD_ID: - if (value == null) { - unsetCardId(); - } else { - setCardId((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case ZONE: - return getZone(); - - case CARD_ID: - return getCardId(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case ZONE: - return isSetZone(); - case CARD_ID: - return isSetCardId(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof Account) return this.equals((Account) that); - return false; - } - - public boolean equals(Account that) { - if (that == null) return false; - - boolean this_present_zone = true && this.isSetZone(); - boolean that_present_zone = true && that.isSetZone(); - if (this_present_zone || that_present_zone) { - if (!(this_present_zone && that_present_zone)) return false; - if (!this.zone.equals(that.zone)) return false; - } - - boolean this_present_cardId = true && this.isSetCardId(); - boolean that_present_cardId = true && that.isSetCardId(); - if (this_present_cardId || that_present_cardId) { - if (!(this_present_cardId && that_present_cardId)) return false; - if (!this.cardId.equals(that.cardId)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(Account other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetZone()).compareTo(other.isSetZone()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetZone()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.zone, other.zone); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetCardId()).compareTo(other.isSetCardId()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetCardId()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.cardId, other.cardId); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("Account("); - boolean first = true; - - sb.append("zone:"); - if (this.zone == null) { - sb.append("null"); - } else { - sb.append(this.zone); - } - first = false; - if (!first) sb.append(", "); - sb.append("cardId:"); - if (this.cardId == null) { - sb.append("null"); - } else { - sb.append(this.cardId); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - if (zone == null) { - throw new org.apache.thrift.protocol.TProtocolException( - "Required field 'zone' was not present! Struct: " + toString()); - } - if (cardId == null) { - throw new org.apache.thrift.protocol.TProtocolException( - "Required field 'cardId' was not present! Struct: " + toString()); - } - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class AccountStandardSchemeFactory implements SchemeFactory { - public AccountStandardScheme getScheme() { - return new AccountStandardScheme(); - } - } - - private static class AccountStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, Account struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // ZONE - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.zone = iprot.readString(); - struct.setZoneIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 2: // CARD_ID - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.cardId = iprot.readString(); - struct.setCardIdIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, Account struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.zone != null) { - oprot.writeFieldBegin(ZONE_FIELD_DESC); - oprot.writeString(struct.zone); - oprot.writeFieldEnd(); - } - if (struct.cardId != null) { - oprot.writeFieldBegin(CARD_ID_FIELD_DESC); - oprot.writeString(struct.cardId); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class AccountTupleSchemeFactory implements SchemeFactory { - public AccountTupleScheme getScheme() { - return new AccountTupleScheme(); - } - } - - private static class AccountTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, Account struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - oprot.writeString(struct.zone); - oprot.writeString(struct.cardId); - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, Account struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - struct.zone = iprot.readString(); - struct.setZoneIsSet(true); - struct.cardId = iprot.readString(); - struct.setCardIdIsSet(true); - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java deleted file mode 100644 index a842fbbf63b4..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java +++ /dev/null @@ -1,7438 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; - -import java.util.BitSet; -import java.util.Collections; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; -import org.apache.thrift.EncodingUtils; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.apache.thrift.protocol.TTupleProtocol; -import org.apache.thrift.scheme.IScheme; -import org.apache.thrift.scheme.SchemeFactory; -import org.apache.thrift.scheme.StandardScheme; -import org.apache.thrift.scheme.TupleScheme; -import org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) -public class ThriftService { - - public interface Iface { - - public String sayHello(String zone, String name) throws TException; - - public String withDelay(int delay) throws TException; - - public String withoutArgs() throws TException; - - public String withError() throws TException; - - public String withCollisioin(String input) throws TException; - - public void noReturn(int delay) throws TException; - - public void oneWayHasArgs(int delay) throws TException; - - public void oneWay() throws TException; - - public void oneWayWithError() throws TException; - - public UserAccount data(User user, Account account) throws TException; - } - - public interface AsyncIface { - - public void sayHello(String zone, String name, AsyncMethodCallback resultHandler) - throws TException; - - public void withDelay(int delay, AsyncMethodCallback resultHandler) throws TException; - - public void withoutArgs(AsyncMethodCallback resultHandler) throws TException; - - public void withError(AsyncMethodCallback resultHandler) throws TException; - - public void withCollisioin(String input, AsyncMethodCallback resultHandler) throws TException; - - public void noReturn(int delay, AsyncMethodCallback resultHandler) throws TException; - - public void oneWayHasArgs(int delay, AsyncMethodCallback resultHandler) throws TException; - - public void oneWay(AsyncMethodCallback resultHandler) throws TException; - - public void oneWayWithError(AsyncMethodCallback resultHandler) throws TException; - - public void data(User user, Account account, AsyncMethodCallback resultHandler) - throws TException; - } - - public static class Client extends org.apache.thrift.TServiceClient implements Iface { - public static class Factory implements org.apache.thrift.TServiceClientFactory { - public Factory() {} - - public Client getClient(org.apache.thrift.protocol.TProtocol prot) { - return new Client(prot); - } - - public Client getClient( - org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) { - return new Client(iprot, oprot); - } - } - - public Client(org.apache.thrift.protocol.TProtocol prot) { - super(prot, prot); - } - - public Client( - org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) { - super(iprot, oprot); - } - - public String sayHello(String zone, String name) throws TException { - send_sayHello(zone, name); - return recv_sayHello(); - } - - public void send_sayHello(String zone, String name) throws TException { - sayHello_args args = new sayHello_args(); - args.setZone(zone); - args.setName(name); - sendBase("sayHello", args); - } - - public String recv_sayHello() throws TException { - sayHello_result result = new sayHello_result(); - receiveBase(result, "sayHello"); - if (result.isSetSuccess()) { - return result.success; - } - throw new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.MISSING_RESULT, - "sayHello failed: unknown result"); - } - - public String withDelay(int delay) throws TException { - send_withDelay(delay); - return recv_withDelay(); - } - - public void send_withDelay(int delay) throws TException { - withDelay_args args = new withDelay_args(); - args.setDelay(delay); - sendBase("withDelay", args); - } - - public String recv_withDelay() throws TException { - withDelay_result result = new withDelay_result(); - receiveBase(result, "withDelay"); - if (result.isSetSuccess()) { - return result.success; - } - throw new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.MISSING_RESULT, - "withDelay failed: unknown result"); - } - - public String withoutArgs() throws TException { - send_withoutArgs(); - return recv_withoutArgs(); - } - - public void send_withoutArgs() throws TException { - withoutArgs_args args = new withoutArgs_args(); - sendBase("withoutArgs", args); - } - - public String recv_withoutArgs() throws TException { - withoutArgs_result result = new withoutArgs_result(); - receiveBase(result, "withoutArgs"); - if (result.isSetSuccess()) { - return result.success; - } - throw new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.MISSING_RESULT, - "withoutArgs failed: unknown result"); - } - - public String withError() throws TException { - send_withError(); - return recv_withError(); - } - - public void send_withError() throws TException { - withError_args args = new withError_args(); - sendBase("withError", args); - } - - public String recv_withError() throws TException { - withError_result result = new withError_result(); - receiveBase(result, "withError"); - if (result.isSetSuccess()) { - return result.success; - } - throw new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.MISSING_RESULT, - "withError failed: unknown result"); - } - - public String withCollisioin(String input) throws TException { - send_withCollisioin(input); - return recv_withCollisioin(); - } - - public void send_withCollisioin(String input) throws TException { - withCollisioin_args args = new withCollisioin_args(); - args.setInput(input); - sendBase("withCollisioin", args); - } - - public String recv_withCollisioin() throws TException { - withCollisioin_result result = new withCollisioin_result(); - receiveBase(result, "withCollisioin"); - if (result.isSetSuccess()) { - return result.success; - } - throw new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.MISSING_RESULT, - "withCollisioin failed: unknown result"); - } - - public void noReturn(int delay) throws TException { - send_noReturn(delay); - recv_noReturn(); - } - - public void send_noReturn(int delay) throws TException { - noReturn_args args = new noReturn_args(); - args.setDelay(delay); - sendBase("noReturn", args); - } - - public void recv_noReturn() throws TException { - noReturn_result result = new noReturn_result(); - receiveBase(result, "noReturn"); - return; - } - - public void oneWayHasArgs(int delay) throws TException { - send_oneWayHasArgs(delay); - } - - public void send_oneWayHasArgs(int delay) throws TException { - oneWayHasArgs_args args = new oneWayHasArgs_args(); - args.setDelay(delay); - sendBase("oneWayHasArgs", args); - } - - public void oneWay() throws TException { - send_oneWay(); - } - - public void send_oneWay() throws TException { - oneWay_args args = new oneWay_args(); - sendBase("oneWay", args); - } - - public void oneWayWithError() throws TException { - send_oneWayWithError(); - } - - public void send_oneWayWithError() throws TException { - oneWayWithError_args args = new oneWayWithError_args(); - sendBase("oneWayWithError", args); - } - - public UserAccount data(User user, Account account) throws TException { - send_data(user, account); - return recv_data(); - } - - public void send_data(User user, Account account) throws TException { - data_args args = new data_args(); - args.setUser(user); - args.setAccount(account); - sendBase("data", args); - } - - public UserAccount recv_data() throws TException { - data_result result = new data_result(); - receiveBase(result, "data"); - if (result.isSetSuccess()) { - return result.success; - } - throw new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.MISSING_RESULT, "data failed: unknown result"); - } - } - - public static class AsyncClient extends org.apache.thrift.async.TAsyncClient - implements AsyncIface { - public static class Factory - implements org.apache.thrift.async.TAsyncClientFactory { - private org.apache.thrift.async.TAsyncClientManager clientManager; - private org.apache.thrift.protocol.TProtocolFactory protocolFactory; - - public Factory( - org.apache.thrift.async.TAsyncClientManager clientManager, - org.apache.thrift.protocol.TProtocolFactory protocolFactory) { - this.clientManager = clientManager; - this.protocolFactory = protocolFactory; - } - - public AsyncClient getAsyncClient( - org.apache.thrift.transport.TNonblockingTransport transport) { - return new AsyncClient(protocolFactory, clientManager, transport); - } - } - - public AsyncClient( - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.async.TAsyncClientManager clientManager, - org.apache.thrift.transport.TNonblockingTransport transport) { - super(protocolFactory, clientManager, transport); - } - - public void sayHello(String zone, String name, AsyncMethodCallback resultHandler) - throws TException { - checkReady(); - sayHello_call method_call = - new sayHello_call(zone, name, resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class sayHello_call extends org.apache.thrift.async.TAsyncMethodCall { - private String zone; - private String name; - - public sayHello_call( - String zone, - String name, - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, false); - this.zone = zone; - this.name = name; - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "sayHello", org.apache.thrift.protocol.TMessageType.CALL, 0)); - sayHello_args args = new sayHello_args(); - args.setZone(zone); - args.setName(name); - args.write(prot); - prot.writeMessageEnd(); - } - - public String getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - return (new Client(prot)).recv_sayHello(); - } - } - - public void withDelay(int delay, AsyncMethodCallback resultHandler) throws TException { - checkReady(); - withDelay_call method_call = - new withDelay_call(delay, resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class withDelay_call extends org.apache.thrift.async.TAsyncMethodCall { - private int delay; - - public withDelay_call( - int delay, - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, false); - this.delay = delay; - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "withDelay", org.apache.thrift.protocol.TMessageType.CALL, 0)); - withDelay_args args = new withDelay_args(); - args.setDelay(delay); - args.write(prot); - prot.writeMessageEnd(); - } - - public String getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - return (new Client(prot)).recv_withDelay(); - } - } - - public void withoutArgs(AsyncMethodCallback resultHandler) throws TException { - checkReady(); - withoutArgs_call method_call = - new withoutArgs_call(resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class withoutArgs_call extends org.apache.thrift.async.TAsyncMethodCall { - public withoutArgs_call( - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, false); - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "withoutArgs", org.apache.thrift.protocol.TMessageType.CALL, 0)); - withoutArgs_args args = new withoutArgs_args(); - args.write(prot); - prot.writeMessageEnd(); - } - - public String getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - return (new Client(prot)).recv_withoutArgs(); - } - } - - public void withError(AsyncMethodCallback resultHandler) throws TException { - checkReady(); - withError_call method_call = - new withError_call(resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class withError_call extends org.apache.thrift.async.TAsyncMethodCall { - public withError_call( - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, false); - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "withError", org.apache.thrift.protocol.TMessageType.CALL, 0)); - withError_args args = new withError_args(); - args.write(prot); - prot.writeMessageEnd(); - } - - public String getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - return (new Client(prot)).recv_withError(); - } - } - - public void withCollisioin(String input, AsyncMethodCallback resultHandler) throws TException { - checkReady(); - withCollisioin_call method_call = - new withCollisioin_call(input, resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class withCollisioin_call extends org.apache.thrift.async.TAsyncMethodCall { - private String input; - - public withCollisioin_call( - String input, - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, false); - this.input = input; - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "withCollisioin", org.apache.thrift.protocol.TMessageType.CALL, 0)); - withCollisioin_args args = new withCollisioin_args(); - args.setInput(input); - args.write(prot); - prot.writeMessageEnd(); - } - - public String getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - return (new Client(prot)).recv_withCollisioin(); - } - } - - public void noReturn(int delay, AsyncMethodCallback resultHandler) throws TException { - checkReady(); - noReturn_call method_call = - new noReturn_call(delay, resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class noReturn_call extends org.apache.thrift.async.TAsyncMethodCall { - private int delay; - - public noReturn_call( - int delay, - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, false); - this.delay = delay; - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "noReturn", org.apache.thrift.protocol.TMessageType.CALL, 0)); - noReturn_args args = new noReturn_args(); - args.setDelay(delay); - args.write(prot); - prot.writeMessageEnd(); - } - - public void getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - (new Client(prot)).recv_noReturn(); - } - } - - public void oneWayHasArgs(int delay, AsyncMethodCallback resultHandler) throws TException { - checkReady(); - oneWayHasArgs_call method_call = - new oneWayHasArgs_call(delay, resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class oneWayHasArgs_call extends org.apache.thrift.async.TAsyncMethodCall { - private int delay; - - public oneWayHasArgs_call( - int delay, - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, true); - this.delay = delay; - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "oneWayHasArgs", org.apache.thrift.protocol.TMessageType.CALL, 0)); - oneWayHasArgs_args args = new oneWayHasArgs_args(); - args.setDelay(delay); - args.write(prot); - prot.writeMessageEnd(); - } - - public void getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - } - } - - public void oneWay(AsyncMethodCallback resultHandler) throws TException { - checkReady(); - oneWay_call method_call = - new oneWay_call(resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class oneWay_call extends org.apache.thrift.async.TAsyncMethodCall { - public oneWay_call( - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, true); - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "oneWay", org.apache.thrift.protocol.TMessageType.CALL, 0)); - oneWay_args args = new oneWay_args(); - args.write(prot); - prot.writeMessageEnd(); - } - - public void getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - } - } - - public void oneWayWithError(AsyncMethodCallback resultHandler) throws TException { - checkReady(); - oneWayWithError_call method_call = - new oneWayWithError_call(resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class oneWayWithError_call extends org.apache.thrift.async.TAsyncMethodCall { - public oneWayWithError_call( - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, true); - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "oneWayWithError", org.apache.thrift.protocol.TMessageType.CALL, 0)); - oneWayWithError_args args = new oneWayWithError_args(); - args.write(prot); - prot.writeMessageEnd(); - } - - public void getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - } - } - - public void data(User user, Account account, AsyncMethodCallback resultHandler) - throws TException { - checkReady(); - data_call method_call = - new data_call(user, account, resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class data_call extends org.apache.thrift.async.TAsyncMethodCall { - private User user; - private Account account; - - public data_call( - User user, - Account account, - AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws TException { - super(client, protocolFactory, transport, resultHandler, false); - this.user = user; - this.account = account; - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) throws TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "data", org.apache.thrift.protocol.TMessageType.CALL, 0)); - data_args args = new data_args(); - args.setUser(user); - args.setAccount(account); - args.write(prot); - prot.writeMessageEnd(); - } - - public UserAccount getResult() throws TException { - if (getState() != State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - return (new Client(prot)).recv_data(); - } - } - } - - public static class Processor extends org.apache.thrift.TBaseProcessor - implements org.apache.thrift.TProcessor { - private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName()); - - public Processor(I iface) { - super( - iface, - getProcessMap( - new HashMap< - String, - org.apache.thrift.ProcessFunction>())); - } - - protected Processor( - I iface, - Map> - processMap) { - super(iface, getProcessMap(processMap)); - } - - private static - Map> - getProcessMap( - Map> - processMap) { - processMap.put("sayHello", new sayHello()); - processMap.put("withDelay", new withDelay()); - processMap.put("withoutArgs", new withoutArgs()); - processMap.put("withError", new withError()); - processMap.put("withCollisioin", new withCollisioin()); - processMap.put("noReturn", new noReturn()); - processMap.put("oneWayHasArgs", new oneWayHasArgs()); - processMap.put("oneWay", new oneWay()); - processMap.put("oneWayWithError", new oneWayWithError()); - processMap.put("data", new data()); - return processMap; - } - - public static class sayHello - extends org.apache.thrift.ProcessFunction { - public sayHello() { - super("sayHello"); - } - - public sayHello_args getEmptyArgsInstance() { - return new sayHello_args(); - } - - protected boolean isOneway() { - return false; - } - - public sayHello_result getResult(I iface, sayHello_args args) throws TException { - sayHello_result result = new sayHello_result(); - result.success = iface.sayHello(args.zone, args.name); - return result; - } - } - - public static class withDelay - extends org.apache.thrift.ProcessFunction { - public withDelay() { - super("withDelay"); - } - - public withDelay_args getEmptyArgsInstance() { - return new withDelay_args(); - } - - protected boolean isOneway() { - return false; - } - - public withDelay_result getResult(I iface, withDelay_args args) throws TException { - withDelay_result result = new withDelay_result(); - result.success = iface.withDelay(args.delay); - return result; - } - } - - public static class withoutArgs - extends org.apache.thrift.ProcessFunction { - public withoutArgs() { - super("withoutArgs"); - } - - public withoutArgs_args getEmptyArgsInstance() { - return new withoutArgs_args(); - } - - protected boolean isOneway() { - return false; - } - - public withoutArgs_result getResult(I iface, withoutArgs_args args) throws TException { - withoutArgs_result result = new withoutArgs_result(); - result.success = iface.withoutArgs(); - return result; - } - } - - public static class withError - extends org.apache.thrift.ProcessFunction { - public withError() { - super("withError"); - } - - public withError_args getEmptyArgsInstance() { - return new withError_args(); - } - - protected boolean isOneway() { - return false; - } - - public withError_result getResult(I iface, withError_args args) throws TException { - withError_result result = new withError_result(); - result.success = iface.withError(); - return result; - } - } - - public static class withCollisioin - extends org.apache.thrift.ProcessFunction { - public withCollisioin() { - super("withCollisioin"); - } - - public withCollisioin_args getEmptyArgsInstance() { - return new withCollisioin_args(); - } - - protected boolean isOneway() { - return false; - } - - public withCollisioin_result getResult(I iface, withCollisioin_args args) throws TException { - withCollisioin_result result = new withCollisioin_result(); - result.success = iface.withCollisioin(args.input); - return result; - } - } - - public static class noReturn - extends org.apache.thrift.ProcessFunction { - public noReturn() { - super("noReturn"); - } - - public noReturn_args getEmptyArgsInstance() { - return new noReturn_args(); - } - - protected boolean isOneway() { - return false; - } - - public noReturn_result getResult(I iface, noReturn_args args) throws TException { - noReturn_result result = new noReturn_result(); - iface.noReturn(args.delay); - return result; - } - } - - public static class oneWayHasArgs - extends org.apache.thrift.ProcessFunction { - public oneWayHasArgs() { - super("oneWayHasArgs"); - } - - public oneWayHasArgs_args getEmptyArgsInstance() { - return new oneWayHasArgs_args(); - } - - protected boolean isOneway() { - return true; - } - - public org.apache.thrift.TBase getResult(I iface, oneWayHasArgs_args args) throws TException { - iface.oneWayHasArgs(args.delay); - return null; - } - } - - public static class oneWay - extends org.apache.thrift.ProcessFunction { - public oneWay() { - super("oneWay"); - } - - public oneWay_args getEmptyArgsInstance() { - return new oneWay_args(); - } - - protected boolean isOneway() { - return true; - } - - public org.apache.thrift.TBase getResult(I iface, oneWay_args args) throws TException { - iface.oneWay(); - return null; - } - } - - public static class oneWayWithError - extends org.apache.thrift.ProcessFunction { - public oneWayWithError() { - super("oneWayWithError"); - } - - public oneWayWithError_args getEmptyArgsInstance() { - return new oneWayWithError_args(); - } - - protected boolean isOneway() { - return true; - } - - public org.apache.thrift.TBase getResult(I iface, oneWayWithError_args args) - throws TException { - iface.oneWayWithError(); - return null; - } - } - - public static class data - extends org.apache.thrift.ProcessFunction { - public data() { - super("data"); - } - - public data_args getEmptyArgsInstance() { - return new data_args(); - } - - protected boolean isOneway() { - return false; - } - - public data_result getResult(I iface, data_args args) throws TException { - data_result result = new data_result(); - result.success = iface.data(args.user, args.account); - return result; - } - } - } - - public static class AsyncProcessor - extends org.apache.thrift.TBaseAsyncProcessor { - private static final Logger LOGGER = LoggerFactory.getLogger(AsyncProcessor.class.getName()); - - public AsyncProcessor(I iface) { - super( - iface, - getProcessMap( - new HashMap< - String, - org.apache.thrift.AsyncProcessFunction< - I, ? extends org.apache.thrift.TBase, ?>>())); - } - - protected AsyncProcessor( - I iface, - Map> - processMap) { - super(iface, getProcessMap(processMap)); - } - - private static - Map> - getProcessMap( - Map< - String, - org.apache.thrift.AsyncProcessFunction< - I, ? extends org.apache.thrift.TBase, ?>> - processMap) { - processMap.put("sayHello", new sayHello()); - processMap.put("withDelay", new withDelay()); - processMap.put("withoutArgs", new withoutArgs()); - processMap.put("withError", new withError()); - processMap.put("withCollisioin", new withCollisioin()); - processMap.put("noReturn", new noReturn()); - processMap.put("oneWayHasArgs", new oneWayHasArgs()); - processMap.put("oneWay", new oneWay()); - processMap.put("oneWayWithError", new oneWayWithError()); - processMap.put("data", new data()); - return processMap; - } - - public static class sayHello - extends org.apache.thrift.AsyncProcessFunction { - public sayHello() { - super("sayHello"); - } - - public sayHello_args getEmptyArgsInstance() { - return new sayHello_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(String o) { - sayHello_result result = new sayHello_result(); - result.success = o; - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - sayHello_result result = new sayHello_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start(I iface, sayHello_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.sayHello(args.zone, args.name, resultHandler); - } - } - - public static class withDelay - extends org.apache.thrift.AsyncProcessFunction { - public withDelay() { - super("withDelay"); - } - - public withDelay_args getEmptyArgsInstance() { - return new withDelay_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(String o) { - withDelay_result result = new withDelay_result(); - result.success = o; - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - withDelay_result result = new withDelay_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start(I iface, withDelay_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.withDelay(args.delay, resultHandler); - } - } - - public static class withoutArgs - extends org.apache.thrift.AsyncProcessFunction { - public withoutArgs() { - super("withoutArgs"); - } - - public withoutArgs_args getEmptyArgsInstance() { - return new withoutArgs_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(String o) { - withoutArgs_result result = new withoutArgs_result(); - result.success = o; - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - withoutArgs_result result = new withoutArgs_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start(I iface, withoutArgs_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.withoutArgs(resultHandler); - } - } - - public static class withError - extends org.apache.thrift.AsyncProcessFunction { - public withError() { - super("withError"); - } - - public withError_args getEmptyArgsInstance() { - return new withError_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(String o) { - withError_result result = new withError_result(); - result.success = o; - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - withError_result result = new withError_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start(I iface, withError_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.withError(resultHandler); - } - } - - public static class withCollisioin - extends org.apache.thrift.AsyncProcessFunction { - public withCollisioin() { - super("withCollisioin"); - } - - public withCollisioin_args getEmptyArgsInstance() { - return new withCollisioin_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(String o) { - withCollisioin_result result = new withCollisioin_result(); - result.success = o; - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - withCollisioin_result result = new withCollisioin_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start( - I iface, withCollisioin_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.withCollisioin(args.input, resultHandler); - } - } - - public static class noReturn - extends org.apache.thrift.AsyncProcessFunction { - public noReturn() { - super("noReturn"); - } - - public noReturn_args getEmptyArgsInstance() { - return new noReturn_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(Void o) { - noReturn_result result = new noReturn_result(); - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - noReturn_result result = new noReturn_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start(I iface, noReturn_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.noReturn(args.delay, resultHandler); - } - } - - public static class oneWayHasArgs - extends org.apache.thrift.AsyncProcessFunction { - public oneWayHasArgs() { - super("oneWayHasArgs"); - } - - public oneWayHasArgs_args getEmptyArgsInstance() { - return new oneWayHasArgs_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(Void o) {} - - public void onError(Exception e) {} - }; - } - - protected boolean isOneway() { - return true; - } - - public void start(I iface, oneWayHasArgs_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.oneWayHasArgs(args.delay, resultHandler); - } - } - - public static class oneWay - extends org.apache.thrift.AsyncProcessFunction { - public oneWay() { - super("oneWay"); - } - - public oneWay_args getEmptyArgsInstance() { - return new oneWay_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(Void o) {} - - public void onError(Exception e) {} - }; - } - - protected boolean isOneway() { - return true; - } - - public void start(I iface, oneWay_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.oneWay(resultHandler); - } - } - - public static class oneWayWithError - extends org.apache.thrift.AsyncProcessFunction { - public oneWayWithError() { - super("oneWayWithError"); - } - - public oneWayWithError_args getEmptyArgsInstance() { - return new oneWayWithError_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(Void o) {} - - public void onError(Exception e) {} - }; - } - - protected boolean isOneway() { - return true; - } - - public void start(I iface, oneWayWithError_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.oneWayWithError(resultHandler); - } - } - - public static class data - extends org.apache.thrift.AsyncProcessFunction { - public data() { - super("data"); - } - - public data_args getEmptyArgsInstance() { - return new data_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(UserAccount o) { - data_result result = new data_result(); - result.success = o; - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - data_result result = new data_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start(I iface, data_args args, AsyncMethodCallback resultHandler) - throws TException { - iface.data(args.user, args.account, resultHandler); - } - } - } - - public static class sayHello_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("sayHello_args"); - - private static final org.apache.thrift.protocol.TField ZONE_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "zone", org.apache.thrift.protocol.TType.STRING, (short) 1); - private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "name", org.apache.thrift.protocol.TType.STRING, (short) 2); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new sayHello_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new sayHello_argsTupleSchemeFactory()); - } - - public String zone; // required - public String name; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ZONE((short) 1, "zone"), - NAME((short) 2, "name"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // ZONE - return ZONE; - case 2: // NAME - return NAME; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.ZONE, - new org.apache.thrift.meta_data.FieldMetaData( - "zone", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - tmpMap.put( - _Fields.NAME, - new org.apache.thrift.meta_data.FieldMetaData( - "name", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - sayHello_args.class, metaDataMap); - } - - public sayHello_args() {} - - public sayHello_args(String zone, String name) { - this(); - this.zone = zone; - this.name = name; - } - - /** Performs a deep copy on other. */ - public sayHello_args(sayHello_args other) { - if (other.isSetZone()) { - this.zone = other.zone; - } - if (other.isSetName()) { - this.name = other.name; - } - } - - public sayHello_args deepCopy() { - return new sayHello_args(this); - } - - @Override - public void clear() { - this.zone = null; - this.name = null; - } - - public String getZone() { - return this.zone; - } - - public sayHello_args setZone(String zone) { - this.zone = zone; - return this; - } - - public void unsetZone() { - this.zone = null; - } - - /** Returns true if field zone is set (has been assigned a value) and false otherwise */ - public boolean isSetZone() { - return this.zone != null; - } - - public void setZoneIsSet(boolean value) { - if (!value) { - this.zone = null; - } - } - - public String getName() { - return this.name; - } - - public sayHello_args setName(String name) { - this.name = name; - return this; - } - - public void unsetName() { - this.name = null; - } - - /** Returns true if field name is set (has been assigned a value) and false otherwise */ - public boolean isSetName() { - return this.name != null; - } - - public void setNameIsSet(boolean value) { - if (!value) { - this.name = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case ZONE: - if (value == null) { - unsetZone(); - } else { - setZone((String) value); - } - break; - - case NAME: - if (value == null) { - unsetName(); - } else { - setName((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case ZONE: - return getZone(); - - case NAME: - return getName(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case ZONE: - return isSetZone(); - case NAME: - return isSetName(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof sayHello_args) return this.equals((sayHello_args) that); - return false; - } - - public boolean equals(sayHello_args that) { - if (that == null) return false; - - boolean this_present_zone = true && this.isSetZone(); - boolean that_present_zone = true && that.isSetZone(); - if (this_present_zone || that_present_zone) { - if (!(this_present_zone && that_present_zone)) return false; - if (!this.zone.equals(that.zone)) return false; - } - - boolean this_present_name = true && this.isSetName(); - boolean that_present_name = true && that.isSetName(); - if (this_present_name || that_present_name) { - if (!(this_present_name && that_present_name)) return false; - if (!this.name.equals(that.name)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(sayHello_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetZone()).compareTo(other.isSetZone()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetZone()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.zone, other.zone); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetName()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("sayHello_args("); - boolean first = true; - - sb.append("zone:"); - if (this.zone == null) { - sb.append("null"); - } else { - sb.append(this.zone); - } - first = false; - if (!first) sb.append(", "); - sb.append("name:"); - if (this.name == null) { - sb.append("null"); - } else { - sb.append(this.name); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class sayHello_argsStandardSchemeFactory implements SchemeFactory { - public sayHello_argsStandardScheme getScheme() { - return new sayHello_argsStandardScheme(); - } - } - - private static class sayHello_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, sayHello_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // ZONE - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.zone = iprot.readString(); - struct.setZoneIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 2: // NAME - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.name = iprot.readString(); - struct.setNameIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, sayHello_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.zone != null) { - oprot.writeFieldBegin(ZONE_FIELD_DESC); - oprot.writeString(struct.zone); - oprot.writeFieldEnd(); - } - if (struct.name != null) { - oprot.writeFieldBegin(NAME_FIELD_DESC); - oprot.writeString(struct.name); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class sayHello_argsTupleSchemeFactory implements SchemeFactory { - public sayHello_argsTupleScheme getScheme() { - return new sayHello_argsTupleScheme(); - } - } - - private static class sayHello_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, sayHello_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetZone()) { - optionals.set(0); - } - if (struct.isSetName()) { - optionals.set(1); - } - oprot.writeBitSet(optionals, 2); - if (struct.isSetZone()) { - oprot.writeString(struct.zone); - } - if (struct.isSetName()) { - oprot.writeString(struct.name); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, sayHello_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(2); - if (incoming.get(0)) { - struct.zone = iprot.readString(); - struct.setZoneIsSet(true); - } - if (incoming.get(1)) { - struct.name = iprot.readString(); - struct.setNameIsSet(true); - } - } - } - } - - public static class sayHello_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("sayHello_result"); - - private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "success", org.apache.thrift.protocol.TType.STRING, (short) 0); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new sayHello_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new sayHello_resultTupleSchemeFactory()); - } - - public String success; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - SUCCESS((short) 0, "success"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 0: // SUCCESS - return SUCCESS; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.SUCCESS, - new org.apache.thrift.meta_data.FieldMetaData( - "success", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - sayHello_result.class, metaDataMap); - } - - public sayHello_result() {} - - public sayHello_result(String success) { - this(); - this.success = success; - } - - /** Performs a deep copy on other. */ - public sayHello_result(sayHello_result other) { - if (other.isSetSuccess()) { - this.success = other.success; - } - } - - public sayHello_result deepCopy() { - return new sayHello_result(this); - } - - @Override - public void clear() { - this.success = null; - } - - public String getSuccess() { - return this.success; - } - - public sayHello_result setSuccess(String success) { - this.success = success; - return this; - } - - public void unsetSuccess() { - this.success = null; - } - - /** Returns true if field success is set (has been assigned a value) and false otherwise */ - public boolean isSetSuccess() { - return this.success != null; - } - - public void setSuccessIsSet(boolean value) { - if (!value) { - this.success = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case SUCCESS: - if (value == null) { - unsetSuccess(); - } else { - setSuccess((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case SUCCESS: - return getSuccess(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case SUCCESS: - return isSetSuccess(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof sayHello_result) return this.equals((sayHello_result) that); - return false; - } - - public boolean equals(sayHello_result that) { - if (that == null) return false; - - boolean this_present_success = true && this.isSetSuccess(); - boolean that_present_success = true && that.isSetSuccess(); - if (this_present_success || that_present_success) { - if (!(this_present_success && that_present_success)) return false; - if (!this.success.equals(that.success)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(sayHello_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetSuccess()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("sayHello_result("); - boolean first = true; - - sb.append("success:"); - if (this.success == null) { - sb.append("null"); - } else { - sb.append(this.success); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class sayHello_resultStandardSchemeFactory implements SchemeFactory { - public sayHello_resultStandardScheme getScheme() { - return new sayHello_resultStandardScheme(); - } - } - - private static class sayHello_resultStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, sayHello_result struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 0: // SUCCESS - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, sayHello_result struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.success != null) { - oprot.writeFieldBegin(SUCCESS_FIELD_DESC); - oprot.writeString(struct.success); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class sayHello_resultTupleSchemeFactory implements SchemeFactory { - public sayHello_resultTupleScheme getScheme() { - return new sayHello_resultTupleScheme(); - } - } - - private static class sayHello_resultTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, sayHello_result struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetSuccess()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetSuccess()) { - oprot.writeString(struct.success); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, sayHello_result struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } - } - } - } - - public static class withDelay_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withDelay_args"); - - private static final org.apache.thrift.protocol.TField DELAY_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "delay", org.apache.thrift.protocol.TType.I32, (short) 1); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withDelay_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withDelay_argsTupleSchemeFactory()); - } - - public int delay; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - DELAY((short) 1, "delay"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // DELAY - return DELAY; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - private static final int __DELAY_ISSET_ID = 0; - private byte __isset_bitfield = 0; - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.DELAY, - new org.apache.thrift.meta_data.FieldMetaData( - "delay", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.I32))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withDelay_args.class, metaDataMap); - } - - public withDelay_args() {} - - public withDelay_args(int delay) { - this(); - this.delay = delay; - setDelayIsSet(true); - } - - /** Performs a deep copy on other. */ - public withDelay_args(withDelay_args other) { - __isset_bitfield = other.__isset_bitfield; - this.delay = other.delay; - } - - public withDelay_args deepCopy() { - return new withDelay_args(this); - } - - @Override - public void clear() { - setDelayIsSet(false); - this.delay = 0; - } - - public int getDelay() { - return this.delay; - } - - public withDelay_args setDelay(int delay) { - this.delay = delay; - setDelayIsSet(true); - return this; - } - - public void unsetDelay() { - __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DELAY_ISSET_ID); - } - - /** Returns true if field delay is set (has been assigned a value) and false otherwise */ - public boolean isSetDelay() { - return EncodingUtils.testBit(__isset_bitfield, __DELAY_ISSET_ID); - } - - public void setDelayIsSet(boolean value) { - __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DELAY_ISSET_ID, value); - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case DELAY: - if (value == null) { - unsetDelay(); - } else { - setDelay((Integer) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case DELAY: - return Integer.valueOf(getDelay()); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case DELAY: - return isSetDelay(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withDelay_args) return this.equals((withDelay_args) that); - return false; - } - - public boolean equals(withDelay_args that) { - if (that == null) return false; - - boolean this_present_delay = true; - boolean that_present_delay = true; - if (this_present_delay || that_present_delay) { - if (!(this_present_delay && that_present_delay)) return false; - if (this.delay != that.delay) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withDelay_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetDelay()).compareTo(other.isSetDelay()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetDelay()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.delay, other.delay); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withDelay_args("); - boolean first = true; - - sb.append("delay:"); - sb.append(this.delay); - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - // it doesn't seem like you should have to do this, but java serialization is wacky, and - // doesn't call the default constructor. - __isset_bitfield = 0; - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class withDelay_argsStandardSchemeFactory implements SchemeFactory { - public withDelay_argsStandardScheme getScheme() { - return new withDelay_argsStandardScheme(); - } - } - - private static class withDelay_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withDelay_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // DELAY - if (schemeField.type == org.apache.thrift.protocol.TType.I32) { - struct.delay = iprot.readI32(); - struct.setDelayIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withDelay_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldBegin(DELAY_FIELD_DESC); - oprot.writeI32(struct.delay); - oprot.writeFieldEnd(); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withDelay_argsTupleSchemeFactory implements SchemeFactory { - public withDelay_argsTupleScheme getScheme() { - return new withDelay_argsTupleScheme(); - } - } - - private static class withDelay_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withDelay_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetDelay()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetDelay()) { - oprot.writeI32(struct.delay); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withDelay_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.delay = iprot.readI32(); - struct.setDelayIsSet(true); - } - } - } - } - - public static class withDelay_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withDelay_result"); - - private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "success", org.apache.thrift.protocol.TType.STRING, (short) 0); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withDelay_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withDelay_resultTupleSchemeFactory()); - } - - public String success; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - SUCCESS((short) 0, "success"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 0: // SUCCESS - return SUCCESS; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.SUCCESS, - new org.apache.thrift.meta_data.FieldMetaData( - "success", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withDelay_result.class, metaDataMap); - } - - public withDelay_result() {} - - public withDelay_result(String success) { - this(); - this.success = success; - } - - /** Performs a deep copy on other. */ - public withDelay_result(withDelay_result other) { - if (other.isSetSuccess()) { - this.success = other.success; - } - } - - public withDelay_result deepCopy() { - return new withDelay_result(this); - } - - @Override - public void clear() { - this.success = null; - } - - public String getSuccess() { - return this.success; - } - - public withDelay_result setSuccess(String success) { - this.success = success; - return this; - } - - public void unsetSuccess() { - this.success = null; - } - - /** Returns true if field success is set (has been assigned a value) and false otherwise */ - public boolean isSetSuccess() { - return this.success != null; - } - - public void setSuccessIsSet(boolean value) { - if (!value) { - this.success = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case SUCCESS: - if (value == null) { - unsetSuccess(); - } else { - setSuccess((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case SUCCESS: - return getSuccess(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case SUCCESS: - return isSetSuccess(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withDelay_result) return this.equals((withDelay_result) that); - return false; - } - - public boolean equals(withDelay_result that) { - if (that == null) return false; - - boolean this_present_success = true && this.isSetSuccess(); - boolean that_present_success = true && that.isSetSuccess(); - if (this_present_success || that_present_success) { - if (!(this_present_success && that_present_success)) return false; - if (!this.success.equals(that.success)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withDelay_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetSuccess()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withDelay_result("); - boolean first = true; - - sb.append("success:"); - if (this.success == null) { - sb.append("null"); - } else { - sb.append(this.success); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class withDelay_resultStandardSchemeFactory implements SchemeFactory { - public withDelay_resultStandardScheme getScheme() { - return new withDelay_resultStandardScheme(); - } - } - - private static class withDelay_resultStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withDelay_result struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 0: // SUCCESS - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withDelay_result struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.success != null) { - oprot.writeFieldBegin(SUCCESS_FIELD_DESC); - oprot.writeString(struct.success); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withDelay_resultTupleSchemeFactory implements SchemeFactory { - public withDelay_resultTupleScheme getScheme() { - return new withDelay_resultTupleScheme(); - } - } - - private static class withDelay_resultTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withDelay_result struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetSuccess()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetSuccess()) { - oprot.writeString(struct.success); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withDelay_result struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } - } - } - } - - public static class withoutArgs_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withoutArgs_args"); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withoutArgs_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withoutArgs_argsTupleSchemeFactory()); - } - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ; - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withoutArgs_args.class, metaDataMap); - } - - public withoutArgs_args() {} - - /** Performs a deep copy on other. */ - public withoutArgs_args(withoutArgs_args other) {} - - public withoutArgs_args deepCopy() { - return new withoutArgs_args(this); - } - - @Override - public void clear() {} - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withoutArgs_args) return this.equals((withoutArgs_args) that); - return false; - } - - public boolean equals(withoutArgs_args that) { - if (that == null) return false; - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withoutArgs_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withoutArgs_args("); - boolean first = true; - - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class withoutArgs_argsStandardSchemeFactory implements SchemeFactory { - public withoutArgs_argsStandardScheme getScheme() { - return new withoutArgs_argsStandardScheme(); - } - } - - private static class withoutArgs_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withoutArgs_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withoutArgs_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withoutArgs_argsTupleSchemeFactory implements SchemeFactory { - public withoutArgs_argsTupleScheme getScheme() { - return new withoutArgs_argsTupleScheme(); - } - } - - private static class withoutArgs_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withoutArgs_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withoutArgs_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - } - } - } - - public static class withoutArgs_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withoutArgs_result"); - - private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "success", org.apache.thrift.protocol.TType.STRING, (short) 0); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withoutArgs_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withoutArgs_resultTupleSchemeFactory()); - } - - public String success; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - SUCCESS((short) 0, "success"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 0: // SUCCESS - return SUCCESS; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.SUCCESS, - new org.apache.thrift.meta_data.FieldMetaData( - "success", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withoutArgs_result.class, metaDataMap); - } - - public withoutArgs_result() {} - - public withoutArgs_result(String success) { - this(); - this.success = success; - } - - /** Performs a deep copy on other. */ - public withoutArgs_result(withoutArgs_result other) { - if (other.isSetSuccess()) { - this.success = other.success; - } - } - - public withoutArgs_result deepCopy() { - return new withoutArgs_result(this); - } - - @Override - public void clear() { - this.success = null; - } - - public String getSuccess() { - return this.success; - } - - public withoutArgs_result setSuccess(String success) { - this.success = success; - return this; - } - - public void unsetSuccess() { - this.success = null; - } - - /** Returns true if field success is set (has been assigned a value) and false otherwise */ - public boolean isSetSuccess() { - return this.success != null; - } - - public void setSuccessIsSet(boolean value) { - if (!value) { - this.success = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case SUCCESS: - if (value == null) { - unsetSuccess(); - } else { - setSuccess((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case SUCCESS: - return getSuccess(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case SUCCESS: - return isSetSuccess(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withoutArgs_result) return this.equals((withoutArgs_result) that); - return false; - } - - public boolean equals(withoutArgs_result that) { - if (that == null) return false; - - boolean this_present_success = true && this.isSetSuccess(); - boolean that_present_success = true && that.isSetSuccess(); - if (this_present_success || that_present_success) { - if (!(this_present_success && that_present_success)) return false; - if (!this.success.equals(that.success)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withoutArgs_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetSuccess()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withoutArgs_result("); - boolean first = true; - - sb.append("success:"); - if (this.success == null) { - sb.append("null"); - } else { - sb.append(this.success); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class withoutArgs_resultStandardSchemeFactory implements SchemeFactory { - public withoutArgs_resultStandardScheme getScheme() { - return new withoutArgs_resultStandardScheme(); - } - } - - private static class withoutArgs_resultStandardScheme - extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withoutArgs_result struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 0: // SUCCESS - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withoutArgs_result struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.success != null) { - oprot.writeFieldBegin(SUCCESS_FIELD_DESC); - oprot.writeString(struct.success); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withoutArgs_resultTupleSchemeFactory implements SchemeFactory { - public withoutArgs_resultTupleScheme getScheme() { - return new withoutArgs_resultTupleScheme(); - } - } - - private static class withoutArgs_resultTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withoutArgs_result struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetSuccess()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetSuccess()) { - oprot.writeString(struct.success); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withoutArgs_result struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } - } - } - } - - public static class withError_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withError_args"); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withError_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withError_argsTupleSchemeFactory()); - } - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ; - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withError_args.class, metaDataMap); - } - - public withError_args() {} - - /** Performs a deep copy on other. */ - public withError_args(withError_args other) {} - - public withError_args deepCopy() { - return new withError_args(this); - } - - @Override - public void clear() {} - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withError_args) return this.equals((withError_args) that); - return false; - } - - public boolean equals(withError_args that) { - if (that == null) return false; - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withError_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withError_args("); - boolean first = true; - - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class withError_argsStandardSchemeFactory implements SchemeFactory { - public withError_argsStandardScheme getScheme() { - return new withError_argsStandardScheme(); - } - } - - private static class withError_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withError_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withError_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withError_argsTupleSchemeFactory implements SchemeFactory { - public withError_argsTupleScheme getScheme() { - return new withError_argsTupleScheme(); - } - } - - private static class withError_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withError_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withError_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - } - } - } - - public static class withError_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withError_result"); - - private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "success", org.apache.thrift.protocol.TType.STRING, (short) 0); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withError_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withError_resultTupleSchemeFactory()); - } - - public String success; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - SUCCESS((short) 0, "success"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 0: // SUCCESS - return SUCCESS; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.SUCCESS, - new org.apache.thrift.meta_data.FieldMetaData( - "success", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withError_result.class, metaDataMap); - } - - public withError_result() {} - - public withError_result(String success) { - this(); - this.success = success; - } - - /** Performs a deep copy on other. */ - public withError_result(withError_result other) { - if (other.isSetSuccess()) { - this.success = other.success; - } - } - - public withError_result deepCopy() { - return new withError_result(this); - } - - @Override - public void clear() { - this.success = null; - } - - public String getSuccess() { - return this.success; - } - - public withError_result setSuccess(String success) { - this.success = success; - return this; - } - - public void unsetSuccess() { - this.success = null; - } - - /** Returns true if field success is set (has been assigned a value) and false otherwise */ - public boolean isSetSuccess() { - return this.success != null; - } - - public void setSuccessIsSet(boolean value) { - if (!value) { - this.success = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case SUCCESS: - if (value == null) { - unsetSuccess(); - } else { - setSuccess((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case SUCCESS: - return getSuccess(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case SUCCESS: - return isSetSuccess(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withError_result) return this.equals((withError_result) that); - return false; - } - - public boolean equals(withError_result that) { - if (that == null) return false; - - boolean this_present_success = true && this.isSetSuccess(); - boolean that_present_success = true && that.isSetSuccess(); - if (this_present_success || that_present_success) { - if (!(this_present_success && that_present_success)) return false; - if (!this.success.equals(that.success)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withError_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetSuccess()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withError_result("); - boolean first = true; - - sb.append("success:"); - if (this.success == null) { - sb.append("null"); - } else { - sb.append(this.success); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class withError_resultStandardSchemeFactory implements SchemeFactory { - public withError_resultStandardScheme getScheme() { - return new withError_resultStandardScheme(); - } - } - - private static class withError_resultStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withError_result struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 0: // SUCCESS - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withError_result struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.success != null) { - oprot.writeFieldBegin(SUCCESS_FIELD_DESC); - oprot.writeString(struct.success); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withError_resultTupleSchemeFactory implements SchemeFactory { - public withError_resultTupleScheme getScheme() { - return new withError_resultTupleScheme(); - } - } - - private static class withError_resultTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withError_result struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetSuccess()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetSuccess()) { - oprot.writeString(struct.success); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withError_result struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } - } - } - } - - public static class withCollisioin_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withCollisioin_args"); - - private static final org.apache.thrift.protocol.TField INPUT_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "input", org.apache.thrift.protocol.TType.STRING, (short) 3333); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withCollisioin_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withCollisioin_argsTupleSchemeFactory()); - } - - public String input; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - INPUT((short) 3333, "input"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 3333: // INPUT - return INPUT; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.INPUT, - new org.apache.thrift.meta_data.FieldMetaData( - "input", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withCollisioin_args.class, metaDataMap); - } - - public withCollisioin_args() {} - - public withCollisioin_args(String input) { - this(); - this.input = input; - } - - /** Performs a deep copy on other. */ - public withCollisioin_args(withCollisioin_args other) { - if (other.isSetInput()) { - this.input = other.input; - } - } - - public withCollisioin_args deepCopy() { - return new withCollisioin_args(this); - } - - @Override - public void clear() { - this.input = null; - } - - public String getInput() { - return this.input; - } - - public withCollisioin_args setInput(String input) { - this.input = input; - return this; - } - - public void unsetInput() { - this.input = null; - } - - /** Returns true if field input is set (has been assigned a value) and false otherwise */ - public boolean isSetInput() { - return this.input != null; - } - - public void setInputIsSet(boolean value) { - if (!value) { - this.input = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case INPUT: - if (value == null) { - unsetInput(); - } else { - setInput((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case INPUT: - return getInput(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case INPUT: - return isSetInput(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withCollisioin_args) return this.equals((withCollisioin_args) that); - return false; - } - - public boolean equals(withCollisioin_args that) { - if (that == null) return false; - - boolean this_present_input = true && this.isSetInput(); - boolean that_present_input = true && that.isSetInput(); - if (this_present_input || that_present_input) { - if (!(this_present_input && that_present_input)) return false; - if (!this.input.equals(that.input)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withCollisioin_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetInput()).compareTo(other.isSetInput()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetInput()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.input, other.input); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withCollisioin_args("); - boolean first = true; - - sb.append("input:"); - if (this.input == null) { - sb.append("null"); - } else { - sb.append(this.input); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class withCollisioin_argsStandardSchemeFactory implements SchemeFactory { - public withCollisioin_argsStandardScheme getScheme() { - return new withCollisioin_argsStandardScheme(); - } - } - - private static class withCollisioin_argsStandardScheme - extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withCollisioin_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 3333: // INPUT - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.input = iprot.readString(); - struct.setInputIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withCollisioin_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.input != null) { - oprot.writeFieldBegin(INPUT_FIELD_DESC); - oprot.writeString(struct.input); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withCollisioin_argsTupleSchemeFactory implements SchemeFactory { - public withCollisioin_argsTupleScheme getScheme() { - return new withCollisioin_argsTupleScheme(); - } - } - - private static class withCollisioin_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withCollisioin_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetInput()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetInput()) { - oprot.writeString(struct.input); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withCollisioin_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.input = iprot.readString(); - struct.setInputIsSet(true); - } - } - } - } - - public static class withCollisioin_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withCollisioin_result"); - - private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "success", org.apache.thrift.protocol.TType.STRING, (short) 0); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withCollisioin_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withCollisioin_resultTupleSchemeFactory()); - } - - public String success; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - SUCCESS((short) 0, "success"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 0: // SUCCESS - return SUCCESS; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.SUCCESS, - new org.apache.thrift.meta_data.FieldMetaData( - "success", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withCollisioin_result.class, metaDataMap); - } - - public withCollisioin_result() {} - - public withCollisioin_result(String success) { - this(); - this.success = success; - } - - /** Performs a deep copy on other. */ - public withCollisioin_result(withCollisioin_result other) { - if (other.isSetSuccess()) { - this.success = other.success; - } - } - - public withCollisioin_result deepCopy() { - return new withCollisioin_result(this); - } - - @Override - public void clear() { - this.success = null; - } - - public String getSuccess() { - return this.success; - } - - public withCollisioin_result setSuccess(String success) { - this.success = success; - return this; - } - - public void unsetSuccess() { - this.success = null; - } - - /** Returns true if field success is set (has been assigned a value) and false otherwise */ - public boolean isSetSuccess() { - return this.success != null; - } - - public void setSuccessIsSet(boolean value) { - if (!value) { - this.success = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case SUCCESS: - if (value == null) { - unsetSuccess(); - } else { - setSuccess((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case SUCCESS: - return getSuccess(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case SUCCESS: - return isSetSuccess(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withCollisioin_result) return this.equals((withCollisioin_result) that); - return false; - } - - public boolean equals(withCollisioin_result that) { - if (that == null) return false; - - boolean this_present_success = true && this.isSetSuccess(); - boolean that_present_success = true && that.isSetSuccess(); - if (this_present_success || that_present_success) { - if (!(this_present_success && that_present_success)) return false; - if (!this.success.equals(that.success)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withCollisioin_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetSuccess()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withCollisioin_result("); - boolean first = true; - - sb.append("success:"); - if (this.success == null) { - sb.append("null"); - } else { - sb.append(this.success); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class withCollisioin_resultStandardSchemeFactory implements SchemeFactory { - public withCollisioin_resultStandardScheme getScheme() { - return new withCollisioin_resultStandardScheme(); - } - } - - private static class withCollisioin_resultStandardScheme - extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withCollisioin_result struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 0: // SUCCESS - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withCollisioin_result struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.success != null) { - oprot.writeFieldBegin(SUCCESS_FIELD_DESC); - oprot.writeString(struct.success); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withCollisioin_resultTupleSchemeFactory implements SchemeFactory { - public withCollisioin_resultTupleScheme getScheme() { - return new withCollisioin_resultTupleScheme(); - } - } - - private static class withCollisioin_resultTupleScheme - extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withCollisioin_result struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetSuccess()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetSuccess()) { - oprot.writeString(struct.success); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withCollisioin_result struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } - } - } - } - - public static class noReturn_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("noReturn_args"); - - private static final org.apache.thrift.protocol.TField DELAY_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "delay", org.apache.thrift.protocol.TType.I32, (short) 1); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new noReturn_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new noReturn_argsTupleSchemeFactory()); - } - - public int delay; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - DELAY((short) 1, "delay"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // DELAY - return DELAY; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - private static final int __DELAY_ISSET_ID = 0; - private byte __isset_bitfield = 0; - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.DELAY, - new org.apache.thrift.meta_data.FieldMetaData( - "delay", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.I32))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - noReturn_args.class, metaDataMap); - } - - public noReturn_args() {} - - public noReturn_args(int delay) { - this(); - this.delay = delay; - setDelayIsSet(true); - } - - /** Performs a deep copy on other. */ - public noReturn_args(noReturn_args other) { - __isset_bitfield = other.__isset_bitfield; - this.delay = other.delay; - } - - public noReturn_args deepCopy() { - return new noReturn_args(this); - } - - @Override - public void clear() { - setDelayIsSet(false); - this.delay = 0; - } - - public int getDelay() { - return this.delay; - } - - public noReturn_args setDelay(int delay) { - this.delay = delay; - setDelayIsSet(true); - return this; - } - - public void unsetDelay() { - __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DELAY_ISSET_ID); - } - - /** Returns true if field delay is set (has been assigned a value) and false otherwise */ - public boolean isSetDelay() { - return EncodingUtils.testBit(__isset_bitfield, __DELAY_ISSET_ID); - } - - public void setDelayIsSet(boolean value) { - __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DELAY_ISSET_ID, value); - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case DELAY: - if (value == null) { - unsetDelay(); - } else { - setDelay((Integer) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case DELAY: - return Integer.valueOf(getDelay()); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case DELAY: - return isSetDelay(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof noReturn_args) return this.equals((noReturn_args) that); - return false; - } - - public boolean equals(noReturn_args that) { - if (that == null) return false; - - boolean this_present_delay = true; - boolean that_present_delay = true; - if (this_present_delay || that_present_delay) { - if (!(this_present_delay && that_present_delay)) return false; - if (this.delay != that.delay) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(noReturn_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetDelay()).compareTo(other.isSetDelay()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetDelay()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.delay, other.delay); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("noReturn_args("); - boolean first = true; - - sb.append("delay:"); - sb.append(this.delay); - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - // it doesn't seem like you should have to do this, but java serialization is wacky, and - // doesn't call the default constructor. - __isset_bitfield = 0; - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class noReturn_argsStandardSchemeFactory implements SchemeFactory { - public noReturn_argsStandardScheme getScheme() { - return new noReturn_argsStandardScheme(); - } - } - - private static class noReturn_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, noReturn_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // DELAY - if (schemeField.type == org.apache.thrift.protocol.TType.I32) { - struct.delay = iprot.readI32(); - struct.setDelayIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, noReturn_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldBegin(DELAY_FIELD_DESC); - oprot.writeI32(struct.delay); - oprot.writeFieldEnd(); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class noReturn_argsTupleSchemeFactory implements SchemeFactory { - public noReturn_argsTupleScheme getScheme() { - return new noReturn_argsTupleScheme(); - } - } - - private static class noReturn_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, noReturn_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetDelay()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetDelay()) { - oprot.writeI32(struct.delay); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, noReturn_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.delay = iprot.readI32(); - struct.setDelayIsSet(true); - } - } - } - } - - public static class noReturn_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("noReturn_result"); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new noReturn_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new noReturn_resultTupleSchemeFactory()); - } - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ; - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - noReturn_result.class, metaDataMap); - } - - public noReturn_result() {} - - /** Performs a deep copy on other. */ - public noReturn_result(noReturn_result other) {} - - public noReturn_result deepCopy() { - return new noReturn_result(this); - } - - @Override - public void clear() {} - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof noReturn_result) return this.equals((noReturn_result) that); - return false; - } - - public boolean equals(noReturn_result that) { - if (that == null) return false; - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(noReturn_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("noReturn_result("); - boolean first = true; - - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class noReturn_resultStandardSchemeFactory implements SchemeFactory { - public noReturn_resultStandardScheme getScheme() { - return new noReturn_resultStandardScheme(); - } - } - - private static class noReturn_resultStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, noReturn_result struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, noReturn_result struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class noReturn_resultTupleSchemeFactory implements SchemeFactory { - public noReturn_resultTupleScheme getScheme() { - return new noReturn_resultTupleScheme(); - } - } - - private static class noReturn_resultTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, noReturn_result struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, noReturn_result struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - } - } - } - - public static class oneWayHasArgs_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("oneWayHasArgs_args"); - - private static final org.apache.thrift.protocol.TField DELAY_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "delay", org.apache.thrift.protocol.TType.I32, (short) 1); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new oneWayHasArgs_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new oneWayHasArgs_argsTupleSchemeFactory()); - } - - public int delay; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - DELAY((short) 1, "delay"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // DELAY - return DELAY; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - private static final int __DELAY_ISSET_ID = 0; - private byte __isset_bitfield = 0; - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.DELAY, - new org.apache.thrift.meta_data.FieldMetaData( - "delay", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.I32))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - oneWayHasArgs_args.class, metaDataMap); - } - - public oneWayHasArgs_args() {} - - public oneWayHasArgs_args(int delay) { - this(); - this.delay = delay; - setDelayIsSet(true); - } - - /** Performs a deep copy on other. */ - public oneWayHasArgs_args(oneWayHasArgs_args other) { - __isset_bitfield = other.__isset_bitfield; - this.delay = other.delay; - } - - public oneWayHasArgs_args deepCopy() { - return new oneWayHasArgs_args(this); - } - - @Override - public void clear() { - setDelayIsSet(false); - this.delay = 0; - } - - public int getDelay() { - return this.delay; - } - - public oneWayHasArgs_args setDelay(int delay) { - this.delay = delay; - setDelayIsSet(true); - return this; - } - - public void unsetDelay() { - __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DELAY_ISSET_ID); - } - - /** Returns true if field delay is set (has been assigned a value) and false otherwise */ - public boolean isSetDelay() { - return EncodingUtils.testBit(__isset_bitfield, __DELAY_ISSET_ID); - } - - public void setDelayIsSet(boolean value) { - __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DELAY_ISSET_ID, value); - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case DELAY: - if (value == null) { - unsetDelay(); - } else { - setDelay((Integer) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case DELAY: - return Integer.valueOf(getDelay()); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case DELAY: - return isSetDelay(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof oneWayHasArgs_args) return this.equals((oneWayHasArgs_args) that); - return false; - } - - public boolean equals(oneWayHasArgs_args that) { - if (that == null) return false; - - boolean this_present_delay = true; - boolean that_present_delay = true; - if (this_present_delay || that_present_delay) { - if (!(this_present_delay && that_present_delay)) return false; - if (this.delay != that.delay) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(oneWayHasArgs_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetDelay()).compareTo(other.isSetDelay()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetDelay()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.delay, other.delay); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("oneWayHasArgs_args("); - boolean first = true; - - sb.append("delay:"); - sb.append(this.delay); - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - // it doesn't seem like you should have to do this, but java serialization is wacky, and - // doesn't call the default constructor. - __isset_bitfield = 0; - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class oneWayHasArgs_argsStandardSchemeFactory implements SchemeFactory { - public oneWayHasArgs_argsStandardScheme getScheme() { - return new oneWayHasArgs_argsStandardScheme(); - } - } - - private static class oneWayHasArgs_argsStandardScheme - extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, oneWayHasArgs_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // DELAY - if (schemeField.type == org.apache.thrift.protocol.TType.I32) { - struct.delay = iprot.readI32(); - struct.setDelayIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, oneWayHasArgs_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldBegin(DELAY_FIELD_DESC); - oprot.writeI32(struct.delay); - oprot.writeFieldEnd(); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class oneWayHasArgs_argsTupleSchemeFactory implements SchemeFactory { - public oneWayHasArgs_argsTupleScheme getScheme() { - return new oneWayHasArgs_argsTupleScheme(); - } - } - - private static class oneWayHasArgs_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, oneWayHasArgs_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetDelay()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetDelay()) { - oprot.writeI32(struct.delay); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, oneWayHasArgs_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.delay = iprot.readI32(); - struct.setDelayIsSet(true); - } - } - } - } - - public static class oneWay_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("oneWay_args"); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new oneWay_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new oneWay_argsTupleSchemeFactory()); - } - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ; - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - oneWay_args.class, metaDataMap); - } - - public oneWay_args() {} - - /** Performs a deep copy on other. */ - public oneWay_args(oneWay_args other) {} - - public oneWay_args deepCopy() { - return new oneWay_args(this); - } - - @Override - public void clear() {} - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof oneWay_args) return this.equals((oneWay_args) that); - return false; - } - - public boolean equals(oneWay_args that) { - if (that == null) return false; - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(oneWay_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("oneWay_args("); - boolean first = true; - - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class oneWay_argsStandardSchemeFactory implements SchemeFactory { - public oneWay_argsStandardScheme getScheme() { - return new oneWay_argsStandardScheme(); - } - } - - private static class oneWay_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, oneWay_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, oneWay_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class oneWay_argsTupleSchemeFactory implements SchemeFactory { - public oneWay_argsTupleScheme getScheme() { - return new oneWay_argsTupleScheme(); - } - } - - private static class oneWay_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, oneWay_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, oneWay_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - } - } - } - - public static class oneWayWithError_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("oneWayWithError_args"); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new oneWayWithError_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new oneWayWithError_argsTupleSchemeFactory()); - } - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ; - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - oneWayWithError_args.class, metaDataMap); - } - - public oneWayWithError_args() {} - - /** Performs a deep copy on other. */ - public oneWayWithError_args(oneWayWithError_args other) {} - - public oneWayWithError_args deepCopy() { - return new oneWayWithError_args(this); - } - - @Override - public void clear() {} - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof oneWayWithError_args) return this.equals((oneWayWithError_args) that); - return false; - } - - public boolean equals(oneWayWithError_args that) { - if (that == null) return false; - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(oneWayWithError_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("oneWayWithError_args("); - boolean first = true; - - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class oneWayWithError_argsStandardSchemeFactory implements SchemeFactory { - public oneWayWithError_argsStandardScheme getScheme() { - return new oneWayWithError_argsStandardScheme(); - } - } - - private static class oneWayWithError_argsStandardScheme - extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, oneWayWithError_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, oneWayWithError_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class oneWayWithError_argsTupleSchemeFactory implements SchemeFactory { - public oneWayWithError_argsTupleScheme getScheme() { - return new oneWayWithError_argsTupleScheme(); - } - } - - private static class oneWayWithError_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, oneWayWithError_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, oneWayWithError_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - } - } - } - - public static class data_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("data_args"); - - private static final org.apache.thrift.protocol.TField USER_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "user", org.apache.thrift.protocol.TType.STRUCT, (short) 1); - private static final org.apache.thrift.protocol.TField ACCOUNT_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "account", org.apache.thrift.protocol.TType.STRUCT, (short) 2); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new data_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new data_argsTupleSchemeFactory()); - } - - public User user; // required - public Account account; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - USER((short) 1, "user"), - ACCOUNT((short) 2, "account"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // USER - return USER; - case 2: // ACCOUNT - return ACCOUNT; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.USER, - new org.apache.thrift.meta_data.FieldMetaData( - "user", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.StructMetaData( - org.apache.thrift.protocol.TType.STRUCT, User.class))); - tmpMap.put( - _Fields.ACCOUNT, - new org.apache.thrift.meta_data.FieldMetaData( - "account", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.StructMetaData( - org.apache.thrift.protocol.TType.STRUCT, Account.class))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(data_args.class, metaDataMap); - } - - public data_args() {} - - public data_args(User user, Account account) { - this(); - this.user = user; - this.account = account; - } - - /** Performs a deep copy on other. */ - public data_args(data_args other) { - if (other.isSetUser()) { - this.user = new User(other.user); - } - if (other.isSetAccount()) { - this.account = new Account(other.account); - } - } - - public data_args deepCopy() { - return new data_args(this); - } - - @Override - public void clear() { - this.user = null; - this.account = null; - } - - public User getUser() { - return this.user; - } - - public data_args setUser(User user) { - this.user = user; - return this; - } - - public void unsetUser() { - this.user = null; - } - - /** Returns true if field user is set (has been assigned a value) and false otherwise */ - public boolean isSetUser() { - return this.user != null; - } - - public void setUserIsSet(boolean value) { - if (!value) { - this.user = null; - } - } - - public Account getAccount() { - return this.account; - } - - public data_args setAccount(Account account) { - this.account = account; - return this; - } - - public void unsetAccount() { - this.account = null; - } - - /** Returns true if field account is set (has been assigned a value) and false otherwise */ - public boolean isSetAccount() { - return this.account != null; - } - - public void setAccountIsSet(boolean value) { - if (!value) { - this.account = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case USER: - if (value == null) { - unsetUser(); - } else { - setUser((User) value); - } - break; - - case ACCOUNT: - if (value == null) { - unsetAccount(); - } else { - setAccount((Account) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case USER: - return getUser(); - - case ACCOUNT: - return getAccount(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case USER: - return isSetUser(); - case ACCOUNT: - return isSetAccount(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof data_args) return this.equals((data_args) that); - return false; - } - - public boolean equals(data_args that) { - if (that == null) return false; - - boolean this_present_user = true && this.isSetUser(); - boolean that_present_user = true && that.isSetUser(); - if (this_present_user || that_present_user) { - if (!(this_present_user && that_present_user)) return false; - if (!this.user.equals(that.user)) return false; - } - - boolean this_present_account = true && this.isSetAccount(); - boolean that_present_account = true && that.isSetAccount(); - if (this_present_account || that_present_account) { - if (!(this_present_account && that_present_account)) return false; - if (!this.account.equals(that.account)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(data_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetUser()).compareTo(other.isSetUser()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetUser()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.user, other.user); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetAccount()).compareTo(other.isSetAccount()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetAccount()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.account, other.account); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("data_args("); - boolean first = true; - - sb.append("user:"); - if (this.user == null) { - sb.append("null"); - } else { - sb.append(this.user); - } - first = false; - if (!first) sb.append(", "); - sb.append("account:"); - if (this.account == null) { - sb.append("null"); - } else { - sb.append(this.account); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - if (user != null) { - user.validate(); - } - if (account != null) { - account.validate(); - } - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class data_argsStandardSchemeFactory implements SchemeFactory { - public data_argsStandardScheme getScheme() { - return new data_argsStandardScheme(); - } - } - - private static class data_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, data_args struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // USER - if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { - struct.user = new User(); - struct.user.read(iprot); - struct.setUserIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 2: // ACCOUNT - if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { - struct.account = new Account(); - struct.account.read(iprot); - struct.setAccountIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, data_args struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.user != null) { - oprot.writeFieldBegin(USER_FIELD_DESC); - struct.user.write(oprot); - oprot.writeFieldEnd(); - } - if (struct.account != null) { - oprot.writeFieldBegin(ACCOUNT_FIELD_DESC); - struct.account.write(oprot); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class data_argsTupleSchemeFactory implements SchemeFactory { - public data_argsTupleScheme getScheme() { - return new data_argsTupleScheme(); - } - } - - private static class data_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, data_args struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetUser()) { - optionals.set(0); - } - if (struct.isSetAccount()) { - optionals.set(1); - } - oprot.writeBitSet(optionals, 2); - if (struct.isSetUser()) { - struct.user.write(oprot); - } - if (struct.isSetAccount()) { - struct.account.write(oprot); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, data_args struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(2); - if (incoming.get(0)) { - struct.user = new User(); - struct.user.read(iprot); - struct.setUserIsSet(true); - } - if (incoming.get(1)) { - struct.account = new Account(); - struct.account.read(iprot); - struct.setAccountIsSet(true); - } - } - } - } - - public static class data_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("data_result"); - - private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "success", org.apache.thrift.protocol.TType.STRUCT, (short) 0); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new data_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new data_resultTupleSchemeFactory()); - } - - public UserAccount success; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - SUCCESS((short) 0, "success"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 0: // SUCCESS - return SUCCESS; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.SUCCESS, - new org.apache.thrift.meta_data.FieldMetaData( - "success", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.StructMetaData( - org.apache.thrift.protocol.TType.STRUCT, UserAccount.class))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - data_result.class, metaDataMap); - } - - public data_result() {} - - public data_result(UserAccount success) { - this(); - this.success = success; - } - - /** Performs a deep copy on other. */ - public data_result(data_result other) { - if (other.isSetSuccess()) { - this.success = new UserAccount(other.success); - } - } - - public data_result deepCopy() { - return new data_result(this); - } - - @Override - public void clear() { - this.success = null; - } - - public UserAccount getSuccess() { - return this.success; - } - - public data_result setSuccess(UserAccount success) { - this.success = success; - return this; - } - - public void unsetSuccess() { - this.success = null; - } - - /** Returns true if field success is set (has been assigned a value) and false otherwise */ - public boolean isSetSuccess() { - return this.success != null; - } - - public void setSuccessIsSet(boolean value) { - if (!value) { - this.success = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case SUCCESS: - if (value == null) { - unsetSuccess(); - } else { - setSuccess((UserAccount) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case SUCCESS: - return getSuccess(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case SUCCESS: - return isSetSuccess(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof data_result) return this.equals((data_result) that); - return false; - } - - public boolean equals(data_result that) { - if (that == null) return false; - - boolean this_present_success = true && this.isSetSuccess(); - boolean that_present_success = true && that.isSetSuccess(); - if (this_present_success || that_present_success) { - if (!(this_present_success && that_present_success)) return false; - if (!this.success.equals(that.success)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(data_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetSuccess()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("data_result("); - boolean first = true; - - sb.append("success:"); - if (this.success == null) { - sb.append("null"); - } else { - sb.append(this.success); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws TException { - // check for required fields - // check for sub-struct validity - if (success != null) { - success.validate(); - } - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (TException te) { - throw new java.io.IOException(te); - } - } - - private static class data_resultStandardSchemeFactory implements SchemeFactory { - public data_resultStandardScheme getScheme() { - return new data_resultStandardScheme(); - } - } - - private static class data_resultStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, data_result struct) - throws TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 0: // SUCCESS - if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { - struct.success = new UserAccount(); - struct.success.read(iprot); - struct.setSuccessIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, data_result struct) - throws TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.success != null) { - oprot.writeFieldBegin(SUCCESS_FIELD_DESC); - struct.success.write(oprot); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class data_resultTupleSchemeFactory implements SchemeFactory { - public data_resultTupleScheme getScheme() { - return new data_resultTupleScheme(); - } - } - - private static class data_resultTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, data_result struct) - throws TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetSuccess()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetSuccess()) { - struct.success.write(oprot); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, data_result struct) - throws TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.success = new UserAccount(); - struct.success.read(iprot); - struct.setSuccessIsSet(true); - } - } - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/User.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/User.java deleted file mode 100644 index ea27a86d548f..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/User.java +++ /dev/null @@ -1,579 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; - -import java.util.Collections; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; -import org.apache.thrift.EncodingUtils; -import org.apache.thrift.protocol.TTupleProtocol; -import org.apache.thrift.scheme.IScheme; -import org.apache.thrift.scheme.SchemeFactory; -import org.apache.thrift.scheme.StandardScheme; -import org.apache.thrift.scheme.TupleScheme; - -@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) -public class User - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("User"); - - private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "name", org.apache.thrift.protocol.TType.STRING, (short) 1); - private static final org.apache.thrift.protocol.TField USER_ID_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "userId", org.apache.thrift.protocol.TType.STRING, (short) 2); - private static final org.apache.thrift.protocol.TField AGE_FIELD_DESC = - new org.apache.thrift.protocol.TField("age", org.apache.thrift.protocol.TType.I32, (short) 3); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new UserStandardSchemeFactory()); - schemes.put(TupleScheme.class, new UserTupleSchemeFactory()); - } - - public String name; // required - public String userId; // required - public int age; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - NAME((short) 1, "name"), - USER_ID((short) 2, "userId"), - AGE((short) 3, "age"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // NAME - return NAME; - case 2: // USER_ID - return USER_ID; - case 3: // AGE - return AGE; - default: - return null; - } - } - - /** Find the _Fields constant that matches fieldId, throwing an exception if it is not found. */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - private static final int __AGE_ISSET_ID = 0; - private byte __isset_bitfield = 0; - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.NAME, - new org.apache.thrift.meta_data.FieldMetaData( - "name", - org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - tmpMap.put( - _Fields.USER_ID, - new org.apache.thrift.meta_data.FieldMetaData( - "userId", - org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - tmpMap.put( - _Fields.AGE, - new org.apache.thrift.meta_data.FieldMetaData( - "age", - org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.I32))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(User.class, metaDataMap); - } - - public User() {} - - public User(String name, String userId, int age) { - this(); - this.name = name; - this.userId = userId; - this.age = age; - setAgeIsSet(true); - } - - /** Performs a deep copy on other. */ - public User(User other) { - __isset_bitfield = other.__isset_bitfield; - if (other.isSetName()) { - this.name = other.name; - } - if (other.isSetUserId()) { - this.userId = other.userId; - } - this.age = other.age; - } - - public User deepCopy() { - return new User(this); - } - - @Override - public void clear() { - this.name = null; - this.userId = null; - setAgeIsSet(false); - this.age = 0; - } - - public String getName() { - return this.name; - } - - public User setName(String name) { - this.name = name; - return this; - } - - public void unsetName() { - this.name = null; - } - - /** Returns true if field name is set (has been assigned a value) and false otherwise */ - public boolean isSetName() { - return this.name != null; - } - - public void setNameIsSet(boolean value) { - if (!value) { - this.name = null; - } - } - - public String getUserId() { - return this.userId; - } - - public User setUserId(String userId) { - this.userId = userId; - return this; - } - - public void unsetUserId() { - this.userId = null; - } - - /** Returns true if field userId is set (has been assigned a value) and false otherwise */ - public boolean isSetUserId() { - return this.userId != null; - } - - public void setUserIdIsSet(boolean value) { - if (!value) { - this.userId = null; - } - } - - public int getAge() { - return this.age; - } - - public User setAge(int age) { - this.age = age; - setAgeIsSet(true); - return this; - } - - public void unsetAge() { - __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __AGE_ISSET_ID); - } - - /** Returns true if field age is set (has been assigned a value) and false otherwise */ - public boolean isSetAge() { - return EncodingUtils.testBit(__isset_bitfield, __AGE_ISSET_ID); - } - - public void setAgeIsSet(boolean value) { - __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __AGE_ISSET_ID, value); - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case NAME: - if (value == null) { - unsetName(); - } else { - setName((String) value); - } - break; - - case USER_ID: - if (value == null) { - unsetUserId(); - } else { - setUserId((String) value); - } - break; - - case AGE: - if (value == null) { - unsetAge(); - } else { - setAge((Integer) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case NAME: - return getName(); - - case USER_ID: - return getUserId(); - - case AGE: - return Integer.valueOf(getAge()); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case NAME: - return isSetName(); - case USER_ID: - return isSetUserId(); - case AGE: - return isSetAge(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof User) return this.equals((User) that); - return false; - } - - public boolean equals(User that) { - if (that == null) return false; - - boolean this_present_name = true && this.isSetName(); - boolean that_present_name = true && that.isSetName(); - if (this_present_name || that_present_name) { - if (!(this_present_name && that_present_name)) return false; - if (!this.name.equals(that.name)) return false; - } - - boolean this_present_userId = true && this.isSetUserId(); - boolean that_present_userId = true && that.isSetUserId(); - if (this_present_userId || that_present_userId) { - if (!(this_present_userId && that_present_userId)) return false; - if (!this.userId.equals(that.userId)) return false; - } - - boolean this_present_age = true; - boolean that_present_age = true; - if (this_present_age || that_present_age) { - if (!(this_present_age && that_present_age)) return false; - if (this.age != that.age) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(User other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetName()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetUserId()).compareTo(other.isSetUserId()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetUserId()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userId, other.userId); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetAge()).compareTo(other.isSetAge()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetAge()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.age, other.age); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("User("); - boolean first = true; - - sb.append("name:"); - if (this.name == null) { - sb.append("null"); - } else { - sb.append(this.name); - } - first = false; - if (!first) sb.append(", "); - sb.append("userId:"); - if (this.userId == null) { - sb.append("null"); - } else { - sb.append(this.userId); - } - first = false; - if (!first) sb.append(", "); - sb.append("age:"); - sb.append(this.age); - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - if (name == null) { - throw new org.apache.thrift.protocol.TProtocolException( - "Required field 'name' was not present! Struct: " + toString()); - } - if (userId == null) { - throw new org.apache.thrift.protocol.TProtocolException( - "Required field 'userId' was not present! Struct: " + toString()); - } - // alas, we cannot check 'age' because it's a primitive and you chose the non-beans generator. - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - // it doesn't seem like you should have to do this, but java serialization is wacky, and - // doesn't call the default constructor. - __isset_bitfield = 0; - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class UserStandardSchemeFactory implements SchemeFactory { - public UserStandardScheme getScheme() { - return new UserStandardScheme(); - } - } - - private static class UserStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, User struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // NAME - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.name = iprot.readString(); - struct.setNameIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 2: // USER_ID - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.userId = iprot.readString(); - struct.setUserIdIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 3: // AGE - if (schemeField.type == org.apache.thrift.protocol.TType.I32) { - struct.age = iprot.readI32(); - struct.setAgeIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate method - if (!struct.isSetAge()) { - throw new org.apache.thrift.protocol.TProtocolException( - "Required field 'age' was not found in serialized data! Struct: " + toString()); - } - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, User struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.name != null) { - oprot.writeFieldBegin(NAME_FIELD_DESC); - oprot.writeString(struct.name); - oprot.writeFieldEnd(); - } - if (struct.userId != null) { - oprot.writeFieldBegin(USER_ID_FIELD_DESC); - oprot.writeString(struct.userId); - oprot.writeFieldEnd(); - } - oprot.writeFieldBegin(AGE_FIELD_DESC); - oprot.writeI32(struct.age); - oprot.writeFieldEnd(); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class UserTupleSchemeFactory implements SchemeFactory { - public UserTupleScheme getScheme() { - return new UserTupleScheme(); - } - } - - private static class UserTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, User struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - oprot.writeString(struct.name); - oprot.writeString(struct.userId); - oprot.writeI32(struct.age); - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, User struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - struct.name = iprot.readString(); - struct.setNameIsSet(true); - struct.userId = iprot.readString(); - struct.setUserIdIsSet(true); - struct.age = iprot.readI32(); - struct.setAgeIsSet(true); - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/UserAccount.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/UserAccount.java deleted file mode 100644 index 9cfb452f0ab0..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/UserAccount.java +++ /dev/null @@ -1,488 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; - -import java.util.Collections; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; -import org.apache.thrift.protocol.TTupleProtocol; -import org.apache.thrift.scheme.IScheme; -import org.apache.thrift.scheme.SchemeFactory; -import org.apache.thrift.scheme.StandardScheme; -import org.apache.thrift.scheme.TupleScheme; - -@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) -public class UserAccount - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("UserAccount"); - - private static final org.apache.thrift.protocol.TField USER_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "user", org.apache.thrift.protocol.TType.STRUCT, (short) 1); - private static final org.apache.thrift.protocol.TField ACCOUNT_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "account", org.apache.thrift.protocol.TType.STRUCT, (short) 2); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new UserAccountStandardSchemeFactory()); - schemes.put(TupleScheme.class, new UserAccountTupleSchemeFactory()); - } - - public User user; // required - public Account account; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - USER((short) 1, "user"), - ACCOUNT((short) 2, "account"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // USER - return USER; - case 2: // ACCOUNT - return ACCOUNT; - default: - return null; - } - } - - /** Find the _Fields constant that matches fieldId, throwing an exception if it is not found. */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.USER, - new org.apache.thrift.meta_data.FieldMetaData( - "user", - org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.StructMetaData( - org.apache.thrift.protocol.TType.STRUCT, User.class))); - tmpMap.put( - _Fields.ACCOUNT, - new org.apache.thrift.meta_data.FieldMetaData( - "account", - org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.StructMetaData( - org.apache.thrift.protocol.TType.STRUCT, Account.class))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UserAccount.class, metaDataMap); - } - - public UserAccount() {} - - public UserAccount(User user, Account account) { - this(); - this.user = user; - this.account = account; - } - - /** Performs a deep copy on other. */ - public UserAccount(UserAccount other) { - if (other.isSetUser()) { - this.user = new User(other.user); - } - if (other.isSetAccount()) { - this.account = new Account(other.account); - } - } - - public UserAccount deepCopy() { - return new UserAccount(this); - } - - @Override - public void clear() { - this.user = null; - this.account = null; - } - - public User getUser() { - return this.user; - } - - public UserAccount setUser(User user) { - this.user = user; - return this; - } - - public void unsetUser() { - this.user = null; - } - - /** Returns true if field user is set (has been assigned a value) and false otherwise */ - public boolean isSetUser() { - return this.user != null; - } - - public void setUserIsSet(boolean value) { - if (!value) { - this.user = null; - } - } - - public Account getAccount() { - return this.account; - } - - public UserAccount setAccount(Account account) { - this.account = account; - return this; - } - - public void unsetAccount() { - this.account = null; - } - - /** Returns true if field account is set (has been assigned a value) and false otherwise */ - public boolean isSetAccount() { - return this.account != null; - } - - public void setAccountIsSet(boolean value) { - if (!value) { - this.account = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case USER: - if (value == null) { - unsetUser(); - } else { - setUser((User) value); - } - break; - - case ACCOUNT: - if (value == null) { - unsetAccount(); - } else { - setAccount((Account) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case USER: - return getUser(); - - case ACCOUNT: - return getAccount(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case USER: - return isSetUser(); - case ACCOUNT: - return isSetAccount(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof UserAccount) return this.equals((UserAccount) that); - return false; - } - - public boolean equals(UserAccount that) { - if (that == null) return false; - - boolean this_present_user = true && this.isSetUser(); - boolean that_present_user = true && that.isSetUser(); - if (this_present_user || that_present_user) { - if (!(this_present_user && that_present_user)) return false; - if (!this.user.equals(that.user)) return false; - } - - boolean this_present_account = true && this.isSetAccount(); - boolean that_present_account = true && that.isSetAccount(); - if (this_present_account || that_present_account) { - if (!(this_present_account && that_present_account)) return false; - if (!this.account.equals(that.account)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(UserAccount other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetUser()).compareTo(other.isSetUser()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetUser()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.user, other.user); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetAccount()).compareTo(other.isSetAccount()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetAccount()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.account, other.account); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("UserAccount("); - boolean first = true; - - sb.append("user:"); - if (this.user == null) { - sb.append("null"); - } else { - sb.append(this.user); - } - first = false; - if (!first) sb.append(", "); - sb.append("account:"); - if (this.account == null) { - sb.append("null"); - } else { - sb.append(this.account); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - if (user == null) { - throw new org.apache.thrift.protocol.TProtocolException( - "Required field 'user' was not present! Struct: " + toString()); - } - if (account == null) { - throw new org.apache.thrift.protocol.TProtocolException( - "Required field 'account' was not present! Struct: " + toString()); - } - // check for sub-struct validity - if (user != null) { - user.validate(); - } - if (account != null) { - account.validate(); - } - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class UserAccountStandardSchemeFactory implements SchemeFactory { - public UserAccountStandardScheme getScheme() { - return new UserAccountStandardScheme(); - } - } - - private static class UserAccountStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, UserAccount struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // USER - if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { - struct.user = new User(); - struct.user.read(iprot); - struct.setUserIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 2: // ACCOUNT - if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { - struct.account = new Account(); - struct.account.read(iprot); - struct.setAccountIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, UserAccount struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.user != null) { - oprot.writeFieldBegin(USER_FIELD_DESC); - struct.user.write(oprot); - oprot.writeFieldEnd(); - } - if (struct.account != null) { - oprot.writeFieldBegin(ACCOUNT_FIELD_DESC); - struct.account.write(oprot); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class UserAccountTupleSchemeFactory implements SchemeFactory { - public UserAccountTupleScheme getScheme() { - return new UserAccountTupleScheme(); - } - } - - private static class UserAccountTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, UserAccount struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - struct.user.write(oprot); - struct.account.write(oprot); - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, UserAccount struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - struct.user = new User(); - struct.user.read(iprot); - struct.setUserIsSet(true); - struct.account = new Account(); - struct.account.read(iprot); - struct.setAccountIsSet(true); - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift new file mode 100644 index 000000000000..f4f63bab0ef5 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift @@ -0,0 +1,10 @@ +namespace java io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift + +service ThriftService { + string sayHello(1:string zone,2:string name); + string withError(); + void noReturn(1:i32 delay); + oneway void oneWay(); + oneway void oneWayWithError(); +} + diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/thrift b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/thrift new file mode 100755 index 0000000000000000000000000000000000000000..6d06d49993d640e61b7af847fd441afe64e5f0ce GIT binary patch literal 3196232 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%0D^n#=zB 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

MhoO1^eLfLh3!m$*C#D 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't$Qup!pXYWS+>BWQ0 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

?*n#z!^sLB4Jt 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

x>gX#?*b@si9o@v_EHcSzki@ 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
2E&N`5$g4!+XuB=wumOY;SObE|KH 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 z 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≫bP|h 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

(jK;4m^TS^m-)k$7SV7<`X@sjxX^3 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 z zIB7`_))6=F{N0isk|}2=RdwR$tzzDBYuaEl7~go@?dx_N$DVe^?byrX1s5!&DmZRa}Eg8?};v2My}=maD--^Jt;Q9ejEfew86T=F)lB)I5XV>BUr6!q|Rr zmmhU1o#t_s-NDd<`QMh8%RH`rEBdPZa$EkRwtUUwD*qwnBY)ipc;{t*f?u##Ju3~J zv-YdQ^*U#7`kbPLq*ZxNhr5HZ&N{~AKQwCuc?;k*8_j;H#-Yl+)0CeP|BUjFG?)8# zHhb}FuHc-c&P{}dn>|YH>CFCR>zb@PBNZ7s*FnAC_VH?82-PmWWuo4}%Z%^I@@k*M zf9u>f_`AgSG9RtLf7?^-@pp~y>+0414*$$okHz0TzQ41FC|tYvj_qCW_lVarw=Th7 zoYpgT06o-`{HuQz^X{4Cf=BV+Iie5$z2Xn^KV#xa{Aa`;J z+o4<1PL3sj$-BRFSjpU$wIy>;jupQ?_w14fTGrnBs^S>0ihG>65&dJu?-KWP%i7!K z_K)56d)${=))sG{dv@{1bI-2y_o-Lq-IK-J$sw~(oj8eozw4sBCD@{-?kd(&@L!$l z`ZxVkvT{(j&ZcTO{Z*!+BYZr4!yka=C6p#9r_(Th2r&2Fpcotk-zRCvyz41YW|J-=zaF1?M;Cph?7 zdl)^^d*s&|PvMfU|NrS0Z|@&_Zl>(uklz>^w@sw&d-soB7av`ly9hhNUynu)(ItL@ z{vXtT*LZLJ|3d$n@htvJzNgzU3tSoE_3@hxyV~%a7)f%Pmnn{(MP&S?*Fv(EWVsH(Dz^g_u$N`S)44h zN3_4hJ>tw273nQ`v(KZvmLBs0{~@oIcUo(iKC9Ow17);e|Ifm{B&~Dx9L}})ZPs8@ zk<4$zTguS!xN)EH%II2@602`{RkX>7uS?6QUPjr{vAsCa+bqB8D&M_zXqoQWnR{(b zF?H&l@8Um?uAT8}%i62)m%I$^DQ5=btN5kSwI#nFU7HgAmsWf*u04~ois2bM;TOg5k!qc|Mh1Y!`cSKt3JzTY;S#O<#{U7B+yG@bnGVAA@;)$Wy zb-asyD*Utr{c|C6Mg2RozxL-XzfBJ3-Nn75we2a-y)#?fh4z)7JY~!q#mEA!@b9wn zme#W3_u1CfxRc+lZ>8UsUpi5_Ze1C%e$7(~7hRSKKj`9k@&CvVU7nB&T^^GQT^7rQ zF5<f0Id(fEt*IJ|FfkiE?M-mzTdkld?1=!ENeGfSbT zSHk@yU)OD#p62mRO6U07<8**k&^p3eN(hIx{;>n!w!;V^Toha4J->&+w0?Ss?JvT*uvvI1OE;l zC*Kw#tKNoun-%I&-DObe<6F~uRhRS5fNWIQYp9*exwU=Vt5d`L@e+Em?$lRHeQH<1 zSe)j=D4FmOVX15^x|=ml_xN4FBR-pJY%D?*np<6Y;yKRV=1ajnbufD^jrCf(yQ7EJ zU+}F7tmh0=L7piF*EJs-qlf4pnW1iP ztfMVU@UNpSwIQEW$^+sc$oIR$ThfFz2qcfpeldFzg`m=}r-PNtI8rE8g z0nyrw=NCU-*52Ekb&U6Xg!A{^(RZ^pi6O&gsQgB0TX~!F&>7c)@9%T(FS2>xp)8FB-9ezSFq}RsUBu()1tx@hRp+9Mn7~+w z0Iz$y{tk2zMi)XKSNeuNu06ucct_|so%|4fwZ)J71<(t3n$J2`X)@xiNi%!Oz@gpg z=eLE2vWIs*ylfmiZ7jTP3_Pw7{Q_^>jr8@Vg;swwCZOALI**y)BAv$_=sak1bDzT? z*0fu}O>)XlEw1|y4mWzsDfmAj&hS6OW1Ft~m0#9$70mx;4%S>#)yIo{$iL1JYv15K z{(bu*FV>EKqqiV@GymCkkI?8gb>|Fyc^q}S{XDalvVD9s;aY!7Zs}$9uTjF(e^sX9 zLN?y$yR~+suZqtLzNdyWH-YOJ;#C5y@w2wO1CK+0i)Yy48ZSh z9tbTTgGUUP{qJO&+}^rH>BOP|N=2d;V^!&*gUHt33d9`hw>#A6Kpj2Ur`@=U&1!{0RD2-*5R5|EmZ$ z{D^U~lK*;s#CS}v6h zh~I!`XZcB6iEJ;K+>}M0T*`3v3?^PO2=%wNv@ml$v$d8zNaNS=G3k-v692WHkT=+WHTg*!z2wF`axZTh?R z&3t>aXvMft+Xeq6ybL=J(f=0c{-fs?vL4Aa>-+U->+_ca&-yOjP=#qNE`BOmKy911 z>LKX5K0hx#bjk3|-pysFd*eS3d#lE77#dsPc^%K6Ir;Xf>FpL2hqB(?$(X6=Rx@OH zrgw9}Y2Nsq)caTPPo6WM452HheD%vzcV8@rZYpa`2g*9eyLsCwepz==mcr*Nyc6$R z+3-6F*LaO|)EwX)iwt_Rm*hImW0XM-o+<8W{=Jk^ozIEUID|g@5{-3+Ye)+}j zEc#K|{SUkqx!~E|iIs2ePPF@CcXp`oKo0NL&IU#U17+q>=J0gy=JhARm#O!D7Ojn16Hof7wPS0?nHTC(tgB4~U^)en4F{-yF-!;6mbb}h>?^x*!b z=*+zIX#N|gEG*jN;yV$4ydR$zimtuylwTIL0r%mQxeXhj&Y}_J(Du8Ek(p@wUE7eM zps&iS%{whx^9Jp|fc9TN`;VjjCxqHo-$(nmq5VIn{XaMDKlXr^O@7MR*45xp`;vnp z-P^SR+2V7`91D!q*j!P@)KcK0U+h|D>l1vR6L;U2E2l|5H27r_->n{=wRxS`-#Y(+ zq7}5c%9z3(qS>Lbcg&&Asz9Cs)|0Al9A%Cr&-u{gA74B(ZFZ>L)D`VYi=v@%ca-)p zeQwvX%s~0+(V63*`+{emHRX?e^M1d4zn+(F}8rYf+Au6RR)R(p+^x*O`6)xv)rWUPb-%vt4tLL&TAxl%*aP3s!oC=&%(@*ZCcF5+OjKL2X z%=R7ARx4<$ag=+pD~JA(gAI^PWBTg~?#fXaZ8)>0w#-TQ#^31DL*r$v9qY@4#%*cK zsW+_j+n>CjKl98q<-4vmYfML1a4eudI~?19<5aclN}pFuW;}^c6a$OsE*eY$@3FMI zXrOq}pcq&Rq>CHaJElA2#Ro_~ll1wo(^n0>fLm!j;52FP&WW8U_`}he>d#6u2Uv#s zVQW9{Odke^H@@&;sWAN!dP85GH{D4cj6Fj?!{5M9^cidEvz|FzGF0;XAYNC(`tV!> zC%k|*7mtgg?=gMmpx(0aV&~Immg+q#=BotqljfAU$QGJcj$NpEkaa;T$+e?dOOIkL zJ(9Kb2yBo1JwouR@26vFe}mt*b>lUE8v8c*$yQ`-$>xh$=g2Nv?^sU+?mDacaXNt8 zkk8+?>zstu{p<|9$C+u?IhpYXhp`8VoP1kAPFCBh9?{ER=lJq^8uCG+-@>BYR!gUq zOc}Vw;8W|%m3L9j>yoX(^}qsOmJLBKC%YQ?k#eV#PH8?q>u{S+w?{8K)(+IO9hp}$ z3No)*M@{e|)gjt?0&7@}7wNQ0psm6S@GHC&ceWO?kMRIqSHr?aYd$BhxlNMENDal#Xqs?wwbi+1RDt@@ntcHsjBXe+Vst zZ+i6wmKhU!$6leHZ%K12XGPzg+dd{;!**m$-D4R-K7F2iCCBf`*SBWzp{v%qDo6Xhzb4$}U(wIMdsz8rKK~^8 z=e_OEkiE5_J+q1~POnemB~qqeBrL%+T#TKjkW%c)y;L?D0W zbLO;0{?)W?`E>uiSJ5|q(rp#JjV$}nPNk;UhosjDg>r&z)*7hB(r9p zeC?=)H9P&owaswaCUPP3htq@9an5oiwqN12SnY%~!yh_RXR39y(+%H8T~5DHyPWfq ze0N3m`6*_mekM^pi z|2V$Y99-82;j-U}l z{xkjdFVC$RQo~pLR9dX$<2Uj(zNE9!UWRx}8h1|grd+jwc(dBT@#e>p+Ms+y09V@v z+<$k(HgLMAJnC_}s9+nYKEDm5hsuaQPCB(g!nT2#GiZZ)xK2O34GPZ*z-8ND|53Do zgDV__E6@i1+~L~5hi$rGgZ6o}L*D$}u{>np^pICO`OSNZcK&zewDffB?oRXaXS|wG z-xd$qwul^8Gvr5n#oOD)N{)Z0p)JAPy;=k|qX5M8F zJ}cCvI*RP6_SZeYYX2p)hdE!(zJVKqnxAu7duo0*x=3q-eqbc$te1rHKd@)PQ_azi zw^abQ<8Aw`4Z6ml>hs&*e+#aMU`OY(lRhwJYX0rs=yru?!ybl@>sHd3 zGv;*#zD@jDq=P3JIInAD3yfqc0A1JDLhOrUy z->&S1Y&s)tsIlcP=YK!no(Zq!*TVNiqXal*zfktLWPtynyw!Rej=8T3|3$zmd-Bfw z@1gDX92#zHyF1`F`yA5uq5Ex%|2F;8HW9^X7Xr0^RP?$7jUXhGdIlX!`(%` z4W+kh{V?zA(qY&sAzSJFW4%XHTJ$P;CC|J{KJDQ|+M{o+Lsu=Ab|}Mj_|9t%-*B|{ zIR|?HU*^4L@qNnW3E&$&0=^HE$H3ag!YWs=;@&bbGgk8Kh}y`UYipLKMHZ-?jsdqh z#zsQxmb6$a{Dy~c{-^+33Gorh!HSzooG;&Xj-O-yhvTv)`a0*8-n2(%{3-Ix00!kT z=2W`>3vqP5IJ!X2$#2{~zGq=6S1SS9J~lx?><0nbDkoH2VkR zk>4*xjxR!%Do6hfyx= zK0j^LrQPeN9fp4eX?4dzKL6%ip}F(mikd?e#Mzt(`RY~@LO$GIHEGY_4a98WmwW5Zi^QqJkbYuzrmg6pI0#JvRX)16o@E~5Qg z_|O*Ojv@RKz8|`H!V};!$7x1v+PMp5l&a2O5^!O8Gq zyBA$f`J%hRGi*Bb52gP|ZK1hDX~iSPu)Yd@0!Y{-9&{NnH0lS0Q-D?291 zb8~z1mJPC~V63#fBszYU%unE`%kxzOo zkMi;@-oFvv^HT4rXur(kY|&{-%esQRi@Xmuo-JE;<|JOG@9&>y;#`tB%d{y}Q-3b$ z;xzwU(xNo({fYW#RoeRUl-6619?zVJen|4qQ`o;q4y$A>>GVT;!S{A_MC#Y6WFNPW z+6LIfgSD4>dq79Tz+RnT-Zt`EpTqS;x0A=rsi7alDvM>f*7V&Ku7Tbw zb3)$A;m3vY_tP#->BD66nktUIM7wv67t>zZ)`sIYwHfKRKySsJE4qi%(C4JV_rvi2 z7R&=JY0Fmhzt)^53z;*#-OyvypvQ>3GSS%Bq+dMB?D30+k0a|(!1lQe-K%KO^OS{e z&AMUb?z8^;kKKQ4_sQ-F(s{5}Pk?{j>`+CQ94~fYwwM1cZMg@zUVObUge?+tWKQM zZee&#f_0p;(TkwJlRjx3dZoJA+~?FMEkA(`UgWouNh8(S>`ir++)5kH-_AWm@cVuA zl|8JfWIHB1>k-ti_Xf&(*9@7?T0a5LQU1Q6$Q!fU-&ftcH@cmf(`yps+lWofPSWOL zD=0ltHT%swhqDJnyMB&7s10>x@`;ztnA~^hSoE@qtP%N2vp3u(-j=oHY@6?7@=OS| zs~$n0`!DMq!ly0h^vL5kOrA1y2|6VY9g^~Y1D{rz?yO^CxyN}o>|6JsbA+$86Z~~i zfBnXuzSa&}H>qB8zL>hTM$tLyuHo+76^0GSVEPs3iy7D471pAH_ZMpqgjvH*U<^+R z#mrg_+Ni9Z)E8Xa%%Hw2Cf8MiK3Y}P;0$&RAz z#5yBK4f!MEC{c&*Tdw*J^S`qtDq&5%XJaTP8?~wd(3^aJWbUs5jwe+H`AX!cEgqF$ z`SB-cQ`sI(VqbL+ZO|>0`9>D@gOOZ+ZTu>8LrtBRUrXC5-3I!YbnL0-26tY29_2fF z)b!z8DCchGU^ApOr|weON4#lQXtT}rL9b8j2Ej#J8~p)otv;i^mU)#IlPzl^$G3;t z4otx|-b)+5Z}&9HQ`oaQxULDnwKvdCrf(*-lX!^Q3BA;&yc7Dwvb6>bm7blqEn1Vl z&8x|}0$HSqcB|@>7JGM)-)`a$Mn;){3}xG|5E)^Q*2lEdAcHexr61wdYrK5PkH(grextH>Zgg;HzphKX3w2JX90Tile%U+evp%d!lNmpT zG_$b}oT<5$au$HA`qq5h_l;d1{h76NVm5cS*|l|7KF!hd7RpW_Pwqs1Ib)eukqthQq2J|xqqk`bjhD$v!&oYm4IX{+$MOS%vB?9M z>+oycQEAuL*Wfp{eYC}gciS~JJf{QyW=$Oq#op%Mtf@(}nSZl>AkCZnn>97zZ}4x{ z)Eh&wO8(878aV&TzvK|@X$jUE`l;3zT0hIb*3$1R;7GG!qT>+!YrLU@h10-5oNzPu zK!BU>flwKmyWBlRTcACAmnPiZQ*;(#?yh5<%TOM-9+Vxf3p4YG;Gxd0)Hw@&d)RIW0ZM_L8phF6(%^c7F(Xp@A}(Iy869=;a*vGd!t;2!*v z+a};1e%_3A5c;^U2rtGyyi)fv%wK=D;T`DZiszONOQo9&?&a2P^jKRqoM#n|hv}R8 zc(ET*{&mt#t!KT5|04X!`X=!##jPezuxhX8Ui)8WU1w8Ao%L%%<@ueBKM8l>jod%i z%(^ec*;XTyWuFk!`ayY{lIz_*f0|^k|KmRYqm+NNvVDYhHL`s`c5$-zJjzM6CUg7g z-_C20*AuhtTDmpo|H&tMR-KWe?U^rrMtptS|9j)vYV+?qcW90X_6c`ClVFqXVITMT z2K5i>BOdRZg!JazD<{Xa$2#Ug&Wok!JAVi6VBcAfKe_K1T_tUKg27ey?`6hoNM~#- zam(1Vk*>8=x>nNtKB>$VO_aHhwCZ0S0_ASEy60 zK6^&I6Zi$&MP(MJwTrD&d7k%T5XMM$bZsbf{OJdXD}FUC_7bj#{3W~o^!vxw0#|J!T;Jwjx|NAH z__||-{jW`T5$@H5*M+4|;{5t7bV?hIz9=5m`Ga9SV&9NnG~P^F)g_xZ=FOY4u`ezK zXVtS5JyMDGg>Nn}XJdoulvn4M(8>7ck+1I&>q)*K?bHV(2UT@l(&Nyqk@PLCa}USS z@Ji}_(ZZgMt9udlUDks1ErA_<#60Q3LY%+%;+>bK#d5Q`Q^sSzFw9;Kba@myma-Pr zy9}T0s#`pVd(H%(ZnD&a~|! zK7Wk;Z;xAI$7(TSRb~D?sm%4wlzBp+%o@_EZ`a}qm)w2BO`kuFG}6r`w0A&z^vC~< z)vqd?HQ(SacCHqj9f^CuIjy8_0uMqw!RXrKd7%0 ze#PHOy!vCXFBTR@xyR8P_zCx-uH&wbb@PrJYIL+)Sqpu7Pf=ndI@$$ZzPm&ADPY+_ zJAO*roPoWQ;K)*tnT;XNt zW6M?f!ecDygy$ApUarOSJzJj2S9$+ZI?|tmd*t(0{+N`UovVHHOzDaJdls3i8s27L zfB&^G>&MAw#_q!gz2D4|+sCH2T@Vdry<7Hf0lMeXqRHr5%e#{YTS;`!GfP%1C@MVp zxoQ8P{S41NL1p{z1BfsAXR2h6l@b4K2kzbI!}tg8&%W0A9c1!u@XnK1JA=ocTp4){ zWvu5OK~rx3hOj8_Atg5Yd_(2_l5$Nwgl#tE9)9PM(IW?JS)@xY)1JQe($Nn%U9$AZ zg{*&XA#DlwM*zf+hqoSGTV7aKx7g{i zlh1aUwLkY(4M&e%f<3!z!6v3_?d&mEp*v&W#k{Hc(-qTphP~LJ(9eI*oVRvh8}G%- z94z^PKE%0?AS~!dwcoocXJNmX?u;5Eo~=H{zs>+wGEWz1KY2|zV25`Tud`9x_*Z{k zPrUYbN-}Lf4xa>H49Jppse=2=~>$4kAYv{A+&CJ<5N6Yeay){ks+f!}7m0ho~tATH+f19>q z44JmVo?LC^>%h_~bf4VbN&bCuZ(AK$bFe)bge`ENoEb;Z-q!*66?+BN^HHtWmwMVJfw-4}Q5A$zy8H~9H`Oij| zaSkwPKYAFSd&dedXO7NwWy-I! zjL>AysiB8@6Q0fIbQ?x*LfjX`ac|sU=}x+;9%!5(Oyw3*kK6ygOm%2Zp$_SC4BQq@ z!M24w(&Z>z^!f_F%PSp76u-$c+qYk+Vs3HiHLsRPmqFNTwr=V%IR6#DAtYGvB%Ui|5U%~h0p?kwE7k@Wx&%IID(#F?qmqKENI=NXaw;%sj= zhGLz8-}D*jLh!f4Z_)(peD;fm#NBLgmK{{r_$d278rRgbNq1wR_oS{nny9O0z~Oc6 z!rxR~KMK^9XaD=+)}h};Zp=6DVR4V%3gi#=>596b8#ixk1E*})zoKmRkMk-L;Yi=%tbwF6b+oIZoyIu&eSMO7Q*$)_=IDL4OP`S&n}|(tekvMF z3dQ~qqyhd_P0@h3%m57%q!WF2;?|*~ubb4E23?`Se!VkJUbWG)q-{h4^p%Iv;JMKa zG$3C+4X7*PaJoL%ygA<@6;5H^qo)XTorM?EnV063-*6CuJn*)tUt{j z2ySvaFJKLts-15kZzCLOXQRg*5Uu?{WuvPslP%0y-2aPzC+n*t_5sFdC1+Mm-+nYV zrZM*yondWe%)R2$ugW!V?5;UN`c*D{yFBx5z%%$8jZxa9FEH2B7k?l8Dd|gG8F7xj zSK0roagVmoi3sc!y zHA7yMeK>QM?gd(Z7Wb9G>(dJg@+WiWdY2zY*J=#D3x5i2;|#Rom#ZNw;LE*wo;Ver*pvQR1-#+|&p_K*tt~GM zN2ZQLf1`bW%Lm@_=MY~HQ^5VF<}42LOoX;m{t=YblKod5uNSlb58|4AbGzU1I{qWk_J^eT-n3J_A>o#O`efw zI;p*z7;|libK|+S(lygB>d^ClUhAQG5oc~t3X2!)kuH0UIjXb;=e{%mVpBLJE5p-XQEB-O2iT6&Sm$6UFV zjt@6e?gN2x7bsmbbe!kPwRD_~Kbem3_Sm758~DI}{+r?hR|n`g!2X{qI@Vzm!`e>! z(UtIHY?r!f{QOvPgq8h8YfR$)!nk5QOdz}uX?oEIpV(eE_ylCUWSPgwkeSRUFV@S+ znek76FO|&WWXM9*i3}O}lP^P#!v87nY1hk;P07&k`61B9%wN%=X8w|1Tyn@^^A>#V zd0;@sTV?j7@yAopOtPWo{0`KwHLa0bNT>fDxOEd)7la$H3s@U1GHWC9Do;6S8{tcv zAGR(SFsfl)K)!}C%9|^$4-D-a8^K!VJI)z2!U=wTC-v0hg#Q-&$^F3KMBInOIhQp&#omN%iAG+~oe+mOVPHd6N6Qc^CddX^c_cd?Kk8u9? z`^I{s%RA=?`3Jl7(SD}B)A6SoFRQ?-o`&?#il%5tT>AhGw~U#+P zSZ8P-SnIUWgayky2Y*v#F1O`Kk9@2BzYRCR{NQm`U=QV~%)Sa^90z6a0`4|7>oIhW zze$B(I27wmzIs^j_r#wP7UD{Ylm1e$hz|N6kDFku8(2sqyVBMQV@w6taY0z-q=JQh zS=ToJ3;r7XDPbY*ngA@P+W*sV52H2dKKIMyzGifk_;)l@W?`UA(Lwn2!Zm$I_KWbr z5?twmqS&EdqBv~VO0?!XkNf|W2U;Bb96c@Va{w0|ZnJM*i02M>byWL2_bmCTE1`V> zcMc|RiT=Y&mhVdQ;}u)7HRu?@SI ze_xLuiftn9eEiqC^uYcGVHXf~g$tvMzY#Wqu<!?%$}Ft&6wA#569I&0t&COO08XRX8Dk6G)?CO$&A_L;Ol zF8H)xq`GwW)1-%wn{mc?nNE6*N#kcs+$6uoriF7Vem6!-6c-qy*DH=O+S!iLPI4LN zZ{%UCJW=+RX}qW13Y+BC*j7cbtxD$%P+H9G!<^AETAO>&w;?HiO6Tf0OroWtQ)}p6yW;dDF?xYVp`Se8MO?s;X>y2M>^L}8GE!Ymy`tzp0 zM|y(J18jBcY^T@r&zMLzd@T9Z9)>SF-B}+mwg~z$kNA8R|9t!@c{g!i66fZT4fg+4 zTxXMG+LrygL$k)v28Fc6dDw^Z4i)WYY($~oZl$LW7@HsZfXdvXbsP3Yb@LkZnUeXr zL!bzpzc%X_aF)z}E9v*!Js$4Y@b#MDtv;uph( zr2Aj+8@hwP?Cz53{&#HflI_$AxPRQAzq`a&lRsJRE8pR5J{>$9-IwC;hd-I_s#kGp zBPTmgvj5lPmRtEm=l50SafAiS?1I0kGH2OxMAHlH|3$d6-!gkL^m(mUlG{b=Y4qbo z;PkawPn&k(UUBkDx2?Umt$}t)r(LvvIYVVrrrDFBAN&lz+mk6}j5OC~lc3>slHK2K zWAsfE@Hf|nml3}~>8&l{rM3-ZOY7TC%09PqeD*%sQ#EBTn;9QXzT`0@I&aK9oX)S{ zPo}eEOSN4Nc)BsOhjjYiiz_-8{s&nA+Vm&Q0LFlLdamW0%6lx~I;+3*Iv);&9YdIG z1D^D~;j5qPgC~f##Z%#H$rv1uYH$hxmG#Ez8>O8JJY2(z-cE z^GZEWr%c1MDf2tw65#17Q#k$@x4Av?M2Dpn2eC0UGB|tXx$q~m=R7GK8}b?LThCwp zw`Q}^$9|)Cds}&z=uXedM~&UxqP&X6c6WL|XCh@Vj^kC7_dKx7Yk?hu$~64hFS8h1 zyKTgakG?&}%1`9I)a3<_r^q|QiEf{Tg67Wf-31<(V><;Me(= zl5?~^+L&LCt8s_^n(^nYef-{Njot^S8sd%rBXw|2@9X@wc`>!+0qhyGLcOXz;=W!YN$#L+z9Q;;rE-lOI>9f$&Uk5)a=Uu5d=gJgb z!21ZVr41c28M`;^jyJbOPk%Ccdf6a9_D*fxz!G5ZgeXva@&4-kx+q%A>ogRA%xzUj4_;fkyA#(2wl>c9h-8_QmA3tm;?l?=xQI z%Ry>O$y(RbmWeR^mVbB^Ja?pB8=mj$@riTus>XcnJw`w9bxx#PYy|M`#V=e(Ap6PA z#g|ul#dpB-YB?L-oc=}SeMZS8{@+gKY2#_BJqBdg)8(_hJN z(qn^B$$g=T7rdFG%eF~=`mIVIkYm@XzNEgPwe}#wMN8K=PQjn5Zz#>Lly;KeH-2LO z{~vDMR%~JBr5(2KtG=N;>KiIExo;%4*4x1NdlCc2TKoG3+ac98U$kwejpqKyq7@xc3r|d$-GakP%=^4xNGhTP% zH|IOC?bbaqpW;`Y6}m$poF31EkH1z|_u>WY{S;DPI{x9jZKb(w4*R#~5pHOKUSIuM z^YB}o;k0w)C7L5SyOWW?K0o(l=4{zomdJ)VZ1ze2PFl&{Wm)LYPi1c1=&u)pbKYIt z@vXj4_-W1JO2$N_phqm7HqXoH5@UYZm9wGj@iOX7`zv>NQ10(3b0T$?%|eFh%l-NN zqK6dzb8x$waN)Va(xH5VPlw;(Zv!qy&N#b4&M4(9LCv*eDh%Al_Bw3F<73pJ@z@|+ zNY3pR|LZr+%NGmCXU6rSo`zQU+H&@W!{`Own8tRCa+3R00r!A9UFA&j8M<3JRLG7k|p}P245WKz9mgeE-1ypJ3@^WKjCcHTaD@gdRb3yaInv z9(n?KXg2at6dU-xv>7mMl05X%#?a=EXuBtOoM>dDZ;fn}SzW~)?njz~-v;Jn{?YUt zY|r4)-ltmHPDGw+plvrZCl1v6EY0v=&57CMH@wBpvAtY*nq#4t&wsm`^0HMPyx(72 zrQrFL*N*(M$Iuu_w`CpHUVYdP0$1I4;M%M-MSJO94W;>1X(?BG>1*u&T3o|R&P2K2|lGhK0!@NaCA3fuYn2~9q!*47d z3b{l4%06DK{8-t+BfE3IW%GTtTRe}vN8eW)We=ikK@6Gyzh{T2cvt* z5D)%rhv7T%dk$jL@6-4a(b&-?i+3l+aqqv@2ej{|>DU4IvNXE0AE3{(dW&^dZ&86P zT|V!MnqO1?oVNbDX4wqp57rXKW{>u9_f;FaJ*~wo?>Q5knjgbm;sd~~KH20D>y^iceKGWx)>1TA1$KXFLsh_q1{$M}d z34NdJp!#zWPf8OLJ?wF7dl5+l@~*HfIxN z#{h;Jdtw;aw^(opeo=C-`*^QsuR` z<)y-TDSXVke4v4EFSJYrTNe3s=IB3^_ZPlT_;&DZ=iA0t#kZC3%6AQ)%9G5o z!TyUrDnFO=O1XsniBEg4f8^6%tmXm-gX8t4JhOv0MD?3^tKVAc>gG<>%=X@(M~K%R zt?JWStdg;Ly7Qx(DD0>^E3qASVOi)*c$YD;(GUBX3kRRFwmv@hQpXj9-(lk<-`z-< z#{0Kd)hrgh4SuYt{~zI3;@?ZS!+9cM6A1g-hH1U%_E62*Q~QX>tt!*N>}>xcHABSD z6jmlV5V`JprD08(Xk9ZTO56|mGWiU?(6N&J{Y&tlW5Wspab}$WjW0E2&|dT*@vV#S zk0PDQQ#pNI9?2?d2g;4G4nE6;&o+7|V>1wSWg(ZUU#TCIY5hyN`HCZNx%eaX4#Mxs z)_Cq^{c%St#^NZ#PM{ptjv2@E9mm&$&)^5%28TYp4Xv_)qg;EYtfh~~FTJ0mgTu9( z(g`NgX`Lb6XJ^9Hht#*k8x+>s=5_l5Cf>?2tw}H5_|kTNuk~lW*`o*Mx{6*f?<4VQx!w!MxWJMc-S0UU`xiyW{h^ z#X2v%f%D#Jyk}iZ9eS6fG{T)%>)2;N-=O>Nly?Mgjn$G?bSXm?^Uu-w=cJSGx98k- zt?qlBOImZkJ@fFPS%tuP9`K$E+@pbi6!%u?e%G{E-n5#o33zi>$g56AzNtm#>A~F> znV}xM)7h=Mk~6vM?EO1?IX8`L%3XOq>hH=+btj#>Lu?H=NtV^US9|SQ;T-O`*S@Uo z;pzvS%^S<$#+(uRA?eMzXti-TTKil1*EK$y`!eT+bw_C>_k`&_Qurz6CjQxO!FK>S z-?8U~3!Ax%bWs4l0~S8rTRa?n{7zsBN$#+)dcaz#`|hR;x;?oK%)B_k!pRy<`E|!x zk9cRE^$o_)P5J#}BcXtZt46(V}4BQP2;Nruez3wjYt-!0h z&Gw=X5)3Lcgw2#>Ez$Em;&rcCzI0c%4>i~J+M7;wUfH!@q3EAah4?rZ0cUdXRgkM z=18~X-)*svd>;E^a^K~ynM#c_6W_(`g%q>rV#16*%7&$RewbNf`(f)tHq5MN{IG1j z?@jyoI*P;JTLjKn&#%~{LEhL6+|u_LIzTI>&*1!Zw$4b8>WbZ*KTbX%o#yQv*)Mq9 zF+jNP75I`l*2*>J3^j6+Jwx3&evmw(wdt$S%=4n0HM=Mx6L7JQm3lf%>(lEc*gbz!|l)gJ!T0Y23c ze$|QgJC^q2J*tf@Vm09wao+J^?=)m+RH!yIvS^xVqw*c-wYJtRUN^lPcina!TEdz* zi*vJYSepv=?pJB=UT+KOo~j(+l}&}x)zz>Hsp5}A68=Z9paJjYCPl;zOx+*8(+s979pKK?gJ)=anktxl6 zK9WDS;ZI&~nSEp8&NcLxjeOU5cl+N1x2A))ww!y*)z(Y7xBL>qgsb*TOVAU1_;jJs z#T57P#uqZ4BUeP%7Gi5E`xD*)S@q-#C&zwBAA0fCXf5xuteVyNi29%>sN zRy6<9an&y?zmN{#vYHk6r)u69KwI%|;6+y^Iqx^}19yr1vKz&}iL_g^hmTIBn7cUK zxIRd`T}FT1Pk&v*nC!NLy$SlH%6X7{suLN1$gDo}UG4KLKlhv`^9${nbq9CX_qvid zpEIQzJHzdnQnj;qLrFfQ=OC{Ol%f8t zzN&tF{}+^#<@DU=nf}(Gi|ii1)aE;^?Iv*#Xcp~&tA6qZ|H*AOQsk-rO&6O zr(Dnkk6r_Osd%*Re$yC}t_a!nW{vRzSVL`_VN+Z|DJec`&BtZPc(ZC&*E>?4)o`f!K0pL_)ox}+%FBy zh`WzC*ACa%|7&sGJqk_IjJ%?AAJR6W8RO_Mnhj{;z6@w~m!rWRpO4Qx0u63h$fF{I@zo>7&eBofSW|Z*}TSK7C^u<4C+k`hCM^2wPJH zp8*!li+BIKZn4Vt;6pPRQ~J+5js7oL3_Bs+?ecI7e|=Ja?Yp8NQ33ZAb_Iv<`_?f*vHM)2_VZx9}pnF^i@19QgboI4y2?~?78zn7d5 z{|{#&lIQ$_=N~umTZs$F4#n<)Zox0Q4WkW8xu+`A=XvqDXGCkad){ikaafYRQYnoE4FS!H)q2#(ugKg!koh|Wpx!s#r` z%}Prev&W09WAG(yrPi;^pOY0&p4@Hz{8_TipFbxNPM)st(M6iiBvYIiarh_5t-H8) zFj+p-SygKbZq8OaIq`n#lr6Y;&{n&il$@N4~k*!YFlj|B$i zVbgCUzmLS9+;0r8CQfbSuN5-mv+Vz!xT$29AidnWp@6i>^wOH^uzC2orev3l_!ADN zgZ*RMkzE$2!f9hDmPtMJIN@)PKP67YO()LbbgunB4>y%;aTreI)tuFiw2g2&YS|(q z{u77Ouv5%=^NFc&n#5e(D}WRJ5AdhNiMVqDICZlB#|kHVx0ahzC1W0j6M2Qxdz9S> zr*%nZ=$krM4X-*491Jh9=c@as!YLeztq9_T|2IwHL|l3Rr;kXdHv2bj^1R##C-MrX zr%2lfrv^Jne=cnDUVx1FLG%Y^ZYev(+<#SrU*o9+IYVoB^xeGa>BW{=9%SUHBwNM? z8?uae!j<>QDY1$4Jp&h_PA+5d-d>y~ilh&zdz zYZZn9J?jh+1;We*&)P?#?W$%x;7Q%j|@|sWNZ1 z)r^;4@W?;!@|uhBe~2vcE_0IFLNpyrnD#pVGTv_=g`Gy&ErhMJVUp=iChQM{y-e8O zY<|h#YOlZJU+vOP3dM2=Q<~>o*v3$-7h&3mj=M1CkgkMjZ~V75Ompe6Hr>)d*fE50 z9wFn2Kv;w@?NdME%A<}jVX`TTxiISZuBU%icwr!{mawNucW)qU4`Is)n`^@!;a@a* z)Vhxc{4?zTeCsZ-?)}!4JXu9~cj5o3s{>kXA?!}VCKKlJXs=%N%yoI8-)7R?ihqL5 z%bTwmI+Ln&u5QJTvtjBJ<=7kDZ2dRkPPhLz;MVVR)2A!74@}?tCv~{Jdfj`hvbFCm z_bTgNgX`+h+C^~}Terx%4(`cSC9J9 zsE>=&IMh3&jKg1$w>{z72T`3ptt(kh{;t+lfBgw*b;fMZrT+Lad_wRserE^<;FS(u z@czugWc<{9gZ#i`{J>m-U*or&^pXj$$1izEb!r?doyPICgo_Wp)`LCP%l-tP3BCi9 z#y*LEkNY0&MfZxp^pL*8n5a$I&WlD&6OhI`v(-(?%iFWHTr4qjcxUZh(e zmT`A@FpYUzWL|jl&OWVgJa|(CzLpMuYXhHa3mom(uQ`VOwlMo`;rM>`YjhTwec5ECVx)AMU5wsg4>}OmCcKe`es-QW{yold=}y9{Sj)}Y$Xh+oL+ARA6YYk> zE9cYLg+PjL~rOV2KUI(qNn=+m&h86OGzIt%HirMIX$RA=-A z(#6-q)kphqK3qC~T!nweN35lH@Q*+G0smWBvud80&Dg?KJ>AiXxHF`cR);qZ8-O0r zR{6BnoI~4PiSADE6P)gDE9V_7exDMrGR^sc*3sH+_z%1LEX8{gYSVXaXWrGGlwBKa z#$R%+e~x0xDelaMZ;ST2OPevk+|Bnl{E6Z2UXGDQKd}>B-Ms#1mww;?v+j5qzx2gs zZgqNqK3;4nu!>gN>p7kOSUHg6PM(aKwG z-iiOf?;8W4d2)YHdG5Uj*M=*wIglRK$E|C;Bd|%AXyRQP&W@V9@lAQ=?4%DL^Vbj) z)?fS1epq&o6m?*S5v*f>_tbSf1k9v+D;dVA$no00a4>#Ge(hffM)ZUJ*>PaB>#VnY zy^r57f^UteFO6{ReYM}-=NzGb3??2O)ux=koMZIErz=0Wwuep{gNOB#<)PTKz^1pq z)lbU#PwppXABp&5$nW-%s+5N^x8c6b84}jZ&En9>;qV*!II{IIN5G+_OaI9Lv!@$! z{)5nfeal0f4@`y2tN<>zG=s~B4u1B;R@#5j;a=hLUO|4OL*qX22KwM&pO{AaRQ>J{ zeWH7Nzi&@?zh<${5&pLQbNO$o{qI*gwK+5^w*S}Ro++A%j~g3|q;Y0!F#NEk zy}W@l)4bJr%L{l*Fuj_w&0CPHgZePfS^iwjn zihSY?NX{?*5X`@|iTp>yAI@~`Z2QIFBlL??h!66IzWBX@;^PkhL#i?LG~up)Eaktc z{?XF*3H6Wnl?S?hfctysd8EFbo`gfoBj9j|Gm1eRYISB&^EP{upQo6UcM+cox0?dE zO>PFaH!VKGZJGUl3U}5~;Pw`E2gmK3g0-1(`!|=~j@wt8fITWW?6^IX|EAhyiG|nf z|J(oRxaSLYja%e3wUy+r?4jPk+RpGK)+Xh+$^Eup@5B4;X_S+y-$#yuE(;x=w%?W= zfi9&k{isvT9B}6m($8?|7oKY7ke}gC)d#-p+Cawy|4q^Hf&d+}?SBsL0mgVCbA19H zQ8?=EBHs0$S=Z0YH!>zX#v_enNVC2`hP)VmGF_AT!4}|1Mc1R@2ZJ5nmaeBCflhsi z500f1mA;v=bUg8?==fxSj*m1$$8VL+&LeNy|Nq4;hmOf~8HbH#kWW5Lx>R&IO?>tU z^XJ#M96k>Ji@&*X_=!tz$6*!zRCr%29PBu}od2f!&!3de;=RcJ$8e_{1?(FfEVfPm zbOhL6bm{F_dHx9LD_nXzR(^{=6|Q{*x5f21{+q&euEkG0=ZE(HN4Q4DKSDeG!ogy3 zoqGh>?{MjDJKfp@?0dR2!2TuwO~HO?0QM8@|4F#PF+2gkWERd;Uh}Zn5 za)P>2_1U8t%Ok;M1Lp>v4bAW-aQjmLw?8z4Tdx3aUnvj$@oS~mJfO8>n7w)0w<1v9 z@@C451j^fD%lin|teIt>#Jao^eaYT$*?)!ibrKy3%l$d`DWf+i`8hgM_RZT8{xxY5 zORS!zAMgJXc4*cG=rhhouQ3k&##rwh!sc!-+3mIlXjzkl)Hz&Fn`&NH`+(sQ$ zI&1ZtQ%!mAkuFtPA&s|E_~7*Y23U*`dRqLUR1N#orh8QON2|;JBsjWHoa&l z9hB&{k@y!`yDE-!gPbl=dkb$9C;g(UL+v#Y|7nz^GcYdve+a)Ce?P)q*rS9=?|5P$ z>{oB+LJD0Fb!X)pG;49$M*_P3KIu|1yqN{Tj>CeQU z9w_5h!Uhr6g0RzZ#m`;(n}|CF|Dg+O7WczFOb==Mmvm8gkSHCs(ecM}m$alVd zw)(HrtI1Z|>DAo+x?6|6!TLlt$Zs=#9;&z3&WOJV46+4Oy1M_9y>@22{R}e?Z*sb^ zHu#&;jfGv>!qZ}}a#p*J^NMC%N{?Bu>q?8=1zctvu1A(dZ+$ENWd3e!*NEFfoWCc> zn??3tv^9H2((R)2{S3e5@14Zo9ev8NDM>|_n@FEbmw2&eC1 z8!!PJg7fiJsc@QvEkH&9C;V^WPl*$8LjpLpvHxvx&AthDE@*F}5?B2*!Wl$gXOS5{ z_ouecTzrOE-waIwi|lw_3c#YhlINO$MR6GcSUw}2Xq~`KH5MZ5yQUfo&yYUVSa3Et z9fcb>mDT$DrS0$ww?h0HdlCG9XMYrV{)pq|+i8{tC1=E5W!&t?pNc=+0!;ONjQ;&o z{3+XmxPKAn`q1O*s4fklr%@EQy!s&aAo0!At?t!rpk)!-211(&D7DIAKu+c|&}{{O|F5+~vY25@R^ z|0B5CztngWPbjqZ4rRC+H4VD)T92`qykK%34R%-9W zv~@sMDH5E(F1_>l{HN>-#6Pcete@3a@3#N<;O4S_l9-*AU)Bz{PiSTWxgj!ha4f=^ z>cn|o?H0+Axxl`ocGN zzdky#TW@pCfAgNV#^hG)el4$Z_n5xbyS>nu1K694H}y;B|2}O;*~xrSYkG|*ALm~2 zZ;ov|jsov}`g>uVUyyD2VQ+mx_X|a9)zxu`d9!dV{^riPjj(N#30x-Ms3EbZ=wHJK z*L^RC^{+{x*vr7?pDpSZU(J8Ywjo`2%Jbip>KgyA^3eWY;3o6WdfdsQJz|xa%tK`V zt+fr~#qI+(e$!3mcW}5r>Eqru6%OH0Y`%fV?_cxyPl*HR5+DD-bH09Ux{qm;pu8G zli%97ufqQ&JX>WsnZ})OvUA2Nt@(T&#d%TEH=@;1%QKnr2MxX8H6@-o-}C_fMl#w) z-U6l`=6?Si82*;{Q__vNDa1Lxf42QU2RC`#2G%zInJx0FuY^h4Xzu?W^2{~DNn?1^ zkXUcz&MQ*kG>Nw*It6gTzX^XzoQN9~z$s$?(}k0@5q5pK5l-Y4PH$3nBb*w>rIDpS zZ^lMA*WvW&(AcZYF+WI!Q#cfRDu@&QCz`^EI4^+HzeuMxdmA@-d^W;~yu#@*(l)}W zVVwFnHDe?E%}qu|V=vc#5A7@bjrtzr@J8yX?|b-vf{E@S}3M@Sp_l(ejcLDD(dpUNRe8&A5Aes5wtGD+TU4 zGgsTO0e8*WyYZ*OU2&HMaPMpX`{5ofFZr6X8@1>6;3Z=nPIgW_Hx*8kLb1ODal-$n zrf?#zcL1loq*L4O!#!GF@<-A(!s&bPl1y+w{;WUy+bI=J;ZW?C)Z_Z7?3l~&r)($U zz97!^(e?I!1Fq(}GVE^ECoAP@UTnkNJi>rvVF)2$kcK9pCpV_Te_9ZG`{#=)>1L zoT6vOCbljuDo%w{I28N1LjWiI@8M606LG@=ICZf99fgyN_kL^tpT;%kM7WpR*q6(N_ms_0)Nek11aC(uX(RO{#5uY?m^-l{y(<=Kf%?yz5Yx&>9Pn5 zme~z|Q)S*|%TYhR*#2LFE1H?TFnG><`O&rXKu3c;c6GFmu{}3@?O-?*JB#&!?9UC~ z{AL%7p2u(WDahDHpR&=D zK4nq8K4pMctMuK_^}H{=%A}C=DvNT^tL$zsd%14olE<#rn#T4Qc!g_%bd79(8^)}^ zUamif{-iyJo*5tI_v=M&pDc>MseQ71m-gzj%)7sX@F$O zPu-1p%Tdt&Q(u?2DCg_5jE-g-{#10CAROU=(w$wwe^Ye%v(iBe*~7%_|AV;6JhHy; zm@>PXG8^@s2HxoRos{n~p!*RH@M7sHo=*Y4c;WzH5Wf@rdHkn>U-1uEm<9iJ_J5+% z({|2oMCJ7)%$1j^cn>Xwdr z9RI5O|6}dU_!iB{{vmMAvCv>JCs1lI<{C8)J7)oN`UB!1f{ zY8j)vzj z^4xRox#ym{S8HCKvqi@Pufz7zIjHX{9senv>;0!vF#n0)?fqxGVE)r6nE#Xs7L9`W z&uHNJ+)u832jaczXghOtO~<+Y4xwlfxFopy9FF!g0G#$VE_66_UvF?b!7XsO)vVXr zc)#}H^1*E--W(t9t3L1=+-!?eSrXvh0{06S54qnA?j3M9I~-;C54d;1{nX(o%O-HT zpZCWOM_E3y@vd<=(yjy7LcAY19BJPN_cFLzha>IVHr{lHqrX@SPUkAW?{MU|2HbLR z=Qtesy#$W^IfauPj{Kgp@lJC%@_Po{W5her;xzC41h_}Reb2=szemC89Au@#k>5k$ z7J)n3;mEHM+(K|;eYmCI7JxefoX$DU;`=4v?R=7fU*TTQr?8v(e!(aFt++qqQ+&bN zyEKhYXA^`MZYHkw5V`OlTmMgRC-eP)&z(hNpOT4tA?~GoZjaIr@hiRJ%Do)d?Nh47 zuRTX+@tte&XX9SLr?^usUVewuJmn?OEO^WJ67xpmYLAjTBY7tN!}w0-Q#$4E_7Mq| z98M;^_8omhdWSm$+@avsS)BCz$>5aN`##+9;It>{ZE%Bdm0octfZq@JH5WIG{SR(` zaIZKVbv+K;0pMPAIO_UH8*i1xDZD>lKfXdf{bO%j?LpF>Bdv=>_=J}ZZBbu~?ifQp z3eR(4=#fU-4}Y7me216b5+1!(>c>le36Eac7rftA+XvXc&bF6e-}%TQVC`GFxi|gX zYTYY2fc<*|*~eGFe!fEX^$p^jVo}pq^r>9xy?NeRT>(UtGq!N$hFQ^={H8!i^oY-*~fEo#MfH{N>k_VGub@F-Fs)|3S-NzPoMv9B3=7j;h@-Kj;


Ct-TxbFnc#!6wqR^Po6( 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

x_2P>pnOmfn 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�SE--+054q5{{ZiUnIiE)wcOzO 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 literal 0 HcmV?d00001 From 2fe16f7d2f5169a7f919bfb9727da2b0182e17e0 Mon Sep 17 00:00:00 2001 From: yaoyinglong <906271196@qq.com> Date: Thu, 20 Nov 2025 20:13:41 +0800 Subject: [PATCH 03/13] feat: Adjust and optimize the code according to the PR optimization suggestions. --- .../thrift-0.9.1/javaagent/build.gradle.kts | 39 +- .../v0_9_1/AbstractProtocolWrapper.java | 19 + .../client/ClientOutProtocolWrapper.java | 8 +- .../client/ClientProtocolFactoryWrapper.java | 1 - .../ThriftAsyncClientInstrumentation.java | 6 +- .../ThriftAsyncMethodCallInstrumentation.java | 6 +- .../ThriftAsyncWriteArgsInstrumentation.java | 6 +- .../server/ServerInProtocolWrapper.java | 13 + .../ThriftBaseProcessorInstrumentation.java | 20 +- .../thrift/v0_9_1/ThriftBaseTest.java | 8 +- .../thrift/v0_9_1/thrift/ThriftService.java | 3453 +++++++++++++++++ .../javaagent/src/test/resources/thrift | Bin 3196232 -> 0 bytes .../thrift-0.9.3/javaagent/build.gradle.kts | 21 + .../client}/ThriftClientInstrumentation.java | 2 +- .../ThriftClientInstrumentationModule.java | 4 +- .../{library => javaagent}/build.gradle.kts | 0 .../thrift/common/RequestScopeContext.java | 0 .../thrift/common/SocketAccessor.java | 0 .../thrift/common/ThriftHeaderGetter.java | 0 .../thrift/common/ThriftHeaderSetter.java | 0 .../common/ThriftInstrumenterFactory.java | 0 .../thrift/common/ThriftRequest.java | 0 .../common/ThriftRpcAttributesGetter.java | 2 +- .../common/ThriftSpanNameExtractor.java | 5 +- .../common/ThriftSpanStatusExtractor.java | 0 .../thrift/common/client/MethodAccessor.java | 55 + .../ThriftClientNetworkAttributesGetter.java | 0 .../thrift/common/client/VirtualFields.java | 17 + .../ThriftServerNetworkAttributesGetter.java | 0 .../common/ThriftAttributesExtractor.java | 27 - .../thrift/common/client/MethodAccessor.java | 31 - settings.gradle.kts | 3 +- 32 files changed, 3620 insertions(+), 126 deletions(-) create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java delete mode 100755 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/thrift create mode 100644 instrumentation/thrift/thrift-0.9.3/javaagent/build.gradle.kts rename instrumentation/thrift/{thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3 => thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client}/ThriftClientInstrumentation.java (98%) rename instrumentation/thrift/{thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3 => thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client}/ThriftClientInstrumentationModule.java (88%) rename instrumentation/thrift/thrift-common/{library => javaagent}/build.gradle.kts (100%) rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/RequestScopeContext.java (100%) rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/SocketAccessor.java (100%) rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java (100%) rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderSetter.java (100%) rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java (100%) rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRequest.java (100%) rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java (95%) rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanNameExtractor.java (67%) rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanStatusExtractor.java (100%) create mode 100644 instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java (100%) create mode 100644 instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/VirtualFields.java rename instrumentation/thrift/thrift-common/{library => javaagent}/src/main/java/io/opentelemetry/instrumentation/thrift/common/server/ThriftServerNetworkAttributesGetter.java (100%) delete mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftAttributesExtractor.java delete mode 100644 instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts index a91cd7bb0d75..9a06caac2b5a 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts @@ -6,45 +6,14 @@ muzzle { pass { group.set("org.apache.thrift") module.set("libthrift") - versions.set("[0.9.1,)") - } -} -val thriftExecutable = "./src/test/resources/thrift" -val thriftInputFile = "$projectDir/src/test/resources/ThriftService.thrift" -val thriftOutputDir = "$projectDir/src/test/java" - -var generateThrift = tasks.register("generateThrift") { - group = "build" - description = "Generate Java code from Thrift IDL files" - commandLine(thriftExecutable, "--gen", "java", "-out", thriftOutputDir, thriftInputFile) -} - -tasks.named("compileTestJava") { - dependsOn(generateThrift) - - doFirst { - source.forEach { file -> - if (file.absolutePath.contains("$thriftOutputDir/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java")) { - options.compilerArgs.add("-nowarn") - options.compilerArgs.add("-Xlint:-unchecked") - } - } - } -} - -tasks.named("checkstyleTest") { - exclude("**/thrift/ThriftService.java") -} - -spotless { - java { - targetExclude("**/thrift/ThriftService.java") + versions.set("[0.9.1, 0.9.3)") + assertInverse.set(true) } } dependencies { - compileOnly("org.apache.thrift:libthrift:0.9.1") - implementation(project(":instrumentation:thrift:thrift-common:library")) + library("org.apache.thrift:libthrift:0.9.1") + implementation(project(":instrumentation:thrift:thrift-common:javaagent")) testImplementation("org.apache.thrift:libthrift:0.9.1") testImplementation("javax.annotation:javax.annotation-api:1.3.2") diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AbstractProtocolWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AbstractProtocolWrapper.java index 478493322327..66de3af38961 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AbstractProtocolWrapper.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/AbstractProtocolWrapper.java @@ -3,6 +3,25 @@ * SPDX-License-Identifier: Apache-2.0 */ +// Includes work from: +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; import org.apache.thrift.protocol.TProtocol; diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java index 71a73f6f6097..a5c53761cc92 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java @@ -26,7 +26,6 @@ import org.apache.thrift.protocol.TType; import org.apache.thrift.transport.TTransport; -@SuppressWarnings("all") public final class ClientOutProtocolWrapper extends AbstractProtocolWrapper { public static final String ONE_WAY_METHOD_NAME_PREFIX = "recv_"; private volatile RequestScopeContext requestScopeContext; @@ -78,6 +77,13 @@ public void writeMessageBegin(TMessage message) throws TException { } } finally { if (this.isOneway() && message.type != TMessageType.ONEWAY) { + // In Thrift 0.9.1 and 0.9.2 versions, the type of the TMessage for oneway requests is still + // TMessageType.CALL. + // This causes issues with the server-side instrumentation logic. Here, we are simply + // correcting the actual request type. + // Since it is a oneway request, the client does not need to handle the response, + // and the server does not use this type for any specific logic processing. + // Therefore, it has no impact on either the client or the server. TMessage onewayMessage = new TMessage(message.name, TMessageType.ONEWAY, message.seqid); super.writeMessageBegin(onewayMessage); } else { diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java index 0e869b5be690..9d73baacb22f 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java @@ -9,7 +9,6 @@ import org.apache.thrift.protocol.TProtocolFactory; import org.apache.thrift.transport.TTransport; -@SuppressWarnings({"serial"}) public final class ClientProtocolFactoryWrapper implements TProtocolFactory { public TProtocolFactory delegate; public TTransport transport; diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java index 22cd63a452cc..7b041e49afa7 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java @@ -8,6 +8,7 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; @@ -26,7 +27,10 @@ public ElementMatcher typeMatcher() { @Override public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( - isConstructor(), ThriftAsyncClientInstrumentation.class.getName() + "$ConstructorAdvice"); + isConstructor() + .and(takesArgument(0, named("org.apache.thrift.protocol.TProtocolFactory"))) + .and(takesArgument(2, named("org.apache.thrift.transport.TNonblockingTransport"))), + ThriftAsyncClientInstrumentation.class.getName() + "$ConstructorAdvice"); } public static class ConstructorAdvice { diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java index 9d189c9a02df..b2ef10bfceb2 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java @@ -5,12 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; +import static io.opentelemetry.instrumentation.thrift.common.client.VirtualFields.ASYNC_METHOD_CALLBACK; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -import io.opentelemetry.instrumentation.api.util.VirtualField; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AsyncMethodCallbackWrapper; @@ -55,9 +55,7 @@ public static void methodEnter( @Advice.This TAsyncMethodCall thiz, @Advice.FieldValue(value = "callback") AsyncMethodCallback callback) { if (callback instanceof AsyncMethodCallbackWrapper) { - VirtualField, AsyncMethodCallback> virtualField = - VirtualField.find(TAsyncMethodCall.class, AsyncMethodCallback.class); - virtualField.set(thiz, callback); + ASYNC_METHOD_CALLBACK.set(thiz, callback); } } } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java index 895489f6a0ac..a217957491fa 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java @@ -5,13 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; +import static io.opentelemetry.instrumentation.thrift.common.client.VirtualFields.ASYNC_METHOD_CALLBACK; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.util.VirtualField; import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; import io.opentelemetry.instrumentation.thrift.common.client.MethodAccessor; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; @@ -75,9 +75,7 @@ public static void methodExit( return; } - VirtualField, AsyncMethodCallback> callbackVirtualField = - VirtualField.find(TAsyncMethodCall.class, AsyncMethodCallback.class); - AsyncMethodCallback callback = callbackVirtualField.get(methodCall); + AsyncMethodCallback callback = ASYNC_METHOD_CALLBACK.get(methodCall); if (callback instanceof AsyncMethodCallbackWrapper) { ((AsyncMethodCallbackWrapper) callback).setRequestScopeContext(requestScopeContext); } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java index 5fdfa9fb37a4..7b125211c66e 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java @@ -63,6 +63,11 @@ public TField readFieldBegin() throws TException { Socket socket = SocketAccessor.getSocket(super.getTransport()); if (socket == null) { + // The non-blocking processing method cannot obtain the corresponding Transport with a + // socket through super.getTransport(). + // Instrumentation has been added to the invoke methods of FrameBuffer and + // AsyncFrameBuffer to actively set TNonblockingTransport. + // This serves as a compensation here. socket = SocketAccessor.getSocket(this.transport); } ThriftRequest request = @@ -87,6 +92,14 @@ public void readMessageEnd() throws TException { super.readMessageEnd(); if (this.requestScopeContext == null) { Socket socket = SocketAccessor.getSocket(super.getTransport()); + if (socket == null) { + // The non-blocking processing method cannot obtain the corresponding Transport with a + // socket through super.getTransport(). + // Instrumentation has been added to the invoke methods of FrameBuffer and AsyncFrameBuffer + // to actively set TNonblockingTransport. + // This serves as a compensation here. + socket = SocketAccessor.getSocket(this.transport); + } ThriftRequest request = ThriftRequest.create(this.serviceName, this.methodName, socket, new HashMap<>()); Context parentContext = Java8BytecodeBridge.currentContext(); diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java index 1c38bf51e084..d280cafd6b9c 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java @@ -11,6 +11,7 @@ import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; +import io.opentelemetry.instrumentation.thrift.common.client.MethodAccessor; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.lang.reflect.Field; @@ -38,24 +39,19 @@ public static class ProcessAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static void methodEnter( @Advice.Argument(value = 0) TProtocol inProtocol, - @Advice.FieldValue(value = "iface") Object iface) { + @Advice.FieldValue(value = "iface") Object iface) + throws IllegalAccessException { String serviceName = iface.getClass().getName(); if (inProtocol instanceof ServerInProtocolWrapper) { ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; wrapper.setServiceName(serviceName); } else if (inProtocol instanceof TProtocolDecorator) { // TMultiplexedProcessor compatible - Field field = null; - try { - field = TProtocolDecorator.class.getDeclaredField("concreteProtocol"); - field.setAccessible(true); - Object obj = field.get(inProtocol); - if (obj != null && obj instanceof ServerInProtocolWrapper) { - ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) obj; - wrapper.setServiceName(serviceName); - } - } catch (Throwable ignored) { - // reflection error; in practice should never happen, we can ignore it + Field field = MethodAccessor.getConcreteProtocolField(TProtocolDecorator.class); + Object obj = field.get(inProtocol); + if (obj != null && obj instanceof ServerInProtocolWrapper) { + ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) obj; + wrapper.setServiceName(serviceName); } } } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java index fd4e8fbcf352..bfe32a147de1 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java @@ -835,14 +835,14 @@ private static Consumer clientSpanDataAssertConsumer( String errorType) { Consumer consumer = span -> - span.hasName(clientMethod) + span.hasName(clientClass + "/" + clientMethod) .hasKind(SpanKind.CLIENT) .hasParent(trace.getSpan(0)) .hasStatus(statusData) .hasAttributesSatisfying( equalTo(NETWORK_PEER_PORT, peerPort), equalTo(NETWORK_PEER_ADDRESS, peerAddr), - equalTo(RPC_SYSTEM, "thrift"), + equalTo(RPC_SYSTEM, "apache_thrift"), equalTo(RPC_SERVICE, clientClass), equalTo(RPC_METHOD, clientMethod)); if (statusData == StatusData.error()) { @@ -873,13 +873,13 @@ private static Consumer serverSpanDataAssertConsumer( String errorType) { Consumer consumer = span -> - span.hasName(serverMethod) + span.hasName(serverClass + "/" + serverMethod) .hasKind(SpanKind.SERVER) .hasParent(trace.getSpan(1)) .hasStatus(statusData) .hasAttributesSatisfying( equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), - equalTo(RPC_SYSTEM, "thrift"), + equalTo(RPC_SYSTEM, "apache_thrift"), equalTo(RPC_SERVICE, serverClass), equalTo(RPC_METHOD, serverMethod)); if (statusData == StatusData.error()) { diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java new file mode 100644 index 000000000000..e2254e47af9e --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java @@ -0,0 +1,3453 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; + +import java.util.BitSet; +import java.util.Collections; +import java.util.EnumMap; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; +import org.apache.thrift.EncodingUtils; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.protocol.TTupleProtocol; +import org.apache.thrift.scheme.IScheme; +import org.apache.thrift.scheme.SchemeFactory; +import org.apache.thrift.scheme.StandardScheme; +import org.apache.thrift.scheme.TupleScheme; +import org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) +public class ThriftService { + + public interface Iface { + + public String sayHello(String zone, String name) throws org.apache.thrift.TException; + + public String withError() throws org.apache.thrift.TException; + + public void noReturn(int delay) throws org.apache.thrift.TException; + + public void oneWay() throws org.apache.thrift.TException; + + public void oneWayWithError() throws org.apache.thrift.TException; + } + + public interface AsyncIface { + + public void sayHello( + String zone, String name, org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException; + + public void withError(org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException; + + public void noReturn(int delay, org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException; + + public void oneWay(org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException; + + public void oneWayWithError(org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException; + } + + public static class Client extends org.apache.thrift.TServiceClient implements Iface { + public static class Factory implements org.apache.thrift.TServiceClientFactory { + public Factory() {} + + public Client getClient(org.apache.thrift.protocol.TProtocol prot) { + return new Client(prot); + } + + public Client getClient( + org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) { + return new Client(iprot, oprot); + } + } + + public Client(org.apache.thrift.protocol.TProtocol prot) { + super(prot, prot); + } + + public Client( + org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) { + super(iprot, oprot); + } + + public String sayHello(String zone, String name) throws org.apache.thrift.TException { + send_sayHello(zone, name); + return recv_sayHello(); + } + + public void send_sayHello(String zone, String name) throws org.apache.thrift.TException { + sayHello_args args = new sayHello_args(); + args.setZone(zone); + args.setName(name); + sendBase("sayHello", args); + } + + public String recv_sayHello() throws org.apache.thrift.TException { + sayHello_result result = new sayHello_result(); + receiveBase(result, "sayHello"); + if (result.isSetSuccess()) { + return result.success; + } + throw new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.MISSING_RESULT, + "sayHello failed: unknown result"); + } + + public String withError() throws org.apache.thrift.TException { + send_withError(); + return recv_withError(); + } + + public void send_withError() throws org.apache.thrift.TException { + withError_args args = new withError_args(); + sendBase("withError", args); + } + + public String recv_withError() throws org.apache.thrift.TException { + withError_result result = new withError_result(); + receiveBase(result, "withError"); + if (result.isSetSuccess()) { + return result.success; + } + throw new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.MISSING_RESULT, + "withError failed: unknown result"); + } + + public void noReturn(int delay) throws org.apache.thrift.TException { + send_noReturn(delay); + recv_noReturn(); + } + + public void send_noReturn(int delay) throws org.apache.thrift.TException { + noReturn_args args = new noReturn_args(); + args.setDelay(delay); + sendBase("noReturn", args); + } + + public void recv_noReturn() throws org.apache.thrift.TException { + noReturn_result result = new noReturn_result(); + receiveBase(result, "noReturn"); + return; + } + + public void oneWay() throws org.apache.thrift.TException { + send_oneWay(); + } + + public void send_oneWay() throws org.apache.thrift.TException { + oneWay_args args = new oneWay_args(); + sendBase("oneWay", args); + } + + public void oneWayWithError() throws org.apache.thrift.TException { + send_oneWayWithError(); + } + + public void send_oneWayWithError() throws org.apache.thrift.TException { + oneWayWithError_args args = new oneWayWithError_args(); + sendBase("oneWayWithError", args); + } + } + + public static class AsyncClient extends org.apache.thrift.async.TAsyncClient + implements AsyncIface { + public static class Factory + implements org.apache.thrift.async.TAsyncClientFactory { + private org.apache.thrift.async.TAsyncClientManager clientManager; + private org.apache.thrift.protocol.TProtocolFactory protocolFactory; + + public Factory( + org.apache.thrift.async.TAsyncClientManager clientManager, + org.apache.thrift.protocol.TProtocolFactory protocolFactory) { + this.clientManager = clientManager; + this.protocolFactory = protocolFactory; + } + + public AsyncClient getAsyncClient( + org.apache.thrift.transport.TNonblockingTransport transport) { + return new AsyncClient(protocolFactory, clientManager, transport); + } + } + + public AsyncClient( + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.async.TAsyncClientManager clientManager, + org.apache.thrift.transport.TNonblockingTransport transport) { + super(protocolFactory, clientManager, transport); + } + + public void sayHello( + String zone, String name, org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException { + checkReady(); + sayHello_call method_call = + new sayHello_call(zone, name, resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class sayHello_call extends org.apache.thrift.async.TAsyncMethodCall { + private String zone; + private String name; + + public sayHello_call( + String zone, + String name, + org.apache.thrift.async.AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws org.apache.thrift.TException { + super(client, protocolFactory, transport, resultHandler, false); + this.zone = zone; + this.name = name; + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) + throws org.apache.thrift.TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "sayHello", org.apache.thrift.protocol.TMessageType.CALL, 0)); + sayHello_args args = new sayHello_args(); + args.setZone(zone); + args.setName(name); + args.write(prot); + prot.writeMessageEnd(); + } + + public String getResult() throws org.apache.thrift.TException { + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + return (new Client(prot)).recv_sayHello(); + } + } + + public void withError(org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException { + checkReady(); + withError_call method_call = + new withError_call(resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class withError_call extends org.apache.thrift.async.TAsyncMethodCall { + public withError_call( + org.apache.thrift.async.AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws org.apache.thrift.TException { + super(client, protocolFactory, transport, resultHandler, false); + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) + throws org.apache.thrift.TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "withError", org.apache.thrift.protocol.TMessageType.CALL, 0)); + withError_args args = new withError_args(); + args.write(prot); + prot.writeMessageEnd(); + } + + public String getResult() throws org.apache.thrift.TException { + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + return (new Client(prot)).recv_withError(); + } + } + + public void noReturn(int delay, org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException { + checkReady(); + noReturn_call method_call = + new noReturn_call(delay, resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class noReturn_call extends org.apache.thrift.async.TAsyncMethodCall { + private int delay; + + public noReturn_call( + int delay, + org.apache.thrift.async.AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws org.apache.thrift.TException { + super(client, protocolFactory, transport, resultHandler, false); + this.delay = delay; + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) + throws org.apache.thrift.TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "noReturn", org.apache.thrift.protocol.TMessageType.CALL, 0)); + noReturn_args args = new noReturn_args(); + args.setDelay(delay); + args.write(prot); + prot.writeMessageEnd(); + } + + public void getResult() throws org.apache.thrift.TException { + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + (new Client(prot)).recv_noReturn(); + } + } + + public void oneWay(org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException { + checkReady(); + oneWay_call method_call = + new oneWay_call(resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class oneWay_call extends org.apache.thrift.async.TAsyncMethodCall { + public oneWay_call( + org.apache.thrift.async.AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws org.apache.thrift.TException { + super(client, protocolFactory, transport, resultHandler, true); + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) + throws org.apache.thrift.TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "oneWay", org.apache.thrift.protocol.TMessageType.CALL, 0)); + oneWay_args args = new oneWay_args(); + args.write(prot); + prot.writeMessageEnd(); + } + + public void getResult() throws org.apache.thrift.TException { + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + } + } + + public void oneWayWithError(org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws org.apache.thrift.TException { + checkReady(); + oneWayWithError_call method_call = + new oneWayWithError_call(resultHandler, this, ___protocolFactory, ___transport); + this.___currentMethod = method_call; + ___manager.call(method_call); + } + + public static class oneWayWithError_call extends org.apache.thrift.async.TAsyncMethodCall { + public oneWayWithError_call( + org.apache.thrift.async.AsyncMethodCallback resultHandler, + org.apache.thrift.async.TAsyncClient client, + org.apache.thrift.protocol.TProtocolFactory protocolFactory, + org.apache.thrift.transport.TNonblockingTransport transport) + throws org.apache.thrift.TException { + super(client, protocolFactory, transport, resultHandler, true); + } + + public void write_args(org.apache.thrift.protocol.TProtocol prot) + throws org.apache.thrift.TException { + prot.writeMessageBegin( + new org.apache.thrift.protocol.TMessage( + "oneWayWithError", org.apache.thrift.protocol.TMessageType.CALL, 0)); + oneWayWithError_args args = new oneWayWithError_args(); + args.write(prot); + prot.writeMessageEnd(); + } + + public void getResult() throws org.apache.thrift.TException { + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { + throw new IllegalStateException("Method call not finished!"); + } + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = + new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); + org.apache.thrift.protocol.TProtocol prot = + client.getProtocolFactory().getProtocol(memoryTransport); + } + } + } + + public static class Processor extends org.apache.thrift.TBaseProcessor + implements org.apache.thrift.TProcessor { + private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName()); + + public Processor(I iface) { + super( + iface, + getProcessMap( + new HashMap< + String, + org.apache.thrift.ProcessFunction>())); + } + + protected Processor( + I iface, + Map> + processMap) { + super(iface, getProcessMap(processMap)); + } + + private static + Map> + getProcessMap( + Map> + processMap) { + processMap.put("sayHello", new sayHello()); + processMap.put("withError", new withError()); + processMap.put("noReturn", new noReturn()); + processMap.put("oneWay", new oneWay()); + processMap.put("oneWayWithError", new oneWayWithError()); + return processMap; + } + + public static class sayHello + extends org.apache.thrift.ProcessFunction { + public sayHello() { + super("sayHello"); + } + + public sayHello_args getEmptyArgsInstance() { + return new sayHello_args(); + } + + protected boolean isOneway() { + return false; + } + + public sayHello_result getResult(I iface, sayHello_args args) + throws org.apache.thrift.TException { + sayHello_result result = new sayHello_result(); + result.success = iface.sayHello(args.zone, args.name); + return result; + } + } + + public static class withError + extends org.apache.thrift.ProcessFunction { + public withError() { + super("withError"); + } + + public withError_args getEmptyArgsInstance() { + return new withError_args(); + } + + protected boolean isOneway() { + return false; + } + + public withError_result getResult(I iface, withError_args args) + throws org.apache.thrift.TException { + withError_result result = new withError_result(); + result.success = iface.withError(); + return result; + } + } + + public static class noReturn + extends org.apache.thrift.ProcessFunction { + public noReturn() { + super("noReturn"); + } + + public noReturn_args getEmptyArgsInstance() { + return new noReturn_args(); + } + + protected boolean isOneway() { + return false; + } + + public noReturn_result getResult(I iface, noReturn_args args) + throws org.apache.thrift.TException { + noReturn_result result = new noReturn_result(); + iface.noReturn(args.delay); + return result; + } + } + + public static class oneWay + extends org.apache.thrift.ProcessFunction { + public oneWay() { + super("oneWay"); + } + + public oneWay_args getEmptyArgsInstance() { + return new oneWay_args(); + } + + protected boolean isOneway() { + return true; + } + + public org.apache.thrift.TBase getResult(I iface, oneWay_args args) + throws org.apache.thrift.TException { + iface.oneWay(); + return null; + } + } + + public static class oneWayWithError + extends org.apache.thrift.ProcessFunction { + public oneWayWithError() { + super("oneWayWithError"); + } + + public oneWayWithError_args getEmptyArgsInstance() { + return new oneWayWithError_args(); + } + + protected boolean isOneway() { + return true; + } + + public org.apache.thrift.TBase getResult(I iface, oneWayWithError_args args) + throws org.apache.thrift.TException { + iface.oneWayWithError(); + return null; + } + } + } + + public static class AsyncProcessor + extends org.apache.thrift.TBaseAsyncProcessor { + private static final Logger LOGGER = LoggerFactory.getLogger(AsyncProcessor.class.getName()); + + public AsyncProcessor(I iface) { + super( + iface, + getProcessMap( + new HashMap< + String, + org.apache.thrift.AsyncProcessFunction< + I, ? extends org.apache.thrift.TBase, ?>>())); + } + + protected AsyncProcessor( + I iface, + Map> + processMap) { + super(iface, getProcessMap(processMap)); + } + + private static + Map> + getProcessMap( + Map< + String, + org.apache.thrift.AsyncProcessFunction< + I, ? extends org.apache.thrift.TBase, ?>> + processMap) { + processMap.put("sayHello", new sayHello()); + processMap.put("withError", new withError()); + processMap.put("noReturn", new noReturn()); + processMap.put("oneWay", new oneWay()); + processMap.put("oneWayWithError", new oneWayWithError()); + return processMap; + } + + public static class sayHello + extends org.apache.thrift.AsyncProcessFunction { + public sayHello() { + super("sayHello"); + } + + public sayHello_args getEmptyArgsInstance() { + return new sayHello_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(String o) { + sayHello_result result = new sayHello_result(); + result.success = o; + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + sayHello_result result = new sayHello_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start( + I iface, + sayHello_args args, + org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws TException { + iface.sayHello(args.zone, args.name, resultHandler); + } + } + + public static class withError + extends org.apache.thrift.AsyncProcessFunction { + public withError() { + super("withError"); + } + + public withError_args getEmptyArgsInstance() { + return new withError_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(String o) { + withError_result result = new withError_result(); + result.success = o; + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + withError_result result = new withError_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start( + I iface, + withError_args args, + org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws TException { + iface.withError(resultHandler); + } + } + + public static class noReturn + extends org.apache.thrift.AsyncProcessFunction { + public noReturn() { + super("noReturn"); + } + + public noReturn_args getEmptyArgsInstance() { + return new noReturn_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(Void o) { + noReturn_result result = new noReturn_result(); + try { + fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); + return; + } catch (Exception e) { + LOGGER.error("Exception writing to internal frame buffer", e); + } + fb.close(); + } + + public void onError(Exception e) { + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; + org.apache.thrift.TBase msg; + noReturn_result result = new noReturn_result(); + { + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; + msg = + (org.apache.thrift.TBase) + new org.apache.thrift.TApplicationException( + org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); + } + try { + fcall.sendResponse(fb, msg, msgType, seqid); + return; + } catch (Exception ex) { + LOGGER.error("Exception writing to internal frame buffer", ex); + } + fb.close(); + } + }; + } + + protected boolean isOneway() { + return false; + } + + public void start( + I iface, + noReturn_args args, + org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws TException { + iface.noReturn(args.delay, resultHandler); + } + } + + public static class oneWay + extends org.apache.thrift.AsyncProcessFunction { + public oneWay() { + super("oneWay"); + } + + public oneWay_args getEmptyArgsInstance() { + return new oneWay_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(Void o) {} + + public void onError(Exception e) {} + }; + } + + protected boolean isOneway() { + return true; + } + + public void start( + I iface, + oneWay_args args, + org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws TException { + iface.oneWay(resultHandler); + } + } + + public static class oneWayWithError + extends org.apache.thrift.AsyncProcessFunction { + public oneWayWithError() { + super("oneWayWithError"); + } + + public oneWayWithError_args getEmptyArgsInstance() { + return new oneWayWithError_args(); + } + + public AsyncMethodCallback getResultHandler( + final AsyncFrameBuffer fb, final int seqid) { + final org.apache.thrift.AsyncProcessFunction fcall = this; + return new AsyncMethodCallback() { + public void onComplete(Void o) {} + + public void onError(Exception e) {} + }; + } + + protected boolean isOneway() { + return true; + } + + public void start( + I iface, + oneWayWithError_args args, + org.apache.thrift.async.AsyncMethodCallback resultHandler) + throws TException { + iface.oneWayWithError(resultHandler); + } + } + } + + public static class sayHello_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("sayHello_args"); + + private static final org.apache.thrift.protocol.TField ZONE_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "zone", org.apache.thrift.protocol.TType.STRING, (short) 1); + private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "name", org.apache.thrift.protocol.TType.STRING, (short) 2); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new sayHello_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new sayHello_argsTupleSchemeFactory()); + } + + public String zone; // required + public String name; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ZONE((short) 1, "zone"), + NAME((short) 2, "name"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // ZONE + return ZONE; + case 2: // NAME + return NAME; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.ZONE, + new org.apache.thrift.meta_data.FieldMetaData( + "zone", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + tmpMap.put( + _Fields.NAME, + new org.apache.thrift.meta_data.FieldMetaData( + "name", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + sayHello_args.class, metaDataMap); + } + + public sayHello_args() {} + + public sayHello_args(String zone, String name) { + this(); + this.zone = zone; + this.name = name; + } + + /** Performs a deep copy on other. */ + public sayHello_args(sayHello_args other) { + if (other.isSetZone()) { + this.zone = other.zone; + } + if (other.isSetName()) { + this.name = other.name; + } + } + + public sayHello_args deepCopy() { + return new sayHello_args(this); + } + + @Override + public void clear() { + this.zone = null; + this.name = null; + } + + public String getZone() { + return this.zone; + } + + public sayHello_args setZone(String zone) { + this.zone = zone; + return this; + } + + public void unsetZone() { + this.zone = null; + } + + /** Returns true if field zone is set (has been assigned a value) and false otherwise */ + public boolean isSetZone() { + return this.zone != null; + } + + public void setZoneIsSet(boolean value) { + if (!value) { + this.zone = null; + } + } + + public String getName() { + return this.name; + } + + public sayHello_args setName(String name) { + this.name = name; + return this; + } + + public void unsetName() { + this.name = null; + } + + /** Returns true if field name is set (has been assigned a value) and false otherwise */ + public boolean isSetName() { + return this.name != null; + } + + public void setNameIsSet(boolean value) { + if (!value) { + this.name = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case ZONE: + if (value == null) { + unsetZone(); + } else { + setZone((String) value); + } + break; + + case NAME: + if (value == null) { + unsetName(); + } else { + setName((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case ZONE: + return getZone(); + + case NAME: + return getName(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case ZONE: + return isSetZone(); + case NAME: + return isSetName(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof sayHello_args) return this.equals((sayHello_args) that); + return false; + } + + public boolean equals(sayHello_args that) { + if (that == null) return false; + + boolean this_present_zone = true && this.isSetZone(); + boolean that_present_zone = true && that.isSetZone(); + if (this_present_zone || that_present_zone) { + if (!(this_present_zone && that_present_zone)) return false; + if (!this.zone.equals(that.zone)) return false; + } + + boolean this_present_name = true && this.isSetName(); + boolean that_present_name = true && that.isSetName(); + if (this_present_name || that_present_name) { + if (!(this_present_name && that_present_name)) return false; + if (!this.name.equals(that.name)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(sayHello_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetZone()).compareTo(other.isSetZone()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetZone()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.zone, other.zone); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetName()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) + throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("sayHello_args("); + boolean first = true; + + sb.append("zone:"); + if (this.zone == null) { + sb.append("null"); + } else { + sb.append(this.zone); + } + first = false; + if (!first) sb.append(", "); + sb.append("name:"); + if (this.name == null) { + sb.append("null"); + } else { + sb.append(this.name); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class sayHello_argsStandardSchemeFactory implements SchemeFactory { + public sayHello_argsStandardScheme getScheme() { + return new sayHello_argsStandardScheme(); + } + } + + private static class sayHello_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, sayHello_args struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // ZONE + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.zone = iprot.readString(); + struct.setZoneIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 2: // NAME + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.name = iprot.readString(); + struct.setNameIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, sayHello_args struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.zone != null) { + oprot.writeFieldBegin(ZONE_FIELD_DESC); + oprot.writeString(struct.zone); + oprot.writeFieldEnd(); + } + if (struct.name != null) { + oprot.writeFieldBegin(NAME_FIELD_DESC); + oprot.writeString(struct.name); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class sayHello_argsTupleSchemeFactory implements SchemeFactory { + public sayHello_argsTupleScheme getScheme() { + return new sayHello_argsTupleScheme(); + } + } + + private static class sayHello_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, sayHello_args struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetZone()) { + optionals.set(0); + } + if (struct.isSetName()) { + optionals.set(1); + } + oprot.writeBitSet(optionals, 2); + if (struct.isSetZone()) { + oprot.writeString(struct.zone); + } + if (struct.isSetName()) { + oprot.writeString(struct.name); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, sayHello_args struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(2); + if (incoming.get(0)) { + struct.zone = iprot.readString(); + struct.setZoneIsSet(true); + } + if (incoming.get(1)) { + struct.name = iprot.readString(); + struct.setNameIsSet(true); + } + } + } + } + + public static class sayHello_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("sayHello_result"); + + private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "success", org.apache.thrift.protocol.TType.STRING, (short) 0); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new sayHello_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new sayHello_resultTupleSchemeFactory()); + } + + public String success; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + SUCCESS((short) 0, "success"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 0: // SUCCESS + return SUCCESS; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.SUCCESS, + new org.apache.thrift.meta_data.FieldMetaData( + "success", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + sayHello_result.class, metaDataMap); + } + + public sayHello_result() {} + + public sayHello_result(String success) { + this(); + this.success = success; + } + + /** Performs a deep copy on other. */ + public sayHello_result(sayHello_result other) { + if (other.isSetSuccess()) { + this.success = other.success; + } + } + + public sayHello_result deepCopy() { + return new sayHello_result(this); + } + + @Override + public void clear() { + this.success = null; + } + + public String getSuccess() { + return this.success; + } + + public sayHello_result setSuccess(String success) { + this.success = success; + return this; + } + + public void unsetSuccess() { + this.success = null; + } + + /** Returns true if field success is set (has been assigned a value) and false otherwise */ + public boolean isSetSuccess() { + return this.success != null; + } + + public void setSuccessIsSet(boolean value) { + if (!value) { + this.success = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case SUCCESS: + if (value == null) { + unsetSuccess(); + } else { + setSuccess((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case SUCCESS: + return getSuccess(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case SUCCESS: + return isSetSuccess(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof sayHello_result) return this.equals((sayHello_result) that); + return false; + } + + public boolean equals(sayHello_result that) { + if (that == null) return false; + + boolean this_present_success = true && this.isSetSuccess(); + boolean that_present_success = true && that.isSetSuccess(); + if (this_present_success || that_present_success) { + if (!(this_present_success && that_present_success)) return false; + if (!this.success.equals(that.success)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(sayHello_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetSuccess()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) + throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("sayHello_result("); + boolean first = true; + + sb.append("success:"); + if (this.success == null) { + sb.append("null"); + } else { + sb.append(this.success); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class sayHello_resultStandardSchemeFactory implements SchemeFactory { + public sayHello_resultStandardScheme getScheme() { + return new sayHello_resultStandardScheme(); + } + } + + private static class sayHello_resultStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, sayHello_result struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 0: // SUCCESS + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, sayHello_result struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.success != null) { + oprot.writeFieldBegin(SUCCESS_FIELD_DESC); + oprot.writeString(struct.success); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class sayHello_resultTupleSchemeFactory implements SchemeFactory { + public sayHello_resultTupleScheme getScheme() { + return new sayHello_resultTupleScheme(); + } + } + + private static class sayHello_resultTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, sayHello_result struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetSuccess()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetSuccess()) { + oprot.writeString(struct.success); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, sayHello_result struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } + } + } + } + + public static class withError_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withError_args"); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withError_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withError_argsTupleSchemeFactory()); + } + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ; + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withError_args.class, metaDataMap); + } + + public withError_args() {} + + /** Performs a deep copy on other. */ + public withError_args(withError_args other) {} + + public withError_args deepCopy() { + return new withError_args(this); + } + + @Override + public void clear() {} + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withError_args) return this.equals((withError_args) that); + return false; + } + + public boolean equals(withError_args that) { + if (that == null) return false; + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withError_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) + throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withError_args("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class withError_argsStandardSchemeFactory implements SchemeFactory { + public withError_argsStandardScheme getScheme() { + return new withError_argsStandardScheme(); + } + } + + private static class withError_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withError_args struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withError_args struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withError_argsTupleSchemeFactory implements SchemeFactory { + public withError_argsTupleScheme getScheme() { + return new withError_argsTupleScheme(); + } + } + + private static class withError_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withError_args struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withError_args struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + } + } + } + + public static class withError_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("withError_result"); + + private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "success", org.apache.thrift.protocol.TType.STRING, (short) 0); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new withError_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new withError_resultTupleSchemeFactory()); + } + + public String success; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + SUCCESS((short) 0, "success"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 0: // SUCCESS + return SUCCESS; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.SUCCESS, + new org.apache.thrift.meta_data.FieldMetaData( + "success", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.STRING))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + withError_result.class, metaDataMap); + } + + public withError_result() {} + + public withError_result(String success) { + this(); + this.success = success; + } + + /** Performs a deep copy on other. */ + public withError_result(withError_result other) { + if (other.isSetSuccess()) { + this.success = other.success; + } + } + + public withError_result deepCopy() { + return new withError_result(this); + } + + @Override + public void clear() { + this.success = null; + } + + public String getSuccess() { + return this.success; + } + + public withError_result setSuccess(String success) { + this.success = success; + return this; + } + + public void unsetSuccess() { + this.success = null; + } + + /** Returns true if field success is set (has been assigned a value) and false otherwise */ + public boolean isSetSuccess() { + return this.success != null; + } + + public void setSuccessIsSet(boolean value) { + if (!value) { + this.success = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case SUCCESS: + if (value == null) { + unsetSuccess(); + } else { + setSuccess((String) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case SUCCESS: + return getSuccess(); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case SUCCESS: + return isSetSuccess(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof withError_result) return this.equals((withError_result) that); + return false; + } + + public boolean equals(withError_result that) { + if (that == null) return false; + + boolean this_present_success = true && this.isSetSuccess(); + boolean that_present_success = true && that.isSetSuccess(); + if (this_present_success || that_present_success) { + if (!(this_present_success && that_present_success)) return false; + if (!this.success.equals(that.success)) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(withError_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetSuccess()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) + throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("withError_result("); + boolean first = true; + + sb.append("success:"); + if (this.success == null) { + sb.append("null"); + } else { + sb.append(this.success); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class withError_resultStandardSchemeFactory implements SchemeFactory { + public withError_resultStandardScheme getScheme() { + return new withError_resultStandardScheme(); + } + } + + private static class withError_resultStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, withError_result struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 0: // SUCCESS + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, withError_result struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.success != null) { + oprot.writeFieldBegin(SUCCESS_FIELD_DESC); + oprot.writeString(struct.success); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class withError_resultTupleSchemeFactory implements SchemeFactory { + public withError_resultTupleScheme getScheme() { + return new withError_resultTupleScheme(); + } + } + + private static class withError_resultTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, withError_result struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetSuccess()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetSuccess()) { + oprot.writeString(struct.success); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, withError_result struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.success = iprot.readString(); + struct.setSuccessIsSet(true); + } + } + } + } + + public static class noReturn_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("noReturn_args"); + + private static final org.apache.thrift.protocol.TField DELAY_FIELD_DESC = + new org.apache.thrift.protocol.TField( + "delay", org.apache.thrift.protocol.TType.I32, (short) 1); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new noReturn_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new noReturn_argsTupleSchemeFactory()); + } + + public int delay; // required + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + DELAY((short) 1, "delay"); + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + case 1: // DELAY + return DELAY; + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + // isset id assignments + private static final int __DELAY_ISSET_ID = 0; + private byte __isset_bitfield = 0; + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + tmpMap.put( + _Fields.DELAY, + new org.apache.thrift.meta_data.FieldMetaData( + "delay", + org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData( + org.apache.thrift.protocol.TType.I32))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + noReturn_args.class, metaDataMap); + } + + public noReturn_args() {} + + public noReturn_args(int delay) { + this(); + this.delay = delay; + setDelayIsSet(true); + } + + /** Performs a deep copy on other. */ + public noReturn_args(noReturn_args other) { + __isset_bitfield = other.__isset_bitfield; + this.delay = other.delay; + } + + public noReturn_args deepCopy() { + return new noReturn_args(this); + } + + @Override + public void clear() { + setDelayIsSet(false); + this.delay = 0; + } + + public int getDelay() { + return this.delay; + } + + public noReturn_args setDelay(int delay) { + this.delay = delay; + setDelayIsSet(true); + return this; + } + + public void unsetDelay() { + __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DELAY_ISSET_ID); + } + + /** Returns true if field delay is set (has been assigned a value) and false otherwise */ + public boolean isSetDelay() { + return EncodingUtils.testBit(__isset_bitfield, __DELAY_ISSET_ID); + } + + public void setDelayIsSet(boolean value) { + __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DELAY_ISSET_ID, value); + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case DELAY: + if (value == null) { + unsetDelay(); + } else { + setDelay((Integer) value); + } + break; + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case DELAY: + return Integer.valueOf(getDelay()); + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + case DELAY: + return isSetDelay(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof noReturn_args) return this.equals((noReturn_args) that); + return false; + } + + public boolean equals(noReturn_args that) { + if (that == null) return false; + + boolean this_present_delay = true; + boolean that_present_delay = true; + if (this_present_delay || that_present_delay) { + if (!(this_present_delay && that_present_delay)) return false; + if (this.delay != that.delay) return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(noReturn_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + lastComparison = Boolean.valueOf(isSetDelay()).compareTo(other.isSetDelay()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetDelay()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.delay, other.delay); + if (lastComparison != 0) { + return lastComparison; + } + } + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) + throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("noReturn_args("); + boolean first = true; + + sb.append("delay:"); + sb.append(this.delay); + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + // it doesn't seem like you should have to do this, but java serialization is wacky, and + // doesn't call the default constructor. + __isset_bitfield = 0; + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class noReturn_argsStandardSchemeFactory implements SchemeFactory { + public noReturn_argsStandardScheme getScheme() { + return new noReturn_argsStandardScheme(); + } + } + + private static class noReturn_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, noReturn_args struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + case 1: // DELAY + if (schemeField.type == org.apache.thrift.protocol.TType.I32) { + struct.delay = iprot.readI32(); + struct.setDelayIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, noReturn_args struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldBegin(DELAY_FIELD_DESC); + oprot.writeI32(struct.delay); + oprot.writeFieldEnd(); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class noReturn_argsTupleSchemeFactory implements SchemeFactory { + public noReturn_argsTupleScheme getScheme() { + return new noReturn_argsTupleScheme(); + } + } + + private static class noReturn_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, noReturn_args struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetDelay()) { + optionals.set(0); + } + oprot.writeBitSet(optionals, 1); + if (struct.isSetDelay()) { + oprot.writeI32(struct.delay); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, noReturn_args struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(1); + if (incoming.get(0)) { + struct.delay = iprot.readI32(); + struct.setDelayIsSet(true); + } + } + } + } + + public static class noReturn_result + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("noReturn_result"); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new noReturn_resultStandardSchemeFactory()); + schemes.put(TupleScheme.class, new noReturn_resultTupleSchemeFactory()); + } + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ; + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + noReturn_result.class, metaDataMap); + } + + public noReturn_result() {} + + /** Performs a deep copy on other. */ + public noReturn_result(noReturn_result other) {} + + public noReturn_result deepCopy() { + return new noReturn_result(this); + } + + @Override + public void clear() {} + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof noReturn_result) return this.equals((noReturn_result) that); + return false; + } + + public boolean equals(noReturn_result that) { + if (that == null) return false; + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(noReturn_result other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) + throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("noReturn_result("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class noReturn_resultStandardSchemeFactory implements SchemeFactory { + public noReturn_resultStandardScheme getScheme() { + return new noReturn_resultStandardScheme(); + } + } + + private static class noReturn_resultStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, noReturn_result struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, noReturn_result struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class noReturn_resultTupleSchemeFactory implements SchemeFactory { + public noReturn_resultTupleScheme getScheme() { + return new noReturn_resultTupleScheme(); + } + } + + private static class noReturn_resultTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, noReturn_result struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, noReturn_result struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + } + } + } + + public static class oneWay_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("oneWay_args"); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new oneWay_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new oneWay_argsTupleSchemeFactory()); + } + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ; + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + oneWay_args.class, metaDataMap); + } + + public oneWay_args() {} + + /** Performs a deep copy on other. */ + public oneWay_args(oneWay_args other) {} + + public oneWay_args deepCopy() { + return new oneWay_args(this); + } + + @Override + public void clear() {} + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof oneWay_args) return this.equals((oneWay_args) that); + return false; + } + + public boolean equals(oneWay_args that) { + if (that == null) return false; + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(oneWay_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) + throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("oneWay_args("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class oneWay_argsStandardSchemeFactory implements SchemeFactory { + public oneWay_argsStandardScheme getScheme() { + return new oneWay_argsStandardScheme(); + } + } + + private static class oneWay_argsStandardScheme extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, oneWay_args struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, oneWay_args struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class oneWay_argsTupleSchemeFactory implements SchemeFactory { + public oneWay_argsTupleScheme getScheme() { + return new oneWay_argsTupleScheme(); + } + } + + private static class oneWay_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, oneWay_args struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, oneWay_args struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + } + } + } + + public static class oneWayWithError_args + implements org.apache.thrift.TBase, + java.io.Serializable, + Cloneable, + Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = + new org.apache.thrift.protocol.TStruct("oneWayWithError_args"); + + private static final Map, SchemeFactory> schemes = + new HashMap, SchemeFactory>(); + + static { + schemes.put(StandardScheme.class, new oneWayWithError_argsStandardSchemeFactory()); + schemes.put(TupleScheme.class, new oneWayWithError_argsTupleSchemeFactory()); + } + + /** + * The set of fields this struct contains, along with convenience methods for finding and + * manipulating them. + */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { + ; + + private static final Map byName = new HashMap(); + + static { + for (_Fields field : EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** Find the _Fields constant that matches fieldId, or null if its not found. */ + public static _Fields findByThriftId(int fieldId) { + switch (fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) + throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** Find the _Fields constant that matches name, or null if its not found. */ + public static _Fields findByName(String name) { + return byName.get(name); + } + + private final short _thriftId; + private final String _fieldName; + + _Fields(short thriftId, String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public String getFieldName() { + return _fieldName; + } + } + + public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + + static { + Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = + new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( + oneWayWithError_args.class, metaDataMap); + } + + public oneWayWithError_args() {} + + /** Performs a deep copy on other. */ + public oneWayWithError_args(oneWayWithError_args other) {} + + public oneWayWithError_args deepCopy() { + return new oneWayWithError_args(this); + } + + @Override + public void clear() {} + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + } + throw new IllegalStateException(); + } + + /** + * Returns true if field corresponding to fieldID is set (has been assigned a value) and false + * otherwise + */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new IllegalArgumentException(); + } + + switch (field) { + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (that instanceof oneWayWithError_args) return this.equals((oneWayWithError_args) that); + return false; + } + + public boolean equals(oneWayWithError_args that) { + if (that == null) return false; + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public int compareTo(oneWayWithError_args other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) + throws org.apache.thrift.TException { + schemes.get(iprot.getScheme()).getScheme().read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) + throws org.apache.thrift.TException { + schemes.get(oprot.getScheme()).getScheme().write(oprot, this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("oneWayWithError_args("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) + throws java.io.IOException, ClassNotFoundException { + try { + read( + new org.apache.thrift.protocol.TCompactProtocol( + new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class oneWayWithError_argsStandardSchemeFactory implements SchemeFactory { + public oneWayWithError_argsStandardScheme getScheme() { + return new oneWayWithError_argsStandardScheme(); + } + } + + private static class oneWayWithError_argsStandardScheme + extends StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, oneWayWithError_args struct) + throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate + // method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, oneWayWithError_args struct) + throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + } + + private static class oneWayWithError_argsTupleSchemeFactory implements SchemeFactory { + public oneWayWithError_argsTupleScheme getScheme() { + return new oneWayWithError_argsTupleScheme(); + } + } + + private static class oneWayWithError_argsTupleScheme extends TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, oneWayWithError_args struct) + throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, oneWayWithError_args struct) + throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/thrift b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/thrift deleted file mode 100755 index 6d06d49993d640e61b7af847fd441afe64e5f0ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3196232 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%0D^n#=zB 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

MhoO1^eLfLh3!m$*C#D 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't$Qup!pXYWS+>BWQ0 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

?*n#z!^sLB4Jt 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

x>gX#?*b@si9o@v_EHcSzki@ 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
2E&N`5$g4!+XuB=wumOY;SObE|KH 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 z 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≫bP|h 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

(jK;4m^TS^m-)k$7SV7<`X@sjxX^3 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 z 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


Ct-TxbFnc#!6wqR^Po6( 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

x_2P>pnOmfn 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�SE--+054q5{{ZiUnIiE)wcOzO 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 diff --git a/instrumentation/thrift/thrift-0.9.3/javaagent/build.gradle.kts b/instrumentation/thrift/thrift-0.9.3/javaagent/build.gradle.kts new file mode 100644 index 000000000000..7c2b91e62b2b --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.3/javaagent/build.gradle.kts @@ -0,0 +1,21 @@ +plugins { + id("otel.javaagent-instrumentation") +} + +muzzle { + pass { + group.set("org.apache.thrift") + module.set("libthrift") + versions.set("[0.9.3,)") + assertInverse.set(true) + } +} + +dependencies { + library("org.apache.thrift:libthrift:0.9.3") + implementation(project(":instrumentation:thrift:thrift-common:javaagent")) + implementation(project(":instrumentation:thrift:thrift-0.9.1:javaagent")) + + testImplementation("org.apache.thrift:libthrift:0.9.1") + testImplementation("javax.annotation:javax.annotation-api:1.3.2") +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentation.java similarity index 98% rename from instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentation.java rename to instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentation.java index 8687a5f55457..c694de1e0598 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentation.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client.v3; +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_3.client; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentationModule.java similarity index 88% rename from instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentationModule.java rename to instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentationModule.java index 34f86ab1354b..a7cd4fc56053 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/v3/ThriftClientInstrumentationModule.java +++ b/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentationModule.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client.v3; +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_3.client; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static java.util.Arrays.asList; @@ -18,7 +18,7 @@ public final class ThriftClientInstrumentationModule extends InstrumentationModule { public ThriftClientInstrumentationModule() { - super("thrift", "thrift-0.9.1", "thrift-0.9.3-client"); + super("thrift", "thrift-0.9.3", "thrift-0.9.3-client"); } @Override diff --git a/instrumentation/thrift/thrift-common/library/build.gradle.kts b/instrumentation/thrift/thrift-common/javaagent/build.gradle.kts similarity index 100% rename from instrumentation/thrift/thrift-common/library/build.gradle.kts rename to instrumentation/thrift/thrift-common/javaagent/build.gradle.kts diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/RequestScopeContext.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/RequestScopeContext.java similarity index 100% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/RequestScopeContext.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/RequestScopeContext.java diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/SocketAccessor.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/SocketAccessor.java similarity index 100% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/SocketAccessor.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/SocketAccessor.java diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java similarity index 100% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderSetter.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderSetter.java similarity index 100% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderSetter.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderSetter.java diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java similarity index 100% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRequest.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRequest.java similarity index 100% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRequest.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRequest.java diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java similarity index 95% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java index ba021f5ec730..9c257aad7339 100644 --- a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java +++ b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java @@ -13,7 +13,7 @@ public enum ThriftRpcAttributesGetter implements RpcAttributesGetter { @Override public String extract(ThriftRequest request) { - return request.getMethodName(); + if (request.getServiceName() == null || request.getMethodName() == null) { + return "Thrift request"; + } + return request.getServiceName() + '/' + request.getMethodName(); } } diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanStatusExtractor.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanStatusExtractor.java similarity index 100% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanStatusExtractor.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanStatusExtractor.java diff --git a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java new file mode 100644 index 000000000000..4112e4ab6fd5 --- /dev/null +++ b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java @@ -0,0 +1,55 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common.client; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class MethodAccessor { + + private static Field concreteProtocolField; + private static final Map> SERVICE_NAME_METHOD_NAMES = new HashMap<>(); + + private MethodAccessor() {} + + public static Set voidMethodNames(String serviceName) { + Set methodNames = SERVICE_NAME_METHOD_NAMES.getOrDefault(serviceName, new HashSet<>()); + if (!methodNames.isEmpty()) { + return methodNames; + } + try { + Class clazz = Class.forName(serviceName); + Method[] declaredMethods = clazz.getDeclaredMethods(); + for (Method declaredMethod : declaredMethods) { + if (declaredMethod.getReturnType() == void.class) { + methodNames.add(declaredMethod.getName()); + } + } + } catch (ClassNotFoundException ignore) { + // ignore + } + SERVICE_NAME_METHOD_NAMES.put(serviceName, methodNames); + return methodNames; + } + + public static Field getConcreteProtocolField(Class clazz) { + if (concreteProtocolField != null) { + return concreteProtocolField; + } + try { + Field field = clazz.getDeclaredField("concreteProtocol"); + field.setAccessible(true); + concreteProtocolField = field; + } catch (NoSuchFieldException ignore) { + // ignore + } + return concreteProtocolField; + } +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java similarity index 100% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java diff --git a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/VirtualFields.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/VirtualFields.java new file mode 100644 index 000000000000..469d0de3a3da --- /dev/null +++ b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/VirtualFields.java @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.thrift.common.client; + +import io.opentelemetry.instrumentation.api.util.VirtualField; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncMethodCall; + +public class VirtualFields { + private VirtualFields() {} + + public static final VirtualField, AsyncMethodCallback> + ASYNC_METHOD_CALLBACK = VirtualField.find(TAsyncMethodCall.class, AsyncMethodCallback.class); +} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/server/ThriftServerNetworkAttributesGetter.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/server/ThriftServerNetworkAttributesGetter.java similarity index 100% rename from instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/server/ThriftServerNetworkAttributesGetter.java rename to instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/server/ThriftServerNetworkAttributesGetter.java diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftAttributesExtractor.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftAttributesExtractor.java deleted file mode 100644 index a9091798255c..000000000000 --- a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftAttributesExtractor.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.thrift.common; - -import io.opentelemetry.api.common.AttributesBuilder; -import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; -import javax.annotation.Nullable; - -final class ThriftAttributesExtractor implements AttributesExtractor { - - @Override - public void onStart(AttributesBuilder attributes, Context parentContext, ThriftRequest request) { - // Request attributes captured on request end. - } - - @Override - public void onEnd( - AttributesBuilder attributes, - Context context, - ThriftRequest request, - @Nullable Integer status, - @Nullable Throwable error) {} -} diff --git a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java b/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java deleted file mode 100644 index 7c94ae7636fe..000000000000 --- a/instrumentation/thrift/thrift-common/library/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.thrift.common.client; - -import java.lang.reflect.Method; -import java.util.HashSet; -import java.util.Set; - -public class MethodAccessor { - - private MethodAccessor() {} - - public static Set voidMethodNames(String serviceName) { - Set methodNames = new HashSet<>(); - try { - Class clazz = Class.forName(serviceName); - Method[] declaredMethods = clazz.getDeclaredMethods(); - for (Method declaredMethod : declaredMethods) { - if (declaredMethod.getReturnType() == void.class) { - methodNames.add(declaredMethod.getName()); - } - } - } catch (ClassNotFoundException ignore) { - // ignore - } - return methodNames; - } -} diff --git a/settings.gradle.kts b/settings.gradle.kts index fa52828c9c61..4f0bcd7efa17 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -617,7 +617,8 @@ include(":instrumentation:xxl-job:xxl-job-common:javaagent") include(":instrumentation:xxl-job:xxl-job-common:testing") include(":instrumentation:zio:zio-2.0:javaagent") include(":instrumentation:thrift:thrift-0.9.1:javaagent") -include(":instrumentation:thrift:thrift-common:library") +include(":instrumentation:thrift:thrift-0.9.3:javaagent") +include(":instrumentation:thrift:thrift-common:javaagent") // benchmark include(":benchmark-overhead-jmh") From 966066ed644d97a290012286fdd38b337ad4cfdf Mon Sep 17 00:00:00 2001 From: yaoyinglong <906271196@qq.com> Date: Tue, 10 Mar 2026 20:19:19 +0800 Subject: [PATCH 04/13] feat: temporarily remove the test code. --- .../thrift/v0_9_1/NoReturnTest.java | 1051 ----- .../thrift/v0_9_1/OneWayErrorTest.java | 935 ----- .../thrift/v0_9_1/OneWayTest.java | 918 ----- .../thrift/v0_9_1/SayHelloTest.java | 1064 ----- .../thrift/v0_9_1/ThriftBaseTest.java | 902 ----- .../thrift/v0_9_1/WithErrorTest.java | 961 ----- .../v0_9_1/server/ThriftServiceAsyncImpl.java | 40 - .../v0_9_1/server/ThriftServiceImpl.java | 37 - .../thrift/v0_9_1/thrift/ThriftService.java | 3453 ----------------- .../src/test/resources/ThriftService.thrift | 10 - 10 files changed, 9371 deletions(-) delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java deleted file mode 100644 index 66c0e3de239e..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java +++ /dev/null @@ -1,1051 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import java.io.IOException; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.apache.thrift.async.TAsyncClientManager; -import org.apache.thrift.protocol.TBinaryProtocol; -import org.apache.thrift.protocol.TMultiplexedProtocol; -import org.apache.thrift.protocol.TProtocol; -import org.apache.thrift.protocol.TProtocolFactory; -import org.apache.thrift.transport.TFastFramedTransport; -import org.apache.thrift.transport.TFramedTransport; -import org.apache.thrift.transport.TNonblockingSocket; -import org.apache.thrift.transport.TNonblockingTransport; -import org.apache.thrift.transport.TSocket; -import org.apache.thrift.transport.TTransport; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.Test; - -public class NoReturnTest extends ThriftBaseTest { - - @Test - public void syncClientSyncSimpleServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - this.syncClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncClientSyncSimpleServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientNoReturn(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); - } - - @Test - public void syncClientSyncSimpleServerNoReturnParallel() throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerNoReturnParallel field: " + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); - } - - @Test - public void syncClientSyncThreadPoolServerNoReturn() throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - this.syncClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncClientSyncThreadPoolServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientNoReturn(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); - } - - @Test - public void syncClientSyncThreadPoolServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerNoReturnParallel field: " + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); - } - - @Test - public void syncClientMutiSyncSimpleServerNoReturn() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - this.syncClientMultiNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 1); - } - - @Test - public void syncClientMutiSyncSimpleServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientMultiNoReturn(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 5); - } - - @Test - public void syncClientMutiSyncSimpleServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientMultiNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerNoReturnParallel field: " + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync( - port, "noReturn", "syncHelloWorld:noReturn", threadCount); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientAsyncThreadedSelectorServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorFastServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientAsyncThreadedSelectorFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorFastServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientNoReturn(port); - } - - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 5); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", threadCount); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerNoReturn() throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - this.syncFramedClientMultiNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 1); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - for (int i = 0; i < 5; ++i) { - this.syncFramedClientMultiNoReturn(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 5); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientMultiNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync( - port, "noReturn", "syncHelloWorld:noReturn", threadCount); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientSyncThreadedSelectorServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientSyncThreadedSelectorFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorFastServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientSyncThreadedSelectorFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorFastServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - for (int i = 0; i < 5; ++i) { - this.syncFramedClientNoReturn(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncThreadedSelectorServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerNoReturn() throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.nonBlockClientNoReturn(port); - this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 1); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerNoReturnMuti() - throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - for (int i = 0; i < 5; ++i) { - this.nonBlockClientNoReturn(port); - } - this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 5); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientNoReturn(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncThreadedSelectorServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", threadCount); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerNoReturn() throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.nonBlockClientNoReturn(port); - this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 1); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerNoReturnMuti() - throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - for (int i = 0; i < 5; ++i) { - this.nonBlockClientNoReturn(port); - } - this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 5); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientNoReturn(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncThreadedSelectorServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", threadCount); - } - - @Test - public void syncFramedClientSyncNonblockingServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientSyncNonblockingServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientSyncNonblockingFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncNonblockingFastServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientSyncNonblockingFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncNonblockingFastServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientSyncNonblockingServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - for (int i = 0; i < 5; ++i) { - this.syncFramedClientNoReturn(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); - } - - @Test - public void syncFramedClientSyncNonblockingServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncNonblockingServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); - } - - @Test - public void syncFramedClientSyncHsHaServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientSyncHsHaServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientSyncHsHaFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncHsHaFastServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientSyncHsHaFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startSyncHsHaFastServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientSyncHsHaServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientNoReturn(port); - } - - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 5); - } - - @Test - public void syncFramedClientSyncHsHaServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncHsHaServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); - } - - @Test - public void syncFramedClientAsyncNonblockingServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientAsyncNonblockingServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientAsyncNonblockingServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientNoReturn(port); - } - - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 5); - } - - @Test - public void syncFramedClientAsyncNonblockingServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncNonblockingServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", threadCount); - } - - @Test - public void syncFramedClientAsyncHsHaServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientAsyncHsHaServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientAsyncHsHaFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncHsHaFastServer(port); - this.syncFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFastFramedClientAsyncHsHaFastServerNoReturn() throws TException { - int port = super.getPort(); - this.startAsyncHsHaFastServer(port); - this.syncFastFramedClientNoReturn(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); - } - - @Test - public void syncFramedClientAsyncHsHaServerNoReturnMuti() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientNoReturn(port); - } - - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 5); - } - - @Test - public void syncFramedClientAsyncHsHaServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientNoReturn(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncHsHaServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", threadCount); - } - - @Test - public void nonBlockClientSyncNonblockingServerNoReturn() throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.nonBlockClientNoReturn(port); - this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 1); - } - - @Test - public void nonBlockClientSyncNonblockingServerNoReturnMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientNoReturn(port); - } - - this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 5); - } - - @Test - public void nonBlockClientSyncNonblockingServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientNoReturn(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncNonblockingServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", threadCount); - } - - @Test - public void nonBlockClientSyncHsHaServerNoReturn() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.nonBlockClientNoReturn(port); - this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 1); - } - - @Test - public void nonBlockClientSyncHsHaServerNoReturnMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientNoReturn(port); - } - - this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 5); - } - - @Test - public void nonBlockClientSyncHsHaServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientNoReturn(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncHsHaServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", threadCount); - } - - @Test - public void nonBlockClientAsyncNonblockingServerNoReturn() throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.nonBlockClientNoReturn(port); - this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 1); - } - - @Test - public void nonBlockClientAsyncNonblockingServerNoReturnMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientNoReturn(port); - } - - this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 5); - } - - @Test - public void nonBlockClientAsyncNonblockingServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientNoReturn(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncNonblockingServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", threadCount); - } - - @Test - public void nonBlockClientAsyncHsHaServerNoReturn() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.nonBlockClientNoReturn(port); - this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 1); - } - - @Test - public void nonBlockClientAsyncHsHaServerNoReturnMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientNoReturn(port); - } - - this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 5); - } - - @Test - public void nonBlockClientAsyncHsHaServerNoReturnParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientNoReturn(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncHsHaServerNoReturnParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", threadCount); - } - - public void syncClientNoReturn(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - ThriftService.Client client = new ThriftService.Client(protocol); - this.testing().runWithSpan("parent", () -> client.noReturn(1)); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncClientMultiNoReturn(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - this.testing().runWithSpan("parent", () -> client.noReturn(1)); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void nonBlockClientNoReturn(int port) throws TException, IOException { - TNonblockingTransport transport = new TNonblockingSocket("localhost", port); - TAsyncClientManager clientManager = new TAsyncClientManager(); - TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); - ThriftService.AsyncClient.Factory factory = - new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); - ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); - AsyncMethodCallback callback = - new AsyncMethodCallback() { - @Override - public void onComplete(ThriftService.AsyncClient.noReturn_call s) {} - - @Override - public void onError(Exception e) { - assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); - } - }; - this.testing().runWithSpan("parent", () -> asyClient.noReturn(1, callback)); - } - - public void syncFramedClientNoReturn(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - ThriftService.Client client = new ThriftService.Client(protocol); - this.testing().runWithSpan("parent", () -> client.noReturn(1)); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncFastFramedClientNoReturn(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFastFramedTransport framedTransport = new TFastFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - ThriftService.Client client = new ThriftService.Client(protocol); - this.testing().runWithSpan("parent", () -> client.noReturn(1)); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncFramedClientMultiNoReturn(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - this.testing().runWithSpan("parent", () -> client.noReturn(1)); - } finally { - if (transport != null) { - transport.close(); - } - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java deleted file mode 100644 index a29bcca11157..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java +++ /dev/null @@ -1,935 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import java.io.IOException; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.apache.thrift.async.TAsyncClientManager; -import org.apache.thrift.protocol.TBinaryProtocol; -import org.apache.thrift.protocol.TMultiplexedProtocol; -import org.apache.thrift.protocol.TProtocol; -import org.apache.thrift.protocol.TProtocolFactory; -import org.apache.thrift.transport.TFramedTransport; -import org.apache.thrift.transport.TNonblockingSocket; -import org.apache.thrift.transport.TNonblockingTransport; -import org.apache.thrift.transport.TSocket; -import org.apache.thrift.transport.TTransport; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.Test; - -public class OneWayErrorTest extends ThriftBaseTest { - - @Test - public void syncClientSyncSimpleServerOneWayWithError() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - this.syncClientOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); - } - - @Test - public void syncClientSyncSimpleServerOneWayWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientOneWayWithError(port); - } - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); - } - - @Test - public void syncClientSyncSimpleServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); - } - - @Test - public void syncClientSyncThreadPoolServerOneWayWithError() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - this.syncClientOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); - } - - @Test - public void syncClientSyncThreadPoolServerOneWayWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientOneWayWithError(port); - } - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); - } - - @Test - public void syncClientSyncThreadPoolServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); - } - - @Test - public void syncClientMutiSyncSimpleServerOneWayWithError() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - this.syncClientMultiOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerSyncOnewayError( - port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 1); - } - - @Test - public void syncClientMutiSyncSimpleServerOneWayWithErrorMuti() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientMultiOneWayWithError(port); - } - this.waitAndAssertTracesClientSyncServerSyncOnewayError( - port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 5); - } - - @Test - public void syncClientMutiSyncSimpleServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientMultiOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncOnewayError( - port, "oneWayWithError", "syncHelloWorld:oneWayWithError", threadCount); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerOneWayWithError() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.syncFramedClientOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 1); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerOneWayWithErrorMuti() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 5); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", threadCount); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayWithError() throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - this.syncFramedClientMultiOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerSyncOnewayError( - port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 1); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayWithErrorMuti() - throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientMultiOneWayWithError(port); - } - - this.waitAndAssertTracesClientSyncServerSyncOnewayError( - port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 5); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientMultiOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncOnewayError( - port, "oneWayWithError", "syncHelloWorld:oneWayWithError", threadCount); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerOneWayWithError() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.syncFramedClientOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerOneWayWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncThreadedSelectorServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerOneWayWithError() - throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.nonBlockClientOneWayWithError(port); - this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 1); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerOneWayWithErrorMuti() - throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 5); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWayWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncThreadedSelectorServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", threadCount); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerOneWayWithError() - throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.nonBlockClientOneWayWithError(port); - this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 1); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerOneWayWithErrorMuti() - throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 5); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWayWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncThreadedSelectorServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", threadCount); - } - - @Test - public void syncFramedClientSyncNonblockingServerOneWayWithError() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.syncFramedClientOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); - } - - @Test - public void syncFramedClientSyncNonblockingServerOneWayWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); - } - - @Test - public void syncFramedClientSyncNonblockingServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncNonblockingServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); - } - - @Test - public void syncFramedClientSyncHsHaServerOneWayWithError() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.syncFramedClientOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); - } - - @Test - public void syncFramedClientSyncHsHaServerOneWayWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 5); - } - - @Test - public void syncFramedClientSyncHsHaServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncHsHaServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); - } - - @Test - public void syncFramedClientAsyncNonblockingServerOneWayWithError() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.syncFramedClientOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 1); - } - - @Test - public void syncFramedClientAsyncNonblockingServerOneWayWithErrorMuti() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 5); - } - - @Test - public void syncFramedClientAsyncNonblockingServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncNonblockingServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", threadCount); - } - - @Test - public void syncFramedClientAsyncHsHaServerOneWayWithError() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.syncFramedClientOneWayWithError(port); - this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 1); - } - - @Test - public void syncFramedClientAsyncHsHaServerOneWayWithErrorMuti() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 5); - } - - @Test - public void syncFramedClientAsyncHsHaServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWayWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncHsHaServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", threadCount); - } - - @Test - public void nonBlockClientSyncNonblockingServerOneWayWithError() throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.nonBlockClientOneWayWithError(port); - this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 1); - } - - @Test - public void nonBlockClientSyncNonblockingServerOneWayWithErrorMuti() - throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 5); - } - - @Test - public void nonBlockClientSyncNonblockingServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWayWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncNonblockingServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", threadCount); - } - - @Test - public void nonBlockClientSyncHsHaServerOneWayWithError() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.nonBlockClientOneWayWithError(port); - this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 1); - } - - @Test - public void nonBlockClientSyncHsHaServerOneWayWithErrorMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 5); - } - - @Test - public void nonBlockClientSyncHsHaServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWayWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncHsHaServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", threadCount); - } - - @Test - public void nonBlockClientAsyncNonblockingServerOneWayWithError() throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.nonBlockClientOneWayWithError(port); - this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 1); - } - - @Test - public void nonBlockClientAsyncNonblockingServerOneWayWithErrorMuti() - throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 5); - } - - @Test - public void nonBlockClientAsyncNonblockingServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWayWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncNonblockingServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", threadCount); - } - - @Test - public void nonBlockClientAsyncHsHaServerOneWayWithError() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.nonBlockClientOneWayWithError(port); - this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 1); - } - - @Test - public void nonBlockClientAsyncHsHaServerOneWayWithErrorMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWayWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 5); - } - - @Test - public void nonBlockClientAsyncHsHaServerOneWayWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWayWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncHsHaServerOneWayWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", threadCount); - } - - public void syncClientOneWayWithError(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - ThriftService.Client client = new ThriftService.Client(protocol); - this.testing().runWithSpan("parent", () -> client.oneWayWithError()); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncClientMultiOneWayWithError(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - this.testing().runWithSpan("parent", () -> client.oneWayWithError()); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void nonBlockClientOneWayWithError(int port) throws TException, IOException { - TNonblockingTransport transport = new TNonblockingSocket("localhost", port); - TAsyncClientManager clientManager = new TAsyncClientManager(); - TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); - ThriftService.AsyncClient.Factory factory = - new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); - ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); - AsyncMethodCallback callback = - new AsyncMethodCallback() { - @Override - public void onComplete(ThriftService.AsyncClient.oneWayWithError_call no) {} - - @Override - public void onError(Exception e) { - assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); - } - }; - this.testing().runWithSpan("parent", () -> asyClient.oneWayWithError(callback)); - } - - public void syncFramedClientOneWayWithError(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - ThriftService.Client client = new ThriftService.Client(protocol); - this.testing().runWithSpan("parent", () -> client.oneWayWithError()); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncFramedClientMultiOneWayWithError(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - this.testing().runWithSpan("parent", () -> client.oneWayWithError()); - } finally { - if (transport != null) { - transport.close(); - } - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java deleted file mode 100644 index 431f1ff3dd4c..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java +++ /dev/null @@ -1,918 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import java.io.IOException; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.apache.thrift.async.TAsyncClientManager; -import org.apache.thrift.protocol.TBinaryProtocol; -import org.apache.thrift.protocol.TMultiplexedProtocol; -import org.apache.thrift.protocol.TProtocol; -import org.apache.thrift.protocol.TProtocolFactory; -import org.apache.thrift.transport.TFramedTransport; -import org.apache.thrift.transport.TNonblockingSocket; -import org.apache.thrift.transport.TNonblockingTransport; -import org.apache.thrift.transport.TSocket; -import org.apache.thrift.transport.TTransport; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.Test; - -public class OneWayTest extends ThriftBaseTest { - - @Test - public void syncClientSyncSimpleServerOneWay() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - this.syncClientOneWay(port); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); - } - - @Test - public void syncClientSyncSimpleServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientOneWay(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); - } - - @Test - public void syncClientSyncSimpleServerOneWayParallel() throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerOneWayParallel field: " + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); - } - - @Test - public void syncClientSyncThreadPoolServerOneWay() throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - this.syncClientOneWay(port); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); - } - - @Test - public void syncClientSyncThreadPoolServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientOneWay(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); - } - - @Test - public void syncClientSyncThreadPoolServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerOneWayParallel field: " + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); - } - - @Test - public void syncClientMutiSyncSimpleServerOneWay() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - this.syncClientMultiOneWay(port); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 1); - } - - @Test - public void syncClientMutiSyncSimpleServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientMultiOneWay(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 5); - } - - @Test - public void syncClientMutiSyncSimpleServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientMultiOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerOneWayParallel field: " + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync( - port, "oneWay", "syncHelloWorld:oneWay", threadCount); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerOneWay() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.syncFramedClientOneWay(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 1); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWay(port); - } - - this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 5); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", threadCount); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerOneWay() throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - this.syncFramedClientMultiOneWay(port); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 1); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientMultiOneWay(port); - } - - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 5); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientMultiOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync( - port, "oneWay", "syncHelloWorld:oneWay", threadCount); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerOneWay() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.syncFramedClientOneWay(port); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWay(port); - } - - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncThreadedSelectorServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerOneWay() throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.nonBlockClientOneWay(port); - this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 1); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerOneWayMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWay(port); - } - - this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 5); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWay(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncThreadedSelectorServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", threadCount); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerOneWay() throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.nonBlockClientOneWay(port); - this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 1); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerOneWayMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWay(port); - } - - this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 5); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWay(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncThreadedSelectorServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", threadCount); - } - - @Test - public void syncFramedClientSyncNonblockingServerOneWay() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.syncFramedClientOneWay(port); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); - } - - @Test - public void syncFramedClientSyncNonblockingServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWay(port); - } - - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); - } - - @Test - public void syncFramedClientSyncNonblockingServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncNonblockingServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); - } - - @Test - public void syncFramedClientSyncHsHaServerOneWay() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.syncFramedClientOneWay(port); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); - } - - @Test - public void syncFramedClientSyncHsHaServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWay(port); - } - - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 5); - } - - @Test - public void syncFramedClientSyncHsHaServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncHsHaServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); - } - - @Test - public void syncFramedClientAsyncNonblockingServerOneWay() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.syncFramedClientOneWay(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 1); - } - - @Test - public void syncFramedClientAsyncNonblockingServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWay(port); - } - - this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 5); - } - - @Test - public void syncFramedClientAsyncNonblockingServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncNonblockingServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", threadCount); - } - - @Test - public void syncFramedClientAsyncHsHaServerOneWay() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.syncFramedClientOneWay(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 1); - } - - @Test - public void syncFramedClientAsyncHsHaServerOneWayMuti() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientOneWay(port); - } - - this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 5); - } - - @Test - public void syncFramedClientAsyncHsHaServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientOneWay(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncHsHaServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", threadCount); - } - - @Test - public void nonBlockClientSyncNonblockingServerOneWay() throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.nonBlockClientOneWay(port); - this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 1); - } - - @Test - public void nonBlockClientSyncNonblockingServerOneWayMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWay(port); - } - - this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 5); - } - - @Test - public void nonBlockClientSyncNonblockingServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWay(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncNonblockingServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", threadCount); - } - - @Test - public void nonBlockClientSyncHsHaServerOneWay() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.nonBlockClientOneWay(port); - this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 1); - } - - @Test - public void nonBlockClientSyncHsHaServerOneWayMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWay(port); - } - - this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 5); - } - - @Test - public void nonBlockClientSyncHsHaServerOneWayParallel() throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWay(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncHsHaServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", threadCount); - } - - @Test - public void nonBlockClientAsyncNonblockingServerOneWay() throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.nonBlockClientOneWay(port); - this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 1); - } - - @Test - public void nonBlockClientAsyncNonblockingServerOneWayMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWay(port); - } - - this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 5); - } - - @Test - public void nonBlockClientAsyncNonblockingServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWay(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncNonblockingServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", threadCount); - } - - @Test - public void nonBlockClientAsyncHsHaServerOneWay() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.nonBlockClientOneWay(port); - this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 1); - } - - @Test - public void nonBlockClientAsyncHsHaServerOneWayMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientOneWay(port); - } - - this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 5); - } - - @Test - public void nonBlockClientAsyncHsHaServerOneWayParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientOneWay(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncHsHaServerOneWayParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", threadCount); - } - - public void syncClientOneWay(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - ThriftService.Client client = new ThriftService.Client(protocol); - this.testing().runWithSpan("parent", () -> client.oneWay()); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncClientMultiOneWay(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - this.testing().runWithSpan("parent", () -> client.oneWay()); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void nonBlockClientOneWay(int port) throws TException, IOException { - TNonblockingTransport transport = new TNonblockingSocket("localhost", port); - TAsyncClientManager clientManager = new TAsyncClientManager(); - TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); - ThriftService.AsyncClient.Factory factory = - new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); - ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); - AsyncMethodCallback callback = - new AsyncMethodCallback() { - @Override - public void onComplete(ThriftService.AsyncClient.oneWay_call no) {} - - @Override - public void onError(Exception e) { - assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); - } - }; - this.testing().runWithSpan("parent", () -> asyClient.oneWay(callback)); - } - - public void syncFramedClientOneWay(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - ThriftService.Client client = new ThriftService.Client(protocol); - this.testing().runWithSpan("parent", () -> client.oneWay()); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncFramedClientMultiOneWay(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - this.testing().runWithSpan("parent", () -> client.oneWay()); - } finally { - if (transport != null) { - transport.close(); - } - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java deleted file mode 100644 index a579632f3898..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java +++ /dev/null @@ -1,1064 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import java.io.IOException; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.apache.thrift.async.TAsyncClientManager; -import org.apache.thrift.protocol.TBinaryProtocol; -import org.apache.thrift.protocol.TMultiplexedProtocol; -import org.apache.thrift.protocol.TProtocol; -import org.apache.thrift.protocol.TProtocolFactory; -import org.apache.thrift.transport.TFastFramedTransport; -import org.apache.thrift.transport.TFramedTransport; -import org.apache.thrift.transport.TNonblockingSocket; -import org.apache.thrift.transport.TNonblockingTransport; -import org.apache.thrift.transport.TSocket; -import org.apache.thrift.transport.TTransport; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.Test; -import org.testcontainers.shaded.com.google.common.base.VerifyException; - -public class SayHelloTest extends ThriftBaseTest { - - @Test - public void syncClientSyncSimpleServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - this.syncClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncClientSyncSimpleServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientSayHello(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); - } - - @Test - public void syncClientSyncSimpleServerSayHelloParallel() throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerSayHelloParallel field: " + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); - } - - @Test - public void syncClientSyncThreadPoolServerSayHello() throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - this.syncClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncClientSyncThreadPoolServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientSayHello(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); - } - - @Test - public void syncClientSyncThreadPoolServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerSayHelloParallel field: " + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); - } - - @Test - public void syncClientMutiSyncSimpleServerSayHello() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - this.syncClientMultiSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 1); - } - - @Test - public void syncClientMutiSyncSimpleServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientMultiSayHello(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 5); - } - - @Test - public void syncClientMutiSyncSimpleServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientMultiSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerSayHelloParallel field: " + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync( - port, "sayHello", "syncHelloWorld:sayHello", threadCount); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientAsyncThreadedSelectorServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorFastServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorFastServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientAsyncThreadedSelectorFastServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorFastServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientSayHello(port); - } - - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 5); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", threadCount); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerSayHello() throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - this.syncFramedClientMultiSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 1); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - for (int i = 0; i < 5; ++i) { - this.syncFramedClientMultiSayHello(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 5); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientMultiSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync( - port, "sayHello", "syncHelloWorld:sayHello", threadCount); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientSyncThreadedSelectorServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientSyncThreadedSelectorFastServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorFastServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientSyncThreadedSelectorFastServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorFastServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - for (int i = 0; i < 5; ++i) { - this.syncFramedClientSayHello(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncThreadedSelectorServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerSayHello() throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.nonBlockClientSayHello(port); - this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 1); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerSayHelloMuti() - throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - for (int i = 0; i < 5; ++i) { - this.nonBlockClientSayHello(port); - } - this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 5); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientSayHello(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncThreadedSelectorServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", threadCount); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerSayHello() throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.nonBlockClientSayHello(port); - this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 1); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerSayHelloMuti() - throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - for (int i = 0; i < 5; ++i) { - this.nonBlockClientSayHello(port); - } - this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 5); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientSayHello(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncThreadedSelectorServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", threadCount); - } - - @Test - public void syncFramedClientSyncNonblockingServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientSyncNonblockingServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientSyncNonblockingFastServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncNonblockingFastServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientSyncNonblockingFastServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncNonblockingFastServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientSyncNonblockingServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - for (int i = 0; i < 5; ++i) { - this.syncFramedClientSayHello(port); - } - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); - } - - @Test - public void syncFramedClientSyncNonblockingServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncNonblockingServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); - } - - @Test - public void syncFramedClientSyncHsHaServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientSyncHsHaServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientSyncHsHaFastServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncHsHaFastServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientSyncHsHaFastServerSayHello() throws TException { - int port = super.getPort(); - this.startSyncHsHaFastServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientSyncHsHaServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientSayHello(port); - } - - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 5); - } - - @Test - public void syncFramedClientSyncHsHaServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncHsHaServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); - } - - @Test - public void syncFramedClientAsyncNonblockingServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientAsyncNonblockingServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientAsyncNonblockingServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientSayHello(port); - } - - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 5); - } - - @Test - public void syncFramedClientAsyncNonblockingServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncNonblockingServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", threadCount); - } - - @Test - public void syncFramedClientAsyncHsHaServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientAsyncHsHaServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientAsyncHsHaFastServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncHsHaFastServer(port); - this.syncFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFastFramedClientAsyncHsHaFastServerSayHello() throws TException { - int port = super.getPort(); - this.startAsyncHsHaFastServer(port); - this.syncFastFramedClientSayHello(port); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); - } - - @Test - public void syncFramedClientAsyncHsHaServerSayHelloMuti() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientSayHello(port); - } - - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 5); - } - - @Test - public void syncFramedClientAsyncHsHaServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientSayHello(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncHsHaServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", threadCount); - } - - @Test - public void nonBlockClientSyncNonblockingServerSayHello() throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.nonBlockClientSayHello(port); - this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 1); - } - - @Test - public void nonBlockClientSyncNonblockingServerSayHelloMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientSayHello(port); - } - - this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 5); - } - - @Test - public void nonBlockClientSyncNonblockingServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientSayHello(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncNonblockingServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", threadCount); - } - - @Test - public void nonBlockClientSyncHsHaServerSayHello() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.nonBlockClientSayHello(port); - this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 1); - } - - @Test - public void nonBlockClientSyncHsHaServerSayHelloMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientSayHello(port); - } - - this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 5); - } - - @Test - public void nonBlockClientSyncHsHaServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientSayHello(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncHsHaServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", threadCount); - } - - @Test - public void nonBlockClientAsyncNonblockingServerSayHello() throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.nonBlockClientSayHello(port); - this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 1); - } - - @Test - public void nonBlockClientAsyncNonblockingServerSayHelloMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientSayHello(port); - } - - this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 5); - } - - @Test - public void nonBlockClientAsyncNonblockingServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientSayHello(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncNonblockingServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", threadCount); - } - - @Test - public void nonBlockClientAsyncHsHaServerSayHello() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.nonBlockClientSayHello(port); - this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 1); - } - - @Test - public void nonBlockClientAsyncHsHaServerSayHelloMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientSayHello(port); - } - - this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 5); - } - - @Test - public void nonBlockClientAsyncHsHaServerSayHelloParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientSayHello(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncHsHaServerSayHelloParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", threadCount); - } - - public void syncClientSayHello(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - ThriftService.Client client = new ThriftService.Client(protocol); - String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); - assertThat(response).isEqualTo("Hello USs' Bob"); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncClientMultiSayHello(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); - assertThat(response).isEqualTo("Hello USs' Bob"); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void nonBlockClientSayHello(int port) throws TException, IOException { - TNonblockingTransport transport = new TNonblockingSocket("localhost", port); - TAsyncClientManager clientManager = new TAsyncClientManager(); - TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); - ThriftService.AsyncClient.Factory factory = - new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); - ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); - AsyncMethodCallback callback = - new AsyncMethodCallback() { - @Override - public void onComplete(ThriftService.AsyncClient.sayHello_call s) { - try { - String result = s.getResult(); - assertThat(result).isEqualTo("Hello USs' Bob"); - } catch (TException e) { - throw new VerifyException(e); - } - } - - @Override - public void onError(Exception e) { - assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); - } - }; - this.testing().runWithSpan("parent", () -> asyClient.sayHello("US", "Bob", callback)); - } - - public void syncFramedClientSayHello(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - ThriftService.Client client = new ThriftService.Client(protocol); - String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); - assertThat(response).isEqualTo("Hello USs' Bob"); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncFastFramedClientSayHello(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFastFramedTransport framedTransport = new TFastFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - ThriftService.Client client = new ThriftService.Client(protocol); - String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); - assertThat(response).isEqualTo("Hello USs' Bob"); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncFramedClientMultiSayHello(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); - assertThat(response).isEqualTo("Hello USs' Bob"); - } finally { - if (transport != null) { - transport.close(); - } - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java deleted file mode 100644 index bfe32a147de1..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java +++ /dev/null @@ -1,902 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; - -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; -import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; - -import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.api.trace.SpanKind; -import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; -import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceAsyncImpl; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceImpl; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; -import io.opentelemetry.sdk.testing.assertj.TraceAssert; -import io.opentelemetry.sdk.trace.data.StatusData; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.charset.Charset; -import java.util.Random; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.function.Consumer; -import java.util.logging.Logger; -import org.apache.thrift.TMultiplexedProcessor; -import org.apache.thrift.protocol.TBinaryProtocol; -import org.apache.thrift.server.THsHaServer; -import org.apache.thrift.server.TNonblockingServer; -import org.apache.thrift.server.TServer; -import org.apache.thrift.server.TSimpleServer; -import org.apache.thrift.server.TThreadPoolServer; -import org.apache.thrift.server.TThreadedSelectorServer; -import org.apache.thrift.transport.TFastFramedTransport; -import org.apache.thrift.transport.TFramedTransport; -import org.apache.thrift.transport.TNonblockingServerSocket; -import org.apache.thrift.transport.TNonblockingServerTransport; -import org.apache.thrift.transport.TServerSocket; -import org.apache.thrift.transport.TServerTransport; -import org.apache.thrift.transport.TTransportException; -import org.assertj.core.api.AbstractAssert; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.testcontainers.shaded.com.google.common.base.VerifyException; - -public abstract class ThriftBaseTest { - private static final Logger logger = Logger.getLogger(ThriftBaseTest.class.getName()); - public TServer server; - public int port = 13100; - - private static final String ASYNC_CLIENT = - "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService$AsyncClient"; - private static final String SYNC_CLIENT = - "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService$Client"; - private static final String ASYNC_SERVER = - "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceAsyncImpl"; - private static final String SYNC_SERVER = - "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceImpl"; - private static final String PEER_ADDR = "127.0.0.1"; - - private static final String TRANSPORT_EXCEPTION = - "org.apache.thrift.transport.TTransportException"; - private static final String VERIFY_EXCEPTION = - "org.testcontainers.shaded.com.google.common.base.VerifyException"; - private static final String IO_EXCEPTION = "java.io.IOException"; - - private static final AttributeKey RPC_METHOD = AttributeKey.stringKey("rpc.method"); - private static final AttributeKey RPC_SERVICE = AttributeKey.stringKey("rpc.service"); - private static final AttributeKey RPC_SYSTEM = AttributeKey.stringKey("rpc.system"); - - private static final String EXCEPTION_EVENT_NAME = "exception"; - private static final AttributeKey EXCEPTION_MESSAGE = - AttributeKey.stringKey("exception.message"); - private static final AttributeKey EXCEPTION_TYPE = - AttributeKey.stringKey("exception.type"); - - public static final AttributeKey NETWORK_PEER_ADDRESS = - AttributeKey.stringKey("network.peer.address"); - public static final AttributeKey NETWORK_PEER_PORT = - AttributeKey.longKey("network.peer.port"); - - @RegisterExtension - protected static InstrumentationExtension testing = AgentInstrumentationExtension.create(); - - protected InstrumentationExtension testing() { - return testing; - } - - @BeforeEach - public void before() { - ++this.port; - logger.info( - "before port=" - + this.port - + ", threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.testing().clearData(); - } - - @AfterEach - public void after() { - this.stopServer(); - } - - public int getPort() { - Random random = new Random(); - int newPort = this.port + random.nextInt(2000); - while (portNotRelease(newPort)) { - newPort = this.port + random.nextInt(2000); - } - return newPort; - } - - public static boolean portNotRelease(int port) { - Process process = null; - String pid = null; - try { - process = Runtime.getRuntime().exec("lsof -ti:" + port); - BufferedReader reader = - new BufferedReader( - new InputStreamReader(process.getInputStream(), Charset.defaultCharset())); - pid = reader.readLine(); - } catch (IOException e) { - throw new VerifyException(e); - } - return pid != null && !pid.isEmpty(); - } - - public void startSyncSimpleServer(int port) throws TTransportException { - ThriftServiceImpl impl = new ThriftServiceImpl(); - ThriftService.Processor processor = - new ThriftService.Processor(impl); - TServerTransport serverTransport = new TServerSocket(port); - this.server = new TSimpleServer(new TServer.Args(serverTransport).processor(processor)); - new Thread( - () -> { - logger.info( - "Starting startSyncSimpleServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startMultiSimpleServer(int port) throws TTransportException { - ThriftServiceImpl syncImpl = new ThriftServiceImpl(); - ThriftService.Processor syncProcessor = - new ThriftService.Processor(syncImpl); - ThriftServiceAsyncImpl asyncImpl = new ThriftServiceAsyncImpl(); - ThriftService.AsyncProcessor asyncProcessor = - new ThriftService.AsyncProcessor(asyncImpl); - TMultiplexedProcessor multiplexedProcessor = new TMultiplexedProcessor(); - multiplexedProcessor.registerProcessor("syncHelloWorld", syncProcessor); - multiplexedProcessor.registerProcessor("asyncHelloWorld", asyncProcessor); - TServerTransport serverTransport = new TServerSocket(port); - this.server = - new TSimpleServer(new TServer.Args(serverTransport).processor(multiplexedProcessor)); - new Thread( - () -> { - logger.info( - "Starting startMultiSimpleServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startMultiThreadedSelectorServer(int port) throws TTransportException { - ThriftServiceImpl syncImpl = new ThriftServiceImpl(); - ThriftService.Processor syncProcessor = - new ThriftService.Processor(syncImpl); - ThriftServiceAsyncImpl asyncImpl = new ThriftServiceAsyncImpl(); - ThriftService.AsyncProcessor asyncProcessor = - new ThriftService.AsyncProcessor(asyncImpl); - TMultiplexedProcessor multiplexedProcessor = new TMultiplexedProcessor(); - multiplexedProcessor.registerProcessor("syncHelloWorld", syncProcessor); - multiplexedProcessor.registerProcessor("asyncHelloWorld", asyncProcessor); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TThreadedSelectorServer.Args serverArgs = - new TThreadedSelectorServer.Args(transport) - .selectorThreads(5) - .workerThreads(10) - .acceptQueueSizePerThread(20) - .processor(multiplexedProcessor); - this.server = new TThreadedSelectorServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startMultiThreadedSelectorServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startSyncThreadedSelectorServer(int port) throws TTransportException { - ThriftServiceImpl impl = new ThriftServiceImpl(); - ThriftService.Processor processor = - new ThriftService.Processor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TThreadedSelectorServer.Args serverArgs = - new TThreadedSelectorServer.Args(transport) - .selectorThreads(5) - .workerThreads(10) - .acceptQueueSizePerThread(20) - .processor(processor); - this.server = new TThreadedSelectorServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startAsyncServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startSyncThreadedSelectorFastServer(int port) throws TTransportException { - ThriftServiceImpl impl = new ThriftServiceImpl(); - ThriftService.Processor processor = - new ThriftService.Processor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TThreadedSelectorServer.Args serverArgs = - new TThreadedSelectorServer.Args(transport) - .selectorThreads(5) - .workerThreads(10) - .acceptQueueSizePerThread(20) - .processor(processor) - .transportFactory(new TFastFramedTransport.Factory()); - this.server = new TThreadedSelectorServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startAsyncServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startAsyncThreadedSelectorServer(int port) throws TTransportException { - ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); - ThriftService.AsyncProcessor processor = - new ThriftService.AsyncProcessor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TThreadedSelectorServer.Args serverArgs = - new TThreadedSelectorServer.Args(transport) - .selectorThreads(5) - .workerThreads(10) - .acceptQueueSizePerThread(20) - .processor(processor); - this.server = new TThreadedSelectorServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startNonBlockingServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startAsyncThreadedSelectorFastServer(int port) throws TTransportException { - ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); - ThriftService.AsyncProcessor processor = - new ThriftService.AsyncProcessor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TThreadedSelectorServer.Args serverArgs = - new TThreadedSelectorServer.Args(transport) - .selectorThreads(5) - .workerThreads(10) - .acceptQueueSizePerThread(20) - .processor(processor) - .transportFactory(new TFastFramedTransport.Factory()); - this.server = new TThreadedSelectorServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startNonBlockingServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startSyncNonblockingServer(int port) throws TTransportException { - ThriftServiceImpl impl = new ThriftServiceImpl(); - ThriftService.Processor processor = - new ThriftService.Processor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TNonblockingServer.Args serverArgs = - new TNonblockingServer.Args(transport).processor(processor); - this.server = new TNonblockingServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startNonBlockingServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startSyncNonblockingFastServer(int port) throws TTransportException { - ThriftServiceImpl impl = new ThriftServiceImpl(); - ThriftService.Processor processor = - new ThriftService.Processor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TNonblockingServer.Args serverArgs = - new TNonblockingServer.Args(transport) - .processor(processor) - .transportFactory(new TFastFramedTransport.Factory()) - .protocolFactory(new TBinaryProtocol.Factory()); - this.server = new TNonblockingServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startNonBlockingServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startAsyncNonblockingServer(int port) throws TTransportException { - ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); - ThriftService.AsyncProcessor processor = - new ThriftService.AsyncProcessor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TNonblockingServer.Args serverArgs = - new TNonblockingServer.Args(transport).processor(processor); - this.server = new TNonblockingServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startNonBlockingServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startSyncThreadPoolServer(int port) throws TTransportException { - ThriftServiceImpl impl = new ThriftServiceImpl(); - ThriftService.Processor processor = - new ThriftService.Processor(impl); - TServerSocket transport = new TServerSocket(port); - ExecutorService executor = Executors.newFixedThreadPool(5); - TThreadPoolServer.Args serverArgs = - new TThreadPoolServer.Args(transport).executorService(executor).processor(processor); - TServer server = new TThreadPoolServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startSyncThreadPoolServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - server.serve(); - }) - .start(); - } - - public void startSyncHsHaServer(int port) throws TTransportException { - ThriftServiceImpl impl = new ThriftServiceImpl(); - ThriftService.Processor processor = - new ThriftService.Processor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); - TFramedTransport.Factory transportFactory = new TFramedTransport.Factory(); - THsHaServer.Args serverArgs = - new THsHaServer.Args(transport) - .processor(processor) - .protocolFactory(protocolFactory) - .transportFactory(transportFactory); - this.server = new THsHaServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startSyncTHsHaServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startSyncHsHaFastServer(int port) throws TTransportException { - ThriftServiceImpl impl = new ThriftServiceImpl(); - ThriftService.Processor processor = - new ThriftService.Processor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); - TFastFramedTransport.Factory transportFactory = new TFastFramedTransport.Factory(); - THsHaServer.Args serverArgs = - new THsHaServer.Args(transport) - .processor(processor) - .protocolFactory(protocolFactory) - .transportFactory(transportFactory); - this.server = new THsHaServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startSyncTHsHaServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startAsyncHsHaServer(int port) throws TTransportException { - ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); - ThriftService.AsyncProcessor processor = - new ThriftService.AsyncProcessor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); - TFramedTransport.Factory transportFactory = new TFramedTransport.Factory(); - THsHaServer.Args serverArgs = - new THsHaServer.Args(transport) - .processor(processor) - .protocolFactory(protocolFactory) - .transportFactory(transportFactory); - this.server = new THsHaServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startAsyncTHsHaServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void startAsyncHsHaFastServer(int port) throws TTransportException { - ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); - ThriftService.AsyncProcessor processor = - new ThriftService.AsyncProcessor(impl); - TNonblockingServerTransport transport = new TNonblockingServerSocket(port); - TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); - TFastFramedTransport.Factory transportFactory = new TFastFramedTransport.Factory(); - THsHaServer.Args serverArgs = - new THsHaServer.Args(transport) - .processor(processor) - .protocolFactory(protocolFactory) - .transportFactory(transportFactory); - this.server = new THsHaServer(serverArgs); - new Thread( - () -> { - logger.info( - "Starting startAsyncTHsHaServer threadName=" - + Thread.currentThread().getName() - + ", threadId=" - + Thread.currentThread().getId()); - this.server.serve(); - }) - .start(); - } - - public void stopServer() { - if (this.server != null) { - this.server.stop(); - } - } - - public void waitAndAssertTracesClientSyncServerSync(int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - SYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - SYNC_SERVER, - StatusData.unset(), - null, - null); - } - - public void waitAndAssertTracesClientSyncServerSync( - int peerPort, String clientMethod, String serverMethod, int count) { - this.baseWaitAndAssertTraces( - clientMethod, - serverMethod, - count, - SYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - SYNC_SERVER, - StatusData.unset(), - null, - null); - } - - public void waitAndAssertTracesClientSyncServerSyncWithError( - int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - SYNC_CLIENT, - StatusData.error(), - peerPort, - PEER_ADDR, - new Object[] {null, "Internal error processing " + method}, - TRANSPORT_EXCEPTION, - SYNC_SERVER, - StatusData.error(), - new Object[] {"fail"}, - VERIFY_EXCEPTION); - } - - public void waitAndAssertTracesClientSyncServerSyncWithError( - int peerPort, String clientMethod, String serverMethod, int count) { - this.baseWaitAndAssertTraces( - clientMethod, - serverMethod, - count, - SYNC_CLIENT, - StatusData.error(), - peerPort, - PEER_ADDR, - new Object[] {null, "Internal error processing " + clientMethod}, - TRANSPORT_EXCEPTION, - SYNC_SERVER, - StatusData.error(), - new Object[] {"fail"}, - VERIFY_EXCEPTION); - } - - public void waitAndAssertTracesClientSyncServerSyncOnewayError( - int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - SYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - SYNC_SERVER, - StatusData.error(), - new Object[] {"fail"}, - VERIFY_EXCEPTION); - } - - public void waitAndAssertTracesClientSyncServerSyncOnewayError( - int peerPort, String clientMethod, String serverMethod, int count) { - this.baseWaitAndAssertTraces( - clientMethod, - serverMethod, - count, - SYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - SYNC_SERVER, - StatusData.error(), - new Object[] {"fail"}, - VERIFY_EXCEPTION); - } - - public void waitAndAssertTracesClientAsyncServerAsync(int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - ASYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - ASYNC_SERVER, - StatusData.unset(), - null, - null); - } - - public void waitAndAssertTracesClientAsyncServerAsyncError( - int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - ASYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - ASYNC_SERVER, - StatusData.error(), - new Object[] {"fail"}, - VERIFY_EXCEPTION); - } - - public void waitAndAssertTracesClientAsyncServerAsyncWithError( - int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - ASYNC_CLIENT, - StatusData.error(), - peerPort, - PEER_ADDR, - new Object[] {"Read call frame size failed", "fail"}, - IO_EXCEPTION, - ASYNC_SERVER, - StatusData.error(), - new Object[] {"Read call frame size failed", "fail"}, - VERIFY_EXCEPTION); - } - - public void waitAndAssertTracesClientAsyncServerSync(int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - ASYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - SYNC_SERVER, - StatusData.unset(), - null, - null); - } - - public void waitAndAssertTracesClientAsyncServerSyncWithError( - int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - ASYNC_CLIENT, - StatusData.error(), - peerPort, - PEER_ADDR, - new Object[] {"Read call frame size failed", "Internal error processing " + method}, - IO_EXCEPTION, - SYNC_SERVER, - StatusData.error(), - new Object[] {"fail"}, - VERIFY_EXCEPTION); - } - - public void waitAndAssertTracesClientAsyncServerSyncOnewayError( - int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - ASYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - SYNC_SERVER, - StatusData.error(), - new Object[] {"fail"}, - VERIFY_EXCEPTION); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) // 测试代码 - public void waitAndAssertTracesClientSyncServerAsync(int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - SYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - ASYNC_SERVER, - StatusData.unset(), - null, - null); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) // 测试代码 - public void waitAndAssertTracesClientSyncServerAsyncError( - int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - SYNC_CLIENT, - StatusData.unset(), - peerPort, - PEER_ADDR, - null, - null, - ASYNC_SERVER, - StatusData.error(), - new Object[] {"fail"}, - VERIFY_EXCEPTION); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - public void waitAndAssertTracesClientSyncServerAsyncWithError( - int peerPort, String method, int count) { - this.baseWaitAndAssertTraces( - method, - method, - count, - SYNC_CLIENT, - StatusData.error(), - peerPort, - PEER_ADDR, - new Object[] {null, "fail"}, - TRANSPORT_EXCEPTION, - ASYNC_SERVER, - StatusData.error(), - new Object[] {"fail"}, - VERIFY_EXCEPTION); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - private void baseWaitAndAssertTraces( - String clientMethod, - String serverMethod, - int count, - String clientClass, - StatusData clientStatus, - int peerPort, - String peerAddr, - Object[] clientErrMsg, - String clientErrorType, - String serverClass, - StatusData serverStatus, - Object[] serverErrMsg, - String serverErrorType) { - Consumer[] consumers = new Consumer[count]; - Consumer traceAssertConsumer; - if (serverClass == null) { - traceAssertConsumer = - trace -> - trace.hasSpansSatisfyingExactly( - span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), - clientSpanDataAssertConsumer( - clientMethod, - clientClass, - clientStatus, - trace, - peerPort, - peerAddr, - clientErrMsg, - clientErrorType)); - } else { - traceAssertConsumer = - trace -> - trace.hasSpansSatisfyingExactly( - span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), - clientSpanDataAssertConsumer( - clientMethod, - clientClass, - clientStatus, - trace, - peerPort, - peerAddr, - clientErrMsg, - clientErrorType), - serverSpanDataAssertConsumer( - serverMethod, - serverClass, - serverStatus, - trace, - serverErrMsg, - serverErrorType)); - } - - for (int i = 0; i < count; ++i) { - consumers[i] = traceAssertConsumer; - } - this.testing().waitAndAssertTraces(consumers); - } - - @SuppressWarnings({"ReturnValueIgnored"}) - private static Consumer clientSpanDataAssertConsumer( - String clientMethod, - String clientClass, - StatusData statusData, - TraceAssert trace, - int peerPort, - String peerAddr, - Object[] errMsg, - String errorType) { - Consumer consumer = - span -> - span.hasName(clientClass + "/" + clientMethod) - .hasKind(SpanKind.CLIENT) - .hasParent(trace.getSpan(0)) - .hasStatus(statusData) - .hasAttributesSatisfying( - equalTo(NETWORK_PEER_PORT, peerPort), - equalTo(NETWORK_PEER_ADDRESS, peerAddr), - equalTo(RPC_SYSTEM, "apache_thrift"), - equalTo(RPC_SERVICE, clientClass), - equalTo(RPC_METHOD, clientMethod)); - if (statusData == StatusData.error()) { - consumer = - consumer.andThen( - span -> - span.hasEventsSatisfyingExactly( - event -> - event - .hasName(EXCEPTION_EVENT_NAME) - .hasAttributesSatisfyingExactly( - satisfies(EXCEPTION_MESSAGE, val -> val.isIn(errMsg)), - satisfies( - AttributeKey.stringKey("exception.stacktrace"), - AbstractAssert::isNotNull), - equalTo(EXCEPTION_TYPE, errorType)))); - } - return consumer; - } - - @SuppressWarnings({"ReturnValueIgnored"}) - private static Consumer serverSpanDataAssertConsumer( - String serverMethod, - String serverClass, - StatusData statusData, - TraceAssert trace, - Object[] errMsg, - String errorType) { - Consumer consumer = - span -> - span.hasName(serverClass + "/" + serverMethod) - .hasKind(SpanKind.SERVER) - .hasParent(trace.getSpan(1)) - .hasStatus(statusData) - .hasAttributesSatisfying( - equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), - equalTo(RPC_SYSTEM, "apache_thrift"), - equalTo(RPC_SERVICE, serverClass), - equalTo(RPC_METHOD, serverMethod)); - if (statusData == StatusData.error()) { - consumer = - consumer.andThen( - span -> - span.hasEventsSatisfyingExactly( - event -> - event - .hasName(EXCEPTION_EVENT_NAME) - .hasAttributesSatisfyingExactly( - satisfies(EXCEPTION_MESSAGE, val -> val.isIn(errMsg)), - satisfies( - AttributeKey.stringKey("exception.stacktrace"), - AbstractAssert::isNotNull), - equalTo(EXCEPTION_TYPE, errorType)))); - } - return consumer; - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java deleted file mode 100644 index 6c70af7a1983..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java +++ /dev/null @@ -1,961 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import java.io.IOException; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.apache.thrift.async.TAsyncClientManager; -import org.apache.thrift.protocol.TBinaryProtocol; -import org.apache.thrift.protocol.TMultiplexedProtocol; -import org.apache.thrift.protocol.TProtocol; -import org.apache.thrift.protocol.TProtocolFactory; -import org.apache.thrift.transport.TFramedTransport; -import org.apache.thrift.transport.TNonblockingSocket; -import org.apache.thrift.transport.TNonblockingTransport; -import org.apache.thrift.transport.TSocket; -import org.apache.thrift.transport.TTransport; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.Test; -import org.testcontainers.shaded.com.google.common.base.VerifyException; - -public class WithErrorTest extends ThriftBaseTest { - - @Test - public void syncClientSyncSimpleServerWithError() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - this.syncClientWithError(port); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); - } - - @Test - public void syncClientSyncSimpleServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientWithError(port); - } - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); - } - - @Test - public void syncClientSyncSimpleServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); - } - - @Test - public void syncClientSyncThreadPoolServerWithError() throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - this.syncClientWithError(port); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); - } - - @Test - public void syncClientSyncThreadPoolServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientWithError(port); - } - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); - } - - @Test - public void syncClientSyncThreadPoolServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadPoolServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); - } - - @Test - public void syncClientMutiSyncSimpleServerWithError() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - this.syncClientMultiWithError(port); - this.waitAndAssertTracesClientSyncServerSyncWithError( - port, "withError", "syncHelloWorld:withError", 1); - } - - @Test - public void syncClientMutiSyncSimpleServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - for (int i = 0; i < 5; ++i) { - this.syncClientMultiWithError(port); - } - this.waitAndAssertTracesClientSyncServerSyncWithError( - port, "withError", "syncHelloWorld:withError", 5); - } - - @Test - public void syncClientMutiSyncSimpleServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiSimpleServer(port); - AtomicInteger count = new AtomicInteger(0); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncClientMultiWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncClientSimpleServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - latch.await(); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncWithError( - port, "withError", "syncHelloWorld:withError", threadCount); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerWithError() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.syncFramedClientWithError(port); - this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 1); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientWithError(port); - } - - this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 5); - } - - @Test - public void syncFramedClientAsyncThreadedSelectorServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", threadCount); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerWithError() throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - this.syncFramedClientMultiWithError(port); - this.waitAndAssertTracesClientSyncServerSyncWithError( - port, "withError", "syncHelloWorld:withError", 1); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientMultiWithError(port); - } - - this.waitAndAssertTracesClientSyncServerSyncWithError( - port, "withError", "syncHelloWorld:withError", 5); - } - - @Test - public void syncFramedClientAsyncMutiThreadedSelectorServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startMultiThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientMultiWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncThreadedSelectorServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncWithError( - port, "withError", "syncHelloWorld:withError", threadCount); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerWithError() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.syncFramedClientWithError(port); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientWithError(port); - } - - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); - } - - @Test - public void syncFramedClientSyncThreadedSelectorServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncThreadedSelectorServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerWithError() throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - this.nonBlockClientWithError(port); - this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 1); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerWithErrorMuti() - throws TException, IOException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 5); - } - - @Test - public void nonBlockClientAsyncThreadedSelectorServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncThreadedSelectorServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", threadCount); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerWithError() throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - this.nonBlockClientWithError(port); - this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 1); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerWithErrorMuti() - throws TException, IOException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 5); - } - - @Test - public void nonBlockClientSyncThreadedSelectorServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncThreadedSelectorServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncThreadedSelectorServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", threadCount); - } - - @Test - public void syncFramedClientSyncNonblockingServerWithError() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.syncFramedClientWithError(port); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); - } - - @Test - public void syncFramedClientSyncNonblockingServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientWithError(port); - } - - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); - } - - @Test - public void syncFramedClientSyncNonblockingServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncNonblockingServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); - } - - @Test - public void syncFramedClientSyncHsHaServerWithError() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.syncFramedClientWithError(port); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); - } - - @Test - public void syncFramedClientSyncHsHaServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientWithError(port); - } - - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 5); - } - - @Test - public void syncFramedClientSyncHsHaServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientSyncHsHaServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); - } - - @Test - public void syncFramedClientAsyncNonblockingServerWithError() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.syncFramedClientWithError(port); - this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 1); - } - - @Test - public void syncFramedClientAsyncNonblockingServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientWithError(port); - } - - this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 5); - } - - @Test - public void syncFramedClientAsyncNonblockingServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncNonblockingServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", threadCount); - } - - @Test - public void syncFramedClientAsyncHsHaServerWithError() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.syncFramedClientWithError(port); - this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 1); - } - - @Test - public void syncFramedClientAsyncHsHaServerWithErrorMuti() throws TException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.syncFramedClientWithError(port); - } - - this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 5); - } - - @Test - public void syncFramedClientAsyncHsHaServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.syncFramedClientWithError(port); - } catch (TException e) { - count.incrementAndGet(); - Assertions.fail( - "syncFramedClientAsyncHsHaServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", threadCount); - } - - @Test - public void nonBlockClientSyncNonblockingServerWithError() throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - this.nonBlockClientWithError(port); - this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 1); - } - - @Test - public void nonBlockClientSyncNonblockingServerWithErrorMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 5); - } - - @Test - public void nonBlockClientSyncNonblockingServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncNonblockingServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", threadCount); - } - - @Test - public void nonBlockClientSyncHsHaServerWithError() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - this.nonBlockClientWithError(port); - this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 1); - } - - @Test - public void nonBlockClientSyncHsHaServerWithErrorMuti() throws TException, IOException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 5); - } - - @Test - public void nonBlockClientSyncHsHaServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startSyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientSyncHsHaServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", threadCount); - } - - @Test - public void nonBlockClientAsyncNonblockingServerWithError() throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - this.nonBlockClientWithError(port); - this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 1); - } - - @Test - public void nonBlockClientAsyncNonblockingServerWithErrorMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 5); - } - - @Test - public void nonBlockClientAsyncNonblockingServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncNonblockingServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncNonblockingServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", threadCount); - } - - @Test - public void nonBlockClientAsyncHsHaServerWithError() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - this.nonBlockClientWithError(port); - this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 1); - } - - @Test - public void nonBlockClientAsyncHsHaServerWithErrorMuti() throws TException, IOException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - - for (int i = 0; i < 5; ++i) { - this.nonBlockClientWithError(port); - } - - this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 5); - } - - @Test - public void nonBlockClientAsyncHsHaServerWithErrorParallel() - throws TException, InterruptedException { - int port = super.getPort(); - this.startAsyncHsHaServer(port); - AtomicInteger count = new AtomicInteger(); - int threadCount = 5; - CountDownLatch latch = new CountDownLatch(threadCount); - - for (int i = 0; i < threadCount; ++i) { - new Thread( - () -> { - try { - this.nonBlockClientWithError(port); - } catch (IOException | TException e) { - count.incrementAndGet(); - Assertions.fail( - "nonBlockClientAsyncHsHaServerWithErrorParallel field: " - + e.getCause().getMessage()); - } finally { - latch.countDown(); - } - }) - .start(); - } - - latch.await(10L, TimeUnit.SECONDS); - assertThat(count.get()).isEqualTo(0); - this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", threadCount); - } - - public void syncClientWithError(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - ThriftService.Client client = new ThriftService.Client(protocol); - Exception error = null; - try { - this.testing().runWithSpan("parent", () -> client.withError()); - } catch (Exception e) { - error = e; - } - assertThat(error).isNotNull(); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncClientMultiWithError(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - transport.open(); - TProtocol protocol = new TBinaryProtocol(transport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - Exception error = null; - try { - this.testing().runWithSpan("parent", () -> client.withError()); - } catch (Exception e) { - error = e; - } - assertThat(error).isNotNull(); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void nonBlockClientWithError(int port) throws TException, IOException { - TNonblockingTransport transport = new TNonblockingSocket("localhost", port); - TAsyncClientManager clientManager = new TAsyncClientManager(); - TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); - ThriftService.AsyncClient.Factory factory = - new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); - ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); - AsyncMethodCallback callback = - new AsyncMethodCallback() { - @Override - public void onComplete(ThriftService.AsyncClient.withError_call s) { - try { - String result = s.getResult(); - assertThat(result).isEqualTo("Hello USs' Bob"); - } catch (TException e) { - throw new VerifyException(e); - } - } - - @Override - public void onError(Exception e) { - assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); - } - }; - this.testing().runWithSpan("parent", () -> asyClient.withError(callback)); - } - - public void syncFramedClientWithError(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - ThriftService.Client client = new ThriftService.Client(protocol); - Exception error = null; - try { - this.testing().runWithSpan("parent", () -> client.withError()); - } catch (Exception e) { - error = e; - } - assertThat(error).isNotNull(); - } finally { - if (transport != null) { - transport.close(); - } - } - } - - public void syncFramedClientMultiWithError(int port) throws TException { - TTransport transport = null; - try { - transport = new TSocket("localhost", port); - TFramedTransport framedTransport = new TFramedTransport(transport); - framedTransport.open(); - TProtocol protocol = new TBinaryProtocol(framedTransport); - TMultiplexedProtocol multiplexedProtocol = - new TMultiplexedProtocol(protocol, "syncHelloWorld"); - ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); - Exception error = null; - try { - this.testing().runWithSpan("parent", () -> client.withError()); - } catch (Exception e) { - error = e; - } - assertThat(error).isNotNull(); - } finally { - if (transport != null) { - transport.close(); - } - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java deleted file mode 100644 index 0aa95a9ca68e..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; - -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.testcontainers.shaded.com.google.common.base.VerifyException; - -@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused", "all"}) -public class ThriftServiceAsyncImpl implements ThriftService.AsyncIface { - public ThriftServiceAsyncImpl() {} - - @Override - public void sayHello(String zone, String name, AsyncMethodCallback resultHandler) - throws TException { - resultHandler.onComplete("Hello " + zone + "s' " + name); - } - - @Override - public void withError(AsyncMethodCallback resultHandler) throws TException { - throw new VerifyException("fail"); - } - - @Override - public void noReturn(int delay, AsyncMethodCallback resultHandler) throws TException { - resultHandler.onComplete(null); - } - - @Override - public void oneWay(AsyncMethodCallback resultHandler) throws TException {} - - @Override - public void oneWayWithError(AsyncMethodCallback resultHandler) throws TException { - throw new VerifyException("fail"); - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java deleted file mode 100644 index 3d38fe442eb3..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; - -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; -import org.apache.thrift.TException; -import org.testcontainers.shaded.com.google.common.base.VerifyException; - -@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused", "all"}) -public class ThriftServiceImpl implements ThriftService.Iface { - - public ThriftServiceImpl() {} - - @Override - public String sayHello(String zone, String name) { - return "Hello " + zone + "s' " + name; - } - - @Override - public String withError() { - throw new VerifyException("fail"); - } - - @Override - public void noReturn(int delay) throws TException {} - - @Override - public void oneWay() {} - - @Override - public void oneWayWithError() { - throw new VerifyException("fail"); - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java deleted file mode 100644 index e2254e47af9e..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/thrift/ThriftService.java +++ /dev/null @@ -1,3453 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift; - -import java.util.BitSet; -import java.util.Collections; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; -import org.apache.thrift.EncodingUtils; -import org.apache.thrift.TException; -import org.apache.thrift.async.AsyncMethodCallback; -import org.apache.thrift.protocol.TTupleProtocol; -import org.apache.thrift.scheme.IScheme; -import org.apache.thrift.scheme.SchemeFactory; -import org.apache.thrift.scheme.StandardScheme; -import org.apache.thrift.scheme.TupleScheme; -import org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "all"}) -public class ThriftService { - - public interface Iface { - - public String sayHello(String zone, String name) throws org.apache.thrift.TException; - - public String withError() throws org.apache.thrift.TException; - - public void noReturn(int delay) throws org.apache.thrift.TException; - - public void oneWay() throws org.apache.thrift.TException; - - public void oneWayWithError() throws org.apache.thrift.TException; - } - - public interface AsyncIface { - - public void sayHello( - String zone, String name, org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException; - - public void withError(org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException; - - public void noReturn(int delay, org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException; - - public void oneWay(org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException; - - public void oneWayWithError(org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException; - } - - public static class Client extends org.apache.thrift.TServiceClient implements Iface { - public static class Factory implements org.apache.thrift.TServiceClientFactory { - public Factory() {} - - public Client getClient(org.apache.thrift.protocol.TProtocol prot) { - return new Client(prot); - } - - public Client getClient( - org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) { - return new Client(iprot, oprot); - } - } - - public Client(org.apache.thrift.protocol.TProtocol prot) { - super(prot, prot); - } - - public Client( - org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) { - super(iprot, oprot); - } - - public String sayHello(String zone, String name) throws org.apache.thrift.TException { - send_sayHello(zone, name); - return recv_sayHello(); - } - - public void send_sayHello(String zone, String name) throws org.apache.thrift.TException { - sayHello_args args = new sayHello_args(); - args.setZone(zone); - args.setName(name); - sendBase("sayHello", args); - } - - public String recv_sayHello() throws org.apache.thrift.TException { - sayHello_result result = new sayHello_result(); - receiveBase(result, "sayHello"); - if (result.isSetSuccess()) { - return result.success; - } - throw new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.MISSING_RESULT, - "sayHello failed: unknown result"); - } - - public String withError() throws org.apache.thrift.TException { - send_withError(); - return recv_withError(); - } - - public void send_withError() throws org.apache.thrift.TException { - withError_args args = new withError_args(); - sendBase("withError", args); - } - - public String recv_withError() throws org.apache.thrift.TException { - withError_result result = new withError_result(); - receiveBase(result, "withError"); - if (result.isSetSuccess()) { - return result.success; - } - throw new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.MISSING_RESULT, - "withError failed: unknown result"); - } - - public void noReturn(int delay) throws org.apache.thrift.TException { - send_noReturn(delay); - recv_noReturn(); - } - - public void send_noReturn(int delay) throws org.apache.thrift.TException { - noReturn_args args = new noReturn_args(); - args.setDelay(delay); - sendBase("noReturn", args); - } - - public void recv_noReturn() throws org.apache.thrift.TException { - noReturn_result result = new noReturn_result(); - receiveBase(result, "noReturn"); - return; - } - - public void oneWay() throws org.apache.thrift.TException { - send_oneWay(); - } - - public void send_oneWay() throws org.apache.thrift.TException { - oneWay_args args = new oneWay_args(); - sendBase("oneWay", args); - } - - public void oneWayWithError() throws org.apache.thrift.TException { - send_oneWayWithError(); - } - - public void send_oneWayWithError() throws org.apache.thrift.TException { - oneWayWithError_args args = new oneWayWithError_args(); - sendBase("oneWayWithError", args); - } - } - - public static class AsyncClient extends org.apache.thrift.async.TAsyncClient - implements AsyncIface { - public static class Factory - implements org.apache.thrift.async.TAsyncClientFactory { - private org.apache.thrift.async.TAsyncClientManager clientManager; - private org.apache.thrift.protocol.TProtocolFactory protocolFactory; - - public Factory( - org.apache.thrift.async.TAsyncClientManager clientManager, - org.apache.thrift.protocol.TProtocolFactory protocolFactory) { - this.clientManager = clientManager; - this.protocolFactory = protocolFactory; - } - - public AsyncClient getAsyncClient( - org.apache.thrift.transport.TNonblockingTransport transport) { - return new AsyncClient(protocolFactory, clientManager, transport); - } - } - - public AsyncClient( - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.async.TAsyncClientManager clientManager, - org.apache.thrift.transport.TNonblockingTransport transport) { - super(protocolFactory, clientManager, transport); - } - - public void sayHello( - String zone, String name, org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException { - checkReady(); - sayHello_call method_call = - new sayHello_call(zone, name, resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class sayHello_call extends org.apache.thrift.async.TAsyncMethodCall { - private String zone; - private String name; - - public sayHello_call( - String zone, - String name, - org.apache.thrift.async.AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws org.apache.thrift.TException { - super(client, protocolFactory, transport, resultHandler, false); - this.zone = zone; - this.name = name; - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) - throws org.apache.thrift.TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "sayHello", org.apache.thrift.protocol.TMessageType.CALL, 0)); - sayHello_args args = new sayHello_args(); - args.setZone(zone); - args.setName(name); - args.write(prot); - prot.writeMessageEnd(); - } - - public String getResult() throws org.apache.thrift.TException { - if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - return (new Client(prot)).recv_sayHello(); - } - } - - public void withError(org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException { - checkReady(); - withError_call method_call = - new withError_call(resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class withError_call extends org.apache.thrift.async.TAsyncMethodCall { - public withError_call( - org.apache.thrift.async.AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws org.apache.thrift.TException { - super(client, protocolFactory, transport, resultHandler, false); - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) - throws org.apache.thrift.TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "withError", org.apache.thrift.protocol.TMessageType.CALL, 0)); - withError_args args = new withError_args(); - args.write(prot); - prot.writeMessageEnd(); - } - - public String getResult() throws org.apache.thrift.TException { - if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - return (new Client(prot)).recv_withError(); - } - } - - public void noReturn(int delay, org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException { - checkReady(); - noReturn_call method_call = - new noReturn_call(delay, resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class noReturn_call extends org.apache.thrift.async.TAsyncMethodCall { - private int delay; - - public noReturn_call( - int delay, - org.apache.thrift.async.AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws org.apache.thrift.TException { - super(client, protocolFactory, transport, resultHandler, false); - this.delay = delay; - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) - throws org.apache.thrift.TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "noReturn", org.apache.thrift.protocol.TMessageType.CALL, 0)); - noReturn_args args = new noReturn_args(); - args.setDelay(delay); - args.write(prot); - prot.writeMessageEnd(); - } - - public void getResult() throws org.apache.thrift.TException { - if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - (new Client(prot)).recv_noReturn(); - } - } - - public void oneWay(org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException { - checkReady(); - oneWay_call method_call = - new oneWay_call(resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class oneWay_call extends org.apache.thrift.async.TAsyncMethodCall { - public oneWay_call( - org.apache.thrift.async.AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws org.apache.thrift.TException { - super(client, protocolFactory, transport, resultHandler, true); - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) - throws org.apache.thrift.TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "oneWay", org.apache.thrift.protocol.TMessageType.CALL, 0)); - oneWay_args args = new oneWay_args(); - args.write(prot); - prot.writeMessageEnd(); - } - - public void getResult() throws org.apache.thrift.TException { - if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - } - } - - public void oneWayWithError(org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws org.apache.thrift.TException { - checkReady(); - oneWayWithError_call method_call = - new oneWayWithError_call(resultHandler, this, ___protocolFactory, ___transport); - this.___currentMethod = method_call; - ___manager.call(method_call); - } - - public static class oneWayWithError_call extends org.apache.thrift.async.TAsyncMethodCall { - public oneWayWithError_call( - org.apache.thrift.async.AsyncMethodCallback resultHandler, - org.apache.thrift.async.TAsyncClient client, - org.apache.thrift.protocol.TProtocolFactory protocolFactory, - org.apache.thrift.transport.TNonblockingTransport transport) - throws org.apache.thrift.TException { - super(client, protocolFactory, transport, resultHandler, true); - } - - public void write_args(org.apache.thrift.protocol.TProtocol prot) - throws org.apache.thrift.TException { - prot.writeMessageBegin( - new org.apache.thrift.protocol.TMessage( - "oneWayWithError", org.apache.thrift.protocol.TMessageType.CALL, 0)); - oneWayWithError_args args = new oneWayWithError_args(); - args.write(prot); - prot.writeMessageEnd(); - } - - public void getResult() throws org.apache.thrift.TException { - if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { - throw new IllegalStateException("Method call not finished!"); - } - org.apache.thrift.transport.TMemoryInputTransport memoryTransport = - new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array()); - org.apache.thrift.protocol.TProtocol prot = - client.getProtocolFactory().getProtocol(memoryTransport); - } - } - } - - public static class Processor extends org.apache.thrift.TBaseProcessor - implements org.apache.thrift.TProcessor { - private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName()); - - public Processor(I iface) { - super( - iface, - getProcessMap( - new HashMap< - String, - org.apache.thrift.ProcessFunction>())); - } - - protected Processor( - I iface, - Map> - processMap) { - super(iface, getProcessMap(processMap)); - } - - private static - Map> - getProcessMap( - Map> - processMap) { - processMap.put("sayHello", new sayHello()); - processMap.put("withError", new withError()); - processMap.put("noReturn", new noReturn()); - processMap.put("oneWay", new oneWay()); - processMap.put("oneWayWithError", new oneWayWithError()); - return processMap; - } - - public static class sayHello - extends org.apache.thrift.ProcessFunction { - public sayHello() { - super("sayHello"); - } - - public sayHello_args getEmptyArgsInstance() { - return new sayHello_args(); - } - - protected boolean isOneway() { - return false; - } - - public sayHello_result getResult(I iface, sayHello_args args) - throws org.apache.thrift.TException { - sayHello_result result = new sayHello_result(); - result.success = iface.sayHello(args.zone, args.name); - return result; - } - } - - public static class withError - extends org.apache.thrift.ProcessFunction { - public withError() { - super("withError"); - } - - public withError_args getEmptyArgsInstance() { - return new withError_args(); - } - - protected boolean isOneway() { - return false; - } - - public withError_result getResult(I iface, withError_args args) - throws org.apache.thrift.TException { - withError_result result = new withError_result(); - result.success = iface.withError(); - return result; - } - } - - public static class noReturn - extends org.apache.thrift.ProcessFunction { - public noReturn() { - super("noReturn"); - } - - public noReturn_args getEmptyArgsInstance() { - return new noReturn_args(); - } - - protected boolean isOneway() { - return false; - } - - public noReturn_result getResult(I iface, noReturn_args args) - throws org.apache.thrift.TException { - noReturn_result result = new noReturn_result(); - iface.noReturn(args.delay); - return result; - } - } - - public static class oneWay - extends org.apache.thrift.ProcessFunction { - public oneWay() { - super("oneWay"); - } - - public oneWay_args getEmptyArgsInstance() { - return new oneWay_args(); - } - - protected boolean isOneway() { - return true; - } - - public org.apache.thrift.TBase getResult(I iface, oneWay_args args) - throws org.apache.thrift.TException { - iface.oneWay(); - return null; - } - } - - public static class oneWayWithError - extends org.apache.thrift.ProcessFunction { - public oneWayWithError() { - super("oneWayWithError"); - } - - public oneWayWithError_args getEmptyArgsInstance() { - return new oneWayWithError_args(); - } - - protected boolean isOneway() { - return true; - } - - public org.apache.thrift.TBase getResult(I iface, oneWayWithError_args args) - throws org.apache.thrift.TException { - iface.oneWayWithError(); - return null; - } - } - } - - public static class AsyncProcessor - extends org.apache.thrift.TBaseAsyncProcessor { - private static final Logger LOGGER = LoggerFactory.getLogger(AsyncProcessor.class.getName()); - - public AsyncProcessor(I iface) { - super( - iface, - getProcessMap( - new HashMap< - String, - org.apache.thrift.AsyncProcessFunction< - I, ? extends org.apache.thrift.TBase, ?>>())); - } - - protected AsyncProcessor( - I iface, - Map> - processMap) { - super(iface, getProcessMap(processMap)); - } - - private static - Map> - getProcessMap( - Map< - String, - org.apache.thrift.AsyncProcessFunction< - I, ? extends org.apache.thrift.TBase, ?>> - processMap) { - processMap.put("sayHello", new sayHello()); - processMap.put("withError", new withError()); - processMap.put("noReturn", new noReturn()); - processMap.put("oneWay", new oneWay()); - processMap.put("oneWayWithError", new oneWayWithError()); - return processMap; - } - - public static class sayHello - extends org.apache.thrift.AsyncProcessFunction { - public sayHello() { - super("sayHello"); - } - - public sayHello_args getEmptyArgsInstance() { - return new sayHello_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(String o) { - sayHello_result result = new sayHello_result(); - result.success = o; - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - sayHello_result result = new sayHello_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start( - I iface, - sayHello_args args, - org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws TException { - iface.sayHello(args.zone, args.name, resultHandler); - } - } - - public static class withError - extends org.apache.thrift.AsyncProcessFunction { - public withError() { - super("withError"); - } - - public withError_args getEmptyArgsInstance() { - return new withError_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(String o) { - withError_result result = new withError_result(); - result.success = o; - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - withError_result result = new withError_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start( - I iface, - withError_args args, - org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws TException { - iface.withError(resultHandler); - } - } - - public static class noReturn - extends org.apache.thrift.AsyncProcessFunction { - public noReturn() { - super("noReturn"); - } - - public noReturn_args getEmptyArgsInstance() { - return new noReturn_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(Void o) { - noReturn_result result = new noReturn_result(); - try { - fcall.sendResponse(fb, result, org.apache.thrift.protocol.TMessageType.REPLY, seqid); - return; - } catch (Exception e) { - LOGGER.error("Exception writing to internal frame buffer", e); - } - fb.close(); - } - - public void onError(Exception e) { - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY; - org.apache.thrift.TBase msg; - noReturn_result result = new noReturn_result(); - { - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION; - msg = - (org.apache.thrift.TBase) - new org.apache.thrift.TApplicationException( - org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage()); - } - try { - fcall.sendResponse(fb, msg, msgType, seqid); - return; - } catch (Exception ex) { - LOGGER.error("Exception writing to internal frame buffer", ex); - } - fb.close(); - } - }; - } - - protected boolean isOneway() { - return false; - } - - public void start( - I iface, - noReturn_args args, - org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws TException { - iface.noReturn(args.delay, resultHandler); - } - } - - public static class oneWay - extends org.apache.thrift.AsyncProcessFunction { - public oneWay() { - super("oneWay"); - } - - public oneWay_args getEmptyArgsInstance() { - return new oneWay_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(Void o) {} - - public void onError(Exception e) {} - }; - } - - protected boolean isOneway() { - return true; - } - - public void start( - I iface, - oneWay_args args, - org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws TException { - iface.oneWay(resultHandler); - } - } - - public static class oneWayWithError - extends org.apache.thrift.AsyncProcessFunction { - public oneWayWithError() { - super("oneWayWithError"); - } - - public oneWayWithError_args getEmptyArgsInstance() { - return new oneWayWithError_args(); - } - - public AsyncMethodCallback getResultHandler( - final AsyncFrameBuffer fb, final int seqid) { - final org.apache.thrift.AsyncProcessFunction fcall = this; - return new AsyncMethodCallback() { - public void onComplete(Void o) {} - - public void onError(Exception e) {} - }; - } - - protected boolean isOneway() { - return true; - } - - public void start( - I iface, - oneWayWithError_args args, - org.apache.thrift.async.AsyncMethodCallback resultHandler) - throws TException { - iface.oneWayWithError(resultHandler); - } - } - } - - public static class sayHello_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("sayHello_args"); - - private static final org.apache.thrift.protocol.TField ZONE_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "zone", org.apache.thrift.protocol.TType.STRING, (short) 1); - private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "name", org.apache.thrift.protocol.TType.STRING, (short) 2); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new sayHello_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new sayHello_argsTupleSchemeFactory()); - } - - public String zone; // required - public String name; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ZONE((short) 1, "zone"), - NAME((short) 2, "name"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // ZONE - return ZONE; - case 2: // NAME - return NAME; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.ZONE, - new org.apache.thrift.meta_data.FieldMetaData( - "zone", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - tmpMap.put( - _Fields.NAME, - new org.apache.thrift.meta_data.FieldMetaData( - "name", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - sayHello_args.class, metaDataMap); - } - - public sayHello_args() {} - - public sayHello_args(String zone, String name) { - this(); - this.zone = zone; - this.name = name; - } - - /** Performs a deep copy on other. */ - public sayHello_args(sayHello_args other) { - if (other.isSetZone()) { - this.zone = other.zone; - } - if (other.isSetName()) { - this.name = other.name; - } - } - - public sayHello_args deepCopy() { - return new sayHello_args(this); - } - - @Override - public void clear() { - this.zone = null; - this.name = null; - } - - public String getZone() { - return this.zone; - } - - public sayHello_args setZone(String zone) { - this.zone = zone; - return this; - } - - public void unsetZone() { - this.zone = null; - } - - /** Returns true if field zone is set (has been assigned a value) and false otherwise */ - public boolean isSetZone() { - return this.zone != null; - } - - public void setZoneIsSet(boolean value) { - if (!value) { - this.zone = null; - } - } - - public String getName() { - return this.name; - } - - public sayHello_args setName(String name) { - this.name = name; - return this; - } - - public void unsetName() { - this.name = null; - } - - /** Returns true if field name is set (has been assigned a value) and false otherwise */ - public boolean isSetName() { - return this.name != null; - } - - public void setNameIsSet(boolean value) { - if (!value) { - this.name = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case ZONE: - if (value == null) { - unsetZone(); - } else { - setZone((String) value); - } - break; - - case NAME: - if (value == null) { - unsetName(); - } else { - setName((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case ZONE: - return getZone(); - - case NAME: - return getName(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case ZONE: - return isSetZone(); - case NAME: - return isSetName(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof sayHello_args) return this.equals((sayHello_args) that); - return false; - } - - public boolean equals(sayHello_args that) { - if (that == null) return false; - - boolean this_present_zone = true && this.isSetZone(); - boolean that_present_zone = true && that.isSetZone(); - if (this_present_zone || that_present_zone) { - if (!(this_present_zone && that_present_zone)) return false; - if (!this.zone.equals(that.zone)) return false; - } - - boolean this_present_name = true && this.isSetName(); - boolean that_present_name = true && that.isSetName(); - if (this_present_name || that_present_name) { - if (!(this_present_name && that_present_name)) return false; - if (!this.name.equals(that.name)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(sayHello_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetZone()).compareTo(other.isSetZone()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetZone()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.zone, other.zone); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetName()).compareTo(other.isSetName()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetName()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) - throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("sayHello_args("); - boolean first = true; - - sb.append("zone:"); - if (this.zone == null) { - sb.append("null"); - } else { - sb.append(this.zone); - } - first = false; - if (!first) sb.append(", "); - sb.append("name:"); - if (this.name == null) { - sb.append("null"); - } else { - sb.append(this.name); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class sayHello_argsStandardSchemeFactory implements SchemeFactory { - public sayHello_argsStandardScheme getScheme() { - return new sayHello_argsStandardScheme(); - } - } - - private static class sayHello_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, sayHello_args struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // ZONE - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.zone = iprot.readString(); - struct.setZoneIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 2: // NAME - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.name = iprot.readString(); - struct.setNameIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, sayHello_args struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.zone != null) { - oprot.writeFieldBegin(ZONE_FIELD_DESC); - oprot.writeString(struct.zone); - oprot.writeFieldEnd(); - } - if (struct.name != null) { - oprot.writeFieldBegin(NAME_FIELD_DESC); - oprot.writeString(struct.name); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class sayHello_argsTupleSchemeFactory implements SchemeFactory { - public sayHello_argsTupleScheme getScheme() { - return new sayHello_argsTupleScheme(); - } - } - - private static class sayHello_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, sayHello_args struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetZone()) { - optionals.set(0); - } - if (struct.isSetName()) { - optionals.set(1); - } - oprot.writeBitSet(optionals, 2); - if (struct.isSetZone()) { - oprot.writeString(struct.zone); - } - if (struct.isSetName()) { - oprot.writeString(struct.name); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, sayHello_args struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(2); - if (incoming.get(0)) { - struct.zone = iprot.readString(); - struct.setZoneIsSet(true); - } - if (incoming.get(1)) { - struct.name = iprot.readString(); - struct.setNameIsSet(true); - } - } - } - } - - public static class sayHello_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("sayHello_result"); - - private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "success", org.apache.thrift.protocol.TType.STRING, (short) 0); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new sayHello_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new sayHello_resultTupleSchemeFactory()); - } - - public String success; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - SUCCESS((short) 0, "success"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 0: // SUCCESS - return SUCCESS; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.SUCCESS, - new org.apache.thrift.meta_data.FieldMetaData( - "success", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - sayHello_result.class, metaDataMap); - } - - public sayHello_result() {} - - public sayHello_result(String success) { - this(); - this.success = success; - } - - /** Performs a deep copy on other. */ - public sayHello_result(sayHello_result other) { - if (other.isSetSuccess()) { - this.success = other.success; - } - } - - public sayHello_result deepCopy() { - return new sayHello_result(this); - } - - @Override - public void clear() { - this.success = null; - } - - public String getSuccess() { - return this.success; - } - - public sayHello_result setSuccess(String success) { - this.success = success; - return this; - } - - public void unsetSuccess() { - this.success = null; - } - - /** Returns true if field success is set (has been assigned a value) and false otherwise */ - public boolean isSetSuccess() { - return this.success != null; - } - - public void setSuccessIsSet(boolean value) { - if (!value) { - this.success = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case SUCCESS: - if (value == null) { - unsetSuccess(); - } else { - setSuccess((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case SUCCESS: - return getSuccess(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case SUCCESS: - return isSetSuccess(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof sayHello_result) return this.equals((sayHello_result) that); - return false; - } - - public boolean equals(sayHello_result that) { - if (that == null) return false; - - boolean this_present_success = true && this.isSetSuccess(); - boolean that_present_success = true && that.isSetSuccess(); - if (this_present_success || that_present_success) { - if (!(this_present_success && that_present_success)) return false; - if (!this.success.equals(that.success)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(sayHello_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetSuccess()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) - throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("sayHello_result("); - boolean first = true; - - sb.append("success:"); - if (this.success == null) { - sb.append("null"); - } else { - sb.append(this.success); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class sayHello_resultStandardSchemeFactory implements SchemeFactory { - public sayHello_resultStandardScheme getScheme() { - return new sayHello_resultStandardScheme(); - } - } - - private static class sayHello_resultStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, sayHello_result struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 0: // SUCCESS - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, sayHello_result struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.success != null) { - oprot.writeFieldBegin(SUCCESS_FIELD_DESC); - oprot.writeString(struct.success); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class sayHello_resultTupleSchemeFactory implements SchemeFactory { - public sayHello_resultTupleScheme getScheme() { - return new sayHello_resultTupleScheme(); - } - } - - private static class sayHello_resultTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, sayHello_result struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetSuccess()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetSuccess()) { - oprot.writeString(struct.success); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, sayHello_result struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } - } - } - } - - public static class withError_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withError_args"); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withError_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withError_argsTupleSchemeFactory()); - } - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ; - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withError_args.class, metaDataMap); - } - - public withError_args() {} - - /** Performs a deep copy on other. */ - public withError_args(withError_args other) {} - - public withError_args deepCopy() { - return new withError_args(this); - } - - @Override - public void clear() {} - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withError_args) return this.equals((withError_args) that); - return false; - } - - public boolean equals(withError_args that) { - if (that == null) return false; - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withError_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) - throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withError_args("); - boolean first = true; - - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class withError_argsStandardSchemeFactory implements SchemeFactory { - public withError_argsStandardScheme getScheme() { - return new withError_argsStandardScheme(); - } - } - - private static class withError_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withError_args struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withError_args struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withError_argsTupleSchemeFactory implements SchemeFactory { - public withError_argsTupleScheme getScheme() { - return new withError_argsTupleScheme(); - } - } - - private static class withError_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withError_args struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withError_args struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - } - } - } - - public static class withError_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("withError_result"); - - private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "success", org.apache.thrift.protocol.TType.STRING, (short) 0); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new withError_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new withError_resultTupleSchemeFactory()); - } - - public String success; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - SUCCESS((short) 0, "success"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 0: // SUCCESS - return SUCCESS; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.SUCCESS, - new org.apache.thrift.meta_data.FieldMetaData( - "success", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.STRING))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - withError_result.class, metaDataMap); - } - - public withError_result() {} - - public withError_result(String success) { - this(); - this.success = success; - } - - /** Performs a deep copy on other. */ - public withError_result(withError_result other) { - if (other.isSetSuccess()) { - this.success = other.success; - } - } - - public withError_result deepCopy() { - return new withError_result(this); - } - - @Override - public void clear() { - this.success = null; - } - - public String getSuccess() { - return this.success; - } - - public withError_result setSuccess(String success) { - this.success = success; - return this; - } - - public void unsetSuccess() { - this.success = null; - } - - /** Returns true if field success is set (has been assigned a value) and false otherwise */ - public boolean isSetSuccess() { - return this.success != null; - } - - public void setSuccessIsSet(boolean value) { - if (!value) { - this.success = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case SUCCESS: - if (value == null) { - unsetSuccess(); - } else { - setSuccess((String) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case SUCCESS: - return getSuccess(); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case SUCCESS: - return isSetSuccess(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof withError_result) return this.equals((withError_result) that); - return false; - } - - public boolean equals(withError_result that) { - if (that == null) return false; - - boolean this_present_success = true && this.isSetSuccess(); - boolean that_present_success = true && that.isSetSuccess(); - if (this_present_success || that_present_success) { - if (!(this_present_success && that_present_success)) return false; - if (!this.success.equals(that.success)) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(withError_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetSuccess()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) - throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("withError_result("); - boolean first = true; - - sb.append("success:"); - if (this.success == null) { - sb.append("null"); - } else { - sb.append(this.success); - } - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class withError_resultStandardSchemeFactory implements SchemeFactory { - public withError_resultStandardScheme getScheme() { - return new withError_resultStandardScheme(); - } - } - - private static class withError_resultStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, withError_result struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 0: // SUCCESS - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, withError_result struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - if (struct.success != null) { - oprot.writeFieldBegin(SUCCESS_FIELD_DESC); - oprot.writeString(struct.success); - oprot.writeFieldEnd(); - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class withError_resultTupleSchemeFactory implements SchemeFactory { - public withError_resultTupleScheme getScheme() { - return new withError_resultTupleScheme(); - } - } - - private static class withError_resultTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, withError_result struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetSuccess()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetSuccess()) { - oprot.writeString(struct.success); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, withError_result struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.success = iprot.readString(); - struct.setSuccessIsSet(true); - } - } - } - } - - public static class noReturn_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("noReturn_args"); - - private static final org.apache.thrift.protocol.TField DELAY_FIELD_DESC = - new org.apache.thrift.protocol.TField( - "delay", org.apache.thrift.protocol.TType.I32, (short) 1); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new noReturn_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new noReturn_argsTupleSchemeFactory()); - } - - public int delay; // required - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - DELAY((short) 1, "delay"); - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - case 1: // DELAY - return DELAY; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - private static final int __DELAY_ISSET_ID = 0; - private byte __isset_bitfield = 0; - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put( - _Fields.DELAY, - new org.apache.thrift.meta_data.FieldMetaData( - "delay", - org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.FieldValueMetaData( - org.apache.thrift.protocol.TType.I32))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - noReturn_args.class, metaDataMap); - } - - public noReturn_args() {} - - public noReturn_args(int delay) { - this(); - this.delay = delay; - setDelayIsSet(true); - } - - /** Performs a deep copy on other. */ - public noReturn_args(noReturn_args other) { - __isset_bitfield = other.__isset_bitfield; - this.delay = other.delay; - } - - public noReturn_args deepCopy() { - return new noReturn_args(this); - } - - @Override - public void clear() { - setDelayIsSet(false); - this.delay = 0; - } - - public int getDelay() { - return this.delay; - } - - public noReturn_args setDelay(int delay) { - this.delay = delay; - setDelayIsSet(true); - return this; - } - - public void unsetDelay() { - __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DELAY_ISSET_ID); - } - - /** Returns true if field delay is set (has been assigned a value) and false otherwise */ - public boolean isSetDelay() { - return EncodingUtils.testBit(__isset_bitfield, __DELAY_ISSET_ID); - } - - public void setDelayIsSet(boolean value) { - __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DELAY_ISSET_ID, value); - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case DELAY: - if (value == null) { - unsetDelay(); - } else { - setDelay((Integer) value); - } - break; - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case DELAY: - return Integer.valueOf(getDelay()); - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case DELAY: - return isSetDelay(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof noReturn_args) return this.equals((noReturn_args) that); - return false; - } - - public boolean equals(noReturn_args that) { - if (that == null) return false; - - boolean this_present_delay = true; - boolean that_present_delay = true; - if (this_present_delay || that_present_delay) { - if (!(this_present_delay && that_present_delay)) return false; - if (this.delay != that.delay) return false; - } - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(noReturn_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - lastComparison = Boolean.valueOf(isSetDelay()).compareTo(other.isSetDelay()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetDelay()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.delay, other.delay); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) - throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("noReturn_args("); - boolean first = true; - - sb.append("delay:"); - sb.append(this.delay); - first = false; - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - // it doesn't seem like you should have to do this, but java serialization is wacky, and - // doesn't call the default constructor. - __isset_bitfield = 0; - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class noReturn_argsStandardSchemeFactory implements SchemeFactory { - public noReturn_argsStandardScheme getScheme() { - return new noReturn_argsStandardScheme(); - } - } - - private static class noReturn_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, noReturn_args struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // DELAY - if (schemeField.type == org.apache.thrift.protocol.TType.I32) { - struct.delay = iprot.readI32(); - struct.setDelayIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, noReturn_args struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldBegin(DELAY_FIELD_DESC); - oprot.writeI32(struct.delay); - oprot.writeFieldEnd(); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class noReturn_argsTupleSchemeFactory implements SchemeFactory { - public noReturn_argsTupleScheme getScheme() { - return new noReturn_argsTupleScheme(); - } - } - - private static class noReturn_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, noReturn_args struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - BitSet optionals = new BitSet(); - if (struct.isSetDelay()) { - optionals.set(0); - } - oprot.writeBitSet(optionals, 1); - if (struct.isSetDelay()) { - oprot.writeI32(struct.delay); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, noReturn_args struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - BitSet incoming = iprot.readBitSet(1); - if (incoming.get(0)) { - struct.delay = iprot.readI32(); - struct.setDelayIsSet(true); - } - } - } - } - - public static class noReturn_result - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("noReturn_result"); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new noReturn_resultStandardSchemeFactory()); - schemes.put(TupleScheme.class, new noReturn_resultTupleSchemeFactory()); - } - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ; - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - noReturn_result.class, metaDataMap); - } - - public noReturn_result() {} - - /** Performs a deep copy on other. */ - public noReturn_result(noReturn_result other) {} - - public noReturn_result deepCopy() { - return new noReturn_result(this); - } - - @Override - public void clear() {} - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof noReturn_result) return this.equals((noReturn_result) that); - return false; - } - - public boolean equals(noReturn_result that) { - if (that == null) return false; - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(noReturn_result other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) - throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("noReturn_result("); - boolean first = true; - - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class noReturn_resultStandardSchemeFactory implements SchemeFactory { - public noReturn_resultStandardScheme getScheme() { - return new noReturn_resultStandardScheme(); - } - } - - private static class noReturn_resultStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, noReturn_result struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, noReturn_result struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class noReturn_resultTupleSchemeFactory implements SchemeFactory { - public noReturn_resultTupleScheme getScheme() { - return new noReturn_resultTupleScheme(); - } - } - - private static class noReturn_resultTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, noReturn_result struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, noReturn_result struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - } - } - } - - public static class oneWay_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("oneWay_args"); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new oneWay_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new oneWay_argsTupleSchemeFactory()); - } - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ; - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - oneWay_args.class, metaDataMap); - } - - public oneWay_args() {} - - /** Performs a deep copy on other. */ - public oneWay_args(oneWay_args other) {} - - public oneWay_args deepCopy() { - return new oneWay_args(this); - } - - @Override - public void clear() {} - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof oneWay_args) return this.equals((oneWay_args) that); - return false; - } - - public boolean equals(oneWay_args that) { - if (that == null) return false; - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(oneWay_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) - throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("oneWay_args("); - boolean first = true; - - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class oneWay_argsStandardSchemeFactory implements SchemeFactory { - public oneWay_argsStandardScheme getScheme() { - return new oneWay_argsStandardScheme(); - } - } - - private static class oneWay_argsStandardScheme extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, oneWay_args struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, oneWay_args struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class oneWay_argsTupleSchemeFactory implements SchemeFactory { - public oneWay_argsTupleScheme getScheme() { - return new oneWay_argsTupleScheme(); - } - } - - private static class oneWay_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, oneWay_args struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, oneWay_args struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - } - } - } - - public static class oneWayWithError_args - implements org.apache.thrift.TBase, - java.io.Serializable, - Cloneable, - Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = - new org.apache.thrift.protocol.TStruct("oneWayWithError_args"); - - private static final Map, SchemeFactory> schemes = - new HashMap, SchemeFactory>(); - - static { - schemes.put(StandardScheme.class, new oneWayWithError_argsStandardSchemeFactory()); - schemes.put(TupleScheme.class, new oneWayWithError_argsTupleSchemeFactory()); - } - - /** - * The set of fields this struct contains, along with convenience methods for finding and - * manipulating them. - */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - ; - - private static final Map byName = new HashMap(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** Find the _Fields constant that matches fieldId, or null if its not found. */ - public static _Fields findByThriftId(int fieldId) { - switch (fieldId) { - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) - throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** Find the _Fields constant that matches name, or null if its not found. */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = - new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap( - oneWayWithError_args.class, metaDataMap); - } - - public oneWayWithError_args() {} - - /** Performs a deep copy on other. */ - public oneWayWithError_args(oneWayWithError_args other) {} - - public oneWayWithError_args deepCopy() { - return new oneWayWithError_args(this); - } - - @Override - public void clear() {} - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - } - throw new IllegalStateException(); - } - - /** - * Returns true if field corresponding to fieldID is set (has been assigned a value) and false - * otherwise - */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) return false; - if (that instanceof oneWayWithError_args) return this.equals((oneWayWithError_args) that); - return false; - } - - public boolean equals(oneWayWithError_args that) { - if (that == null) return false; - - return true; - } - - @Override - public int hashCode() { - return 0; - } - - @Override - public int compareTo(oneWayWithError_args other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) - throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) - throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("oneWayWithError_args("); - boolean first = true; - - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - // check for sub-struct validity - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) - throws java.io.IOException, ClassNotFoundException { - try { - read( - new org.apache.thrift.protocol.TCompactProtocol( - new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class oneWayWithError_argsStandardSchemeFactory implements SchemeFactory { - public oneWayWithError_argsStandardScheme getScheme() { - return new oneWayWithError_argsStandardScheme(); - } - } - - private static class oneWayWithError_argsStandardScheme - extends StandardScheme { - - public void read(org.apache.thrift.protocol.TProtocol iprot, oneWayWithError_args struct) - throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - - // check for required fields of primitive type, which can't be checked in the validate - // method - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, oneWayWithError_args struct) - throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - } - - private static class oneWayWithError_argsTupleSchemeFactory implements SchemeFactory { - public oneWayWithError_argsTupleScheme getScheme() { - return new oneWayWithError_argsTupleScheme(); - } - } - - private static class oneWayWithError_argsTupleScheme extends TupleScheme { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, oneWayWithError_args struct) - throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, oneWayWithError_args struct) - throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - } - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift deleted file mode 100644 index f4f63bab0ef5..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift +++ /dev/null @@ -1,10 +0,0 @@ -namespace java io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift - -service ThriftService { - string sayHello(1:string zone,2:string name); - string withError(); - void noReturn(1:i32 delay); - oneway void oneWay(); - oneway void oneWayWithError(); -} - From fefbf8374d6ae38972a6ffe170d2b8e20d8fd78c Mon Sep 17 00:00:00 2001 From: yaoyinglong <906271196@qq.com> Date: Tue, 10 Mar 2026 21:18:40 +0800 Subject: [PATCH 05/13] feat: Optimize the compilation issue caused by the change in RpcAttributesGetter parameters. --- .../thrift/common/ThriftRpcAttributesGetter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java index 9c257aad7339..dad72b390841 100644 --- a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java +++ b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftRpcAttributesGetter.java @@ -8,7 +8,7 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcAttributesGetter; import javax.annotation.Nullable; -public enum ThriftRpcAttributesGetter implements RpcAttributesGetter { +public enum ThriftRpcAttributesGetter implements RpcAttributesGetter { INSTANCE; @Override From a31f02cf1dc783a2a69ae0ec4572be151faa1d37 Mon Sep 17 00:00:00 2001 From: yaoyinglong <906271196@qq.com> Date: Wed, 11 Mar 2026 13:30:19 +0800 Subject: [PATCH 06/13] feat: Merge Thrift 0.9.1 and 0.9.3. --- .../thrift-0.9.1/javaagent/build.gradle.kts | 5 +- ...riftClientCommonInstrumentationModule.java | 1 + .../client/ThriftClientInstrumentation.java | 3 +- .../ThriftClientInstrumentationModule.java | 35 ----- .../thrift-0.9.3/javaagent/build.gradle.kts | 21 --- .../client/ThriftClientInstrumentation.java | 129 ------------------ .../ThriftClientInstrumentationModule.java | 34 ----- settings.gradle.kts | 1 - 8 files changed, 4 insertions(+), 225 deletions(-) delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentationModule.java delete mode 100644 instrumentation/thrift/thrift-0.9.3/javaagent/build.gradle.kts delete mode 100644 instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentation.java delete mode 100644 instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentationModule.java diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts index 9a06caac2b5a..f32eef48c6b5 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts @@ -6,7 +6,7 @@ muzzle { pass { group.set("org.apache.thrift") module.set("libthrift") - versions.set("[0.9.1, 0.9.3)") + versions.set("[0.9.1,)") assertInverse.set(true) } } @@ -14,7 +14,4 @@ muzzle { dependencies { library("org.apache.thrift:libthrift:0.9.1") implementation(project(":instrumentation:thrift:thrift-common:javaagent")) - - testImplementation("org.apache.thrift:libthrift:0.9.1") - testImplementation("javax.annotation:javax.annotation-api:1.3.2") } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java index 70055624500f..dfb265284682 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java @@ -29,6 +29,7 @@ public ElementMatcher.Junction classLoaderMatcher() { @Override public List typeInstrumentations() { return asList( + new ThriftClientInstrumentation(), new ThriftAsyncClientInstrumentation(), new ThriftAsyncMethodCallInstrumentation(), new ThriftAsyncWriteArgsInstrumentation()); diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java index d991f84ce16f..3854e33543b4 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java @@ -10,6 +10,7 @@ import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isProtected; +import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -42,7 +43,7 @@ public void transform(TypeTransformer transformer) { ThriftClientInstrumentation.class.getName() + "$ConstructorTowAdvice"); transformer.applyAdviceToMethod( - isMethod().and(isProtected()).and(named("sendBase")), + isMethod().and(isProtected()).and(nameStartsWith("sendBase")), ThriftClientInstrumentation.class.getName() + "$ClientSendAdvice"); transformer.applyAdviceToMethod( diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentationModule.java deleted file mode 100644 index 18b786f31260..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentationModule.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; - -import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; -import static java.util.Arrays.asList; -import static net.bytebuddy.matcher.ElementMatchers.not; - -import com.google.auto.service.AutoService; -import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; -import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.List; -import net.bytebuddy.matcher.ElementMatcher; - -@AutoService(InstrumentationModule.class) -public final class ThriftClientInstrumentationModule extends InstrumentationModule { - - public ThriftClientInstrumentationModule() { - super("thrift", "thrift-0.9.1", "thrift-0.9.1-client"); - } - - @Override - public ElementMatcher.Junction classLoaderMatcher() { - return hasClassesNamed("org.apache.thrift.protocol.TProtocolDecorator") - .and(not(hasClassesNamed("org.apache.thrift.TAsyncProcessor"))); - } - - @Override - public List typeInstrumentations() { - return asList(new ThriftClientInstrumentation()); - } -} diff --git a/instrumentation/thrift/thrift-0.9.3/javaagent/build.gradle.kts b/instrumentation/thrift/thrift-0.9.3/javaagent/build.gradle.kts deleted file mode 100644 index 7c2b91e62b2b..000000000000 --- a/instrumentation/thrift/thrift-0.9.3/javaagent/build.gradle.kts +++ /dev/null @@ -1,21 +0,0 @@ -plugins { - id("otel.javaagent-instrumentation") -} - -muzzle { - pass { - group.set("org.apache.thrift") - module.set("libthrift") - versions.set("[0.9.3,)") - assertInverse.set(true) - } -} - -dependencies { - library("org.apache.thrift:libthrift:0.9.3") - implementation(project(":instrumentation:thrift:thrift-common:javaagent")) - implementation(project(":instrumentation:thrift:thrift-0.9.1:javaagent")) - - testImplementation("org.apache.thrift:libthrift:0.9.1") - testImplementation("javax.annotation:javax.annotation-api:1.3.2") -} diff --git a/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentation.java deleted file mode 100644 index c694de1e0598..000000000000 --- a/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentation.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_3.client; - -import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; -import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; -import static net.bytebuddy.matcher.ElementMatchers.isConstructor; -import static net.bytebuddy.matcher.ElementMatchers.isMethod; -import static net.bytebuddy.matcher.ElementMatchers.isPrivate; -import static net.bytebuddy.matcher.ElementMatchers.named; -import static net.bytebuddy.matcher.ElementMatchers.takesArguments; - -import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; -import io.opentelemetry.instrumentation.thrift.common.client.MethodAccessor; -import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; -import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client.ClientOutProtocolWrapper; -import java.util.Set; -import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.type.TypeDescription; -import net.bytebuddy.matcher.ElementMatcher; -import org.apache.thrift.protocol.TProtocol; - -public final class ThriftClientInstrumentation implements TypeInstrumentation { - - @Override - public ElementMatcher typeMatcher() { - return extendsClass(named("org.apache.thrift.TServiceClient")); - } - - @Override - public void transform(TypeTransformer transformer) { - transformer.applyAdviceToMethod( - isConstructor().and(takesArguments(1)), - ThriftClientInstrumentation.class.getName() + "$ConstructorOneAdvice"); - - transformer.applyAdviceToMethod( - isConstructor().and(takesArguments(2)), - ThriftClientInstrumentation.class.getName() + "$ConstructorTowAdvice"); - - transformer.applyAdviceToMethod( - isMethod().and(isPrivate()).and(named("sendBase")), - ThriftClientInstrumentation.class.getName() + "$ClientSendAdvice"); - - transformer.applyAdviceToMethod( - isMethod().and(named("receiveBase")), - ThriftClientInstrumentation.class.getName() + "$ClientReceiveAdvice"); - } - - public static class ConstructorOneAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( - @Advice.Origin("#t") String serviceName, - @Advice.Argument(value = 0, readOnly = false) TProtocol inProtocol) { - Set voidMethodNames = MethodAccessor.voidMethodNames(serviceName); - if (!(inProtocol instanceof ClientOutProtocolWrapper)) { - inProtocol = new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); - } - } - } - - public static class ConstructorTowAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( - @Advice.Origin("#t") String serviceName, - @Advice.Argument(value = 0, readOnly = false) TProtocol inProtocol, - @Advice.Argument(value = 1, readOnly = false) TProtocol outProtocol) { - Set voidMethodNames = MethodAccessor.voidMethodNames(serviceName); - if (!(inProtocol instanceof ClientOutProtocolWrapper)) { - inProtocol = new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); - } - if (!(outProtocol instanceof ClientOutProtocolWrapper)) { - outProtocol = new ClientOutProtocolWrapper(outProtocol, serviceName, voidMethodNames); - } - } - } - - public static class ClientSendAdvice { - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) - public static void methodExit( - @Advice.FieldValue(value = "oprot_") TProtocol outProtocol, - @Advice.Thrown Throwable throwable) { - if (outProtocol != null && outProtocol instanceof ClientOutProtocolWrapper) { - ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) outProtocol; - RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); - if (requestScopeContext == null) { - return; - } - - Context context = requestScopeContext.getContext(); - if (throwable != null) { - requestScopeContext.close(); - clientInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); - wrapper.setRequestScopeContext(null); - return; - } - - if (wrapper.isOneway()) { - requestScopeContext.close(); - clientInstrumenter().end(context, requestScopeContext.getRequest(), 0, null); - wrapper.setRequestScopeContext(null); - } - } - } - } - - public static class ClientReceiveAdvice { - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) - public static void methodExit( - @Advice.Thrown Throwable throwable, - @Advice.FieldValue(value = "oprot_") TProtocol outProtocol) { - if (outProtocol != null && outProtocol instanceof ClientOutProtocolWrapper) { - ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) outProtocol; - RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); - if (requestScopeContext == null) { - return; - } - requestScopeContext.close(); - Context context = requestScopeContext.getContext(); - clientInstrumenter().end(context, requestScopeContext.getRequest(), null, throwable); - wrapper.setRequestScopeContext(null); - } - } - } -} diff --git a/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentationModule.java deleted file mode 100644 index a7cd4fc56053..000000000000 --- a/instrumentation/thrift/thrift-0.9.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_3/client/ThriftClientInstrumentationModule.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_3.client; - -import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; -import static java.util.Arrays.asList; - -import com.google.auto.service.AutoService; -import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; -import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import java.util.List; -import net.bytebuddy.matcher.ElementMatcher; - -@AutoService(InstrumentationModule.class) -public final class ThriftClientInstrumentationModule extends InstrumentationModule { - - public ThriftClientInstrumentationModule() { - super("thrift", "thrift-0.9.3", "thrift-0.9.3-client"); - } - - @Override - public ElementMatcher.Junction classLoaderMatcher() { - return hasClassesNamed("org.apache.thrift.protocol.TProtocolDecorator") - .and(hasClassesNamed("org.apache.thrift.TAsyncProcessor")); - } - - @Override - public List typeInstrumentations() { - return asList(new ThriftClientInstrumentation()); - } -} diff --git a/settings.gradle.kts b/settings.gradle.kts index 50de24ef1fa2..9bf4c6bd4871 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -715,7 +715,6 @@ include(":instrumentation:xxl-job:xxl-job-common:javaagent") include(":instrumentation:xxl-job:xxl-job-common:testing") include(":instrumentation:zio:zio-2.0:javaagent") include(":instrumentation:thrift:thrift-0.9.1:javaagent") -include(":instrumentation:thrift:thrift-0.9.3:javaagent") include(":instrumentation:thrift:thrift-common:javaagent") // benchmark From 8d2bb680ef94bacc2c9f0ddf9247ff079bc3aa3d Mon Sep 17 00:00:00 2001 From: yaoyinglong <906271196@qq.com> Date: Wed, 11 Mar 2026 13:45:24 +0800 Subject: [PATCH 07/13] feat: Run ./gradlew generateFossaConfiguration to automatically generate and populate the .fossa.yml file. --- .fossa.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.fossa.yml b/.fossa.yml index 38d672ebf0e1..e4fa20938d52 100644 --- a/.fossa.yml +++ b/.fossa.yml @@ -1036,6 +1036,12 @@ targets: - type: gradle path: ./ target: ':instrumentation:struts:struts-7.0:javaagent' + - type: gradle + path: ./ + target: ':instrumentation:thrift:thrift-0.9.1:javaagent' + - type: gradle + path: ./ + target: ':instrumentation:thrift:thrift-common:javaagent' - type: gradle path: ./ target: ':instrumentation:tomcat:tomcat-10.0:javaagent' @@ -1075,9 +1081,6 @@ targets: - type: gradle path: ./ target: ':instrumentation:zio:zio-2.0:javaagent' - - type: gradle - path: ./ - target: ':instrumentation:zio:zio-http-3.0:javaagent' - type: gradle path: ./ target: ':instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent' From f91074bd6156cb08455fb4c0eb711d941ef42525 Mon Sep 17 00:00:00 2001 From: yaoyinglong <906271196@qq.com> Date: Wed, 11 Mar 2026 16:50:07 +0800 Subject: [PATCH 08/13] feat: remove ThriftServletInstrumentation. --- .../ThriftServerInstrumentationModule.java | 1 - .../server/ThriftServletInstrumentation.java | 43 ------------------- 2 files changed, 44 deletions(-) delete mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServletInstrumentation.java diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java index c5fc96c892a7..fe193a10e51c 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java @@ -30,7 +30,6 @@ public ElementMatcher.Junction classLoaderMatcher() { public List typeInstrumentations() { return asList( new ThriftServerInstrumentation(), - new ThriftServletInstrumentation(), new ThriftAsyncProcessInstrumentation(), new ThriftFrameBufferInstrumentation(), new ThriftBaseProcessorInstrumentation(), diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServletInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServletInstrumentation.java deleted file mode 100644 index 126235073983..000000000000 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServletInstrumentation.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; - -import static net.bytebuddy.matcher.ElementMatchers.isConstructor; -import static net.bytebuddy.matcher.ElementMatchers.named; -import static net.bytebuddy.matcher.ElementMatchers.takesArguments; - -import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; -import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; -import net.bytebuddy.asm.Advice; -import net.bytebuddy.description.type.TypeDescription; -import net.bytebuddy.matcher.ElementMatcher; -import org.apache.thrift.protocol.TProtocolFactory; - -public final class ThriftServletInstrumentation implements TypeInstrumentation { - @Override - public ElementMatcher typeMatcher() { - return named("org.apache.thrift.server.TServlet"); - } - - @Override - public void transform(TypeTransformer transformer) { - transformer.applyAdviceToMethod( - isConstructor().and(takesArguments(1)), - ThriftServletInstrumentation.class.getName() + "$ServerConstructorAdvice"); - } - - public static class ServerConstructorAdvice { - - @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( - @Advice.Argument(value = 1, readOnly = false) TProtocolFactory factory) { - if (factory instanceof ServerProtocolFactoryWrapper) { - return; - } - factory = new ServerProtocolFactoryWrapper(factory); - } - } -} From 9066d3169d7c184e28a906c64b9db66cc44124ef Mon Sep 17 00:00:00 2001 From: yaoyinglong <906271196@qq.com> Date: Tue, 7 Apr 2026 12:51:22 +0800 Subject: [PATCH 09/13] =?UTF-8?q?feat:=20Optimize=20the=20revision=20sugge?= =?UTF-8?q?stions=20for=20AI=20review=EF=BC=8Cand=20add=20test=20cases.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thrift-0.9.1/javaagent/build.gradle.kts | 33 + .../client/ClientProtocolFactoryWrapper.java | 6 +- .../client/ThriftClientInstrumentation.java | 4 +- ...tMultiplexedProcessorInstrumentation.java} | 4 +- .../ThriftServerInstrumentationModule.java | 2 +- .../thrift/v0_9_1/NoReturnTest.java | 404 ++++++++++ .../thrift/v0_9_1/OneWayErrorTest.java | 409 ++++++++++ .../thrift/v0_9_1/OneWayTest.java | 404 ++++++++++ .../thrift/v0_9_1/SayHelloTest.java | 410 ++++++++++ .../thrift/v0_9_1/ThriftBaseTest.java | 708 ++++++++++++++++++ .../thrift/v0_9_1/WithErrorTest.java | 432 +++++++++++ .../v0_9_1/server/ThriftServiceAsyncImpl.java | 40 + .../v0_9_1/server/ThriftServiceImpl.java | 37 + .../src/test/resources/ThriftService.thrift | 9 + .../thrift/common/ThriftHeaderGetter.java | 5 + .../common/ThriftInstrumenterFactory.java | 2 - .../common/ThriftSpanNameExtractor.java | 4 +- .../thrift/common/client/MethodAccessor.java | 12 +- .../ThriftClientNetworkAttributesGetter.java | 4 +- 19 files changed, 2909 insertions(+), 20 deletions(-) rename instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/{ThriftMutiplexedProcessorInstrumentation.java => ThriftMultiplexedProcessorInstrumentation.java} (94%) create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java create mode 100644 instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts index f32eef48c6b5..d0ae4c3581c0 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts @@ -13,5 +13,38 @@ muzzle { dependencies { library("org.apache.thrift:libthrift:0.9.1") + testLibrary("org.apache.thrift:libthrift:0.12.0") implementation(project(":instrumentation:thrift:thrift-common:javaagent")) } + +val generatedThriftDir = layout.buildDirectory.dir("generated/thrift/test") + +val generateThriftSources by tasks.registering(Exec::class) { + val thriftFilePath = + layout.projectDirectory.file("src/test/resources/ThriftService.thrift").asFile.absolutePath + val outputDirPath = generatedThriftDir.get().asFile.also { it.mkdirs() }.absolutePath + inputs.file(thriftFilePath) + outputs.dir(outputDirPath) + commandLine( + "bash", + "-c", + """docker image inspect thrift:0.12.0 > /dev/null 2>&1 || docker pull --platform linux/amd64 thrift:0.12.0 && """ + + """docker run --rm --platform linux/amd64 -v "$thriftFilePath:/thrift/input/ThriftService.thrift:ro" -v "$outputDirPath:/thrift/output" thrift:0.12.0 thrift --gen java -out /thrift/output /thrift/input/ThriftService.thrift""" + ) +} + +sourceSets { + test { + java { + srcDir(generatedThriftDir) + } + } +} + +tasks.compileTestJava { + dependsOn(generateThriftSources) +} + +tasks.named("checkstyleTest") { + exclude("**/thrift/**") +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java index 9d73baacb22f..346be082ff0c 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientProtocolFactoryWrapper.java @@ -10,9 +10,9 @@ import org.apache.thrift.transport.TTransport; public final class ClientProtocolFactoryWrapper implements TProtocolFactory { - public TProtocolFactory delegate; - public TTransport transport; - public String serviceName; + private final TProtocolFactory delegate; + private final TTransport transport; + private final String serviceName; @Override public TProtocol getProtocol(TTransport transport) { diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java index 3854e33543b4..b9601c19dd9c 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java @@ -40,7 +40,7 @@ public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( isConstructor().and(takesArguments(2)), - ThriftClientInstrumentation.class.getName() + "$ConstructorTowAdvice"); + ThriftClientInstrumentation.class.getName() + "$ConstructorTwoAdvice"); transformer.applyAdviceToMethod( isMethod().and(isProtected()).and(nameStartsWith("sendBase")), @@ -63,7 +63,7 @@ public static void onEnter( } } - public static class ConstructorTowAdvice { + public static class ConstructorTwoAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static void onEnter( @Advice.Origin("#t") String serviceName, diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMutiplexedProcessorInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java similarity index 94% rename from instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMutiplexedProcessorInstrumentation.java rename to instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java index 3667dbad0dca..7c9e7e652220 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMutiplexedProcessorInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java @@ -25,7 +25,7 @@ import net.bytebuddy.matcher.ElementMatcher; import org.apache.thrift.protocol.TProtocol; -public final class ThriftMutiplexedProcessorInstrumentation implements TypeInstrumentation { +public final class ThriftMultiplexedProcessorInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { @@ -36,7 +36,7 @@ public ElementMatcher typeMatcher() { public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( isMethod().and(named("process")), - ThriftMutiplexedProcessorInstrumentation.class.getName() + "$ProcessAdvice"); + ThriftMultiplexedProcessorInstrumentation.class.getName() + "$ProcessAdvice"); } public static class ProcessAdvice { diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java index fe193a10e51c..6c0fd620ad70 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java @@ -33,7 +33,7 @@ public List typeInstrumentations() { new ThriftAsyncProcessInstrumentation(), new ThriftFrameBufferInstrumentation(), new ThriftBaseProcessorInstrumentation(), - new ThriftMutiplexedProcessorInstrumentation(), + new ThriftMultiplexedProcessorInstrumentation(), new ThriftBaseAsyncProcessorInstrumentation()); } } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java new file mode 100644 index 000000000000..b932b926b891 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/NoReturnTest.java @@ -0,0 +1,404 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.apache.thrift.transport.TTransportException; +import org.junit.jupiter.api.Test; + +public class NoReturnTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncClientSyncSimpleServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientNoReturn(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerNoReturn() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncClientSyncThreadPoolServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientNoReturn(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerNoReturn() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientMultiNoReturn(port)); + this.waitAndAssertTracesClientSyncServerSync( + port, "noReturn", "syncHelloWorld:noReturn", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientNoReturn(port)); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerNoReturn() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", "syncHelloWorld:noReturn", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientMultiNoReturn(port)); + this.waitAndAssertTracesClientSyncServerSync( + port, "noReturn", "syncHelloWorld:noReturn", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientNoReturn(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientNoReturn(port)); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientNoReturn(port)); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientNoReturn(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerNoReturn() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientNoReturn(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientNoReturn(port)); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerNoReturn() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientNoReturn(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientNoReturn(port)); + this.waitAndAssertTracesClientSyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientNoReturn(port)); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientNoReturn(port)); + this.waitAndAssertTracesClientAsyncServerSync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientNoReturn(port)); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerNoReturn() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientNoReturn(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerNoReturnParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientNoReturn(port)); + this.waitAndAssertTracesClientAsyncServerAsync(port, "noReturn", threadCount); + } + + public void syncClientNoReturn(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.noReturn(1)); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiNoReturn(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.noReturn(1)); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientNoReturn(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(Void s) {} + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.noReturn(1, callback)); + } + + public void syncFramedClientNoReturn(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.noReturn(1)); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiNoReturn(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.noReturn(1)); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java new file mode 100644 index 000000000000..5ebe5a853d0b --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayErrorTest.java @@ -0,0 +1,409 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.apache.thrift.transport.TTransportException; +import org.junit.jupiter.api.Test; + +public class OneWayErrorTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncClientSyncSimpleServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerOneWayWithError() + throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncClientSyncThreadPoolServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientMultiOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientMultiOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncOnewayError( + port, "oneWayWithError", "syncHelloWorld:oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWayWithError() + throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWayWithError(port)); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWayWithError() + throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWayWithError(port)); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWayWithError() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientOneWayWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWayWithError(port)); + this.waitAndAssertTracesClientSyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWayWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWayWithError(port)); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWayWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWayWithError(port)); + this.waitAndAssertTracesClientAsyncServerSyncOnewayError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWayWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWayWithError(port)); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWayWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientOneWayWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWayWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWayWithError(port)); + this.waitAndAssertTracesClientAsyncServerAsyncError(port, "oneWayWithError", threadCount); + } + + public void syncClientOneWayWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.oneWayWithError()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiOneWayWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.oneWayWithError()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientOneWayWithError(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(Void no) {} + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.oneWayWithError(callback)); + } + + public void syncFramedClientOneWayWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.oneWayWithError()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiOneWayWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.oneWayWithError()); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java new file mode 100644 index 000000000000..08f174c8b894 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/OneWayTest.java @@ -0,0 +1,404 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.apache.thrift.transport.TTransportException; +import org.junit.jupiter.api.Test; + +public class OneWayTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerOneWay() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncClientSyncSimpleServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientOneWay(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerOneWay() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncClientSyncThreadPoolServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientOneWay(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWay() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientMultiOneWay(port)); + this.waitAndAssertTracesClientSyncServerSync( + port, "oneWay", "syncHelloWorld:oneWay", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWay() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWay(port)); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWay() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", "syncHelloWorld:oneWay", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientMultiOneWay(port)); + this.waitAndAssertTracesClientSyncServerSync( + port, "oneWay", "syncHelloWorld:oneWay", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWay() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWay(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWay(port)); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWay(port)); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWay() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWay(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWay() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWay(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWay() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWay(port)); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWay() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientOneWay(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientOneWay(port)); + this.waitAndAssertTracesClientSyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWay(port)); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWay(port)); + this.waitAndAssertTracesClientAsyncServerSync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWay(port)); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWay() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientOneWay(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerOneWayParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientOneWay(port)); + this.waitAndAssertTracesClientAsyncServerAsync(port, "oneWay", threadCount); + } + + public void syncClientOneWay(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.oneWay()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiOneWay(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.oneWay()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientOneWay(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(Void result) {} + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.oneWay(callback)); + } + + public void syncFramedClientOneWay(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + this.testing().runWithSpan("parent", () -> client.oneWay()); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiOneWay(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + this.testing().runWithSpan("parent", () -> client.oneWay()); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java new file mode 100644 index 000000000000..724a73ce7d4d --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/SayHelloTest.java @@ -0,0 +1,410 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.apache.thrift.transport.TTransportException; +import org.junit.jupiter.api.Test; + +public class SayHelloTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncClientSyncSimpleServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientSayHello(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerSayHello() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncClientSyncThreadPoolServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientSayHello(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerSayHello() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientMultiSayHello(port)); + this.waitAndAssertTracesClientSyncServerSync( + port, "sayHello", "syncHelloWorld:sayHello", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientSayHello(port)); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerSayHello() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", "syncHelloWorld:sayHello", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientMultiSayHello(port)); + this.waitAndAssertTracesClientSyncServerSync( + port, "sayHello", "syncHelloWorld:sayHello", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientSayHello(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientSayHello(port)); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientSayHello(port)); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientSayHello(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerSayHello() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientSayHello(port)); + this.waitAndAssertTracesClientSyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientSayHello(port)); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerSayHello() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientSayHello(port); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientSayHello(port)); + this.waitAndAssertTracesClientSyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientSayHello(port)); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientSayHello(port)); + this.waitAndAssertTracesClientAsyncServerSync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientSayHello(port)); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerSayHello() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientSayHello(port); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerSayHelloParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientSayHello(port)); + this.waitAndAssertTracesClientAsyncServerAsync(port, "sayHello", threadCount); + } + + public void syncClientSayHello(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); + assertThat(response).isEqualTo("Hello USs' Bob"); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiSayHello(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); + assertThat(response).isEqualTo("Hello USs' Bob"); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientSayHello(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(String result) { + assertThat(result).isEqualTo("Hello USs' Bob"); + } + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.sayHello("US", "Bob", callback)); + } + + public void syncFramedClientSayHello(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); + assertThat(response).isEqualTo("Hello USs' Bob"); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiSayHello(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + String response = this.testing().runWithSpan("parent", () -> client.sayHello("US", "Bob")); + assertThat(response).isEqualTo("Hello USs' Bob"); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java new file mode 100644 index 000000000000..82a598710a52 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/ThriftBaseTest.java @@ -0,0 +1,708 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static io.opentelemetry.api.common.AttributeKey.stringKey; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; +import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceAsyncImpl; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceImpl; +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import io.opentelemetry.sdk.testing.assertj.SpanDataAssert; +import io.opentelemetry.sdk.testing.assertj.TraceAssert; +import io.opentelemetry.sdk.trace.data.StatusData; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.util.Random; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Consumer; +import org.apache.thrift.TMultiplexedProcessor; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.server.THsHaServer; +import org.apache.thrift.server.TNonblockingServer; +import org.apache.thrift.server.TServer; +import org.apache.thrift.server.TSimpleServer; +import org.apache.thrift.server.TThreadPoolServer; +import org.apache.thrift.server.TThreadedSelectorServer; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingServerSocket; +import org.apache.thrift.transport.TNonblockingServerTransport; +import org.apache.thrift.transport.TServerSocket; +import org.apache.thrift.transport.TServerTransport; +import org.apache.thrift.transport.TTransportException; +import org.assertj.core.api.AbstractAssert; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.testcontainers.shaded.com.google.common.base.VerifyException; + +public abstract class ThriftBaseTest { + public TServer server; + public int port = 13100; + + private static final String ASYNC_CLIENT = + "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService$AsyncClient"; + private static final String SYNC_CLIENT = + "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService$Client"; + private static final String ASYNC_SERVER = + "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceAsyncImpl"; + private static final String SYNC_SERVER = + "io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server.ThriftServiceImpl"; + private static final String PEER_ADDR = "127.0.0.1"; + + private static final String TRANSPORT_EXCEPTION = + "org.apache.thrift.transport.TTransportException"; + private static final String VERIFY_EXCEPTION = "org.apache.thrift.transport.TTransportException"; + private static final String IO_EXCEPTION = "java.io.IOException"; + + private static final AttributeKey RPC_METHOD = AttributeKey.stringKey("rpc.method"); + private static final AttributeKey RPC_SERVICE = AttributeKey.stringKey("rpc.service"); + private static final AttributeKey RPC_SYSTEM = AttributeKey.stringKey("rpc.system"); + + private static final String EXCEPTION_EVENT_NAME = "exception"; + private static final AttributeKey EXCEPTION_MESSAGE = + AttributeKey.stringKey("exception.message"); + private static final AttributeKey EXCEPTION_TYPE = + AttributeKey.stringKey("exception.type"); + + public static final AttributeKey NETWORK_PEER_ADDRESS = + AttributeKey.stringKey("network.peer.address"); + public static final AttributeKey NETWORK_PEER_PORT = + AttributeKey.longKey("network.peer.port"); + + @RegisterExtension + protected static InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + protected InstrumentationExtension testing() { + return testing; + } + + @BeforeEach + public void before() { + ++this.port; + this.testing().clearData(); + } + + @AfterEach + public void after() { + this.stopServer(); + } + + public int getPort() { + Random random = new Random(); + int newPort = this.port + random.nextInt(2000); + while (portNotRelease(newPort)) { + newPort = this.port + random.nextInt(2000); + } + return newPort; + } + + @FunctionalInterface + protected interface CheckedRunnable { + void run() throws Exception; + } + + protected void runParallel(int threadCount, CheckedRunnable action) throws InterruptedException { + AtomicInteger failCount = new AtomicInteger(0); + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; ++i) { + new Thread( + () -> { + try { + action.run(); + } catch (Exception e) { + failCount.incrementAndGet(); + Assertions.fail("parallel test failed: " + e.getMessage()); + } finally { + latch.countDown(); + } + }) + .start(); + } + latch.await(10L, SECONDS); + assertThat(failCount.get()).isEqualTo(0); + } + + public static boolean portNotRelease(int port) { + Process process = null; + String pid = null; + try { + process = Runtime.getRuntime().exec("lsof -ti:" + port); + BufferedReader reader = + new BufferedReader( + new InputStreamReader(process.getInputStream(), Charset.defaultCharset())); + pid = reader.readLine(); + } catch (IOException e) { + throw new VerifyException(e); + } + return pid != null && !pid.isEmpty(); + } + + public void startSyncSimpleServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TServerTransport serverTransport = new TServerSocket(port); + this.server = new TSimpleServer(new TServer.Args(serverTransport).processor(processor)); + new Thread(() -> this.server.serve()).start(); + } + + public void startMultiSimpleServer(int port) throws TTransportException { + ThriftServiceImpl syncImpl = new ThriftServiceImpl(); + ThriftService.Processor syncProcessor = + new ThriftService.Processor(syncImpl); + ThriftServiceAsyncImpl asyncImpl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor asyncProcessor = + new ThriftService.AsyncProcessor(asyncImpl); + TMultiplexedProcessor multiplexedProcessor = new TMultiplexedProcessor(); + multiplexedProcessor.registerProcessor("syncHelloWorld", syncProcessor); + multiplexedProcessor.registerProcessor("asyncHelloWorld", asyncProcessor); + TServerTransport serverTransport = new TServerSocket(port); + this.server = + new TSimpleServer(new TServer.Args(serverTransport).processor(multiplexedProcessor)); + new Thread(() -> this.server.serve()).start(); + } + + public void startMultiThreadedSelectorServer(int port) throws TTransportException { + ThriftServiceImpl syncImpl = new ThriftServiceImpl(); + ThriftService.Processor syncProcessor = + new ThriftService.Processor(syncImpl); + ThriftServiceAsyncImpl asyncImpl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor asyncProcessor = + new ThriftService.AsyncProcessor(asyncImpl); + TMultiplexedProcessor multiplexedProcessor = new TMultiplexedProcessor(); + multiplexedProcessor.registerProcessor("syncHelloWorld", syncProcessor); + multiplexedProcessor.registerProcessor("asyncHelloWorld", asyncProcessor); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TThreadedSelectorServer.Args serverArgs = + new TThreadedSelectorServer.Args(transport) + .selectorThreads(5) + .workerThreads(10) + .acceptQueueSizePerThread(20) + .processor(multiplexedProcessor); + this.server = new TThreadedSelectorServer(serverArgs); + new Thread(() -> this.server.serve()).start(); + } + + public void startSyncThreadedSelectorServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TThreadedSelectorServer.Args serverArgs = + new TThreadedSelectorServer.Args(transport) + .selectorThreads(5) + .workerThreads(10) + .acceptQueueSizePerThread(20) + .processor(processor); + this.server = new TThreadedSelectorServer(serverArgs); + new Thread(() -> this.server.serve()).start(); + } + + public void startAsyncThreadedSelectorServer(int port) throws TTransportException { + ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor processor = + new ThriftService.AsyncProcessor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TThreadedSelectorServer.Args serverArgs = + new TThreadedSelectorServer.Args(transport) + .selectorThreads(5) + .workerThreads(10) + .acceptQueueSizePerThread(20) + .processor(processor); + this.server = new TThreadedSelectorServer(serverArgs); + new Thread(() -> this.server.serve()).start(); + } + + public void startSyncNonblockingServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TNonblockingServer.Args serverArgs = + new TNonblockingServer.Args(transport).processor(processor); + this.server = new TNonblockingServer(serverArgs); + new Thread(() -> this.server.serve()).start(); + } + + public void startAsyncNonblockingServer(int port) throws TTransportException { + ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor processor = + new ThriftService.AsyncProcessor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TNonblockingServer.Args serverArgs = + new TNonblockingServer.Args(transport).processor(processor); + this.server = new TNonblockingServer(serverArgs); + new Thread(() -> this.server.serve()).start(); + } + + public void startSyncThreadPoolServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TServerSocket transport = new TServerSocket(port); + ExecutorService executor = Executors.newFixedThreadPool(5); + TThreadPoolServer.Args serverArgs = + new TThreadPoolServer.Args(transport).executorService(executor).processor(processor); + TServer server = new TThreadPoolServer(serverArgs); + new Thread(() -> server.serve()).start(); + } + + public void startSyncHsHaServer(int port) throws TTransportException { + ThriftServiceImpl impl = new ThriftServiceImpl(); + ThriftService.Processor processor = + new ThriftService.Processor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); + TFramedTransport.Factory transportFactory = new TFramedTransport.Factory(); + THsHaServer.Args serverArgs = + new THsHaServer.Args(transport) + .processor(processor) + .protocolFactory(protocolFactory) + .transportFactory(transportFactory); + this.server = new THsHaServer(serverArgs); + new Thread(() -> this.server.serve()).start(); + } + + public void startAsyncHsHaServer(int port) throws TTransportException { + ThriftServiceAsyncImpl impl = new ThriftServiceAsyncImpl(); + ThriftService.AsyncProcessor processor = + new ThriftService.AsyncProcessor(impl); + TNonblockingServerTransport transport = new TNonblockingServerSocket(port); + TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory(); + TFramedTransport.Factory transportFactory = new TFramedTransport.Factory(); + THsHaServer.Args serverArgs = + new THsHaServer.Args(transport) + .processor(processor) + .protocolFactory(protocolFactory) + .transportFactory(transportFactory); + this.server = new THsHaServer(serverArgs); + new Thread(() -> this.server.serve()).start(); + } + + public void stopServer() { + if (this.server != null) { + this.server.stop(); + } + } + + public void waitAndAssertTracesClientSyncServerSync(int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.unset(), + null, + null); + } + + public void waitAndAssertTracesClientSyncServerSync( + int peerPort, String clientMethod, String serverMethod, int count) { + this.baseWaitAndAssertTraces( + clientMethod, + serverMethod, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.unset(), + null, + null); + } + + public void waitAndAssertTracesClientSyncServerSyncWithError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {null, "Internal error processing " + method}, + TRANSPORT_EXCEPTION, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientSyncServerSyncWithError( + int peerPort, String clientMethod, String serverMethod, int count) { + this.baseWaitAndAssertTraces( + clientMethod, + serverMethod, + count, + SYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {null, "Internal error processing " + clientMethod}, + TRANSPORT_EXCEPTION, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientSyncServerSyncOnewayError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientSyncServerSyncOnewayError( + int peerPort, String clientMethod, String serverMethod, int count) { + this.baseWaitAndAssertTraces( + clientMethod, + serverMethod, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientAsyncServerAsync(int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + ASYNC_SERVER, + StatusData.unset(), + null, + null); + } + + public void waitAndAssertTracesClientAsyncServerAsyncError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + ASYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientAsyncServerAsyncWithError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {"Read call frame size failed", "fail"}, + IO_EXCEPTION, + ASYNC_SERVER, + StatusData.error(), + new Object[] {"Read call frame size failed", "fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientAsyncServerSync(int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.unset(), + null, + null); + } + + public void waitAndAssertTracesClientAsyncServerSyncWithError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {"Read call frame size failed", "Internal error processing " + method}, + IO_EXCEPTION, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + public void waitAndAssertTracesClientAsyncServerSyncOnewayError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + ASYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + SYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) // 测试代码 + public void waitAndAssertTracesClientSyncServerAsync(int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + ASYNC_SERVER, + StatusData.unset(), + null, + null); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) // 测试代码 + public void waitAndAssertTracesClientSyncServerAsyncError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.unset(), + peerPort, + PEER_ADDR, + null, + null, + ASYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + public void waitAndAssertTracesClientSyncServerAsyncWithError( + int peerPort, String method, int count) { + this.baseWaitAndAssertTraces( + method, + method, + count, + SYNC_CLIENT, + StatusData.error(), + peerPort, + PEER_ADDR, + new Object[] {null, "fail"}, + TRANSPORT_EXCEPTION, + ASYNC_SERVER, + StatusData.error(), + new Object[] {"fail"}, + VERIFY_EXCEPTION); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + private void baseWaitAndAssertTraces( + String clientMethod, + String serverMethod, + int count, + String clientClass, + StatusData clientStatus, + int peerPort, + String peerAddr, + Object[] clientErrMsg, + String clientErrorType, + String serverClass, + StatusData serverStatus, + Object[] serverErrMsg, + String serverErrorType) { + Consumer[] consumers = new Consumer[count]; + Consumer traceAssertConsumer; + if (serverClass == null) { + traceAssertConsumer = + trace -> + trace.hasSpansSatisfyingExactly( + span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), + clientSpanDataAssertConsumer( + clientMethod, + clientClass, + clientStatus, + trace, + peerPort, + peerAddr, + clientErrMsg, + clientErrorType)); + } else { + traceAssertConsumer = + trace -> + trace.hasSpansSatisfyingExactly( + span -> span.hasName("parent").hasKind(SpanKind.INTERNAL).hasNoParent(), + clientSpanDataAssertConsumer( + clientMethod, + clientClass, + clientStatus, + trace, + peerPort, + peerAddr, + clientErrMsg, + clientErrorType), + serverSpanDataAssertConsumer( + serverMethod, + serverClass, + serverStatus, + trace, + serverErrMsg, + serverErrorType)); + } + + for (int i = 0; i < count; ++i) { + consumers[i] = traceAssertConsumer; + } + this.testing().waitAndAssertTraces(consumers); + } + + @SuppressWarnings({"ReturnValueIgnored"}) + private static Consumer clientSpanDataAssertConsumer( + String clientMethod, + String clientClass, + StatusData statusData, + TraceAssert trace, + int peerPort, + String peerAddr, + Object[] errMsg, + String errorType) { + Consumer consumer = + span -> + span.hasName(clientMethod) + .hasKind(SpanKind.CLIENT) + .hasParent(trace.getSpan(0)) + .hasStatus(statusData) + .hasAttributesSatisfying( + equalTo(NETWORK_PEER_PORT, peerPort), + equalTo(NETWORK_PEER_ADDRESS, peerAddr), + equalTo(RPC_SYSTEM, "apache_thrift"), + equalTo(RPC_SERVICE, clientClass), + equalTo(RPC_METHOD, clientMethod)); + if (statusData == StatusData.error()) { + consumer = + consumer.andThen( + span -> + span.hasEventsSatisfyingExactly( + event -> + event + .hasName(EXCEPTION_EVENT_NAME) + .hasAttributesSatisfyingExactly( + satisfies(EXCEPTION_MESSAGE, val -> val.isIn(errMsg)), + satisfies( + stringKey("exception.stacktrace"), AbstractAssert::isNotNull), + equalTo(EXCEPTION_TYPE, errorType)))); + } + return consumer; + } + + @SuppressWarnings({"ReturnValueIgnored"}) + private static Consumer serverSpanDataAssertConsumer( + String serverMethod, + String serverClass, + StatusData statusData, + TraceAssert trace, + Object[] errMsg, + String errorType) { + Consumer consumer = + span -> + span.hasName(serverMethod) + .hasKind(SpanKind.SERVER) + .hasParent(trace.getSpan(1)) + .hasStatus(statusData) + .hasAttributesSatisfying( + equalTo(NETWORK_PEER_ADDRESS, "127.0.0.1"), + equalTo(RPC_SYSTEM, "apache_thrift"), + equalTo(RPC_SERVICE, serverClass), + equalTo(RPC_METHOD, serverMethod)); + if (statusData == StatusData.error()) { + consumer = + consumer.andThen( + span -> + span.hasEventsSatisfyingExactly( + event -> + event + .hasName(EXCEPTION_EVENT_NAME) + .hasAttributesSatisfyingExactly( + satisfies(EXCEPTION_MESSAGE, val -> val.isIn(errMsg)), + satisfies( + stringKey("exception.stacktrace"), AbstractAssert::isNotNull), + equalTo(EXCEPTION_TYPE, errorType)))); + } + return consumer; + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java new file mode 100644 index 000000000000..a2bb6e507483 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/WithErrorTest.java @@ -0,0 +1,432 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import java.io.IOException; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.async.TAsyncClientManager; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TMultiplexedProtocol; +import org.apache.thrift.protocol.TProtocol; +import org.apache.thrift.protocol.TProtocolFactory; +import org.apache.thrift.transport.TFramedTransport; +import org.apache.thrift.transport.TNonblockingSocket; +import org.apache.thrift.transport.TNonblockingTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; +import org.apache.thrift.transport.TTransportException; +import org.junit.jupiter.api.Test; + +public class WithErrorTest extends ThriftBaseTest { + + @Test + public void syncClientSyncSimpleServerWithError() throws TException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + this.syncClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncClientSyncSimpleServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncClientSyncThreadPoolServerWithError() throws TException, InterruptedException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + this.syncClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncClientSyncThreadPoolServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadPoolServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncClientMutiSyncSimpleServerWithError() throws TException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + this.syncClientMultiWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", 1); + } + + @Test + public void syncClientMutiSyncSimpleServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiSimpleServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncClientMultiWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", threadCount); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerWithError() throws TException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientAsyncThreadedSelectorServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientWithError(port)); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerWithError() throws TException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + this.syncFramedClientMultiWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", 1); + } + + @Test + public void syncFramedClientAsyncMutiThreadedSelectorServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startMultiThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientMultiWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncWithError( + port, "withError", "syncHelloWorld:withError", threadCount); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerWithError() throws TException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientSyncThreadedSelectorServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientAsyncThreadedSelectorServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientWithError(port)); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientSyncThreadedSelectorServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncThreadedSelectorServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientWithError(port)); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientSyncNonblockingServerWithError() throws TException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientSyncNonblockingServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientSyncHsHaServerWithError() throws TException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientSyncHsHaServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientWithError(port)); + this.waitAndAssertTracesClientSyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientAsyncNonblockingServerWithError() throws TException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientAsyncNonblockingServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientWithError(port)); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void syncFramedClientAsyncHsHaServerWithError() throws TException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.syncFramedClientWithError(port); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void syncFramedClientAsyncHsHaServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.syncFramedClientWithError(port)); + this.waitAndAssertTracesClientSyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientSyncNonblockingServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientSyncNonblockingServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientWithError(port)); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientSyncHsHaServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientSyncHsHaServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startSyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientWithError(port)); + this.waitAndAssertTracesClientAsyncServerSyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientAsyncNonblockingServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientAsyncNonblockingServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncNonblockingServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientWithError(port)); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", threadCount); + } + + @Test + public void nonBlockClientAsyncHsHaServerWithError() throws TException, IOException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + this.nonBlockClientWithError(port); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", 1); + } + + @Test + public void nonBlockClientAsyncHsHaServerWithErrorParallel() + throws InterruptedException, TTransportException { + int port = super.getPort(); + this.startAsyncHsHaServer(port); + int threadCount = 5; + runParallel(threadCount, () -> this.nonBlockClientWithError(port)); + this.waitAndAssertTracesClientAsyncServerAsyncWithError(port, "withError", threadCount); + } + + public void syncClientWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + ThriftService.Client client = new ThriftService.Client(protocol); + Exception error = null; + try { + this.testing().runWithSpan("parent", () -> client.withError()); + } catch (Exception e) { + error = e; + } + assertThat(error).isNotNull(); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncClientMultiWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + transport.open(); + TProtocol protocol = new TBinaryProtocol(transport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + Exception error = null; + try { + this.testing().runWithSpan("parent", () -> client.withError()); + } catch (Exception e) { + error = e; + } + assertThat(error).isNotNull(); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void nonBlockClientWithError(int port) throws TException, IOException { + TNonblockingTransport transport = new TNonblockingSocket("localhost", port); + TAsyncClientManager clientManager = new TAsyncClientManager(); + TProtocolFactory protocolFactory = new TBinaryProtocol.Factory(); + ThriftService.AsyncClient.Factory factory = + new ThriftService.AsyncClient.Factory(clientManager, protocolFactory); + ThriftService.AsyncClient asyClient = factory.getAsyncClient(transport); + AsyncMethodCallback callback = + new AsyncMethodCallback() { + @Override + public void onComplete(String result) { + assertThat(result).isEqualTo("Hello USs' Bob"); + } + + @Override + public void onError(Exception e) { + assertThat(e.getMessage()).isEqualTo("Read call frame size failed"); + } + }; + this.testing().runWithSpan("parent", () -> asyClient.withError(callback)); + } + + public void syncFramedClientWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + ThriftService.Client client = new ThriftService.Client(protocol); + Exception error = null; + try { + this.testing().runWithSpan("parent", () -> client.withError()); + } catch (Exception e) { + error = e; + } + assertThat(error).isNotNull(); + } finally { + if (transport != null) { + transport.close(); + } + } + } + + public void syncFramedClientMultiWithError(int port) throws TException { + TTransport transport = null; + try { + transport = new TSocket("localhost", port); + TFramedTransport framedTransport = new TFramedTransport(transport); + framedTransport.open(); + TProtocol protocol = new TBinaryProtocol(framedTransport); + TMultiplexedProtocol multiplexedProtocol = + new TMultiplexedProtocol(protocol, "syncHelloWorld"); + ThriftService.Client client = new ThriftService.Client(multiplexedProtocol); + Exception error = null; + try { + this.testing().runWithSpan("parent", () -> client.withError()); + } catch (Exception e) { + error = e; + } + assertThat(error).isNotNull(); + } finally { + if (transport != null) { + transport.close(); + } + } + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java new file mode 100644 index 000000000000..dfaaef1f9f98 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceAsyncImpl.java @@ -0,0 +1,40 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import org.apache.thrift.TException; +import org.apache.thrift.async.AsyncMethodCallback; +import org.apache.thrift.transport.TTransportException; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused", "all"}) +public class ThriftServiceAsyncImpl implements ThriftService.AsyncIface { + public ThriftServiceAsyncImpl() {} + + @Override + public void sayHello(String zone, String name, AsyncMethodCallback resultHandler) + throws TException { + resultHandler.onComplete("Hello " + zone + "s' " + name); + } + + @Override + public void withError(AsyncMethodCallback resultHandler) throws TException { + throw new TTransportException("fail"); + } + + @Override + public void noReturn(int delay, AsyncMethodCallback resultHandler) throws TException { + resultHandler.onComplete(null); + } + + @Override + public void oneWay(AsyncMethodCallback resultHandler) throws TException {} + + @Override + public void oneWayWithError(AsyncMethodCallback resultHandler) throws TException { + throw new TTransportException("fail"); + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java new file mode 100644 index 000000000000..047fc1085ec2 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServiceImpl.java @@ -0,0 +1,37 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; + +import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift.ThriftService; +import org.apache.thrift.TException; +import org.apache.thrift.transport.TTransportException; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused", "all"}) +public class ThriftServiceImpl implements ThriftService.Iface { + + public ThriftServiceImpl() {} + + @Override + public String sayHello(String zone, String name) { + return "Hello " + zone + "s' " + name; + } + + @Override + public String withError() throws TException { + throw new TTransportException("fail"); + } + + @Override + public void noReturn(int delay) throws TException {} + + @Override + public void oneWay() {} + + @Override + public void oneWayWithError() throws TException { + throw new TTransportException("fail"); + } +} diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift new file mode 100644 index 000000000000..ecc437991962 --- /dev/null +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/test/resources/ThriftService.thrift @@ -0,0 +1,9 @@ +namespace java io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.thrift + +service ThriftService { + string sayHello(1:string zone,2:string name); + string withError(); + void noReturn(1:i32 delay); + oneway void oneWay(); + oneway void oneWayWithError(); +} diff --git a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java index 89fbc6e2cad2..5fd37a2cf9eb 100644 --- a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java +++ b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftHeaderGetter.java @@ -5,6 +5,8 @@ package io.opentelemetry.instrumentation.thrift.common; +import static java.util.Collections.emptyList; + import io.opentelemetry.context.propagation.TextMapGetter; import javax.annotation.Nullable; @@ -13,6 +15,9 @@ public enum ThriftHeaderGetter implements TextMapGetter { @Override public Iterable keys(ThriftRequest request) { + if (request == null) { + return emptyList(); + } return request.getHeader().keySet(); } diff --git a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java index b9f7617299bc..8ce3b785b192 100644 --- a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java +++ b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftInstrumenterFactory.java @@ -12,7 +12,6 @@ import io.opentelemetry.instrumentation.api.incubator.semconv.rpc.RpcServerMetrics; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesExtractor; -import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesExtractor; import io.opentelemetry.instrumentation.thrift.common.client.ThriftClientNetworkAttributesGetter; import io.opentelemetry.instrumentation.thrift.common.server.ThriftServerNetworkAttributesGetter; @@ -27,7 +26,6 @@ public static Instrumenter clientInstrumenter( GlobalOpenTelemetry.get(), instrumentationName, new ThriftSpanNameExtractor()) .setSpanStatusExtractor(ThriftSpanStatusExtractor.INSTANCE) .addAttributesExtractor(RpcClientAttributesExtractor.create(rpcAttributesGetter)) - .addAttributesExtractor(ServerAttributesExtractor.create(netClientAttributesGetter)) .addAttributesExtractor(NetworkAttributesExtractor.create(netClientAttributesGetter)) .addOperationMetrics(RpcClientMetrics.get()) .buildClientInstrumenter(ThriftHeaderSetter.INSTANCE); diff --git a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanNameExtractor.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanNameExtractor.java index ad21afb6ac6f..e1dcdc78365d 100644 --- a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanNameExtractor.java +++ b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/ThriftSpanNameExtractor.java @@ -10,9 +10,9 @@ public final class ThriftSpanNameExtractor implements SpanNameExtractor { @Override public String extract(ThriftRequest request) { - if (request.getServiceName() == null || request.getMethodName() == null) { + if (request.getMethodName() == null) { return "Thrift request"; } - return request.getServiceName() + '/' + request.getMethodName(); + return request.getMethodName(); } } diff --git a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java index 4112e4ab6fd5..ae774b535ac9 100644 --- a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java +++ b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/MethodAccessor.java @@ -7,23 +7,25 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; public class MethodAccessor { private static Field concreteProtocolField; - private static final Map> SERVICE_NAME_METHOD_NAMES = new HashMap<>(); + private static final Map> SERVICE_NAME_METHOD_NAMES = + new ConcurrentHashMap<>(); private MethodAccessor() {} public static Set voidMethodNames(String serviceName) { - Set methodNames = SERVICE_NAME_METHOD_NAMES.getOrDefault(serviceName, new HashSet<>()); - if (!methodNames.isEmpty()) { - return methodNames; + Set exit = SERVICE_NAME_METHOD_NAMES.get(serviceName); + if (exit != null) { + return exit; } + Set methodNames = new HashSet<>(); try { Class clazz = Class.forName(serviceName); Method[] declaredMethods = clazz.getDeclaredMethods(); diff --git a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java index d24d4924f0b3..8c9c3625b3b7 100644 --- a/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java +++ b/instrumentation/thrift/thrift-common/javaagent/src/main/java/io/opentelemetry/instrumentation/thrift/common/client/ThriftClientNetworkAttributesGetter.java @@ -6,7 +6,6 @@ package io.opentelemetry.instrumentation.thrift.common.client; import io.opentelemetry.instrumentation.api.semconv.network.NetworkAttributesGetter; -import io.opentelemetry.instrumentation.api.semconv.network.ServerAttributesGetter; import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; import java.net.InetSocketAddress; import java.net.Socket; @@ -14,8 +13,7 @@ import javax.annotation.Nullable; public final class ThriftClientNetworkAttributesGetter - implements ServerAttributesGetter, - NetworkAttributesGetter { + implements NetworkAttributesGetter { @Nullable @Override From 794194e09f8de424c05325cd3bbef663a9504a1e Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 22 Apr 2026 17:29:15 +0300 Subject: [PATCH 10/13] fix thrift source generation when bash isn't available --- .../thrift-0.9.1/javaagent/build.gradle.kts | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts index d0ae4c3581c0..e65e513463ee 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/build.gradle.kts @@ -25,12 +25,22 @@ val generateThriftSources by tasks.registering(Exec::class) { val outputDirPath = generatedThriftDir.get().asFile.also { it.mkdirs() }.absolutePath inputs.file(thriftFilePath) outputs.dir(outputDirPath) - commandLine( - "bash", - "-c", - """docker image inspect thrift:0.12.0 > /dev/null 2>&1 || docker pull --platform linux/amd64 thrift:0.12.0 && """ + - """docker run --rm --platform linux/amd64 -v "$thriftFilePath:/thrift/input/ThriftService.thrift:ro" -v "$outputDirPath:/thrift/output" thrift:0.12.0 thrift --gen java -out /thrift/output /thrift/input/ThriftService.thrift""" - ) + + standardOutput = System.out + executable = "docker" + args = listOf( + "run", + "--rm", + "--platform=linux/amd64", + "-v", "$thriftFilePath:/thrift/input/ThriftService.thrift:ro", + "-v", "$outputDirPath:/thrift/output", + "thrift:0.12.0", + "thrift", + "--gen", + "java", + "-out", + "/thrift/output", + "/thrift/input/ThriftService.thrift") } sourceSets { From e6ec343b900ceda04288bce5c6e2b84cbac6e68d Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 22 Apr 2026 17:44:18 +0300 Subject: [PATCH 11/13] make indy ready --- .../client/ClientOutProtocolWrapper.java | 3 +- .../ThriftAsyncClientInstrumentation.java | 26 ++++--- .../ThriftAsyncMethodCallInstrumentation.java | 27 ++++---- .../ThriftAsyncWriteArgsInstrumentation.java | 16 ++--- ...riftClientCommonInstrumentationModule.java | 2 +- .../client/ThriftClientInstrumentation.java | 69 ++++++++++--------- .../server/ServerInProtocolWrapper.java | 5 +- .../ThriftAsyncProcessInstrumentation.java | 29 +++++--- ...riftBaseAsyncProcessorInstrumentation.java | 14 ++-- .../ThriftBaseProcessorInstrumentation.java | 20 +++--- .../ThriftFrameBufferInstrumentation.java | 20 +++--- ...ftMultiplexedProcessorInstrumentation.java | 15 ++-- .../server/ThriftServerInstrumentation.java | 21 +++--- .../ThriftServerInstrumentationModule.java | 2 +- 14 files changed, 147 insertions(+), 122 deletions(-) diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java index a5c53761cc92..1e192818ed10 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ClientOutProtocolWrapper.java @@ -11,7 +11,6 @@ import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; import io.opentelemetry.instrumentation.thrift.common.SocketAccessor; import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; -import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AbstractProtocolWrapper; import java.net.Socket; import java.util.HashMap; @@ -68,7 +67,7 @@ public void writeMessageBegin(TMessage message) throws TException { } ThriftRequest request = ThriftRequest.create(this.serviceName, this.methodName, socket, new HashMap<>()); - Context parentContext = Java8BytecodeBridge.currentContext(); + Context parentContext = Context.current(); if (!clientInstrumenter().shouldStart(parentContext, request)) { return; } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java index 7b041e49afa7..0684aa58e8f4 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncClientInstrumentation.java @@ -6,6 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.client; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -13,36 +14,45 @@ import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; +import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.thrift.protocol.TProtocolFactory; import org.apache.thrift.transport.TTransport; -public final class ThriftAsyncClientInstrumentation implements TypeInstrumentation { +class ThriftAsyncClientInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { return extendsClass(named("org.apache.thrift.async.TAsyncClient")); } + @Override + public ElementMatcher classLoaderOptimization() { + return hasClassesNamed("org.apache.thrift.async.TAsyncClient"); + } + @Override public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( isConstructor() .and(takesArgument(0, named("org.apache.thrift.protocol.TProtocolFactory"))) .and(takesArgument(2, named("org.apache.thrift.transport.TNonblockingTransport"))), - ThriftAsyncClientInstrumentation.class.getName() + "$ConstructorAdvice"); + getClass().getName() + "$ConstructorAdvice"); } + @SuppressWarnings("unused") public static class ConstructorAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( + @AssignReturned.ToArguments(@ToArgument(0)) + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) + public static TProtocolFactory onEnter( @Advice.Origin("#t") String serviceName, - @Advice.Argument(value = 0, readOnly = false) TProtocolFactory factory, - @Advice.Argument(value = 2) TTransport transport) { + @Advice.Argument(0) TProtocolFactory factory, + @Advice.Argument(2) TTransport transport) { if (factory instanceof ClientProtocolFactoryWrapper) { - return; + return factory; } - factory = new ClientProtocolFactoryWrapper(factory, transport, serviceName); + return new ClientProtocolFactoryWrapper(factory, transport, serviceName); } } } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java index b2ef10bfceb2..0cfb09588ea5 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncMethodCallInstrumentation.java @@ -7,7 +7,6 @@ import static io.opentelemetry.instrumentation.thrift.common.client.VirtualFields.ASYNC_METHOD_CALLBACK; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; -import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -15,12 +14,14 @@ import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AsyncMethodCallbackWrapper; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; +import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.async.TAsyncMethodCall; -public final class ThriftAsyncMethodCallInstrumentation implements TypeInstrumentation { +class ThriftAsyncMethodCallInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { @@ -31,29 +32,31 @@ public ElementMatcher typeMatcher() { public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( isConstructor().and(takesArgument(3, named("org.apache.thrift.async.AsyncMethodCallback"))), - ThriftAsyncMethodCallInstrumentation.class.getName() + "$ConstructorAdvice"); + getClass().getName() + "$ConstructorAdvice"); transformer.applyAdviceToMethod( - isMethod().and(named("prepareMethodCall")), - ThriftAsyncMethodCallInstrumentation.class.getName() + "$MethodCallAdvice"); + named("prepareMethodCall"), getClass().getName() + "$MethodCallAdvice"); } + @SuppressWarnings("unused") public static class ConstructorAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( - @Advice.Argument(value = 3, readOnly = false) AsyncMethodCallback callback) { + @AssignReturned.ToArguments(@ToArgument(3)) + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) + public static AsyncMethodCallback onEnter( + @Advice.Argument(3) AsyncMethodCallback callback) { if (callback instanceof AsyncMethodCallbackWrapper) { - return; + return callback; } - callback = new AsyncMethodCallbackWrapper<>(callback, false); + return new AsyncMethodCallbackWrapper<>(callback, false); } } + @SuppressWarnings("unused") public static class MethodCallAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) public static void methodEnter( @Advice.This TAsyncMethodCall thiz, - @Advice.FieldValue(value = "callback") AsyncMethodCallback callback) { + @Advice.FieldValue("callback") AsyncMethodCallback callback) { if (callback instanceof AsyncMethodCallbackWrapper) { ASYNC_METHOD_CALLBACK.set(thiz, callback); } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java index a217957491fa..1b05a448667e 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftAsyncWriteArgsInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.instrumentation.thrift.common.client.VirtualFields.ASYNC_METHOD_CALLBACK; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; -import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; @@ -26,7 +25,7 @@ import org.apache.thrift.protocol.TMessageType; import org.apache.thrift.protocol.TProtocol; -public final class ThriftAsyncWriteArgsInstrumentation implements TypeInstrumentation { +class ThriftAsyncWriteArgsInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { @@ -35,15 +34,14 @@ public ElementMatcher typeMatcher() { @Override public void transform(TypeTransformer transformer) { - transformer.applyAdviceToMethod( - isMethod().and(named("write_args")), - ThriftAsyncWriteArgsInstrumentation.class.getName() + "$WriteArgsAdvice"); + transformer.applyAdviceToMethod(named("write_args"), getClass().getName() + "$WriteArgsAdvice"); } + @SuppressWarnings("unused") public static class WriteArgsAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) public static void methodEnter( - @Advice.Origin("#t") String serviceName, @Advice.Argument(value = 0) TProtocol protocol) { + @Advice.Origin("#t") String serviceName, @Advice.Argument(0) TProtocol protocol) { if (protocol instanceof ClientOutProtocolWrapper) { Set methodNames = MethodAccessor.voidMethodNames(serviceName); // Compatible with asynchronous oneway method @@ -54,10 +52,10 @@ public static void methodEnter( } } - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class, inline = false) public static void methodExit( @Advice.This TAsyncMethodCall methodCall, - @Advice.Argument(value = 0) TProtocol protocol, + @Advice.Argument(0) TProtocol protocol, @Advice.Thrown Throwable throwable) { if (protocol instanceof ClientOutProtocolWrapper) { ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) protocol; diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java index dfb265284682..faf82cbe36e3 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientCommonInstrumentationModule.java @@ -15,7 +15,7 @@ import net.bytebuddy.matcher.ElementMatcher; @AutoService(InstrumentationModule.class) -public final class ThriftClientCommonInstrumentationModule extends InstrumentationModule { +public class ThriftClientCommonInstrumentationModule extends InstrumentationModule { public ThriftClientCommonInstrumentationModule() { super("thrift", "thrift-0.9.1", "thrift-0.9.1-client"); diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java index b9601c19dd9c..0ca7920df1f7 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/client/ThriftClientInstrumentation.java @@ -8,7 +8,6 @@ import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.clientInstrumenter; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; -import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isProtected; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -21,11 +20,13 @@ import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.util.Set; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; +import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.thrift.protocol.TProtocol; -public final class ThriftClientInstrumentation implements TypeInstrumentation { +class ThriftClientInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { @@ -35,56 +36,62 @@ public ElementMatcher typeMatcher() { @Override public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( - isConstructor().and(takesArguments(1)), - ThriftClientInstrumentation.class.getName() + "$ConstructorOneAdvice"); + isConstructor().and(takesArguments(1)), getClass().getName() + "$ConstructorOneAdvice"); transformer.applyAdviceToMethod( - isConstructor().and(takesArguments(2)), - ThriftClientInstrumentation.class.getName() + "$ConstructorTwoAdvice"); + isConstructor().and(takesArguments(2)), getClass().getName() + "$ConstructorTwoAdvice"); transformer.applyAdviceToMethod( - isMethod().and(isProtected()).and(nameStartsWith("sendBase")), - ThriftClientInstrumentation.class.getName() + "$ClientSendAdvice"); + isProtected().and(nameStartsWith("sendBase")), getClass().getName() + "$ClientSendAdvice"); transformer.applyAdviceToMethod( - isMethod().and(named("receiveBase")), - ThriftClientInstrumentation.class.getName() + "$ClientReceiveAdvice"); + named("receiveBase"), getClass().getName() + "$ClientReceiveAdvice"); } + @SuppressWarnings("unused") public static class ConstructorOneAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( - @Advice.Origin("#t") String serviceName, - @Advice.Argument(value = 0, readOnly = false) TProtocol inProtocol) { - Set voidMethodNames = MethodAccessor.voidMethodNames(serviceName); - if (!(inProtocol instanceof ClientOutProtocolWrapper)) { - inProtocol = new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); + @AssignReturned.ToArguments(@ToArgument(0)) + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) + public static TProtocol onEnter( + @Advice.Origin("#t") String serviceName, @Advice.Argument(0) TProtocol inProtocol) { + if (inProtocol instanceof ClientOutProtocolWrapper) { + return inProtocol; } + Set voidMethodNames = MethodAccessor.voidMethodNames(serviceName); + return new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); } } + @SuppressWarnings("unused") public static class ConstructorTwoAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) - public static void onEnter( + @AssignReturned.ToArguments({ + @ToArgument(value = 0, index = 0), + @ToArgument(value = 1, index = 1) + }) + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) + public static Object[] onEnter( @Advice.Origin("#t") String serviceName, - @Advice.Argument(value = 0, readOnly = false) TProtocol inProtocol, - @Advice.Argument(value = 1, readOnly = false) TProtocol outProtocol) { + @Advice.Argument(0) TProtocol inProtocol, + @Advice.Argument(1) TProtocol outProtocol) { Set voidMethodNames = MethodAccessor.voidMethodNames(serviceName); + TProtocol inProtocolResult = inProtocol; + TProtocol outProtocolResult = outProtocol; if (!(inProtocol instanceof ClientOutProtocolWrapper)) { - inProtocol = new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); + inProtocolResult = new ClientOutProtocolWrapper(inProtocol, serviceName, voidMethodNames); } if (!(outProtocol instanceof ClientOutProtocolWrapper)) { - outProtocol = new ClientOutProtocolWrapper(outProtocol, serviceName, voidMethodNames); + outProtocolResult = new ClientOutProtocolWrapper(outProtocol, serviceName, voidMethodNames); } + return new Object[] {inProtocolResult, outProtocolResult}; } } + @SuppressWarnings("unused") public static class ClientSendAdvice { - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class, inline = false) public static void methodExit( - @Advice.FieldValue(value = "oprot_") TProtocol outProtocol, - @Advice.Thrown Throwable throwable) { - if (outProtocol != null && outProtocol instanceof ClientOutProtocolWrapper) { + @Advice.FieldValue("oprot_") TProtocol outProtocol, @Advice.Thrown Throwable throwable) { + if (outProtocol instanceof ClientOutProtocolWrapper) { ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) outProtocol; RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); if (requestScopeContext == null) { @@ -108,12 +115,12 @@ public static void methodExit( } } + @SuppressWarnings("unused") public static class ClientReceiveAdvice { - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class, inline = false) public static void methodExit( - @Advice.Thrown Throwable throwable, - @Advice.FieldValue(value = "oprot_") TProtocol outProtocol) { - if (outProtocol != null && outProtocol instanceof ClientOutProtocolWrapper) { + @Advice.Thrown Throwable throwable, @Advice.FieldValue("oprot_") TProtocol outProtocol) { + if (outProtocol instanceof ClientOutProtocolWrapper) { ClientOutProtocolWrapper wrapper = (ClientOutProtocolWrapper) outProtocol; RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); if (requestScopeContext == null) { diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java index 7b125211c66e..cfea1723bd94 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ServerInProtocolWrapper.java @@ -13,7 +13,6 @@ import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; import io.opentelemetry.instrumentation.thrift.common.SocketAccessor; import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; -import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AbstractProtocolWrapper; import java.net.Socket; import java.util.HashMap; @@ -72,7 +71,7 @@ public TField readFieldBegin() throws TException { } ThriftRequest request = ThriftRequest.create(this.serviceName, this.methodName, socket, header); - Context parentContext = Java8BytecodeBridge.currentContext(); + Context parentContext = Context.current(); if (!serverInstrumenter().shouldStart(parentContext, request)) { return field; } @@ -102,7 +101,7 @@ public void readMessageEnd() throws TException { } ThriftRequest request = ThriftRequest.create(this.serviceName, this.methodName, socket, new HashMap<>()); - Context parentContext = Java8BytecodeBridge.currentContext(); + Context parentContext = Context.current(); if (!serverInstrumenter().shouldStart(parentContext, request)) { return; } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftAsyncProcessInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftAsyncProcessInstrumentation.java index 64717331f879..1784b3226717 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftAsyncProcessInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftAsyncProcessInstrumentation.java @@ -6,7 +6,7 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.extendsClass; -import static net.bytebuddy.matcher.ElementMatchers.isMethod; +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; @@ -14,45 +14,54 @@ import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.AsyncMethodCallbackWrapper; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.thrift.async.AsyncMethodCallback; import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.server.AbstractNonblockingServer; -public final class ThriftAsyncProcessInstrumentation implements TypeInstrumentation { +class ThriftAsyncProcessInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { return extendsClass(named("org.apache.thrift.AsyncProcessFunction")); } + @Override + public ElementMatcher classLoaderOptimization() { + return hasClassesNamed("org.apache.thrift.AsyncProcessFunction"); + } + @Override public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( - isMethod().and(named("getResultHandler")), - ThriftAsyncProcessInstrumentation.class.getName() + "$GetResultHandlerAdvice"); + named("getResultHandler"), getClass().getName() + "$GetResultHandlerAdvice"); } + @SuppressWarnings("unused") public static class GetResultHandlerAdvice { - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) - public static void methodExit( - @Advice.Argument(value = 0) AbstractNonblockingServer.AsyncFrameBuffer fb, - @Advice.Return(readOnly = false) AsyncMethodCallback callback) { + @AssignReturned.ToReturned + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class, inline = false) + public static AsyncMethodCallback methodExit( + @Advice.Argument(0) AbstractNonblockingServer.AsyncFrameBuffer fb, + @Advice.Return AsyncMethodCallback callback) { TProtocol inProtocol = fb.getInputProtocol(); if (inProtocol instanceof ServerInProtocolWrapper) { ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; RequestScopeContext requestScopeContext = wrapper.getRequestScopeContext(); if (requestScopeContext == null) { - return; + return callback; } AsyncMethodCallbackWrapper callbackWrapper = new AsyncMethodCallbackWrapper<>(callback, true); callbackWrapper.setRequestScopeContext(requestScopeContext); - callback = callbackWrapper; + return callbackWrapper; } + + return callback; } } } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseAsyncProcessorInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseAsyncProcessorInstrumentation.java index 52ec4f2de55a..c06cbd6d2c2e 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseAsyncProcessorInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseAsyncProcessorInstrumentation.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.serverInstrumenter; -import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -20,7 +19,8 @@ import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.server.AbstractNonblockingServer; -public final class ThriftBaseAsyncProcessorInstrumentation implements TypeInstrumentation { +class ThriftBaseAsyncProcessorInstrumentation implements TypeInstrumentation { + @Override public ElementMatcher typeMatcher() { return named("org.apache.thrift.TBaseAsyncProcessor"); @@ -29,16 +29,16 @@ public ElementMatcher typeMatcher() { @Override public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( - isMethod().and(named("process")).and(takesArguments(1)), - ThriftBaseAsyncProcessorInstrumentation.class.getName() + "$ProcessAdvice"); + named("process").and(takesArguments(1)), getClass().getName() + "$ProcessAdvice"); } + @SuppressWarnings("unused") public static class ProcessAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) public static void methodEnter( @Advice.Argument(0) AbstractNonblockingServer.AsyncFrameBuffer fb, - @Advice.FieldValue(value = "iface") Object iface) { + @Advice.FieldValue("iface") Object iface) { String serviceName = iface.getClass().getName(); TProtocol inProtocol = fb.getInputProtocol(); if (inProtocol instanceof ServerInProtocolWrapper) { @@ -47,7 +47,7 @@ public static void methodEnter( } } - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class, inline = false) public static void methodExit( @Advice.Argument(0) AbstractNonblockingServer.AsyncFrameBuffer fb, @Advice.Thrown Throwable throwable) { diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java index d280cafd6b9c..e1abea22e636 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftBaseProcessorInstrumentation.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.serverInstrumenter; -import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; @@ -21,7 +20,7 @@ import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.protocol.TProtocolDecorator; -public final class ThriftBaseProcessorInstrumentation implements TypeInstrumentation { +class ThriftBaseProcessorInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { @@ -30,16 +29,15 @@ public ElementMatcher typeMatcher() { @Override public void transform(TypeTransformer transformer) { - transformer.applyAdviceToMethod( - isMethod().and(named("process")), - ThriftBaseProcessorInstrumentation.class.getName() + "$ProcessAdvice"); + transformer.applyAdviceToMethod(named("process"), getClass().getName() + "$ProcessAdvice"); } + @SuppressWarnings("unused") public static class ProcessAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) + + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) public static void methodEnter( - @Advice.Argument(value = 0) TProtocol inProtocol, - @Advice.FieldValue(value = "iface") Object iface) + @Advice.Argument(0) TProtocol inProtocol, @Advice.FieldValue("iface") Object iface) throws IllegalAccessException { String serviceName = iface.getClass().getName(); if (inProtocol instanceof ServerInProtocolWrapper) { @@ -49,16 +47,16 @@ public static void methodEnter( // TMultiplexedProcessor compatible Field field = MethodAccessor.getConcreteProtocolField(TProtocolDecorator.class); Object obj = field.get(inProtocol); - if (obj != null && obj instanceof ServerInProtocolWrapper) { + if (obj instanceof ServerInProtocolWrapper) { ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) obj; wrapper.setServiceName(serviceName); } } } - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class, inline = false) public static void methodExit( - @Advice.Argument(value = 0) TProtocol inProtocol, @Advice.Thrown Throwable throwable) { + @Advice.Argument(0) TProtocol inProtocol, @Advice.Thrown Throwable throwable) { if (inProtocol instanceof ServerInProtocolWrapper) { ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; String methodName = wrapper.getMethodName(); diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftFrameBufferInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftFrameBufferInstrumentation.java index 07f495d9ba75..50fc25637554 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftFrameBufferInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftFrameBufferInstrumentation.java @@ -5,8 +5,8 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; -import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; @@ -16,26 +16,28 @@ import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.transport.TNonblockingTransport; -public final class ThriftFrameBufferInstrumentation implements TypeInstrumentation { +class ThriftFrameBufferInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { - return named("org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer") - .or(named("org.apache.thrift.server.AbstractNonblockingServer$AsyncFrameBuffer")); + return namedOneOf( + "org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer", + "org.apache.thrift.server.AbstractNonblockingServer$AsyncFrameBuffer"); } @Override public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( - isMethod().and(named("invoke")), - ThriftFrameBufferInstrumentation.class.getName() + "$FrameBufferConstructorAdvice"); + named("invoke"), getClass().getName() + "$FrameBufferConstructorAdvice"); } + @SuppressWarnings("unused") public static class FrameBufferConstructorAdvice { - @Advice.OnMethodEnter(suppress = Throwable.class) + + @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) public static void methodEnter( - @Advice.FieldValue(value = "inProt_", readOnly = false) TProtocol inProtocol, - @Advice.FieldValue(value = "trans_") TNonblockingTransport transport) { + @Advice.FieldValue("inProt_") TProtocol inProtocol, + @Advice.FieldValue("trans_") TNonblockingTransport transport) { if (inProtocol instanceof ServerInProtocolWrapper) { ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; wrapper.setTransport(transport); diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java index 7c9e7e652220..8ac0227d0b91 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java @@ -6,7 +6,6 @@ package io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.server; import static io.opentelemetry.javaagent.instrumentation.thrift.v0_9_1.ThriftSingletons.serverInstrumenter; -import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import io.opentelemetry.context.Context; @@ -15,7 +14,6 @@ import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; import io.opentelemetry.instrumentation.thrift.common.SocketAccessor; import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; -import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.net.Socket; @@ -25,7 +23,7 @@ import net.bytebuddy.matcher.ElementMatcher; import org.apache.thrift.protocol.TProtocol; -public final class ThriftMultiplexedProcessorInstrumentation implements TypeInstrumentation { +class ThriftMultiplexedProcessorInstrumentation implements TypeInstrumentation { @Override public ElementMatcher typeMatcher() { @@ -34,16 +32,15 @@ public ElementMatcher typeMatcher() { @Override public void transform(TypeTransformer transformer) { - transformer.applyAdviceToMethod( - isMethod().and(named("process")), - ThriftMultiplexedProcessorInstrumentation.class.getName() + "$ProcessAdvice"); + transformer.applyAdviceToMethod(named("process"), getClass().getName() + "$ProcessAdvice"); } + @SuppressWarnings("unused") public static class ProcessAdvice { - @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) + @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class, inline = false) public static void methodExit( - @Advice.Argument(value = 0) TProtocol inProtocol, @Advice.Thrown Throwable throwable) { + @Advice.Argument(0) TProtocol inProtocol, @Advice.Thrown Throwable throwable) { if (inProtocol instanceof ServerInProtocolWrapper) { ServerInProtocolWrapper wrapper = (ServerInProtocolWrapper) inProtocol; String methodName = wrapper.getMethodName(); @@ -59,7 +56,7 @@ public static void methodExit( ThriftRequest request = ThriftRequest.create( wrapper.getServiceName(), wrapper.getMethodName(), socket, new HashMap<>()); - Context parentContext = Java8BytecodeBridge.currentContext(); + Context parentContext = Context.current(); if (serverInstrumenter().shouldStart(parentContext, request)) { InstrumenterUtil.startAndEnd( serverInstrumenter(), diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentation.java index fd8f14ebf118..f3df3d3e6f97 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentation.java @@ -12,11 +12,14 @@ import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; +import net.bytebuddy.asm.Advice.AssignReturned; +import net.bytebuddy.asm.Advice.AssignReturned.ToFields.ToField; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import org.apache.thrift.protocol.TProtocolFactory; -public final class ThriftServerInstrumentation implements TypeInstrumentation { +class ThriftServerInstrumentation implements TypeInstrumentation { + @Override public ElementMatcher typeMatcher() { return named("org.apache.thrift.server.TServer"); @@ -25,20 +28,20 @@ public ElementMatcher typeMatcher() { @Override public void transform(TypeTransformer transformer) { transformer.applyAdviceToMethod( - isConstructor().and(takesArguments(1)), - ThriftServerInstrumentation.class.getName() + "$ServerConstructorAdvice"); + isConstructor().and(takesArguments(1)), getClass().getName() + "$ServerConstructorAdvice"); } + @SuppressWarnings("unused") public static class ServerConstructorAdvice { - @Advice.OnMethodExit(suppress = Throwable.class) - public static void onExit( - @Advice.FieldValue(value = "inputProtocolFactory_", readOnly = false) - TProtocolFactory factory) { + @AssignReturned.ToFields(@ToField("inputProtocolFactory_")) + @Advice.OnMethodExit(suppress = Throwable.class, inline = false) + public static TProtocolFactory onExit( + @Advice.FieldValue("inputProtocolFactory_") TProtocolFactory factory) { if (factory instanceof ServerProtocolFactoryWrapper) { - return; + return factory; } - factory = new ServerProtocolFactoryWrapper(factory); + return new ServerProtocolFactoryWrapper(factory); } } } diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java index 6c0fd620ad70..ef1586926d7d 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftServerInstrumentationModule.java @@ -15,7 +15,7 @@ import net.bytebuddy.matcher.ElementMatcher; @AutoService(InstrumentationModule.class) -public final class ThriftServerInstrumentationModule extends InstrumentationModule { +public class ThriftServerInstrumentationModule extends InstrumentationModule { public ThriftServerInstrumentationModule() { super("thrift", "thrift-0.9.1", "thrift-0.9.1-server"); From e3ae169b7ac3672d80af5b63adcf180fe06fc5a3 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 22 Apr 2026 17:45:05 +0300 Subject: [PATCH 12/13] restore removed module --- .fossa.yml | 3 +++ settings.gradle.kts | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.fossa.yml b/.fossa.yml index fd3c4b37eca3..e9d0d9657605 100644 --- a/.fossa.yml +++ b/.fossa.yml @@ -1069,6 +1069,9 @@ targets: - type: gradle path: ./ target: ':instrumentation:zio:zio-2.0:javaagent' + - type: gradle + path: ./ + target: ':instrumentation:zio:zio-http-3.0:javaagent' - type: gradle path: ./ target: ':instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent' diff --git a/settings.gradle.kts b/settings.gradle.kts index 9b6bfefb7fdb..8e292de48a0c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -677,6 +677,8 @@ include(":instrumentation:spymemcached-2.12:javaagent") include(":instrumentation:struts:struts-2.3:javaagent") include(":instrumentation:struts:struts-7.0:javaagent") include(":instrumentation:tapestry-5.4:javaagent") +include(":instrumentation:thrift:thrift-0.9.1:javaagent") +include(":instrumentation:thrift:thrift-common:javaagent") include(":instrumentation:tomcat:tomcat-7.0:javaagent") include(":instrumentation:tomcat:tomcat-10.0:javaagent") include(":instrumentation:tomcat:tomcat-common:javaagent") @@ -715,8 +717,7 @@ include(":instrumentation:xxl-job:xxl-job-2.3.0:javaagent") include(":instrumentation:xxl-job:xxl-job-common:javaagent") include(":instrumentation:xxl-job:xxl-job-common:testing") include(":instrumentation:zio:zio-2.0:javaagent") -include(":instrumentation:thrift:thrift-0.9.1:javaagent") -include(":instrumentation:thrift:thrift-common:javaagent") +include(":instrumentation:zio:zio-http-3.0:javaagent") // benchmark include(":benchmark-overhead-jmh") From 12e2fd8b429cf3874742787d477e145ed98acf02 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Wed, 22 Apr 2026 18:41:35 +0300 Subject: [PATCH 13/13] revert --- .../server/ThriftMultiplexedProcessorInstrumentation.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java index 8ac0227d0b91..4f9177ca0f93 100644 --- a/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java +++ b/instrumentation/thrift/thrift-0.9.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/thrift/v0_9_1/server/ThriftMultiplexedProcessorInstrumentation.java @@ -14,6 +14,7 @@ import io.opentelemetry.instrumentation.thrift.common.RequestScopeContext; import io.opentelemetry.instrumentation.thrift.common.SocketAccessor; import io.opentelemetry.instrumentation.thrift.common.ThriftRequest; +import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import java.net.Socket; @@ -56,7 +57,7 @@ public static void methodExit( ThriftRequest request = ThriftRequest.create( wrapper.getServiceName(), wrapper.getMethodName(), socket, new HashMap<>()); - Context parentContext = Context.current(); + Context parentContext = Java8BytecodeBridge.currentContext(); if (serverInstrumenter().shouldStart(parentContext, request)) { InstrumenterUtil.startAndEnd( serverInstrumenter(),

ur4rh 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�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�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

ur4rh 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�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�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