Skip to content

Commit

Permalink
Polish CompilationMetrics
Browse files Browse the repository at this point in the history
  • Loading branch information
shakuzen committed Dec 16, 2019
1 parent 9f8d0a0 commit 114d62b
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,24 +28,29 @@

import static java.util.Collections.emptyList;

/**
* {@link MeterBinder} for JVM compilation metrics.
*
* @since 1.4.0
*/
@NonNullApi
@NonNullFields
public class CompilationMetrics implements MeterBinder {
public class JvmCompilationMetrics implements MeterBinder {
private final Iterable<Tag> tags;

public CompilationMetrics() {
public JvmCompilationMetrics() {
this(emptyList());
}

public CompilationMetrics(Iterable<Tag> tags) {
public JvmCompilationMetrics(Iterable<Tag> tags) {
this.tags = tags;
}

@Override
public void bindTo(MeterRegistry registry) {
CompilationMXBean compilationBean = ManagementFactory.getCompilationMXBean();
if (compilationBean.isCompilationTimeMonitoringSupported()) {
FunctionCounter.builder("jvm.compilation.time.total", compilationBean, CompilationMXBean::getTotalCompilationTime)
if (compilationBean != null && compilationBean.isCompilationTimeMonitoringSupported()) {
FunctionCounter.builder("jvm.compilation.time", compilationBean, CompilationMXBean::getTotalCompilationTime)
.tags(Tags.concat(tags, "compiler", compilationBean.getName()))
.description("The approximate accumulated elapsed time spent in compilation")
.baseUnit("ms")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,26 @@
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.junit.jupiter.api.Test;

import java.lang.management.CompilationMXBean;
import java.lang.management.ManagementFactory;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.junit.Assume.assumeTrue;

/**
* Tests for {@link JvmCompilationMetrics}.
*/
class JvmCompilationMetricsTest {

MeterRegistry registry = new SimpleMeterRegistry();

class CompilationMetricsTest {
@Test
void compilationTimeMetric() {
MeterRegistry registry = new SimpleMeterRegistry();
new CompilationMetrics().bindTo(registry);
new JvmCompilationMetrics().bindTo(registry);

CompilationMXBean compilationMXBean = ManagementFactory.getCompilationMXBean();
assumeTrue(compilationMXBean != null && compilationMXBean.isCompilationTimeMonitoringSupported());

assertThat(registry.get("jvm.compilation.time.total").functionCounter().count()).isGreaterThan(0);
assertThat(registry.get("jvm.compilation.time").functionCounter().count()).isGreaterThan(0);
}
}

0 comments on commit 114d62b

Please sign in to comment.