Convert gc duration metrics to seconds (#12244)
This commit is contained in:
parent
54c7b16625
commit
521109e29b
|
@ -6,13 +6,15 @@
|
||||||
package io.opentelemetry.instrumentation.runtimemetrics.java17.internal;
|
package io.opentelemetry.instrumentation.runtimemetrics.java17.internal;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
|
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
|
||||||
* any time.
|
* any time.
|
||||||
*/
|
*/
|
||||||
public final class DurationUtil {
|
public final class DurationUtil {
|
||||||
private static final double NANOS_PER_SECOND = 1e9;
|
private static final double NANOS_PER_SECOND = TimeUnit.SECONDS.toNanos(1);
|
||||||
|
private static final double MILLIS_PER_SECOND = TimeUnit.SECONDS.toMillis(1);
|
||||||
|
|
||||||
/** Returns the duration as seconds, with fractional part included. */
|
/** Returns the duration as seconds, with fractional part included. */
|
||||||
public static double toSeconds(Duration duration) {
|
public static double toSeconds(Duration duration) {
|
||||||
|
@ -20,5 +22,9 @@ public final class DurationUtil {
|
||||||
return epochSecs + duration.getNano() / NANOS_PER_SECOND;
|
return epochSecs + duration.getNano() / NANOS_PER_SECOND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static double millisToSeconds(long milliseconds) {
|
||||||
|
return milliseconds / MILLIS_PER_SECOND;
|
||||||
|
}
|
||||||
|
|
||||||
private DurationUtil() {}
|
private DurationUtil() {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import io.opentelemetry.api.metrics.DoubleHistogram;
|
||||||
import io.opentelemetry.api.metrics.Meter;
|
import io.opentelemetry.api.metrics.Meter;
|
||||||
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
|
||||||
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants;
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants;
|
||||||
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.DurationUtil;
|
||||||
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RecordedEventHandler;
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RecordedEventHandler;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
@ -40,7 +41,7 @@ public final class G1GarbageCollectionHandler implements RecordedEventHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void accept(RecordedEvent ev) {
|
public void accept(RecordedEvent ev) {
|
||||||
histogram.record(ev.getDouble(Constants.DURATION), ATTR);
|
histogram.record(DurationUtil.millisToSeconds(ev.getLong(Constants.DURATION)), ATTR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,7 @@ import io.opentelemetry.api.metrics.DoubleHistogram;
|
||||||
import io.opentelemetry.api.metrics.Meter;
|
import io.opentelemetry.api.metrics.Meter;
|
||||||
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
|
||||||
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants;
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants;
|
||||||
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.DurationUtil;
|
||||||
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RecordedEventHandler;
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RecordedEventHandler;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
@ -40,7 +41,7 @@ public final class OldGarbageCollectionHandler implements RecordedEventHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void accept(RecordedEvent ev) {
|
public void accept(RecordedEvent ev) {
|
||||||
histogram.record(ev.getDouble(Constants.DURATION), attributes);
|
histogram.record(DurationUtil.millisToSeconds(ev.getLong(Constants.DURATION)), attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,6 +10,7 @@ import io.opentelemetry.api.metrics.DoubleHistogram;
|
||||||
import io.opentelemetry.api.metrics.Meter;
|
import io.opentelemetry.api.metrics.Meter;
|
||||||
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.JfrFeature;
|
||||||
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants;
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.Constants;
|
||||||
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.DurationUtil;
|
||||||
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RecordedEventHandler;
|
import io.opentelemetry.instrumentation.runtimemetrics.java17.internal.RecordedEventHandler;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
@ -41,7 +42,7 @@ public final class YoungGarbageCollectionHandler implements RecordedEventHandler
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void accept(RecordedEvent ev) {
|
public void accept(RecordedEvent ev) {
|
||||||
histogram.record(ev.getDouble(Constants.DURATION), attributes);
|
histogram.record(DurationUtil.millisToSeconds(ev.getLong(Constants.DURATION)), attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -5,22 +5,24 @@
|
||||||
|
|
||||||
package io.opentelemetry.instrumentation.runtimemetrics.java17.internal;
|
package io.opentelemetry.instrumentation.runtimemetrics.java17.internal;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
class DurationUtilTest {
|
class DurationUtilTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldConvertDurationToSeconds() {
|
void convertDurationToSeconds() {
|
||||||
// Given
|
|
||||||
Duration duration = Duration.ofSeconds(7, 144);
|
Duration duration = Duration.ofSeconds(7, 144);
|
||||||
|
|
||||||
// When
|
|
||||||
double seconds = DurationUtil.toSeconds(duration);
|
double seconds = DurationUtil.toSeconds(duration);
|
||||||
|
assertThat(seconds).isEqualTo(7.000000144);
|
||||||
|
}
|
||||||
|
|
||||||
// Then
|
@Test
|
||||||
assertEquals(7.000000144, seconds);
|
void convertMillisSeconds() {
|
||||||
|
double seconds = DurationUtil.millisToSeconds(TimeUnit.SECONDS.toMillis(5));
|
||||||
|
assertThat(seconds).isEqualTo(5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue