From 047c4552565212c8bd2104e7b919cb3c26ced287 Mon Sep 17 00:00:00 2001 From: emeroad Date: Wed, 10 Oct 2018 13:14:49 +0900 Subject: [PATCH] [#4661] Isolate domain model and transport model - Refactor stat module --- .../buffer/DefaultBufferMetricTest.java | 2 +- .../com/navercorp/pinpoint/test/Item.java | 18 ++- .../pinpoint/test/OrderedSpanRecorder.java | 27 +---- .../test/PluginVerifierExternalAdaptor.java | 24 +--- .../ApplicationContextModuleFactory.java | 5 +- .../profiler/context/module/StatsModule.java | 45 ++------ .../context/module/ThriftStatsModule.java | 98 ++++++++++++++++ .../provider/JvmInformationProvider.java | 6 +- .../ActiveTraceMetricCollectorProvider.java | 21 ++-- .../buffer/BufferMetricCollectorProvider.java | 17 ++- .../cpu/CpuLoadMetricCollectorProvider.java | 21 ++-- .../DataSourceMetricCollectorProvider.java | 21 ++-- .../datasource/DataSourceMetricProvider.java | 19 ++-- .../DeadlockMetricCollectorProvider.java | 21 ++-- ...FileDescriptorMetricCollectorProvider.java | 19 ++-- .../jvmgc/JvmGcMetricCollectorProvider.java | 13 ++- .../stat/jvmgc/MemoryMetricProvider.java | 10 +- .../ResponseTimeMetricCollectorProvider.java | 21 ++-- .../TransactionMetricCollectorProvider.java | 21 ++-- .../monitor/DefaultDeadlockMonitor.java | 8 +- .../monitor/collector/AgentStatCollector.java | 106 +++++++----------- .../collector/AgentStatMetricCollector.java | 6 +- ...r.java => UnsupportedMetricCollector.java} | 12 +- .../ActiveTraceMetricCollector.java | 26 ----- .../DefaultActiveTraceMetricCollector.java | 25 ++++- ...UnsupportedActiveTraceMetricCollector.java | 35 ------ .../buffer/DefaultBufferMetricCollector.java | 6 +- .../collector/cpu/CpuLoadMetricCollector.java | 26 ----- .../cpu/DefaultCpuLoadMetricCollector.java | 12 +- .../UnsupportedCpuLoadMetricCollector.java | 35 ------ .../datasource/DataSourceMetricCollector.java | 27 ----- .../DefaultDataSourceMetricCollector.java | 40 ++++++- .../UnsupportedDataSourceMetricCollector.java | 35 ------ .../deadlock/DeadlockMetricCollector.java | 26 ----- .../DefaultDeadlockMetricCollector.java | 7 +- .../UnsupportedDeadlockMetricCollector.java | 36 ------ .../DefaultFileDescriptorMetricCollector.java | 8 +- .../FileDescriptorMetricCollector.java | 26 ----- ...upportedFileDescriptorMetricCollector.java | 35 ------ .../jvmgc/BasicJvmGcMetricCollector.java | 20 +++- .../jvmgc/DetailedJvmGcMetricCollector.java | 14 ++- .../collector/jvmgc/JvmGcMetricCollector.java | 26 ----- .../collector/jvmgc/TJvmGcTypeUtils.java | 44 ++++++++ .../DefaultResponseTimeMetricCollector.java | 7 +- .../response/ResponseTimeMetricCollector.java | 26 ----- ...nsupportedResponseTimeMetricCollector.java | 35 ------ .../DefaultTransactionMetricCollector.java | 10 +- .../TransactionMetricCollector.java | 26 ----- ...UnsupportedTransactionMetricCollector.java | 35 ------ .../activethread/ActiveTraceMetric.java | 10 +- .../DefaultActiveTraceMetric.java | 20 +--- .../monitor/metric/datasource/DataSource.java | 79 +++++++++++++ .../metric/datasource/DataSourceMetric.java | 10 +- .../datasource/DefaultDataSourceMetric.java | 34 +++--- .../gc/DefaultGarbageCollectorMetric.java | 7 +- .../metric/gc/GarbageCollectorMetric.java | 7 +- .../gc/GarbageCollectorMetricSnapshot.java | 12 +- .../metric/gc/GarbageCollectorType.java | 20 ++-- .../gc/JvmGcType.java} | 26 ++++- .../gc/UnknownGarbageCollectorMetric.java | 9 +- .../metric/memory/DefaultMemoryMetric.java | 36 +++--- .../metric/memory/MemoryMetricSnapshot.java | 14 ++- .../service/ActiveThreadDumpService.java | 6 +- ...efaultResponseTimeMetricCollectorTest.java | 9 +- .../DefaultDataSourceMetricTest.java | 22 ++-- .../memory/DefaultMemoryMetricTest.java | 23 +--- 66 files changed, 642 insertions(+), 911 deletions(-) create mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/ThriftStatsModule.java rename profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/{buffer/UnsupportedBufferMetricCollector.java => UnsupportedMetricCollector.java} (69%) delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/ActiveTraceMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/UnsupportedActiveTraceMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/CpuLoadMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/UnsupportedCpuLoadMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/DataSourceMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/UnsupportedDataSourceMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/DeadlockMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/UnsupportedDeadlockMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/FileDescriptorMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/UnsupportedFileDescriptorMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/JvmGcMetricCollector.java create mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/TJvmGcTypeUtils.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/ResponseTimeMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/UnsupportedResponseTimeMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/TransactionMetricCollector.java delete mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/UnsupportedTransactionMetricCollector.java create mode 100644 profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DataSource.java rename profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/{collector/buffer/BufferMetricCollector.java => metric/gc/JvmGcType.java} (60%) diff --git a/profiler-optional/profiler-optional-jdk7/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/buffer/DefaultBufferMetricTest.java b/profiler-optional/profiler-optional-jdk7/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/buffer/DefaultBufferMetricTest.java index f8de56271512..913403a5f8cc 100644 --- a/profiler-optional/profiler-optional-jdk7/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/buffer/DefaultBufferMetricTest.java +++ b/profiler-optional/profiler-optional-jdk7/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/buffer/DefaultBufferMetricTest.java @@ -26,7 +26,7 @@ public class DefaultBufferMetricTest { @Test public void getSnapshot() { - DefaultBufferMetric defaultBufferMetric = new DefaultBufferMetric(); + BufferMetric defaultBufferMetric = new DefaultBufferMetric(); BufferMetricSnapshot snapshot = defaultBufferMetric.getSnapshot(); Assert.assertNotEquals(snapshot.getDirectCount(), BufferMetric.UNCOLLECTED_VALUE); diff --git a/profiler-test/src/main/java/com/navercorp/pinpoint/test/Item.java b/profiler-test/src/main/java/com/navercorp/pinpoint/test/Item.java index f576952eaf3c..00c399e97247 100644 --- a/profiler-test/src/main/java/com/navercorp/pinpoint/test/Item.java +++ b/profiler-test/src/main/java/com/navercorp/pinpoint/test/Item.java @@ -16,7 +16,7 @@ package com.navercorp.pinpoint.test; -import org.apache.thrift.TBase; +import com.navercorp.pinpoint.profiler.context.id.TraceRoot; /** * @author Woonduk Kang(emeroad) @@ -29,15 +29,17 @@ public class Item implements Comparable { private final int sequence; private final int asyncId; private final int asyncSequence; + private final TraceRoot traceRoot; - public Item(Object value, long time, long spanId, int sequence) { - this(value, time, spanId, sequence, OrderedSpanRecorder.ASYNC_ID_NOT_SET, OrderedSpanRecorder.ASYNC_SEQUENCE_NOT_SET); + public Item(Object value, long time, TraceRoot traceRoot, int sequence) { + this(value, time, traceRoot, sequence, OrderedSpanRecorder.ASYNC_ID_NOT_SET, OrderedSpanRecorder.ASYNC_SEQUENCE_NOT_SET); } - public Item(Object value, long time, long spanId, int sequence, int asyncId, int asyncSequence) { + public Item(Object value, long time, TraceRoot traceRoot, int sequence, int asyncId, int asyncSequence) { this.value = value; this.time = time; - this.spanId = spanId; + this.traceRoot = traceRoot; + this.spanId = traceRoot.getTraceId().getSpanId(); this.sequence = sequence; this.asyncId = asyncId; this.asyncSequence = asyncSequence; @@ -51,6 +53,10 @@ public long getSpanId() { return spanId; } + public TraceRoot getTraceRoot() { + return traceRoot; + } + @Override public int compareTo(Item o) { if (this.asyncId == OrderedSpanRecorder.ASYNC_ID_NOT_SET && o.asyncId == OrderedSpanRecorder.ASYNC_ID_NOT_SET) { @@ -126,7 +132,7 @@ public String toString() { ", sequence=" + sequence + ", asyncId=" + asyncId + ", asyncSequence=" + asyncSequence + + ", traceRoot=" + traceRoot + '}'; } - } diff --git a/profiler-test/src/main/java/com/navercorp/pinpoint/test/OrderedSpanRecorder.java b/profiler-test/src/main/java/com/navercorp/pinpoint/test/OrderedSpanRecorder.java index aeb0244a8af1..f3d7f55f7141 100644 --- a/profiler-test/src/main/java/com/navercorp/pinpoint/test/OrderedSpanRecorder.java +++ b/profiler-test/src/main/java/com/navercorp/pinpoint/test/OrderedSpanRecorder.java @@ -26,6 +26,7 @@ import com.navercorp.pinpoint.profiler.context.Span; import com.navercorp.pinpoint.profiler.context.SpanChunk; import com.navercorp.pinpoint.profiler.context.SpanEvent; +import com.navercorp.pinpoint.profiler.context.id.TraceRoot; /** @@ -57,31 +58,12 @@ public synchronized boolean handleSend(Object data) { return false; } - public synchronized Span findTSpan(long spanId) { - Span tSpan = null; - for (Item item : list) { - final Object value = item.getValue(); - if (value instanceof Span) { - if (tSpan != null) { - throw new IllegalStateException("duplicate span found " + list); - } - final Span span = (Span) value; - if (span.getTraceRoot().getTraceId().getSpanId() == spanId) { - tSpan = span; - } - } - } - if (tSpan == null) { - throw new IllegalStateException("tSpan not found " + list); - } - return tSpan; - } private void insertSpan(Span span) { long startTime = span.getStartTime(); - long spanId = span.getTraceRoot().getTraceId().getSpanId(); + TraceRoot traceRoot = span.getTraceRoot(); - Item item = new Item(span, startTime, spanId, ROOT_SEQUENCE); + Item item = new Item(span, startTime, traceRoot, ROOT_SEQUENCE); insertItem(item); } @@ -108,8 +90,7 @@ private void handleSpanEvent(SpanChunk spanChunk) { } long startTime = event.getStartTime(); - long spanId = spanChunk.getTraceRoot().getTraceId().getSpanId(); - Item item = new Item(event, startTime, spanId, event.getSequence(), asyncId, asyncSequence); + Item item = new Item(event, startTime, spanChunk.getTraceRoot(), event.getSequence(), asyncId, asyncSequence); insertItem(item); } } diff --git a/profiler-test/src/main/java/com/navercorp/pinpoint/test/PluginVerifierExternalAdaptor.java b/profiler-test/src/main/java/com/navercorp/pinpoint/test/PluginVerifierExternalAdaptor.java index 24fb0a9d8e44..f3023fe9eb0f 100644 --- a/profiler-test/src/main/java/com/navercorp/pinpoint/test/PluginVerifierExternalAdaptor.java +++ b/profiler-test/src/main/java/com/navercorp/pinpoint/test/PluginVerifierExternalAdaptor.java @@ -48,6 +48,7 @@ import com.navercorp.pinpoint.profiler.context.ServerMetaDataRegistryService; import com.navercorp.pinpoint.profiler.context.Span; import com.navercorp.pinpoint.profiler.context.SpanEvent; +import com.navercorp.pinpoint.profiler.context.id.TraceRoot; import com.navercorp.pinpoint.profiler.context.module.DefaultApplicationContext; import com.navercorp.pinpoint.profiler.context.module.SpanDataSender; import com.navercorp.pinpoint.profiler.sender.DataSender; @@ -878,8 +879,8 @@ public void verifyIsLoggingTransactionInfo(LoggingInfo loggingInfo) { + " but loggingTransactionInfo value invalid."); } - final Span span = findSpan(item); - final byte loggingTransactionInfo = span.getTraceRoot().getShared().getLoggingInfo(); + final TraceRoot traceRoot = item.getTraceRoot(); + final byte loggingTransactionInfo = traceRoot.getShared().getLoggingInfo(); if (loggingTransactionInfo != loggingInfo.getCode()) { LoggingInfo code = LoggingInfo.searchByCode(loggingTransactionInfo); if (code != null) { @@ -893,24 +894,5 @@ public void verifyIsLoggingTransactionInfo(LoggingInfo loggingInfo) { } } - private Span findSpan(Item item) { - final Object tBase = item.getValue(); - if (tBase instanceof Span) { - final Span span = (Span) tBase; - return span; - } else if (tBase instanceof SpanEvent) { - OrderedSpanRecorder recorder = getRecorder(); - return recorder.findTSpan(item.getSpanId()); - } else { - throw new IllegalArgumentException("Unexpected type: " + getActual(item)); - } - } - - private String getActual(Object actual) { - if (actual == null) { - return "actual is null"; - } - return actual.getClass().getName(); - } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/ApplicationContextModuleFactory.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/ApplicationContextModuleFactory.java index 8bb642deb761..98d5643ea1e5 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/ApplicationContextModuleFactory.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/ApplicationContextModuleFactory.java @@ -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. @@ -33,7 +33,8 @@ public Module newModule(AgentOption agentOption) { final Module applicationContextModule = new ApplicationContextModule(); final Module rpcModule = new RpcModule(); final Module statsModule = new StatsModule(); + final Module thriftStatsModule = new ThriftStatsModule(); - return Modules.combine(config, pluginModule, applicationContextModule, rpcModule, statsModule); + return Modules.combine(config, pluginModule, applicationContextModule, rpcModule, statsModule, thriftStatsModule); } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/StatsModule.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/StatsModule.java index c2b778a8b75c..e3c8c6a1c604 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/StatsModule.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/StatsModule.java @@ -18,40 +18,18 @@ import com.google.inject.AbstractModule; import com.google.inject.Scopes; -import com.google.inject.TypeLiteral; -import com.google.inject.name.Names; -import com.navercorp.pinpoint.profiler.context.provider.stat.activethread.ActiveTraceMetricCollectorProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.activethread.ActiveTraceMetricProvider; -import com.navercorp.pinpoint.profiler.context.provider.stat.cpu.CpuLoadMetricCollectorProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.cpu.CpuLoadMetricProvider; -import com.navercorp.pinpoint.profiler.context.provider.stat.datasource.DataSourceMetricCollectorProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.datasource.DataSourceMetricProvider; -import com.navercorp.pinpoint.profiler.context.provider.stat.deadlock.DeadlockMetricCollectorProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.deadlock.DeadlockMetricProvider; -import com.navercorp.pinpoint.profiler.context.provider.stat.buffer.BufferMetricCollectorProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.buffer.BufferMetricProvider; -import com.navercorp.pinpoint.profiler.context.provider.stat.filedescriptor.FileDescriptorMetricCollectorProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.filedescriptor.FileDescriptorMetricProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.jvmgc.DetailedGarbageCollectorMetricProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.jvmgc.DetailedMemoryMetricProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.jvmgc.GarbageCollectorMetricProvider; -import com.navercorp.pinpoint.profiler.context.provider.stat.jvmgc.JvmGcMetricCollectorProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.jvmgc.MemoryMetricProvider; -import com.navercorp.pinpoint.profiler.context.provider.stat.response.ResponseTimeMetricCollectorProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.response.ResponseTimeMetricProvider; -import com.navercorp.pinpoint.profiler.context.provider.stat.transaction.TransactionMetricCollectorProvider; import com.navercorp.pinpoint.profiler.context.provider.stat.transaction.TransactionMetricProvider; -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.activethread.ActiveTraceMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.cpu.CpuLoadMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.datasource.DataSourceMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.deadlock.DeadlockMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.buffer.BufferMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.filedescriptor.FileDescriptorMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.jvmgc.JvmGcMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.response.ResponseTimeMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.transaction.TransactionMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.activethread.ActiveTraceMetric; import com.navercorp.pinpoint.profiler.monitor.metric.cpu.CpuLoadMetric; import com.navercorp.pinpoint.profiler.monitor.metric.datasource.DataSourceMetric; @@ -64,7 +42,6 @@ import com.navercorp.pinpoint.profiler.monitor.metric.memory.MemoryMetric; import com.navercorp.pinpoint.profiler.monitor.metric.response.ResponseTimeMetric; import com.navercorp.pinpoint.profiler.monitor.metric.transaction.TransactionMetric; -import com.navercorp.pinpoint.thrift.dto.TAgentStat; /** * @author Woonduk Kang(emeroad) @@ -77,39 +54,35 @@ protected void configure() { binder().requireAtInjectOnConstructors(); binder().disableCircularProxies(); - + // gc bind(MemoryMetric.class).toProvider(MemoryMetricProvider.class).in(Scopes.SINGLETON); bind(DetailedMemoryMetric.class).toProvider(DetailedMemoryMetricProvider.class).in(Scopes.SINGLETON); bind(GarbageCollectorMetric.class).toProvider(GarbageCollectorMetricProvider.class).in(Scopes.SINGLETON); bind(DetailedGarbageCollectorMetric.class).toProvider(DetailedGarbageCollectorMetricProvider.class).in(Scopes.SINGLETON); - bind(JvmGcMetricCollector.class).toProvider(JvmGcMetricCollectorProvider.class).in(Scopes.SINGLETON); + // cpu bind(CpuLoadMetric.class).toProvider(CpuLoadMetricProvider.class).in(Scopes.SINGLETON); - bind(CpuLoadMetricCollector.class).toProvider(CpuLoadMetricCollectorProvider.class).in(Scopes.SINGLETON); + // FD bind(FileDescriptorMetric.class).toProvider(FileDescriptorMetricProvider.class).in(Scopes.SINGLETON); - bind(FileDescriptorMetricCollector.class).toProvider(FileDescriptorMetricCollectorProvider.class).in(Scopes.SINGLETON); + // buffer bind(BufferMetric.class).toProvider(BufferMetricProvider.class).in(Scopes.SINGLETON); - bind(BufferMetricCollector.class).toProvider(BufferMetricCollectorProvider.class).in(Scopes.SINGLETON); + // transaction bind(TransactionMetric.class).toProvider(TransactionMetricProvider.class).in(Scopes.SINGLETON); - bind(TransactionMetricCollector.class).toProvider(TransactionMetricCollectorProvider.class).in(Scopes.SINGLETON); + // activeTrace bind(ActiveTraceMetric.class).toProvider(ActiveTraceMetricProvider.class).in(Scopes.SINGLETON); - bind(ActiveTraceMetricCollector.class).toProvider(ActiveTraceMetricCollectorProvider.class).in(Scopes.SINGLETON); + // responseTime bind(ResponseTimeMetric.class).toProvider(ResponseTimeMetricProvider.class).in(Scopes.SINGLETON); - bind(ResponseTimeMetricCollector.class).toProvider(ResponseTimeMetricCollectorProvider.class).in(Scopes.SINGLETON); + // datasource bind(DataSourceMetric.class).toProvider(DataSourceMetricProvider.class).in(Scopes.SINGLETON); - bind(DataSourceMetricCollector.class).toProvider(DataSourceMetricCollectorProvider.class).in(Scopes.SINGLETON); + // deadlock bind(DeadlockMetric.class).toProvider(DeadlockMetricProvider.class).in(Scopes.SINGLETON); - bind(DeadlockMetricCollector.class).toProvider(DeadlockMetricCollectorProvider.class).in(Scopes.SINGLETON); - bind(new TypeLiteral>() {}) - .annotatedWith(Names.named("AgentStatCollector")) - .to(AgentStatCollector.class).in(Scopes.SINGLETON); } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/ThriftStatsModule.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/ThriftStatsModule.java new file mode 100644 index 000000000000..f3ce68dda8d4 --- /dev/null +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/ThriftStatsModule.java @@ -0,0 +1,98 @@ +/* + * 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.AbstractModule; +import com.google.inject.Scopes; +import com.google.inject.TypeLiteral; +import com.google.inject.name.Names; +import com.navercorp.pinpoint.profiler.context.provider.stat.activethread.ActiveTraceMetricCollectorProvider; +import com.navercorp.pinpoint.profiler.context.provider.stat.buffer.BufferMetricCollectorProvider; +import com.navercorp.pinpoint.profiler.context.provider.stat.cpu.CpuLoadMetricCollectorProvider; +import com.navercorp.pinpoint.profiler.context.provider.stat.datasource.DataSourceMetricCollectorProvider; +import com.navercorp.pinpoint.profiler.context.provider.stat.deadlock.DeadlockMetricCollectorProvider; +import com.navercorp.pinpoint.profiler.context.provider.stat.filedescriptor.FileDescriptorMetricCollectorProvider; +import com.navercorp.pinpoint.profiler.context.provider.stat.jvmgc.JvmGcMetricCollectorProvider; +import com.navercorp.pinpoint.profiler.context.provider.stat.response.ResponseTimeMetricCollectorProvider; +import com.navercorp.pinpoint.profiler.context.provider.stat.transaction.TransactionMetricCollectorProvider; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatCollector; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.thrift.dto.TActiveTrace; +import com.navercorp.pinpoint.thrift.dto.TAgentStat; +import com.navercorp.pinpoint.thrift.dto.TCpuLoad; +import com.navercorp.pinpoint.thrift.dto.TDataSourceList; +import com.navercorp.pinpoint.thrift.dto.TDeadlock; +import com.navercorp.pinpoint.thrift.dto.TDirectBuffer; +import com.navercorp.pinpoint.thrift.dto.TFileDescriptor; +import com.navercorp.pinpoint.thrift.dto.TJvmGc; +import com.navercorp.pinpoint.thrift.dto.TResponseTime; +import com.navercorp.pinpoint.thrift.dto.TTransaction; + +/** + * @author Woonduk Kang(emeroad) + */ +public class ThriftStatsModule extends AbstractModule { + + @Override + protected void configure() { + binder().requireExplicitBindings(); + binder().requireAtInjectOnConstructors(); + binder().disableCircularProxies(); + + // gc + TypeLiteral> jvmGcCollector = new TypeLiteral>() {}; + bind(jvmGcCollector).toProvider(JvmGcMetricCollectorProvider.class).in(Scopes.SINGLETON); + + // cpu + TypeLiteral> cpuLoadCollector = new TypeLiteral>() {}; + bind(cpuLoadCollector).toProvider(CpuLoadMetricCollectorProvider.class).in(Scopes.SINGLETON); + + // FD + TypeLiteral> fdCollector = new TypeLiteral>() {}; + bind(fdCollector).toProvider(FileDescriptorMetricCollectorProvider.class).in(Scopes.SINGLETON); + + // buffer + TypeLiteral> bufferCollector = new TypeLiteral>() {}; + bind(bufferCollector).toProvider(BufferMetricCollectorProvider.class).in(Scopes.SINGLETON); + + // transaction + TypeLiteral> transactionCollector = new TypeLiteral>() {}; + bind(transactionCollector).toProvider(TransactionMetricCollectorProvider.class).in(Scopes.SINGLETON); + + // activeTrace + TypeLiteral> activeTraceCollector = new TypeLiteral>() {}; + bind(activeTraceCollector).toProvider(ActiveTraceMetricCollectorProvider.class).in(Scopes.SINGLETON); + + // responseTime + TypeLiteral> responseTimeCollector = new TypeLiteral>() {}; + bind(responseTimeCollector).toProvider(ResponseTimeMetricCollectorProvider.class).in(Scopes.SINGLETON); + + // datasource + TypeLiteral> datasourceCollector = new TypeLiteral>() {}; + bind(datasourceCollector).toProvider(DataSourceMetricCollectorProvider.class).in(Scopes.SINGLETON); + + // deadlock + TypeLiteral> deadlockCollector = new TypeLiteral>() {}; + bind(deadlockCollector).toProvider(DeadlockMetricCollectorProvider.class).in(Scopes.SINGLETON); + + // stat + TypeLiteral> statMetric = new TypeLiteral>() {}; + bind(statMetric).annotatedWith(Names.named("AgentStatCollector")) + .to(AgentStatCollector.class).in(Scopes.SINGLETON); + } + +} \ No newline at end of file diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/JvmInformationProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/JvmInformationProvider.java index e2e77188c082..5b4b9767c9e7 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/JvmInformationProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/JvmInformationProvider.java @@ -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. @@ -22,8 +22,8 @@ import com.navercorp.pinpoint.common.util.SystemPropertyKey; import com.navercorp.pinpoint.profiler.JvmInformation; import com.navercorp.pinpoint.profiler.monitor.metric.gc.GarbageCollectorMetric; +import com.navercorp.pinpoint.profiler.monitor.metric.gc.JvmGcType; import com.navercorp.pinpoint.profiler.monitor.metric.gc.UnknownGarbageCollectorMetric; -import com.navercorp.pinpoint.thrift.dto.TJvmGcType; /** * @author HyunGil Jeong @@ -45,7 +45,7 @@ public JvmInformationProvider() { } public JvmInformation get() { - TJvmGcType gcType = garbageCollectorMetric.getGcType(); + JvmGcType gcType = garbageCollectorMetric.getGcType(); return new JvmInformation(jvmVersion, gcType.getValue()); } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/activethread/ActiveTraceMetricCollectorProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/activethread/ActiveTraceMetricCollectorProvider.java index bc19ac5950de..3977cf198c9a 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/activethread/ActiveTraceMetricCollectorProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/activethread/ActiveTraceMetricCollectorProvider.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -18,30 +18,29 @@ import com.google.inject.Inject; import com.google.inject.Provider; -import com.navercorp.pinpoint.profiler.monitor.collector.activethread.ActiveTraceMetricCollector; +import com.navercorp.pinpoint.common.util.Assert; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.profiler.monitor.collector.UnsupportedMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.activethread.DefaultActiveTraceMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.activethread.UnsupportedActiveTraceMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.activethread.ActiveTraceMetric; +import com.navercorp.pinpoint.thrift.dto.TActiveTrace; /** * @author HyunGil Jeong */ -public class ActiveTraceMetricCollectorProvider implements Provider { +public class ActiveTraceMetricCollectorProvider implements Provider> { private final ActiveTraceMetric activeTraceMetric; @Inject public ActiveTraceMetricCollectorProvider(ActiveTraceMetric activeTraceMetric) { - if (activeTraceMetric == null) { - throw new NullPointerException("activeTraceMetric must not be null"); - } - this.activeTraceMetric = activeTraceMetric; + this.activeTraceMetric = Assert.requireNonNull(activeTraceMetric, "activeTraceMetric must not be null"); } @Override - public ActiveTraceMetricCollector get() { + public AgentStatMetricCollector get() { if (activeTraceMetric == ActiveTraceMetric.UNSUPPORTED_ACTIVE_TRACE_METRIC) { - return new UnsupportedActiveTraceMetricCollector(); + return new UnsupportedMetricCollector(); } return new DefaultActiveTraceMetricCollector(activeTraceMetric); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/buffer/BufferMetricCollectorProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/buffer/BufferMetricCollectorProvider.java index 6e83e356866a..8626f8433df8 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/buffer/BufferMetricCollectorProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/buffer/BufferMetricCollectorProvider.java @@ -18,31 +18,30 @@ import com.google.inject.Inject; import com.google.inject.Provider; -import com.navercorp.pinpoint.profiler.monitor.collector.buffer.BufferMetricCollector; +import com.navercorp.pinpoint.common.util.Assert; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.profiler.monitor.collector.UnsupportedMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.buffer.DefaultBufferMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.buffer.UnsupportedBufferMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.buffer.BufferMetric; +import com.navercorp.pinpoint.thrift.dto.TDirectBuffer; /** * @author Roy Kim */ -public class BufferMetricCollectorProvider implements Provider { +public class BufferMetricCollectorProvider implements Provider> { private final BufferMetric bufferMetric; @Inject public BufferMetricCollectorProvider(BufferMetric bufferMetric) { - if (bufferMetric == null) { - throw new NullPointerException("bufferMetric must not be null"); - } - this.bufferMetric = bufferMetric; + this.bufferMetric = Assert.requireNonNull(bufferMetric, "bufferMetric must not be null"); } @Override - public BufferMetricCollector get() { + public AgentStatMetricCollector get() { if (bufferMetric == BufferMetric.UNSUPPORTED_BUFFER_METRIC) { - return new UnsupportedBufferMetricCollector(); + return new UnsupportedMetricCollector(); } return new DefaultBufferMetricCollector(bufferMetric); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/cpu/CpuLoadMetricCollectorProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/cpu/CpuLoadMetricCollectorProvider.java index 9f1bb03c5d62..a4bcfd7bb32e 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/cpu/CpuLoadMetricCollectorProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/cpu/CpuLoadMetricCollectorProvider.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -18,30 +18,29 @@ import com.google.inject.Inject; import com.google.inject.Provider; +import com.navercorp.pinpoint.common.util.Assert; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.profiler.monitor.collector.UnsupportedMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.cpu.DefaultCpuLoadMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.cpu.CpuLoadMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.cpu.UnsupportedCpuLoadMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.cpu.CpuLoadMetric; +import com.navercorp.pinpoint.thrift.dto.TCpuLoad; /** * @author HyunGil Jeong */ -public class CpuLoadMetricCollectorProvider implements Provider { +public class CpuLoadMetricCollectorProvider implements Provider> { private final CpuLoadMetric cpuLoadMetric; @Inject public CpuLoadMetricCollectorProvider(CpuLoadMetric cpuLoadMetric) { - if (cpuLoadMetric == null) { - throw new NullPointerException("cpuLoadMetric must not be null"); - } - this.cpuLoadMetric = cpuLoadMetric; + this.cpuLoadMetric = Assert.requireNonNull(cpuLoadMetric, "cpuLoadMetric must not be null"); } @Override - public CpuLoadMetricCollector get() { + public AgentStatMetricCollector get() { if (cpuLoadMetric == CpuLoadMetric.UNSUPPORTED_CPU_LOAD_METRIC) { - return new UnsupportedCpuLoadMetricCollector(); + return new UnsupportedMetricCollector(); } return new DefaultCpuLoadMetricCollector(cpuLoadMetric); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/datasource/DataSourceMetricCollectorProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/datasource/DataSourceMetricCollectorProvider.java index cff516c4c233..4d32c1f6de6e 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/datasource/DataSourceMetricCollectorProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/datasource/DataSourceMetricCollectorProvider.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -18,31 +18,30 @@ import com.google.inject.Inject; import com.google.inject.Provider; -import com.navercorp.pinpoint.profiler.monitor.collector.datasource.DataSourceMetricCollector; +import com.navercorp.pinpoint.common.util.Assert; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.profiler.monitor.collector.UnsupportedMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.datasource.DefaultDataSourceMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.datasource.UnsupportedDataSourceMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.datasource.DataSourceMetric; +import com.navercorp.pinpoint.thrift.dto.TDataSourceList; /** * @author Taejin Koo * @author HyunGil Jeong */ -public class DataSourceMetricCollectorProvider implements Provider { +public class DataSourceMetricCollectorProvider implements Provider> { private final DataSourceMetric dataSourceMetric; @Inject public DataSourceMetricCollectorProvider(DataSourceMetric dataSourceMetric) { - if (dataSourceMetric == null) { - throw new NullPointerException("dataSourceMetric must not be null"); - } - this.dataSourceMetric = dataSourceMetric; + this.dataSourceMetric = Assert.requireNonNull(dataSourceMetric, "dataSourceMetric must not be null"); } @Override - public DataSourceMetricCollector get() { + public AgentStatMetricCollector get() { if (dataSourceMetric == DataSourceMetric.UNSUPPORTED_DATA_SOURCE_METRIC) { - return new UnsupportedDataSourceMetricCollector(); + return new UnsupportedMetricCollector(); } return new DefaultDataSourceMetricCollector(dataSourceMetric); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/datasource/DataSourceMetricProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/datasource/DataSourceMetricProvider.java index 95bf56177fac..5a7f80f721c1 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/datasource/DataSourceMetricProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/datasource/DataSourceMetricProvider.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -44,13 +44,16 @@ public DataSourceMetricProvider(DataSourceMonitorRegistryService dataSourceMonit @Override public DataSourceMetric get() { - DataSourceMetric dataSourceMetric; - if (dataSourceMonitorRegistryService == null || jdbcUrlParsingService == null) { - dataSourceMetric = DataSourceMetric.UNSUPPORTED_DATA_SOURCE_METRIC; - } else { - dataSourceMetric = new DefaultDataSourceMetric(dataSourceMonitorRegistryService, jdbcUrlParsingService); - } + final DataSourceMetric dataSourceMetric = newDataSourceMetric(); logger.info("loaded : {}", dataSourceMetric); return dataSourceMetric; } + + private DataSourceMetric newDataSourceMetric() { + if (dataSourceMonitorRegistryService == null || jdbcUrlParsingService == null) { + return DataSourceMetric.UNSUPPORTED_DATA_SOURCE_METRIC; + } + + return new DefaultDataSourceMetric(dataSourceMonitorRegistryService, jdbcUrlParsingService); + } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/deadlock/DeadlockMetricCollectorProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/deadlock/DeadlockMetricCollectorProvider.java index 6073e571faea..6b7507ce696a 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/deadlock/DeadlockMetricCollectorProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/deadlock/DeadlockMetricCollectorProvider.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -18,30 +18,29 @@ import com.google.inject.Inject; import com.google.inject.Provider; -import com.navercorp.pinpoint.profiler.monitor.collector.deadlock.DeadlockMetricCollector; +import com.navercorp.pinpoint.common.util.Assert; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.profiler.monitor.collector.UnsupportedMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.deadlock.DefaultDeadlockMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.deadlock.UnsupportedDeadlockMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.deadlock.DeadlockMetric; +import com.navercorp.pinpoint.thrift.dto.TDeadlock; /** * @author Taejin Koo */ -public class DeadlockMetricCollectorProvider implements Provider { +public class DeadlockMetricCollectorProvider implements Provider> { private final DeadlockMetric deadlockMetric; @Inject public DeadlockMetricCollectorProvider(DeadlockMetric deadlockMetric) { - if (deadlockMetric == null) { - throw new NullPointerException("deadlockMetric must not be null"); - } - this.deadlockMetric = deadlockMetric; + this.deadlockMetric = Assert.requireNonNull(deadlockMetric, "deadlockMetric must not be null"); } @Override - public DeadlockMetricCollector get() { + public AgentStatMetricCollector get() { if (deadlockMetric == DeadlockMetric.UNSUPPORTED_DEADLOCK_SOURCE_METRIC) { - return new UnsupportedDeadlockMetricCollector(); + return new UnsupportedMetricCollector(); } return new DefaultDeadlockMetricCollector(deadlockMetric); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/filedescriptor/FileDescriptorMetricCollectorProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/filedescriptor/FileDescriptorMetricCollectorProvider.java index 4008b258b694..6028e208e712 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/filedescriptor/FileDescriptorMetricCollectorProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/filedescriptor/FileDescriptorMetricCollectorProvider.java @@ -5,7 +5,7 @@ * 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 + * 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, @@ -18,30 +18,29 @@ import com.google.inject.Inject; import com.google.inject.Provider; +import com.navercorp.pinpoint.common.util.Assert; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.profiler.monitor.collector.UnsupportedMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.filedescriptor.DefaultFileDescriptorMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.filedescriptor.FileDescriptorMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.filedescriptor.UnsupportedFileDescriptorMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.filedescriptor.FileDescriptorMetric; +import com.navercorp.pinpoint.thrift.dto.TFileDescriptor; /** * @author Roy Kim */ -public class FileDescriptorMetricCollectorProvider implements Provider { +public class FileDescriptorMetricCollectorProvider implements Provider> { private final FileDescriptorMetric fileDescriptorMetric; @Inject public FileDescriptorMetricCollectorProvider(FileDescriptorMetric fileDescriptorMetric) { - if (fileDescriptorMetric == null) { - throw new NullPointerException("fileDescriptorMetric must not be null"); - } - this.fileDescriptorMetric = fileDescriptorMetric; + this.fileDescriptorMetric = Assert.requireNonNull(fileDescriptorMetric, "fileDescriptorMetric must not be null"); } @Override - public FileDescriptorMetricCollector get() { + public AgentStatMetricCollector get() { if (fileDescriptorMetric == FileDescriptorMetric.UNSUPPORTED_FILE_DESCRIPTOR_METRIC) { - return new UnsupportedFileDescriptorMetricCollector(); + return new UnsupportedMetricCollector(); } return new DefaultFileDescriptorMetricCollector(fileDescriptorMetric); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/jvmgc/JvmGcMetricCollectorProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/jvmgc/JvmGcMetricCollectorProvider.java index f8c738dccd7c..a3a3d4639496 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/jvmgc/JvmGcMetricCollectorProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/jvmgc/JvmGcMetricCollectorProvider.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -19,19 +19,20 @@ import com.google.inject.Inject; import com.google.inject.Provider; import com.navercorp.pinpoint.bootstrap.config.ProfilerConfig; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.jvmgc.DetailedJvmGcMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.jvmgc.BasicJvmGcMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.jvmgc.JvmGcMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.gc.DetailedGarbageCollectorMetric; import com.navercorp.pinpoint.profiler.monitor.metric.gc.GarbageCollectorMetric; import com.navercorp.pinpoint.profiler.monitor.metric.memory.DetailedMemoryMetric; import com.navercorp.pinpoint.profiler.monitor.metric.memory.MemoryMetric; +import com.navercorp.pinpoint.thrift.dto.TJvmGc; /** * @author HyunGil Jeong */ -public class JvmGcMetricCollectorProvider implements Provider { +public class JvmGcMetricCollectorProvider implements Provider> { private final boolean collectDetailedMetrics; private final Provider memoryMetricProivider; @@ -69,10 +70,10 @@ public JvmGcMetricCollectorProvider( } @Override - public JvmGcMetricCollector get() { + public AgentStatMetricCollector get() { MemoryMetric memoryMetric = memoryMetricProivider.get(); GarbageCollectorMetric garbageCollectorMetric = garbageCollectorMetricProvider.get(); - JvmGcMetricCollector jvmGcMetricCollector = new BasicJvmGcMetricCollector(memoryMetric, garbageCollectorMetric); + BasicJvmGcMetricCollector jvmGcMetricCollector = new BasicJvmGcMetricCollector(memoryMetric, garbageCollectorMetric); if (collectDetailedMetrics) { DetailedMemoryMetric detailedMemoryMetric = detailedMemoryMetricProvider.get(); DetailedGarbageCollectorMetric detailedGarbageCollectorMetric = detailedGarbageCollectorMetricProvider.get(); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/jvmgc/MemoryMetricProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/jvmgc/MemoryMetricProvider.java index 18000da78950..865b75388025 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/jvmgc/MemoryMetricProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/jvmgc/MemoryMetricProvider.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -41,11 +41,7 @@ public MemoryMetricProvider() { @Override public MemoryMetric get() { - MemoryMetric memoryMetric = new UnknownMemoryMetric(); - MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); - if (memoryMXBean != null) { - memoryMetric = new DefaultMemoryMetric(memoryMXBean); - } + MemoryMetric memoryMetric = new DefaultMemoryMetric(); logger.info("loaded : {}", memoryMetric); return memoryMetric; } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/response/ResponseTimeMetricCollectorProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/response/ResponseTimeMetricCollectorProvider.java index 984dec43fda8..a25bbddf7b4a 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/response/ResponseTimeMetricCollectorProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/response/ResponseTimeMetricCollectorProvider.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -18,30 +18,29 @@ import com.google.inject.Inject; import com.google.inject.Provider; +import com.navercorp.pinpoint.common.util.Assert; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.profiler.monitor.collector.UnsupportedMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.response.DefaultResponseTimeMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.response.ResponseTimeMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.response.UnsupportedResponseTimeMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.response.ResponseTimeMetric; +import com.navercorp.pinpoint.thrift.dto.TResponseTime; /** * @author Taejin Koo */ -public class ResponseTimeMetricCollectorProvider implements Provider { +public class ResponseTimeMetricCollectorProvider implements Provider> { private final ResponseTimeMetric responseTimeMetric; @Inject public ResponseTimeMetricCollectorProvider(ResponseTimeMetric responseTimeMetric) { - if (responseTimeMetric == null) { - throw new NullPointerException("responseTimeMetric must not be null"); - } - this.responseTimeMetric = responseTimeMetric; + this.responseTimeMetric = Assert.requireNonNull(responseTimeMetric, "responseTimeMetric must not be null"); } @Override - public ResponseTimeMetricCollector get() { + public AgentStatMetricCollector get() { if (responseTimeMetric == ResponseTimeMetric.UNSUPPORTED_RESPONSE_TIME_METRIC) { - return new UnsupportedResponseTimeMetricCollector(); + return new UnsupportedMetricCollector(); } return new DefaultResponseTimeMetricCollector(responseTimeMetric); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/transaction/TransactionMetricCollectorProvider.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/transaction/TransactionMetricCollectorProvider.java index 36c7ce404eab..c3693dd2fe95 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/transaction/TransactionMetricCollectorProvider.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/stat/transaction/TransactionMetricCollectorProvider.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -18,30 +18,29 @@ import com.google.inject.Inject; import com.google.inject.Provider; +import com.navercorp.pinpoint.common.util.Assert; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.profiler.monitor.collector.UnsupportedMetricCollector; import com.navercorp.pinpoint.profiler.monitor.collector.transaction.DefaultTransactionMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.transaction.TransactionMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.transaction.UnsupportedTransactionMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.transaction.TransactionMetric; +import com.navercorp.pinpoint.thrift.dto.TTransaction; /** * @author HyunGil Jeong */ -public class TransactionMetricCollectorProvider implements Provider { +public class TransactionMetricCollectorProvider implements Provider> { private final TransactionMetric transactionMetric; @Inject public TransactionMetricCollectorProvider(TransactionMetric transactionMetric) { - if (transactionMetric == null) { - throw new NullPointerException("transactionMetric must not be null"); - } - this.transactionMetric = transactionMetric; + this.transactionMetric = Assert.requireNonNull(transactionMetric, "transactionMetric must not be null"); } @Override - public TransactionMetricCollector get() { + public AgentStatMetricCollector get() { if (transactionMetric == TransactionMetric.UNSUPPORTED_TRANSACTION_METRIC) { - return new UnsupportedTransactionMetricCollector(); + return new UnsupportedMetricCollector(); } return new DefaultTransactionMetricCollector(transactionMetric); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/DefaultDeadlockMonitor.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/DefaultDeadlockMonitor.java index 9d8a3043f157..453b8b8f63cd 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/DefaultDeadlockMonitor.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/DefaultDeadlockMonitor.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -34,14 +34,14 @@ public DefaultDeadlockMonitor(DeadlockThreadRegistry deadlockThreadRegistry, lon @Override public void start() { - deadlockMonitorThread.start(); logger.info("DefaultDeadlockMonitor started"); + deadlockMonitorThread.start(); } @Override public void stop() { - deadlockMonitorThread.stop(); logger.info("DefaultDeadlockMonitor stopped"); + deadlockMonitorThread.stop(); } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/AgentStatCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/AgentStatCollector.java index 11b9bfa10c5d..a9d233216915 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/AgentStatCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/AgentStatCollector.java @@ -17,18 +17,19 @@ package com.navercorp.pinpoint.profiler.monitor.collector; import com.google.inject.Inject; +import com.navercorp.pinpoint.common.util.Assert; import com.navercorp.pinpoint.profiler.context.module.AgentId; import com.navercorp.pinpoint.profiler.context.module.AgentStartTime; -import com.navercorp.pinpoint.profiler.monitor.collector.activethread.ActiveTraceMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.cpu.CpuLoadMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.datasource.DataSourceMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.deadlock.DeadlockMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.buffer.BufferMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.filedescriptor.FileDescriptorMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.jvmgc.JvmGcMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.response.ResponseTimeMetricCollector; -import com.navercorp.pinpoint.profiler.monitor.collector.transaction.TransactionMetricCollector; +import com.navercorp.pinpoint.thrift.dto.TActiveTrace; import com.navercorp.pinpoint.thrift.dto.TAgentStat; +import com.navercorp.pinpoint.thrift.dto.TCpuLoad; +import com.navercorp.pinpoint.thrift.dto.TDataSourceList; +import com.navercorp.pinpoint.thrift.dto.TDeadlock; +import com.navercorp.pinpoint.thrift.dto.TDirectBuffer; +import com.navercorp.pinpoint.thrift.dto.TFileDescriptor; +import com.navercorp.pinpoint.thrift.dto.TJvmGc; +import com.navercorp.pinpoint.thrift.dto.TResponseTime; +import com.navercorp.pinpoint.thrift.dto.TTransaction; /** * @author HyunGil Jeong @@ -37,71 +38,40 @@ public class AgentStatCollector implements AgentStatMetricCollector private final String agentId; private final long agentStartTimestamp; - private final JvmGcMetricCollector jvmGcMetricCollector; - private final CpuLoadMetricCollector cpuLoadMetricCollector; - private final TransactionMetricCollector transactionMetricCollector; - private final ActiveTraceMetricCollector activeTraceMetricCollector; - private final DataSourceMetricCollector dataSourceMetricCollector; - private final ResponseTimeMetricCollector responseTimeMetricCollector; - private final DeadlockMetricCollector deadlockMetricCollector; - private final FileDescriptorMetricCollector fileDescriptorMetricCollector; - private final BufferMetricCollector bufferMetricCollector; + private final AgentStatMetricCollector jvmGcMetricCollector; + private final AgentStatMetricCollector cpuLoadMetricCollector; + private final AgentStatMetricCollector transactionMetricCollector; + private final AgentStatMetricCollector activeTraceMetricCollector; + private final AgentStatMetricCollector dataSourceMetricCollector; + private final AgentStatMetricCollector responseTimeMetricCollector; + private final AgentStatMetricCollector deadlockMetricCollector; + private final AgentStatMetricCollector fileDescriptorMetricCollector; + private final AgentStatMetricCollector bufferMetricCollector; @Inject public AgentStatCollector( @AgentId String agentId, @AgentStartTime long agentStartTimestamp, - JvmGcMetricCollector jvmGcMetricCollector, - CpuLoadMetricCollector cpuLoadMetricCollector, - TransactionMetricCollector transactionMetricCollector, - ActiveTraceMetricCollector activeTraceMetricCollector, - DataSourceMetricCollector dataSourceMetricCollector, - ResponseTimeMetricCollector responseTimeMetricCollector, - DeadlockMetricCollector deadlockMetricCollector, - FileDescriptorMetricCollector fileDescriptorMetricCollector, - BufferMetricCollector bufferMetricCollector) { - if (agentId == null) { - throw new NullPointerException("agentId must not be null"); - } - if (jvmGcMetricCollector == null) { - throw new NullPointerException("jvmGcMetricCollector must not be null"); - } - if (cpuLoadMetricCollector == null) { - throw new NullPointerException("cpuLoadMetricCollector must not be null"); - } - if (transactionMetricCollector == null) { - throw new NullPointerException("transactionMetricCollector must not be null"); - } - if (activeTraceMetricCollector == null) { - throw new NullPointerException("activeTraceMetricCollector must not be null"); - } - if (dataSourceMetricCollector == null) { - throw new NullPointerException("dataSourceMetricCollector must not be null"); - } - if (responseTimeMetricCollector == null) { - throw new NullPointerException("responseTimeMetricCollector must not be null"); - } - if (deadlockMetricCollector == null) { - throw new NullPointerException("deadlockMetricCollector may not be null"); - } - if (fileDescriptorMetricCollector == null) { - throw new NullPointerException("fileDescriptorMetricCollector may not be null"); - } - if (bufferMetricCollector == null) { - throw new NullPointerException("bufferMetricCollector may not be null"); - } - - this.agentId = agentId; + AgentStatMetricCollector jvmGcMetricCollector, + AgentStatMetricCollector cpuLoadMetricCollector, + AgentStatMetricCollector transactionMetricCollector, + AgentStatMetricCollector activeTraceMetricCollector, + AgentStatMetricCollector dataSourceMetricCollector, + AgentStatMetricCollector responseTimeMetricCollector, + AgentStatMetricCollector deadlockMetricCollector, + AgentStatMetricCollector fileDescriptorMetricCollector, + AgentStatMetricCollector bufferMetricCollector) { + this.agentId = Assert.requireNonNull(agentId, "agentId must not be null"); this.agentStartTimestamp = agentStartTimestamp; - this.jvmGcMetricCollector = jvmGcMetricCollector; - this.cpuLoadMetricCollector = cpuLoadMetricCollector; - this.transactionMetricCollector = transactionMetricCollector; - this.activeTraceMetricCollector = activeTraceMetricCollector; - this.dataSourceMetricCollector = dataSourceMetricCollector; - this.responseTimeMetricCollector = responseTimeMetricCollector; - this.deadlockMetricCollector = deadlockMetricCollector; - this.fileDescriptorMetricCollector = fileDescriptorMetricCollector; - this.bufferMetricCollector = bufferMetricCollector; + this.jvmGcMetricCollector = Assert.requireNonNull(jvmGcMetricCollector, "jvmGcMetricCollector must not be null"); + this.cpuLoadMetricCollector = Assert.requireNonNull(cpuLoadMetricCollector, "cpuLoadMetricCollector must not be null"); + this.transactionMetricCollector = Assert.requireNonNull(transactionMetricCollector, "transactionMetricCollector must not be null"); + this.activeTraceMetricCollector = Assert.requireNonNull(activeTraceMetricCollector, "activeTraceMetricCollector must not be null"); + this.dataSourceMetricCollector = Assert.requireNonNull(dataSourceMetricCollector, "dataSourceMetricCollector must not be null"); + this.responseTimeMetricCollector = Assert.requireNonNull(responseTimeMetricCollector, "responseTimeMetricCollector must not be null"); + this.deadlockMetricCollector = Assert.requireNonNull(deadlockMetricCollector, "deadlockMetricCollector must not be null"); + this.fileDescriptorMetricCollector = Assert.requireNonNull(fileDescriptorMetricCollector, "fileDescriptorMetricCollector must not be null"); + this.bufferMetricCollector = Assert.requireNonNull(bufferMetricCollector, "bufferMetricCollector must not be null"); } @Override diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/AgentStatMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/AgentStatMetricCollector.java index 9b585b372896..4ca253f38bcb 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/AgentStatMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/AgentStatMetricCollector.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -22,7 +22,7 @@ /** * @author HyunGil Jeong */ -public interface AgentStatMetricCollector> { +public interface AgentStatMetricCollector { T collect(); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/UnsupportedBufferMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/UnsupportedMetricCollector.java similarity index 69% rename from profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/UnsupportedBufferMetricCollector.java rename to profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/UnsupportedMetricCollector.java index a35173cd2ae0..55b4a0b6b5e4 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/UnsupportedBufferMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/UnsupportedMetricCollector.java @@ -14,22 +14,22 @@ * limitations under the License. */ -package com.navercorp.pinpoint.profiler.monitor.collector.buffer; +package com.navercorp.pinpoint.profiler.monitor.collector; -import com.navercorp.pinpoint.thrift.dto.TDirectBuffer; /** - * @author Roy Kim + * @author Woonduk Kang(emeroad) */ -public class UnsupportedBufferMetricCollector implements BufferMetricCollector { +public class UnsupportedMetricCollector implements AgentStatMetricCollector { @Override - public TDirectBuffer collect() { + public T collect() { return null; } @Override public String toString() { - return "UnsupportedBufferMetricCollector"; + return "UnsupportedMetricCollector"; } + } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/ActiveTraceMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/ActiveTraceMetricCollector.java deleted file mode 100644 index ddc7e8c3e0ad..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/ActiveTraceMetricCollector.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.activethread; - -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.thrift.dto.TActiveTrace; - -/** - * @author HyunGil Jeong - */ -public interface ActiveTraceMetricCollector extends AgentStatMetricCollector { -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/DefaultActiveTraceMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/DefaultActiveTraceMetricCollector.java index d8f57bd73a27..57ea128880f4 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/DefaultActiveTraceMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/DefaultActiveTraceMetricCollector.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,13 +16,19 @@ package com.navercorp.pinpoint.profiler.monitor.collector.activethread; +import com.navercorp.pinpoint.profiler.context.active.ActiveTraceHistogram; +import com.navercorp.pinpoint.profiler.context.active.ActiveTraceHistogramUtils; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.activethread.ActiveTraceMetric; import com.navercorp.pinpoint.thrift.dto.TActiveTrace; +import com.navercorp.pinpoint.thrift.dto.TActiveTraceHistogram; + +import java.util.List; /** * @author HyunGil Jeong */ -public class DefaultActiveTraceMetricCollector implements ActiveTraceMetricCollector { +public class DefaultActiveTraceMetricCollector implements AgentStatMetricCollector { private final ActiveTraceMetric activeTraceMetric; @@ -35,8 +41,19 @@ public DefaultActiveTraceMetricCollector(ActiveTraceMetric activeTraceMetric) { @Override public TActiveTrace collect() { + final ActiveTraceHistogram histogram = activeTraceMetric.activeTraceHistogram(); + + final int histogramSchemaTypeCode = histogram.getHistogramSchema().getTypeCode(); + + TActiveTraceHistogram tActiveTraceHistogram = new TActiveTraceHistogram(); + tActiveTraceHistogram.setHistogramSchemaType(histogramSchemaTypeCode); + + final List activeTraceCounts = ActiveTraceHistogramUtils.asList(histogram); + tActiveTraceHistogram.setActiveTraceCount(activeTraceCounts); + + TActiveTrace activeTrace = new TActiveTrace(); - activeTrace.setHistogram(activeTraceMetric.activeTraceHistogram()); + activeTrace.setHistogram(tActiveTraceHistogram); return activeTrace; } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/UnsupportedActiveTraceMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/UnsupportedActiveTraceMetricCollector.java deleted file mode 100644 index 01a8ee3d2be7..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/activethread/UnsupportedActiveTraceMetricCollector.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.activethread; - -import com.navercorp.pinpoint.thrift.dto.TActiveTrace; - -/** - * @author HyunGil Jeong - */ -public class UnsupportedActiveTraceMetricCollector implements ActiveTraceMetricCollector { - - @Override - public TActiveTrace collect() { - return null; - } - - @Override - public String toString() { - return "Unsupported CpuLoadMetricCollector"; - } -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/DefaultBufferMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/DefaultBufferMetricCollector.java index f48306fc24f2..34e28c64ceac 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/DefaultBufferMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/DefaultBufferMetricCollector.java @@ -17,6 +17,7 @@ package com.navercorp.pinpoint.profiler.monitor.collector.buffer; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.buffer.BufferMetric; import com.navercorp.pinpoint.profiler.monitor.metric.buffer.BufferMetricSnapshot; import com.navercorp.pinpoint.thrift.dto.TDirectBuffer; @@ -24,7 +25,7 @@ /** * @author Roy Kim */ -public class DefaultBufferMetricCollector implements BufferMetricCollector { +public class DefaultBufferMetricCollector implements AgentStatMetricCollector { private final BufferMetric bufferMetric; @@ -37,8 +38,9 @@ public DefaultBufferMetricCollector(BufferMetric bufferMetric) { @Override public TDirectBuffer collect() { + final BufferMetricSnapshot snapshot = bufferMetric.getSnapshot(); + TDirectBuffer tdirectBuffer = new TDirectBuffer(); - BufferMetricSnapshot snapshot = bufferMetric.getSnapshot(); tdirectBuffer.setDirectCount(snapshot.getDirectCount()); tdirectBuffer.setDirectMemoryUsed(snapshot.getDirectMemoryUsed()); tdirectBuffer.setMappedCount(snapshot.getMappedCount()); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/CpuLoadMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/CpuLoadMetricCollector.java deleted file mode 100644 index cf00eec4d9ca..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/CpuLoadMetricCollector.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.cpu; - -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.thrift.dto.TCpuLoad; - -/** - * @author HyunGil Jeong - */ -public interface CpuLoadMetricCollector extends AgentStatMetricCollector { -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/DefaultCpuLoadMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/DefaultCpuLoadMetricCollector.java index 7bfe25b619ab..76f0dee1ca00 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/DefaultCpuLoadMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/DefaultCpuLoadMetricCollector.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,6 +16,7 @@ package com.navercorp.pinpoint.profiler.monitor.collector.cpu; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.cpu.CpuLoadMetric; import com.navercorp.pinpoint.profiler.monitor.metric.cpu.CpuLoadMetricSnapshot; import com.navercorp.pinpoint.thrift.dto.TCpuLoad; @@ -23,7 +24,7 @@ /** * @author HyunGil Jeong */ -public class DefaultCpuLoadMetricCollector implements CpuLoadMetricCollector { +public class DefaultCpuLoadMetricCollector implements AgentStatMetricCollector { private final CpuLoadMetric cpuLoadMetric; @@ -36,8 +37,9 @@ public DefaultCpuLoadMetricCollector(CpuLoadMetric cpuLoadMetric) { @Override public TCpuLoad collect() { - TCpuLoad cpuLoad = new TCpuLoad(); - CpuLoadMetricSnapshot snapshot = cpuLoadMetric.getSnapshot(); + final CpuLoadMetricSnapshot snapshot = cpuLoadMetric.getSnapshot(); + + final TCpuLoad cpuLoad = new TCpuLoad(); cpuLoad.setJvmCpuLoad(snapshot.getJvmCpuUsage()); cpuLoad.setSystemCpuLoad(snapshot.getSystemCpuUsage()); return cpuLoad; diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/UnsupportedCpuLoadMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/UnsupportedCpuLoadMetricCollector.java deleted file mode 100644 index 3f1495a8d71a..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/cpu/UnsupportedCpuLoadMetricCollector.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.cpu; - -import com.navercorp.pinpoint.thrift.dto.TCpuLoad; - -/** - * @author HyunGil Jeong - */ -public class UnsupportedCpuLoadMetricCollector implements CpuLoadMetricCollector { - - @Override - public TCpuLoad collect() { - return null; - } - - @Override - public String toString() { - return "UnsupportedCpuLoadMetricCollector"; - } -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/DataSourceMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/DataSourceMetricCollector.java deleted file mode 100644 index ba83735773a0..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/DataSourceMetricCollector.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.datasource; - -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.thrift.dto.TDataSourceList; - -/** - * @author Taejin Koo - * @author HyunGil Jeong - */ -public interface DataSourceMetricCollector extends AgentStatMetricCollector { -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/DefaultDataSourceMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/DefaultDataSourceMetricCollector.java index 525f24683a41..29e25c3dcef1 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/DefaultDataSourceMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/DefaultDataSourceMetricCollector.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,13 +16,19 @@ package com.navercorp.pinpoint.profiler.monitor.collector.datasource; +import com.navercorp.pinpoint.common.util.CollectionUtils; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; +import com.navercorp.pinpoint.profiler.monitor.metric.datasource.DataSource; import com.navercorp.pinpoint.profiler.monitor.metric.datasource.DataSourceMetric; +import com.navercorp.pinpoint.thrift.dto.TDataSource; import com.navercorp.pinpoint.thrift.dto.TDataSourceList; +import java.util.List; + /** * @author HyunGil Jeong */ -public class DefaultDataSourceMetricCollector implements DataSourceMetricCollector { +public class DefaultDataSourceMetricCollector implements AgentStatMetricCollector { private final DataSourceMetric dataSourceMetric; @@ -35,6 +41,32 @@ public DefaultDataSourceMetricCollector(DataSourceMetric dataSourceMetric) { @Override public TDataSourceList collect() { - return dataSourceMetric.dataSourceList(); + final List dataSources = dataSourceMetric.dataSourceList(); + + if (CollectionUtils.isEmpty(dataSources)) { + return new TDataSourceList(); + } + + + TDataSourceList tDataSourceList = new TDataSourceList(); + for (DataSource dataSource : dataSources) { + TDataSource tDataSource = toTDataSource(dataSource); + tDataSourceList.addToDataSourceList(tDataSource); + } + + return tDataSourceList; + } + + private TDataSource toTDataSource(DataSource dataSource) { + TDataSource tDataSource = new TDataSource(dataSource.getId()); + if (dataSource.getDatabaseName() != null) { + tDataSource.setDatabaseName(dataSource.getDatabaseName()); + } + + if (dataSource.getActiveConnectionSize() != 0) { + tDataSource.setActiveConnectionSize(dataSource.getActiveConnectionSize()); + } + tDataSource.setMaxConnectionSize(dataSource.getMaxConnectionSize()); + return tDataSource; } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/UnsupportedDataSourceMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/UnsupportedDataSourceMetricCollector.java deleted file mode 100644 index b840c7f9f7d9..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/datasource/UnsupportedDataSourceMetricCollector.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.datasource; - -import com.navercorp.pinpoint.thrift.dto.TDataSourceList; - -/** - * @author HyunGil Jeong - */ -public class UnsupportedDataSourceMetricCollector implements DataSourceMetricCollector { - - @Override - public TDataSourceList collect() { - return null; - } - - @Override - public String toString() { - return "Unsupported DataSourceMetricCollector"; - } -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/DeadlockMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/DeadlockMetricCollector.java deleted file mode 100644 index 4dcb46e2ab86..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/DeadlockMetricCollector.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.deadlock; - -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.thrift.dto.TDeadlock; - -/** - * @author Taejin Koo - */ -public interface DeadlockMetricCollector extends AgentStatMetricCollector { -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/DefaultDeadlockMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/DefaultDeadlockMetricCollector.java index c58139da0ce1..07c9b507dc84 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/DefaultDeadlockMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/DefaultDeadlockMetricCollector.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -17,6 +17,7 @@ package com.navercorp.pinpoint.profiler.monitor.collector.deadlock; import com.navercorp.pinpoint.common.util.CollectionUtils; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.deadlock.DeadlockMetric; import com.navercorp.pinpoint.profiler.util.ThreadDumpUtils; import com.navercorp.pinpoint.thrift.dto.TDeadlock; @@ -28,7 +29,7 @@ /** * @author Taejin Koo */ -public class DefaultDeadlockMetricCollector implements DeadlockMetricCollector { +public class DefaultDeadlockMetricCollector implements AgentStatMetricCollector { private Set prevDeadlockedThreadIdSet = new HashSet(); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/UnsupportedDeadlockMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/UnsupportedDeadlockMetricCollector.java deleted file mode 100644 index c5714ad3fd58..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/deadlock/UnsupportedDeadlockMetricCollector.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.deadlock; - -import com.navercorp.pinpoint.thrift.dto.TDeadlock; - -/** - * @author Taejin Koo - */ -public class UnsupportedDeadlockMetricCollector implements DeadlockMetricCollector { - - @Override - public TDeadlock collect() { - return null; - } - - @Override - public String toString() { - return "UnsupportedDeadlockMetricCollector"; - } - -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/DefaultFileDescriptorMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/DefaultFileDescriptorMetricCollector.java index 7d66d48f3afa..ea9a60a4a032 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/DefaultFileDescriptorMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/DefaultFileDescriptorMetricCollector.java @@ -5,7 +5,7 @@ * 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 + * 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, @@ -17,6 +17,7 @@ package com.navercorp.pinpoint.profiler.monitor.collector.filedescriptor; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.filedescriptor.FileDescriptorMetric; import com.navercorp.pinpoint.profiler.monitor.metric.filedescriptor.FileDescriptorMetricSnapshot; import com.navercorp.pinpoint.thrift.dto.TFileDescriptor; @@ -24,7 +25,7 @@ /** * @author Roy Kim */ -public class DefaultFileDescriptorMetricCollector implements FileDescriptorMetricCollector { +public class DefaultFileDescriptorMetricCollector implements AgentStatMetricCollector { private final FileDescriptorMetric fileDescriptorMetric; @@ -37,8 +38,9 @@ public DefaultFileDescriptorMetricCollector(FileDescriptorMetric fileDescriptorM @Override public TFileDescriptor collect() { - TFileDescriptor tfileDescriptor = new TFileDescriptor(); FileDescriptorMetricSnapshot snapshot = fileDescriptorMetric.getSnapshot(); + + TFileDescriptor tfileDescriptor = new TFileDescriptor(); tfileDescriptor.setOpenFileDescriptorCount(snapshot.getOpenFileDescriptorCount()); return tfileDescriptor; } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/FileDescriptorMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/FileDescriptorMetricCollector.java deleted file mode 100644 index 139a4ad2575c..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/FileDescriptorMetricCollector.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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.monitor.collector.filedescriptor; - -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.thrift.dto.TFileDescriptor; - -/** - * @author Roy Kim - */ -public interface FileDescriptorMetricCollector extends AgentStatMetricCollector { -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/UnsupportedFileDescriptorMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/UnsupportedFileDescriptorMetricCollector.java deleted file mode 100644 index e633cd545045..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/filedescriptor/UnsupportedFileDescriptorMetricCollector.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.monitor.collector.filedescriptor; - -import com.navercorp.pinpoint.thrift.dto.TFileDescriptor; - -/** - * @author Roy Kim - */ -public class UnsupportedFileDescriptorMetricCollector implements FileDescriptorMetricCollector { - - @Override - public TFileDescriptor collect() { - return null; - } - - @Override - public String toString() { - return "UnsupportedFileDescriptorMetricCollector"; - } -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/BasicJvmGcMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/BasicJvmGcMetricCollector.java index a0bca3909d5f..290edfcb52be 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/BasicJvmGcMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/BasicJvmGcMetricCollector.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,8 +16,10 @@ package com.navercorp.pinpoint.profiler.monitor.collector.jvmgc; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.gc.GarbageCollectorMetric; import com.navercorp.pinpoint.profiler.monitor.metric.gc.GarbageCollectorMetricSnapshot; +import com.navercorp.pinpoint.profiler.monitor.metric.gc.JvmGcType; import com.navercorp.pinpoint.profiler.monitor.metric.memory.MemoryMetric; import com.navercorp.pinpoint.profiler.monitor.metric.memory.MemoryMetricSnapshot; import com.navercorp.pinpoint.thrift.dto.TJvmGc; @@ -26,7 +28,7 @@ /** * @author HyunGil Jeong */ -public class BasicJvmGcMetricCollector implements JvmGcMetricCollector { +public class BasicJvmGcMetricCollector implements AgentStatMetricCollector { private final MemoryMetric memoryMetric; private final GarbageCollectorMetric garbageCollectorMetric; @@ -44,20 +46,26 @@ public BasicJvmGcMetricCollector(MemoryMetric memoryMetric, GarbageCollectorMetr @Override public TJvmGc collect() { - TJvmGc jvmGc = new TJvmGc(); - TJvmGcType jvmGcType = garbageCollectorMetric.getGcType(); + + JvmGcType jvmGcType = garbageCollectorMetric.getGcType(); + TJvmGcType tJvmGcType = TJvmGcTypeUtils.toTJvmGcType(jvmGcType.getValue()); + MemoryMetricSnapshot memoryMetricSnapshot = memoryMetric.getSnapshot(); GarbageCollectorMetricSnapshot garbageCollectorMetricSnapshot = garbageCollectorMetric.getSnapshot(); + + TJvmGc jvmGc = new TJvmGc(); jvmGc.setJvmMemoryHeapMax(memoryMetricSnapshot.getHeapMax()); jvmGc.setJvmMemoryHeapUsed(memoryMetricSnapshot.getHeapUsed()); jvmGc.setJvmMemoryNonHeapMax(memoryMetricSnapshot.getNonHeapMax()); jvmGc.setJvmMemoryNonHeapUsed(memoryMetricSnapshot.getNonHeapUsed()); jvmGc.setJvmGcOldCount(garbageCollectorMetricSnapshot.getGcOldCount()); jvmGc.setJvmGcOldTime(garbageCollectorMetricSnapshot.getGcOldTime()); - jvmGc.setType(jvmGcType); + jvmGc.setType(tJvmGcType); return jvmGc; } + + @Override public String toString() { final StringBuilder sb = new StringBuilder("BasicJvmGcMetricCollector{"); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/DetailedJvmGcMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/DetailedJvmGcMetricCollector.java index 84db43b0473a..fcaf4718fffd 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/DetailedJvmGcMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/DetailedJvmGcMetricCollector.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,6 +16,7 @@ package com.navercorp.pinpoint.profiler.monitor.collector.jvmgc; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.gc.DetailedGarbageCollectorMetric; import com.navercorp.pinpoint.profiler.monitor.metric.gc.DetailedGarbageCollectorMetricSnapshot; import com.navercorp.pinpoint.profiler.monitor.metric.memory.DetailedMemoryMetric; @@ -27,14 +28,14 @@ * @author dawidmalina * @author HyunGil Jeong */ -public class DetailedJvmGcMetricCollector implements JvmGcMetricCollector { +public class DetailedJvmGcMetricCollector implements AgentStatMetricCollector { - private final JvmGcMetricCollector jvmGcMetricCollector; + private final BasicJvmGcMetricCollector jvmGcMetricCollector; private final DetailedMemoryMetric detailedMemoryMetric; private final DetailedGarbageCollectorMetric detailedGarbageCollectorMetric; public DetailedJvmGcMetricCollector( - JvmGcMetricCollector jvmGcMetricCollector, + BasicJvmGcMetricCollector jvmGcMetricCollector, DetailedMemoryMetric detailedMemoryMetric, DetailedGarbageCollectorMetric detailedGarbageCollectorMetric) { if (jvmGcMetricCollector == null) { @@ -56,7 +57,8 @@ public TJvmGc collect() { TJvmGc jvmGc = jvmGcMetricCollector.collect(); DetailedMemoryMetricSnapshot detailedMemoryMetricSnapshot = detailedMemoryMetric.getSnapshot(); DetailedGarbageCollectorMetricSnapshot detailedGarbageCollectorMetricSnapshot = detailedGarbageCollectorMetric.getSnapshot(); - TJvmGcDetailed jvmGcDetailed = new TJvmGcDetailed(); + + final TJvmGcDetailed jvmGcDetailed = new TJvmGcDetailed(); jvmGcDetailed.setJvmPoolNewGenUsed(detailedMemoryMetricSnapshot.getNewGenUsage()); jvmGcDetailed.setJvmPoolOldGenUsed(detailedMemoryMetricSnapshot.getOldGenUsage()); jvmGcDetailed.setJvmPoolSurvivorSpaceUsed(detailedMemoryMetricSnapshot.getSurvivorSpaceUsage()); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/JvmGcMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/JvmGcMetricCollector.java deleted file mode 100644 index 4b7e18518e00..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/JvmGcMetricCollector.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.jvmgc; - -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.thrift.dto.TJvmGc; - -/** - * @author HyunGil Jeong - */ -public interface JvmGcMetricCollector extends AgentStatMetricCollector { -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/TJvmGcTypeUtils.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/TJvmGcTypeUtils.java new file mode 100644 index 000000000000..3d394f1b7be4 --- /dev/null +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/jvmgc/TJvmGcTypeUtils.java @@ -0,0 +1,44 @@ +/* + * 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.monitor.collector.jvmgc; + +import com.navercorp.pinpoint.thrift.dto.TJvmGcType; + +/** + * @author Woonduk Kang(emeroad) + */ +public final class TJvmGcTypeUtils { + private TJvmGcTypeUtils() { + } + + public static TJvmGcType toTJvmGcType(int value) { + switch (value) { + case 0: + return TJvmGcType.UNKNOWN; + case 1: + return TJvmGcType.SERIAL; + case 2: + return TJvmGcType.PARALLEL; + case 3: + return TJvmGcType.CMS; + case 4: + return TJvmGcType.G1; + default: + return null; + } + } +} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/DefaultResponseTimeMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/DefaultResponseTimeMetricCollector.java index 6b90dfa9b737..a335ecd8d8a6 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/DefaultResponseTimeMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/DefaultResponseTimeMetricCollector.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,6 +16,7 @@ package com.navercorp.pinpoint.profiler.monitor.collector.response; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.response.ResponseTimeValue; import com.navercorp.pinpoint.profiler.monitor.metric.response.ResponseTimeMetric; import com.navercorp.pinpoint.thrift.dto.TResponseTime; @@ -23,7 +24,7 @@ /** * @author Taejin Koo */ -public class DefaultResponseTimeMetricCollector implements ResponseTimeMetricCollector { +public class DefaultResponseTimeMetricCollector implements AgentStatMetricCollector { private final ResponseTimeMetric responseTimeMetric; diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/ResponseTimeMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/ResponseTimeMetricCollector.java deleted file mode 100644 index 3a5242f14d33..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/ResponseTimeMetricCollector.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.response; - -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.thrift.dto.TResponseTime; - -/** - * @author Taejin Koo - */ -public interface ResponseTimeMetricCollector extends AgentStatMetricCollector { -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/UnsupportedResponseTimeMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/UnsupportedResponseTimeMetricCollector.java deleted file mode 100644 index 9f17fb036e7c..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/response/UnsupportedResponseTimeMetricCollector.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.response; - -import com.navercorp.pinpoint.thrift.dto.TResponseTime; - -/** - * @author Taejin Koo - */ -public class UnsupportedResponseTimeMetricCollector implements ResponseTimeMetricCollector { - @Override - public TResponseTime collect() { - return null; - } - - @Override - public String toString() { - return "UnsupportedResponseTimeMetricCollector"; - } - -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/DefaultTransactionMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/DefaultTransactionMetricCollector.java index 55efdb7962b6..350dfc2a288b 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/DefaultTransactionMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/DefaultTransactionMetricCollector.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -17,6 +17,7 @@ package com.navercorp.pinpoint.profiler.monitor.collector.transaction; import com.google.inject.Inject; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.transaction.TransactionMetric; import com.navercorp.pinpoint.profiler.monitor.metric.transaction.TransactionMetricSnapshot; import com.navercorp.pinpoint.thrift.dto.TTransaction; @@ -24,7 +25,7 @@ /** * @author HyunGil Jeong */ -public class DefaultTransactionMetricCollector implements TransactionMetricCollector { +public class DefaultTransactionMetricCollector implements AgentStatMetricCollector { private final TransactionMetric transactionMetric; @@ -35,8 +36,9 @@ public DefaultTransactionMetricCollector(TransactionMetric transactionMetric) { @Override public TTransaction collect() { - TTransaction transaction = new TTransaction(); TransactionMetricSnapshot transactionMetricSnapshot = transactionMetric.getSnapshot(); + + TTransaction transaction = new TTransaction(); transaction.setSampledNewCount(transactionMetricSnapshot.getSampledNewCount()); transaction.setSampledContinuationCount(transactionMetricSnapshot.getSampledContinuationCount()); transaction.setUnsampledNewCount(transactionMetricSnapshot.getUnsampledNewCount()); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/TransactionMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/TransactionMetricCollector.java deleted file mode 100644 index 761c3cb08536..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/TransactionMetricCollector.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.transaction; - -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.thrift.dto.TTransaction; - -/** - * @author HyunGil Jeong - */ -public interface TransactionMetricCollector extends AgentStatMetricCollector { -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/UnsupportedTransactionMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/UnsupportedTransactionMetricCollector.java deleted file mode 100644 index 5704a7477adf..000000000000 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/transaction/UnsupportedTransactionMetricCollector.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2017 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.monitor.collector.transaction; - -import com.navercorp.pinpoint.thrift.dto.TTransaction; - -/** - * @author HyunGil Jeong - */ -public class UnsupportedTransactionMetricCollector implements TransactionMetricCollector { - - @Override - public TTransaction collect() { - return null; - } - - @Override - public String toString() { - return "UnsupportedTransactionMetricCollector"; - } -} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/activethread/ActiveTraceMetric.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/activethread/ActiveTraceMetric.java index ca76ad1b75f9..1c17a4e38c4b 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/activethread/ActiveTraceMetric.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/activethread/ActiveTraceMetric.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,7 +16,7 @@ package com.navercorp.pinpoint.profiler.monitor.metric.activethread; -import com.navercorp.pinpoint.thrift.dto.TActiveTraceHistogram; +import com.navercorp.pinpoint.profiler.context.active.ActiveTraceHistogram; /** * @author HyunGil Jeong @@ -26,7 +26,7 @@ public interface ActiveTraceMetric { ActiveTraceMetric UNSUPPORTED_ACTIVE_TRACE_METRIC = new ActiveTraceMetric() { @Override - public TActiveTraceHistogram activeTraceHistogram() { + public ActiveTraceHistogram activeTraceHistogram() { return null; } @@ -36,5 +36,5 @@ public String toString() { } }; - TActiveTraceHistogram activeTraceHistogram(); + ActiveTraceHistogram activeTraceHistogram(); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/activethread/DefaultActiveTraceMetric.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/activethread/DefaultActiveTraceMetric.java index 75f6a2b95bbb..c2c5cf6565f3 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/activethread/DefaultActiveTraceMetric.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/activethread/DefaultActiveTraceMetric.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -18,11 +18,8 @@ import com.navercorp.pinpoint.common.util.Assert; import com.navercorp.pinpoint.profiler.context.active.ActiveTraceHistogram; -import com.navercorp.pinpoint.profiler.context.active.ActiveTraceHistogramUtils; import com.navercorp.pinpoint.profiler.context.active.ActiveTraceRepository; -import com.navercorp.pinpoint.thrift.dto.TActiveTraceHistogram; -import java.util.List; /** * @author HyunGil Jeong @@ -36,22 +33,15 @@ public DefaultActiveTraceMetric(ActiveTraceRepository activeTraceRepository) { } @Override - public TActiveTraceHistogram activeTraceHistogram() { + public ActiveTraceHistogram activeTraceHistogram() { final long currentTimeMillis = System.currentTimeMillis(); final ActiveTraceHistogram histogram = activeTraceRepository.getActiveTraceHistogram(currentTimeMillis); - final int histogramSchemaTypeCode = histogram.getHistogramSchema().getTypeCode(); - - TActiveTraceHistogram tActiveTraceHistogram = new TActiveTraceHistogram(); - tActiveTraceHistogram.setHistogramSchemaType(histogramSchemaTypeCode); - - final List activeTraceCounts = ActiveTraceHistogramUtils.asList(histogram); - tActiveTraceHistogram.setActiveTraceCount(activeTraceCounts); - return tActiveTraceHistogram; + return histogram; } @Override public String toString() { - return "Default ActiveTraceCountMetric"; + return "DefaultActiveTraceMetric"; } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DataSource.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DataSource.java new file mode 100644 index 000000000000..ca1d24044cfb --- /dev/null +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DataSource.java @@ -0,0 +1,79 @@ +/* + * 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.monitor.metric.datasource; + +/** + * @author Woonduk Kang(emeroad) + */ +public class DataSource { + private final int id; // required + private short serviceTypeCode; // optional + private java.lang.String databaseName; // optional + private java.lang.String url; // optional + private int activeConnectionSize; // optional + private int maxConnectionSize; // optional + + + public DataSource(int id) { + this.id = id; + } + + public int getId() { + return id; + } + + + public short getServiceTypeCode() { + return serviceTypeCode; + } + + public void setServiceTypeCode(short serviceTypeCode) { + this.serviceTypeCode = serviceTypeCode; + } + + public String getDatabaseName() { + return databaseName; + } + + public void setDatabaseName(String databaseName) { + this.databaseName = databaseName; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public int getActiveConnectionSize() { + return activeConnectionSize; + } + + public void setActiveConnectionSize(int activeConnectionSize) { + this.activeConnectionSize = activeConnectionSize; + } + + public int getMaxConnectionSize() { + return maxConnectionSize; + } + + public void setMaxConnectionSize(int maxConnectionSize) { + this.maxConnectionSize = maxConnectionSize; + } +} diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DataSourceMetric.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DataSourceMetric.java index d5b295d329d2..5e6212357c0e 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DataSourceMetric.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DataSourceMetric.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,7 +16,7 @@ package com.navercorp.pinpoint.profiler.monitor.metric.datasource; -import com.navercorp.pinpoint.thrift.dto.TDataSourceList; +import java.util.List; /** * @author Taejin Koo @@ -26,7 +26,7 @@ public interface DataSourceMetric { DataSourceMetric UNSUPPORTED_DATA_SOURCE_METRIC = new DataSourceMetric() { @Override - public TDataSourceList dataSourceList() { + public List dataSourceList() { return null; } @@ -36,5 +36,5 @@ public String toString() { } }; - TDataSourceList dataSourceList(); + List dataSourceList(); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DefaultDataSourceMetric.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DefaultDataSourceMetric.java index bd879069a278..7f13395f8805 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DefaultDataSourceMetric.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DefaultDataSourceMetric.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -21,9 +21,8 @@ import com.navercorp.pinpoint.profiler.context.monitor.DataSourceMonitorRegistryService; import com.navercorp.pinpoint.profiler.context.monitor.DataSourceMonitorWrapper; import com.navercorp.pinpoint.profiler.context.monitor.JdbcUrlParsingService; -import com.navercorp.pinpoint.thrift.dto.TDataSource; -import com.navercorp.pinpoint.thrift.dto.TDataSourceList; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -49,17 +48,17 @@ public DefaultDataSourceMetric(DataSourceMonitorRegistryService dataSourceMonito } @Override - public TDataSourceList dataSourceList() { - TDataSourceList dataSourceList = new TDataSourceList(); - - List dataSourceMonitorList = dataSourceMonitorRegistryService.getPluginMonitorWrapperList(); - if (!CollectionUtils.isEmpty(dataSourceMonitorList)) { - for (DataSourceMonitorWrapper dataSourceMonitor : dataSourceMonitorList) { - TDataSource dataSource = collectDataSource(dataSourceMonitor); - dataSourceList.addToDataSourceList(dataSource); - } - } else { - dataSourceList.setDataSourceList(Collections.emptyList()); + public List dataSourceList() { + + final List dataSourceMonitorList = dataSourceMonitorRegistryService.getPluginMonitorWrapperList(); + if (CollectionUtils.isEmpty(dataSourceMonitorList)) { + return Collections.emptyList(); + } + + List dataSourceList = new ArrayList(dataSourceMonitorList.size()); + for (DataSourceMonitorWrapper dataSourceMonitor : dataSourceMonitorList) { + DataSource dataSource = collectDataSource(dataSourceMonitor); + dataSourceList.add(dataSource); } return dataSourceList; } @@ -69,9 +68,8 @@ public String toString() { return "Default DataSourceMetric"; } - private TDataSource collectDataSource(DataSourceMonitorWrapper dataSourceMonitor) { - TDataSource dataSource = new TDataSource(); - dataSource.setId(dataSourceMonitor.getId()); + private DataSource collectDataSource(DataSourceMonitorWrapper dataSourceMonitor) { + final DataSource dataSource = new DataSource(dataSourceMonitor.getId()); dataSource.setServiceTypeCode(dataSourceMonitor.getServiceType().getCode()); String jdbcUrl = dataSourceMonitor.getUrl(); diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/DefaultGarbageCollectorMetric.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/DefaultGarbageCollectorMetric.java index bba7157d1a57..214cc92a107c 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/DefaultGarbageCollectorMetric.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/DefaultGarbageCollectorMetric.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,7 +16,6 @@ package com.navercorp.pinpoint.profiler.monitor.metric.gc; -import com.navercorp.pinpoint.thrift.dto.TJvmGcType; import java.lang.management.GarbageCollectorMXBean; @@ -40,7 +39,7 @@ public DefaultGarbageCollectorMetric(GarbageCollectorType garbageCollectorType, } @Override - public TJvmGcType getGcType() { + public JvmGcType getGcType() { return garbageCollectorType.jvmGcType(); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorMetric.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorMetric.java index 20ea389fc7d8..428cc464b577 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorMetric.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorMetric.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,7 +16,6 @@ package com.navercorp.pinpoint.profiler.monitor.metric.gc; -import com.navercorp.pinpoint.thrift.dto.TJvmGcType; /** * @author HyunGil Jeong @@ -25,7 +24,7 @@ public interface GarbageCollectorMetric { long UNCOLLECTED_VALUE = -1L; - TJvmGcType getGcType(); + JvmGcType getGcType(); GarbageCollectorMetricSnapshot getSnapshot(); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorMetricSnapshot.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorMetricSnapshot.java index c39bab9218c9..74bd0b6871a7 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorMetricSnapshot.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorMetricSnapshot.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -36,4 +36,12 @@ public long getGcOldCount() { public long getGcOldTime() { return gcOldTime; } + + @Override + public String toString() { + return "GarbageCollectorMetricSnapshot{" + + "gcOldCount=" + gcOldCount + + ", gcOldTime=" + gcOldTime + + '}'; + } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorType.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorType.java index 99656ea18d65..1fb177d52ec7 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorType.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/GarbageCollectorType.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,28 +16,26 @@ package com.navercorp.pinpoint.profiler.monitor.metric.gc; -import com.navercorp.pinpoint.thrift.dto.TJvmGcType; - /** * @author HyunGil Jeong */ public enum GarbageCollectorType { - SERIAL(TJvmGcType.SERIAL, "MarkSweepCompact", "Copy"), - PARALLEL(TJvmGcType.PARALLEL, "PS MarkSweep", "PS Scavenge"), - CMS(TJvmGcType.CMS, "ConcurrentMarkSweep", "ParNew"), - G1(TJvmGcType.G1, "G1 Old Generation", "G1 Young Generation"); + SERIAL(JvmGcType.SERIAL, "MarkSweepCompact", "Copy"), + PARALLEL(JvmGcType.PARALLEL, "PS MarkSweep", "PS Scavenge"), + CMS(JvmGcType.CMS, "ConcurrentMarkSweep", "ParNew"), + G1(JvmGcType.G1, "G1 Old Generation", "G1 Young Generation"); - private final TJvmGcType jvmGcType; + private final JvmGcType jvmGcType; private final String oldGenName; private final String newGenName; - GarbageCollectorType(TJvmGcType jvmGcType, String oldGenName, String newGenName) { + GarbageCollectorType(JvmGcType jvmGcType, String oldGenName, String newGenName) { this.jvmGcType = jvmGcType; this.oldGenName = oldGenName; this.newGenName = newGenName; } - public TJvmGcType jvmGcType() { + public JvmGcType jvmGcType() { return jvmGcType; } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/BufferMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/JvmGcType.java similarity index 60% rename from profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/BufferMetricCollector.java rename to profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/JvmGcType.java index 19b1d4c2f656..bb9e20bcc6d2 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/collector/buffer/BufferMetricCollector.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/JvmGcType.java @@ -14,13 +14,29 @@ * limitations under the License. */ -package com.navercorp.pinpoint.profiler.monitor.collector.buffer; +package com.navercorp.pinpoint.profiler.monitor.metric.gc; -import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; -import com.navercorp.pinpoint.thrift.dto.TDirectBuffer; + +import com.navercorp.pinpoint.thrift.dto.TJvmGcType; /** - * @author Roy Kim + * @author Woonduk Kang(emeroad) */ -public interface BufferMetricCollector extends AgentStatMetricCollector { +public enum JvmGcType { + UNKNOWN(0), + SERIAL(1), + PARALLEL(2), + CMS(3), + G1(4); + + private final int value; + + private JvmGcType(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/UnknownGarbageCollectorMetric.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/UnknownGarbageCollectorMetric.java index 14fdd0e9a8cb..08e6b1f55ff2 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/UnknownGarbageCollectorMetric.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/gc/UnknownGarbageCollectorMetric.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,7 +16,6 @@ package com.navercorp.pinpoint.profiler.monitor.metric.gc; -import com.navercorp.pinpoint.thrift.dto.TJvmGcType; /** * Unknown garbage collector metrics @@ -28,8 +27,8 @@ public class UnknownGarbageCollectorMetric implements GarbageCollectorMetric { private static final GarbageCollectorMetricSnapshot UNSUPPORTED_SNAPSHOT = new GarbageCollectorMetricSnapshot(UNCOLLECTED_VALUE, UNCOLLECTED_VALUE); @Override - public TJvmGcType getGcType() { - return TJvmGcType.UNKNOWN; + public JvmGcType getGcType() { + return JvmGcType.UNKNOWN; } @Override diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/DefaultMemoryMetric.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/DefaultMemoryMetric.java index 2d5204c000cd..47a23f0dfac4 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/DefaultMemoryMetric.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/DefaultMemoryMetric.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,6 +16,7 @@ package com.navercorp.pinpoint.profiler.monitor.metric.memory; +import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import java.lang.management.MemoryUsage; @@ -24,30 +25,21 @@ */ public class DefaultMemoryMetric implements MemoryMetric { - private final MemoryMXBean memoryMXBean; + private MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); - public DefaultMemoryMetric(MemoryMXBean memoryMXBean) { - if (memoryMXBean == null) { - throw new NullPointerException("memoryMXBean must not be null"); - } - this.memoryMXBean = memoryMXBean; + + public DefaultMemoryMetric() { } + @Override public MemoryMetricSnapshot getSnapshot() { - MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage(); - MemoryUsage nonHeapMemoryUsage = memoryMXBean.getNonHeapMemoryUsage(); - long heapMax = UNCOLLECTED_VALUE; - long heapUsed = UNCOLLECTED_VALUE; - if (heapMemoryUsage != null) { - heapMax = heapMemoryUsage.getMax(); - heapUsed = heapMemoryUsage.getUsed(); - } - long nonHeapMax = UNCOLLECTED_VALUE; - long nonHeapUsed = UNCOLLECTED_VALUE; - if (nonHeapMemoryUsage != null) { - nonHeapMax = nonHeapMemoryUsage.getMax(); - nonHeapUsed = nonHeapMemoryUsage.getUsed(); - } + final MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage(); + final MemoryUsage nonHeapMemoryUsage = memoryMXBean.getNonHeapMemoryUsage(); + final long heapMax = heapMemoryUsage.getMax(); + final long heapUsed = heapMemoryUsage.getUsed(); + final long nonHeapMax = nonHeapMemoryUsage.getMax(); + final long nonHeapUsed = nonHeapMemoryUsage.getUsed(); + return new MemoryMetricSnapshot(heapMax, heapUsed, nonHeapMax, nonHeapUsed); } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/MemoryMetricSnapshot.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/MemoryMetricSnapshot.java index fb63122e122b..cbf9307ee6ff 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/MemoryMetricSnapshot.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/MemoryMetricSnapshot.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -48,4 +48,14 @@ public long getNonHeapMax() { public long getNonHeapUsed() { return nonHeapUsed; } + + @Override + public String toString() { + return "MemoryMetricSnapshot{" + + "heapMax=" + heapMax + + ", heapUsed=" + heapUsed + + ", nonHeapMax=" + nonHeapMax + + ", nonHeapUsed=" + nonHeapUsed + + '}'; + } } diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadDumpService.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadDumpService.java index a427750cb7fa..51e1e6e09141 100644 --- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadDumpService.java +++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/receiver/service/ActiveThreadDumpService.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -84,7 +84,7 @@ private TActiveThreadDump createTActiveThreadDump(ThreadDump threadDump) { final ActiveTraceSnapshot activeTraceInfo = threadDump.getActiveTraceSnapshot(); final ThreadInfo threadInfo = threadDump.getThreadInfo(); - TThreadDump tThreadDump = ThreadDumpUtils.createTThreadDump(threadInfo); + final TThreadDump tThreadDump = ThreadDumpUtils.createTThreadDump(threadInfo); TActiveThreadDump activeThreadDump = new TActiveThreadDump(); activeThreadDump.setStartTime(activeTraceInfo.getStartTime()); diff --git a/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/collector/response/DefaultResponseTimeMetricCollectorTest.java b/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/collector/response/DefaultResponseTimeMetricCollectorTest.java index 678e9d84ed69..ffe7a85f5dfc 100644 --- a/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/collector/response/DefaultResponseTimeMetricCollectorTest.java +++ b/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/collector/response/DefaultResponseTimeMetricCollectorTest.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -16,6 +16,7 @@ package com.navercorp.pinpoint.profiler.monitor.collector.response; +import com.navercorp.pinpoint.profiler.monitor.collector.AgentStatMetricCollector; import com.navercorp.pinpoint.profiler.monitor.metric.response.ResponseTimeMetric; import com.navercorp.pinpoint.profiler.monitor.metric.response.ResponseTimeValue; import com.navercorp.pinpoint.thrift.dto.TResponseTime; @@ -62,7 +63,7 @@ public void setUp() { @Test public void defaultTest() throws Exception { - ResponseTimeMetricCollector responseTimeMetricCollector = new DefaultResponseTimeMetricCollector(responseTimeMetric); + AgentStatMetricCollector responseTimeMetricCollector = new DefaultResponseTimeMetricCollector(responseTimeMetric); TResponseTime collect = responseTimeMetricCollector.collect(); Assert.assertEquals(totalValue / COUNT, collect.getAvg()); @@ -70,7 +71,7 @@ public void defaultTest() throws Exception { @Test(expected = NullPointerException.class) public void throwNPETest() throws Exception { - ResponseTimeMetricCollector responseTimeMetricCollector = new DefaultResponseTimeMetricCollector(null); + AgentStatMetricCollector responseTimeMetricCollector = new DefaultResponseTimeMetricCollector(null); } } diff --git a/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DefaultDataSourceMetricTest.java b/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DefaultDataSourceMetricTest.java index 336da3b3a240..77afa823e1ff 100644 --- a/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DefaultDataSourceMetricTest.java +++ b/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/datasource/DefaultDataSourceMetricTest.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -21,8 +21,6 @@ import com.navercorp.pinpoint.profiler.context.monitor.DataSourceMonitorRegistryService; import com.navercorp.pinpoint.profiler.context.monitor.DefaultDataSourceMonitorRegistryService; import com.navercorp.pinpoint.profiler.context.monitor.JdbcUrlParsingService; -import com.navercorp.pinpoint.thrift.dto.TDataSource; -import com.navercorp.pinpoint.thrift.dto.TDataSourceList; import org.apache.commons.lang3.RandomUtils; import org.junit.Assert; import org.junit.Test; @@ -49,7 +47,7 @@ public class DefaultDataSourceMetricTest { private JdbcUrlParsingService jdbcUrlParsingService; @Test - public void collectTest() throws Exception { + public void collectTest() { int createMockObjectSize = 10; DataSourceMonitorRegistryService dataSourceMonitorRegistryService = new DefaultDataSourceMonitorRegistryService(createMockObjectSize); @@ -58,11 +56,11 @@ public void collectTest() throws Exception { logger.debug("JdbcUrlParsingService:{}", jdbcUrlParsingService); DataSourceMetric dataSourceMetric = new DefaultDataSourceMetric(dataSourceMonitorRegistryService, jdbcUrlParsingService); - TDataSourceList collect = dataSourceMetric.dataSourceList(); - assertIdIsUnique(collect.getDataSourceList()); + List collect = dataSourceMetric.dataSourceList(); + assertIdIsUnique(collect); for (MockDataSourceMonitor dataSourceMonitor : mockDataSourceMonitors) { - assertContainsAndEquals(dataSourceMonitor, collect.getDataSourceList()); + assertContainsAndEquals(dataSourceMonitor, collect); } } @@ -77,18 +75,18 @@ private MockDataSourceMonitor[] createMockDataSourceMonitor(DataSourceMonitorReg return mockDataSourceMonitors; } - private void assertIdIsUnique(List dataSourceList) { + private void assertIdIsUnique(List dataSourceList) { Set idSet = new HashSet(); - for (TDataSource dataSource : dataSourceList) { + for (DataSource dataSource : dataSourceList) { idSet.add(dataSource.getId()); } Assert.assertEquals(dataSourceList.size(), idSet.size()); } - private void assertContainsAndEquals(DataSourceMonitor dataSourceMonitor, List dataSourceList) { - for (TDataSource dataSource : dataSourceList) { + private void assertContainsAndEquals(DataSourceMonitor dataSourceMonitor, List dataSourceList) { + for (DataSource dataSource : dataSourceList) { String url = dataSourceMonitor.getUrl(); if (url.equals(dataSource.getUrl())) { diff --git a/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/DefaultMemoryMetricTest.java b/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/DefaultMemoryMetricTest.java index eabf87027bed..11ea25a91c7a 100644 --- a/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/DefaultMemoryMetricTest.java +++ b/profiler/src/test/java/com/navercorp/pinpoint/profiler/monitor/metric/memory/DefaultMemoryMetricTest.java @@ -1,11 +1,11 @@ /* - * 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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, @@ -34,8 +34,7 @@ public class DefaultMemoryMetricTest { @Test public void testJvmSupplied() { // Given - MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); - MemoryMetric memoryMetric = new DefaultMemoryMetric(memoryMXBean); + MemoryMetric memoryMetric = new DefaultMemoryMetric(); // When MemoryMetricSnapshot snapshot = memoryMetric.getSnapshot(); // Then @@ -44,20 +43,4 @@ public void testJvmSupplied() { Assert.assertTrue(snapshot.getNonHeapMax() >= -1); Assert.assertTrue(snapshot.getNonHeapUsed() > 0); } - - @Test - public void testNullMemoryUsage() { - // Given - MemoryMXBean memoryMXBean = mock(MemoryMXBean.class); - when(memoryMXBean.getHeapMemoryUsage()).thenReturn(null); - when(memoryMXBean.getNonHeapMemoryUsage()).thenReturn(null); - MemoryMetric memoryMetric = new DefaultMemoryMetric(memoryMXBean); - // When - MemoryMetricSnapshot snapshot = memoryMetric.getSnapshot(); - // Then - Assert.assertEquals(MemoryMetric.UNCOLLECTED_VALUE, snapshot.getHeapMax()); - Assert.assertEquals(MemoryMetric.UNCOLLECTED_VALUE, snapshot.getHeapUsed()); - Assert.assertEquals(MemoryMetric.UNCOLLECTED_VALUE, snapshot.getNonHeapMax()); - Assert.assertEquals(MemoryMetric.UNCOLLECTED_VALUE, snapshot.getNonHeapUsed()); - } }