Skip to content

Commit 10eda19

Browse files
authored
Remove Java9VersionSpecific clock implementation (#7221)
1 parent aa17528 commit 10eda19

File tree

7 files changed

+15
-241
lines changed

7 files changed

+15
-241
lines changed

sdk/all/src/test/java/io/opentelemetry/sdk/common/SystemClockTest.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,21 @@
99

1010
import org.junit.jupiter.api.Test;
1111
import org.junit.jupiter.api.condition.DisabledOnJre;
12-
import org.junit.jupiter.api.condition.EnabledOnJre;
1312
import org.junit.jupiter.api.condition.JRE;
1413

15-
// This test is placed in the all artifact instead of the common one so it uses the dependency jar
16-
// instead of the classes directly, which allows verifying mrjar behavior.
1714
class SystemClockTest {
1815

19-
@EnabledOnJre(JRE.JAVA_8)
2016
@Test
21-
void now_millisPrecision() {
22-
// If we test many times, we can be fairly sure we didn't just get lucky with having a rounded
23-
// result on a higher than expected precision timestamp.
24-
for (int i = 0; i < 100; i++) {
25-
long now = SystemClock.getInstance().now();
26-
assertThat(now % 1000000).isZero();
27-
}
17+
void now() {
18+
assertThat(SystemClock.getInstance().now()).isNotZero();
19+
assertThat(SystemClock.getInstance().now(true)).isNotZero();
20+
assertThat(SystemClock.getInstance().now(false)).isNotZero();
2821
}
2922

30-
@DisabledOnJre(JRE.JAVA_8)
3123
@Test
24+
// On java 8, the APIs used to produce micro precision are available but still only produce millis
25+
// precision
26+
@DisabledOnJre(JRE.JAVA_8)
3227
void now_microsPrecision() {
3328
// If we test many times, we can be fairly sure we get at least one timestamp that isn't
3429
// coincidentally rounded to millis precision.
@@ -52,8 +47,10 @@ void now_lowPrecision() {
5247
}
5348
}
5449

55-
@DisabledOnJre(JRE.JAVA_8)
5650
@Test
51+
// On java 8, the APIs used to produce micro precision are available but still only produce millis
52+
// precision
53+
@DisabledOnJre(JRE.JAVA_8)
5754
void now_highPrecision() {
5855
// If we test many times, we can be fairly sure we get at least one timestamp that isn't
5956
// coincidentally rounded to millis precision.

sdk/common/build.gradle.kts

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ apply<OtelVersionClassPlugin>()
1010
description = "OpenTelemetry SDK Common"
1111
otelJava.moduleName.set("io.opentelemetry.sdk.common")
1212

13-
val mrJarVersions = listOf(9)
14-
1513
dependencies {
1614
api(project(":api:all"))
1715

@@ -23,61 +21,9 @@ dependencies {
2321
testImplementation("com.google.guava:guava-testlib")
2422
}
2523

26-
for (version in mrJarVersions) {
27-
sourceSets {
28-
create("java$version") {
29-
java {
30-
setSrcDirs(listOf("src/main/java$version"))
31-
}
32-
}
33-
}
34-
35-
tasks {
36-
named<JavaCompile>("compileJava${version}Java") {
37-
sourceCompatibility = "$version"
38-
targetCompatibility = "$version"
39-
options.release.set(version)
40-
}
41-
}
42-
43-
configurations {
44-
named("java${version}Implementation") {
45-
extendsFrom(configurations["implementation"])
46-
}
47-
}
48-
49-
dependencies {
50-
// Common to reference classes in main sourceset from Java 9 one (e.g., to return a common interface)
51-
add("java${version}Implementation", files(sourceSets.main.get().output.classesDirs))
52-
}
53-
}
54-
5524
tasks {
56-
withType(Jar::class) {
57-
val sourcePathProvider = if (name.equals("jar")) {
58-
{ ss: SourceSet? -> ss?.output }
59-
} else if (name.equals("sourcesJar")) {
60-
{ ss: SourceSet? -> ss?.java }
61-
} else {
62-
{ _: SourceSet -> project.objects.fileCollection() }
63-
}
64-
65-
for (version in mrJarVersions) {
66-
into("META-INF/versions/$version") {
67-
from(sourcePathProvider(sourceSets["java$version"]))
68-
}
69-
}
70-
manifest.attributes(
71-
"Multi-Release" to "true",
72-
)
73-
}
74-
7525
test {
7626
// For checking version number included in Resource.
7727
systemProperty("otel.test.project-version", project.version.toString())
7828
}
79-
80-
check {
81-
dependsOn(testing.suites)
82-
}
8329
}

sdk/common/src/main/java/io/opentelemetry/sdk/common/SystemClock.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
package io.opentelemetry.sdk.common;
77

8-
import io.opentelemetry.sdk.internal.JavaVersionSpecific;
8+
import java.time.Instant;
99
import java.util.concurrent.TimeUnit;
1010
import javax.annotation.concurrent.ThreadSafe;
1111

1212
/**
13-
* A {@link Clock} that uses {@link JavaVersionSpecific#currentTimeNanos()} and {@link
14-
* System#nanoTime()}.
13+
* A {@link Clock} that uses {@link java.time.Clock#systemUTC()}, {@link
14+
* System#currentTimeMillis()}, and {@link System#nanoTime()}.
1515
*/
1616
@ThreadSafe
1717
final class SystemClock implements Clock {
@@ -33,7 +33,8 @@ public long now() {
3333
@Override
3434
public long now(boolean highPrecision) {
3535
if (highPrecision) {
36-
return JavaVersionSpecific.get().currentTimeNanos();
36+
Instant now = java.time.Clock.systemUTC().instant();
37+
return TimeUnit.SECONDS.toNanos(now.getEpochSecond()) + now.getNano();
3738
}
3839
return TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis());
3940
}

sdk/common/src/main/java/io/opentelemetry/sdk/internal/CurrentJavaVersionSpecific.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

sdk/common/src/main/java/io/opentelemetry/sdk/internal/JavaVersionSpecific.java

Lines changed: 0 additions & 64 deletions
This file was deleted.

sdk/common/src/main/java9/io/opentelemetry/sdk/internal/CurrentJavaVersionSpecific.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

sdk/common/src/main/java9/io/opentelemetry/sdk/internal/Java9VersionSpecific.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)