Skip to content

Commit

Permalink
[#4661] Isolate domain model and transport model
Browse files Browse the repository at this point in the history
  • Loading branch information
emeroad committed Oct 5, 2018
1 parent 5f039b3 commit 460a67c
Show file tree
Hide file tree
Showing 57 changed files with 603 additions and 254 deletions.
Expand Up @@ -28,7 +28,7 @@
import java.util.Arrays;
import java.util.List;

import static org.mockito.Matchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

Expand Down
Expand Up @@ -26,7 +26,7 @@
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyShort;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Matchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

Expand Down
Expand Up @@ -25,8 +25,8 @@
import com.navercorp.pinpoint.common.server.util.AddressFilter;
import com.navercorp.pinpoint.io.request.ServerRequest;
import com.navercorp.pinpoint.io.request.ServerResponse;
import com.navercorp.pinpoint.profiler.context.storage.BypassMessageConverter;
import com.navercorp.pinpoint.profiler.context.storage.MessageConverter;
import com.navercorp.pinpoint.profiler.context.thrift.BypassMessageConverter;
import com.navercorp.pinpoint.profiler.context.thrift.MessageConverter;
import com.navercorp.pinpoint.profiler.sender.ByteMessage;
import com.navercorp.pinpoint.profiler.sender.DataSender;
import com.navercorp.pinpoint.profiler.sender.MessageSerializer;
Expand Down
Expand Up @@ -36,8 +36,8 @@
import com.navercorp.pinpoint.profiler.context.id.Shared;
import com.navercorp.pinpoint.profiler.context.id.TraceRoot;
import com.navercorp.pinpoint.profiler.context.id.TransactionIdEncoder;
import com.navercorp.pinpoint.profiler.context.storage.MessageConverter;
import com.navercorp.pinpoint.profiler.context.storage.SpanThriftMessageConverter;
import com.navercorp.pinpoint.profiler.context.thrift.MessageConverter;
import com.navercorp.pinpoint.profiler.context.thrift.SpanThriftMessageConverter;
import com.navercorp.pinpoint.profiler.sender.SpanStreamUdpSender;
import com.navercorp.pinpoint.test.utils.TestAwaitTaskUtils;
import com.navercorp.pinpoint.test.utils.TestAwaitUtils;
Expand Down
Expand Up @@ -18,6 +18,7 @@

import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
import com.google.inject.TypeLiteral;
import com.google.inject.util.Providers;
import com.navercorp.pinpoint.common.plugin.PluginLoader;
import com.navercorp.pinpoint.common.plugin.ServerPluginLoader;
Expand Down Expand Up @@ -66,9 +67,10 @@ protected void configure() {

bind(PinpointClientFactory.class).toProvider(Providers.of((PinpointClientFactory)null));

EnhancedDataSender enhancedDataSender = new TestTcpDataSender();
EnhancedDataSender<Object> enhancedDataSender = new TestTcpDataSender();
logger.debug("enhancedDataSender:{}", enhancedDataSender);
bind(EnhancedDataSender.class).toInstance(enhancedDataSender);
TypeLiteral<EnhancedDataSender<Object>> dataSenderTypeLiteral = new TypeLiteral<EnhancedDataSender<Object>>() {};
bind(dataSenderTypeLiteral).toInstance(enhancedDataSender);

ServerMetaDataRegistryService serverMetaDataRegistryService = newServerMetaDataRegistryService();
bind(ServerMetaDataRegistryService.class).toInstance(serverMetaDataRegistryService);
Expand Down
Expand Up @@ -17,6 +17,7 @@
package com.navercorp.pinpoint.test;

import com.google.inject.AbstractModule;
import com.google.inject.TypeLiteral;
import com.google.inject.util.Providers;
import com.navercorp.pinpoint.profiler.context.DefaultServerMetaDataRegistryService;
import com.navercorp.pinpoint.profiler.context.ServerMetaDataRegistryService;
Expand Down Expand Up @@ -60,9 +61,10 @@ protected void configure() {

bind(PinpointClientFactory.class).toProvider(Providers.of((PinpointClientFactory)null));

EnhancedDataSender enhancedDataSender = newTcpDataSender();
EnhancedDataSender<Object> enhancedDataSender = newTcpDataSender();
logger.debug("enhancedDataSender:{}", enhancedDataSender);
bind(EnhancedDataSender.class).toInstance(enhancedDataSender);
TypeLiteral<EnhancedDataSender<Object>> dataSenderTypeLiteral = new TypeLiteral<EnhancedDataSender<Object>>() {};
bind(dataSenderTypeLiteral).toInstance(enhancedDataSender);

ServerMetaDataRegistryService serverMetaDataRegistryService = newServerMetaDataRegistryService();
bind(ServerMetaDataRegistryService.class).toInstance(serverMetaDataRegistryService);
Expand All @@ -81,7 +83,7 @@ private DataSender newUdpSpanDataSender() {
return sender;
}

private EnhancedDataSender newTcpDataSender() {
private EnhancedDataSender<Object> newTcpDataSender() {
TestTcpDataSender tcpDataSender = new TestTcpDataSender();
return tcpDataSender;
}
Expand Down
Expand Up @@ -19,6 +19,7 @@
import com.google.common.base.Objects;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.TypeLiteral;
import com.navercorp.pinpoint.bootstrap.context.ServerMetaData;
import com.navercorp.pinpoint.bootstrap.context.ServiceInfo;
import com.navercorp.pinpoint.bootstrap.context.TraceContext;
Expand Down Expand Up @@ -786,7 +787,9 @@ private int findApiId(String desc) throws AssertionError {

private TestTcpDataSender getTestTcpDataSender() {
Injector injector = getInjector();
EnhancedDataSender dataSender = injector.getInstance(EnhancedDataSender.class);
TypeLiteral<EnhancedDataSender<Object>> dataSenderTypeLiteral = new TypeLiteral<EnhancedDataSender<Object>>() {};
Key<EnhancedDataSender<Object>> dataSenderKey = Key.get(dataSenderTypeLiteral);
EnhancedDataSender dataSender = injector.getInstance(dataSenderKey);
if (dataSender instanceof TestTcpDataSender) {
return (TestTcpDataSender) dataSender;
}
Expand All @@ -813,15 +816,6 @@ private ServerMetaData getServerMetaData() {
return injector.getInstance(ServerMetaDataRegistryService.class).getServerMetaData();
}

private Object popSpan() {
final Item item = popItem();
if (item == null) {
return null;
}

return item.getValue();
}

private Item popItem() {
while (true) {
OrderedSpanRecorder recorder = getRecorder();
Expand Down
Expand Up @@ -18,13 +18,13 @@
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.Maps;
import com.navercorp.pinpoint.profiler.metadata.ApiMetaData;
import com.navercorp.pinpoint.profiler.metadata.SqlMetaData;
import com.navercorp.pinpoint.profiler.metadata.StringMetaData;
import com.navercorp.pinpoint.profiler.sender.EnhancedDataSender;
import com.navercorp.pinpoint.rpc.FutureListener;
import com.navercorp.pinpoint.rpc.ResponseMessage;
import com.navercorp.pinpoint.rpc.client.PinpointClientReconnectEventListener;
import com.navercorp.pinpoint.thrift.dto.TApiMetaData;
import com.navercorp.pinpoint.thrift.dto.TSqlMetaData;
import com.navercorp.pinpoint.thrift.dto.TStringMetaData;

import java.io.PrintStream;
import java.util.ArrayList;
Expand Down Expand Up @@ -71,21 +71,21 @@ public boolean send(Object data) {
}

private void addData(Object data) {
if (data instanceof TApiMetaData) {
TApiMetaData md = (TApiMetaData)data;
if (data instanceof ApiMetaData) {
ApiMetaData md = (ApiMetaData)data;

final String javaMethodDescriptor = toJavaMethodDescriptor(md);
apiIdMap.put(md.getApiId(), javaMethodDescriptor);

} else if (data instanceof TSqlMetaData) {
TSqlMetaData md = (TSqlMetaData)data;
} else if (data instanceof SqlMetaData) {
SqlMetaData md = (SqlMetaData)data;

int id = md.getSqlId();
String sql = md.getSql();

sqlIdMap.put(id, sql);
} else if (data instanceof TStringMetaData) {
TStringMetaData md = (TStringMetaData)data;
} else if (data instanceof StringMetaData) {
StringMetaData md = (StringMetaData)data;

int id = md.getStringId();
String string = md.getStringValue();
Expand All @@ -96,7 +96,7 @@ private void addData(Object data) {
datas.add(data);
}

private String toJavaMethodDescriptor(TApiMetaData apiMetaData) {
private String toJavaMethodDescriptor(ApiMetaData apiMetaData) {
// 1st method type check
// int type = apiMetaData.getType();
// if (type != MethodType.DEFAULT) {
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2017 NAVER Corp.
* Copyright 2018 NAVER Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -21,6 +21,7 @@
import com.google.inject.Key;
import com.google.inject.Module;
import com.google.inject.Stage;
import com.google.inject.TypeLiteral;
import com.navercorp.pinpoint.bootstrap.AgentOption;
import com.navercorp.pinpoint.bootstrap.config.ProfilerConfig;
import com.navercorp.pinpoint.bootstrap.context.TraceContext;
Expand Down Expand Up @@ -124,7 +125,9 @@ public DefaultApplicationContext(AgentOption agentOption, ModuleFactory moduleFa
this.clientFactory = injector.getInstance(Key.get(PinpointClientFactory.class, DefaultClientFactory.class));
logger.info("clientFactory:{}", clientFactory);

this.tcpDataSender = injector.getInstance(EnhancedDataSender.class);
TypeLiteral<EnhancedDataSender<Object>> enhancedDataSenderLiteral = new TypeLiteral<EnhancedDataSender<Object>>(){};
Key<EnhancedDataSender<Object>> enhancedDataSenderKey = Key.get(enhancedDataSenderLiteral);
this.tcpDataSender = injector.getInstance(enhancedDataSenderKey);
logger.info("tcpDataSender:{}", tcpDataSender);

this.traceContext = injector.getInstance(TraceContext.class);
Expand Down
@@ -0,0 +1,34 @@
/*
* Copyright 2018 NAVER Corp.
*
* Licensed 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 com.navercorp.pinpoint.profiler.context.module;

import com.google.inject.BindingAnnotation;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
* @author Woonduk Kang(emeroad)
*/
@BindingAnnotation
@Target(PARAMETER)
@Retention(RUNTIME)
public @interface MetadataConverter {
}
Expand Up @@ -20,20 +20,17 @@
import com.google.inject.PrivateModule;
import com.google.inject.Scopes;
import com.google.inject.TypeLiteral;
import com.navercorp.pinpoint.bootstrap.context.Trace;
import com.navercorp.pinpoint.profiler.context.Binder;
import com.navercorp.pinpoint.profiler.context.CallStackFactory;
import com.navercorp.pinpoint.profiler.context.SpanEvent;
import com.navercorp.pinpoint.profiler.context.provider.CommandDispatcherProvider;
import com.navercorp.pinpoint.profiler.context.provider.ConnectionFactoryProviderProvider;
import com.navercorp.pinpoint.profiler.context.provider.HeaderTBaseSerializerProvider;
import com.navercorp.pinpoint.profiler.context.provider.MetadataMessageConverterProvider;
import com.navercorp.pinpoint.profiler.context.provider.PinpointClientFactoryProvider;
import com.navercorp.pinpoint.profiler.context.provider.SpanDataSenderProvider;
import com.navercorp.pinpoint.profiler.context.provider.SpanStatClientFactoryProvider;
import com.navercorp.pinpoint.profiler.context.provider.StatDataSenderProvider;
import com.navercorp.pinpoint.profiler.context.provider.TcpDataSenderProvider;
import com.navercorp.pinpoint.profiler.context.provider.ThriftMessageConverterProvider;
import com.navercorp.pinpoint.profiler.context.storage.MessageConverter;
import com.navercorp.pinpoint.profiler.context.provider.SpanThriftMessageConverterProvider;
import com.navercorp.pinpoint.profiler.context.thrift.MessageConverter;
import com.navercorp.pinpoint.profiler.receiver.CommandDispatcher;
import com.navercorp.pinpoint.profiler.sender.DataSender;
import com.navercorp.pinpoint.profiler.sender.EnhancedDataSender;
Expand All @@ -42,8 +39,6 @@
import com.navercorp.pinpoint.thrift.io.HeaderTBaseSerializer;
import org.apache.thrift.TBase;

import javax.inject.Provider;

/**
* @author Woonduk Kang(emeroad)
*/
Expand All @@ -60,17 +55,23 @@ protected void configure() {

bind(HeaderTBaseSerializer.class).toProvider(HeaderTBaseSerializerProvider.class).in(Scopes.SINGLETON);

bind(EnhancedDataSender.class).toProvider(TcpDataSenderProvider.class).in(Scopes.SINGLETON);
expose(EnhancedDataSender.class);
TypeLiteral<EnhancedDataSender<Object>> dataSenderTypeLiteral = new TypeLiteral<EnhancedDataSender<Object>>() {};
bind(dataSenderTypeLiteral).toProvider(TcpDataSenderProvider.class).in(Scopes.SINGLETON);
expose(dataSenderTypeLiteral);

Key<PinpointClientFactory> pinpointStatClientFactory = Key.get(PinpointClientFactory.class, SpanStatClientFactory.class);
bind(pinpointStatClientFactory).toProvider(SpanStatClientFactoryProvider.class).in(Scopes.SINGLETON);
expose(pinpointStatClientFactory);


TypeLiteral<MessageConverter<TBase<?, ?>>> thriftMessageConverter = new TypeLiteral<MessageConverter<TBase<?, ?>>>() {};
bind(thriftMessageConverter).toProvider(ThriftMessageConverterProvider.class ).in(Scopes.SINGLETON);
expose(thriftMessageConverter);
Key<MessageConverter<TBase<?, ?>>> spanMessageConverterKey = Key.get(thriftMessageConverter, SpanConverter.class);
bind(spanMessageConverterKey).toProvider(SpanThriftMessageConverterProvider.class ).in(Scopes.SINGLETON);
expose(spanMessageConverterKey);

Key<MessageConverter<TBase<?, ?>>> metadataMessageConverterKey = Key.get(thriftMessageConverter, MetadataConverter.class);
bind(metadataMessageConverterKey).toProvider(MetadataMessageConverterProvider.class ).in(Scopes.SINGLETON);
expose(metadataMessageConverterKey);


Key<DataSender> spanDataSender = Key.get(DataSender.class, SpanDataSender.class);
Expand Down
@@ -0,0 +1,34 @@
/*
* Copyright 2018 NAVER Corp.
*
* Licensed 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 com.navercorp.pinpoint.profiler.context.module;

import com.google.inject.BindingAnnotation;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
* @author Woonduk Kang(emeroad)
*/
@BindingAnnotation
@Target(PARAMETER)
@Retention(RUNTIME)
public @interface SpanConverter {
}
@@ -1,5 +1,5 @@
/*
* Copyright 2017 NAVER Corp.
* Copyright 2018 NAVER Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -32,14 +32,14 @@
public class AgentInfoSenderProvider implements Provider<AgentInfoSender> {

private final ProfilerConfig profilerConfig;
private final Provider<EnhancedDataSender> enhancedDataSenderProvider;
private final Provider<EnhancedDataSender<Object>> enhancedDataSenderProvider;
private final Provider<AgentInfoFactory> agentInfoFactoryProvider;
private final ServerMetaDataRegistryService serverMetaDataRegistryService;

@Inject
public AgentInfoSenderProvider(
ProfilerConfig profilerConfig,
Provider<EnhancedDataSender> enhancedDataSenderProvider,
Provider<EnhancedDataSender<Object>> enhancedDataSenderProvider,
Provider<AgentInfoFactory> agentInfoFactoryProvider,
ServerMetaDataRegistryService serverMetaDataRegistryService) {
this.profilerConfig = Assert.requireNonNull(profilerConfig, "profilerConfig must not be null");
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2017 NAVER Corp.
* Copyright 2018 NAVER Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -28,23 +28,20 @@
* @author Woonduk Kang(emeroad)
*/
public class ApiMetaDataServiceProvider implements Provider<ApiMetaDataService> {
private final String agentId;
private final long agentStartTime;
private final Provider<EnhancedDataSender> enhancedDataSenderProvider;

private final Provider<EnhancedDataSender<Object>> enhancedDataSenderProvider;

@Inject
public ApiMetaDataServiceProvider(@AgentId String agentId, @AgentStartTime long agentStartTime, Provider<EnhancedDataSender> enhancedDataSenderProvider) {
public ApiMetaDataServiceProvider(Provider<EnhancedDataSender<Object>> enhancedDataSenderProvider) {
if (enhancedDataSenderProvider == null) {
throw new NullPointerException("enhancedDataSenderProvider must not be null");
}
this.agentId = agentId;
this.agentStartTime = agentStartTime;
this.enhancedDataSenderProvider = enhancedDataSenderProvider;
}

@Override
public ApiMetaDataService get() {
final EnhancedDataSender enhancedDataSender = this.enhancedDataSenderProvider.get();
return new DefaultApiMetaDataService(agentId, agentStartTime, enhancedDataSender);
final EnhancedDataSender<Object> enhancedDataSender = this.enhancedDataSenderProvider.get();
return new DefaultApiMetaDataService(enhancedDataSender);
}
}

0 comments on commit 460a67c

Please sign in to comment.