aboutsummaryrefslogtreecommitdiff
path: root/api/testing
diff options
context:
space:
mode:
Diffstat (limited to 'api/testing')
-rw-r--r--api/testing/build.gradle.kts24
-rw-r--r--api/testing/src/test/java/io/perfmark/apitesting/ArtifactTest.java62
2 files changed, 86 insertions, 0 deletions
diff --git a/api/testing/build.gradle.kts b/api/testing/build.gradle.kts
new file mode 100644
index 0000000..fdcfb77
--- /dev/null
+++ b/api/testing/build.gradle.kts
@@ -0,0 +1,24 @@
+buildscript {
+ extra.apply{
+ set("moduleName", "io.perfmark.apitesting")
+ }
+}
+
+description = "PerfMark API Tests"
+
+dependencies {
+ testImplementation(libs.truth)
+
+ testImplementation(project(":perfmark-api"))
+ testImplementation(project(":perfmark-tracewriter"))
+ testImplementation(project(":perfmark-traceviewer"))
+ testImplementation(project(":perfmark-agent"))
+ testRuntimeOnly(project(":perfmark-java6"))
+ testRuntimeOnly(project(":perfmark-java7"))
+ testRuntimeOnly(project(":perfmark-java9"))
+}
+
+tasks.named<JavaCompile>("compileTestJava") {
+ sourceCompatibility = JavaVersion.VERSION_17.toString()
+ targetCompatibility = JavaVersion.VERSION_17.toString()
+}
diff --git a/api/testing/src/test/java/io/perfmark/apitesting/ArtifactTest.java b/api/testing/src/test/java/io/perfmark/apitesting/ArtifactTest.java
new file mode 100644
index 0000000..f6e4155
--- /dev/null
+++ b/api/testing/src/test/java/io/perfmark/apitesting/ArtifactTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2021 Carl Mastrangelo
+ *
+ * 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 io.perfmark.apitesting;
+
+import static org.junit.Assert.assertNotNull;
+
+import com.google.common.truth.Truth;
+import io.perfmark.PerfMark;
+import io.perfmark.traceviewer.TraceEventViewer;
+import io.perfmark.tracewriter.TraceEventWriter;
+import java.util.List;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+@RunWith(JUnit4.class)
+public class ArtifactTest {
+ @Test
+ public void hasPackage() throws Exception {
+ List<String> reflectiveClasses =
+ List.of(
+ "io.perfmark.impl.SecretPerfMarkImpl$PerfMarkImpl",
+ "io.perfmark.java9.SecretVarHandleMarkHolderProvider$VarHandleMarkHolderProvider",
+ "io.perfmark.java6.SecretSynchronizedMarkHolderProvider$SynchronizedMarkHolderProvider",
+ "io.perfmark.java7.SecretMethodHandleGenerator$MethodHandleGenerator"
+ );
+ for (String reflectiveClass : reflectiveClasses) {
+ Class<?> clz = Class.forName(reflectiveClass, false, getClass().getClassLoader());
+ checkPackage(clz.getPackage());
+ }
+ checkPackage(PerfMark.class.getPackage());
+ checkPackage(TraceEventWriter.class.getPackage());
+ checkPackage(TraceEventViewer.class.getPackage());
+ }
+
+ private static void checkPackage(Package pkg) {
+ Truth.assertWithMessage(pkg.toString()).that(pkg.getImplementationTitle()).contains("PerfMark");
+
+ String vers = pkg.getImplementationVersion();
+ assertNotNull(vers);
+ String[] path = vers.split("\\.", 3);
+ Truth.assertThat(path).hasLength(3);
+ Truth.assertThat(Long.parseLong(path[0])).isAtLeast(0);
+ Truth.assertThat(Long.parseLong(path[1])).isAtLeast(1);
+
+ Truth.assertThat(pkg.getImplementationVendor()).isNotEmpty();
+ }
+}