Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…y-java into resources-factory
  • Loading branch information
jack-berg committed Aug 24, 2023
2 parents 0ab8496 + d64793a commit 113dd33
Show file tree
Hide file tree
Showing 15 changed files with 236 additions and 23 deletions.
3 changes: 2 additions & 1 deletion buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ dependencies {
implementation("me.champeau.jmh:jmh-gradle-plugin:0.7.1")
implementation("net.ltgt.gradle:gradle-errorprone-plugin:3.1.0")
implementation("net.ltgt.gradle:gradle-nullaway-plugin:1.6.0")
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.10")
// at the moment 1.9.0 is the latest version supported by codeql
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0")
implementation("org.owasp:dependency-check-gradle:8.4.0")
implementation("ru.vyarus:gradle-animalsniffer-plugin:1.7.1")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,6 @@ class OtelVersionClassPlugin : Plugin<Project> {
}

private fun buildOutDir(project: Project): File {
return File(project.buildDir, "generated/sources/version/java/main")
return File(project.layout.buildDirectory.asFile.get(), "generated/sources/version/java/main")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,20 @@ package io.opentelemetry.gradle
import com.squareup.wire.schema.SchemaHandler

class ProtoFieldsWireHandlerFactory : SchemaHandler.Factory{
@Deprecated("deprecated in parent")
override fun create(): SchemaHandler {
return ProtoFieldsWireHandler()
}
}

override fun create(
includes: List<String>,
excludes: List<String>,
exclusive: Boolean,
outDirectory: String,
options: Map<String, String>
): SchemaHandler {
@Suppress("DEPRECATION")
return create()
}

}
2 changes: 1 addition & 1 deletion buildSrc/src/main/kotlin/otel.bom-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ afterEvaluate {
.filter { it.plugins.hasPlugin("maven-publish") }

generateBuildSubstitutions {
val outputFile = File(buildDir, "substitutions.gradle.kts")
val outputFile = File(layout.buildDirectory.asFile.get(), "substitutions.gradle.kts")
outputs.file(outputFile)
val substitutionSnippet = bomProjects.joinToString(
separator = "\n",
Expand Down
4 changes: 2 additions & 2 deletions buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ plugins.withId("otel.publish-conventions") {
tasks {
register("generateVersionResource") {
val moduleName = otelJava.moduleName
val propertiesDir = moduleName.map { File(buildDir, "generated/properties/${it.replace('.', '/')}") }
val propertiesDir = moduleName.map { File(layout.buildDirectory.asFile.get(), "generated/properties/${it.replace('.', '/')}") }

inputs.property("project.version", project.version.toString())
outputs.dir(propertiesDir)
Expand All @@ -176,7 +176,7 @@ plugins.withId("otel.publish-conventions") {

sourceSets {
main {
output.dir("$buildDir/generated/properties", "builtBy" to "generateVersionResource")
output.dir("${layout.buildDirectory.asFile.get()}/generated/properties", "builtBy" to "generateVersionResource")
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions buildSrc/src/main/kotlin/otel.jmh-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ jmh {
}

jmhReport {
jmhResultPath = file("$buildDir/results/jmh/results.json").absolutePath
jmhReportOutput = file("$buildDir/results/jmh").absolutePath
val buildDirectory = layout.buildDirectory.asFile.get()
jmhResultPath = file("$buildDirectory/results/jmh/results.json").absolutePath
jmhReportOutput = file("$buildDirectory/results/jmh").absolutePath
}

tasks {
Expand Down
1 change: 1 addition & 0 deletions dependencyManagement/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ val DEPENDENCIES = listOf(
"io.github.netmikey.logunit:logunit-jul:2.0.0",
"io.jaegertracing:jaeger-client:1.8.1",
"io.opentelemetry.proto:opentelemetry-proto:1.0.0-alpha",
"io.opentelemetry.contrib:opentelemetry-aws-xray-propagator:1.29.0-alpha",
"io.opentracing:opentracing-api:0.33.0",
"io.opentracing:opentracing-noop:0.33.0",
"junit:junit:4.13.2",
Expand Down
24 changes: 14 additions & 10 deletions sdk-extensions/incubator/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ dependencies {
testImplementation(project(":sdk:testing"))
testImplementation(project(":sdk-extensions:autoconfigure"))
testImplementation(project(":exporters:otlp:all"))
testImplementation(project(":extensions:trace-propagators"))
// As a part of the tests we check that we can parse examples without error. The https://github.com/open-telemetry/opentelemetry-configuration/blob/main/examples/kitchen-sink.yam contains a reference to the xray propagator
testImplementation("io.opentelemetry.contrib:opentelemetry-aws-xray-propagator")
testImplementation("com.linecorp.armeria:armeria-junit5")

testImplementation("com.google.guava:guava-testlib")
Expand All @@ -51,10 +54,11 @@ dependencies {
// TODO(jack-berg): update ref to be released version when available
val configurationRef = "2107dbb6f2a6c99fe2f55d550796ee7e2286fd1d"
val configurationRepoZip = "https://github.com/open-telemetry/opentelemetry-configuration/archive/$configurationRef.zip"
val buildDirectory = layout.buildDirectory.asFile.get()

val downloadConfigurationSchema by tasks.registering(Download::class) {
src(configurationRepoZip)
dest("$buildDir/configuration/opentelemetry-configuration.zip")
dest("$buildDirectory/configuration/opentelemetry-configuration.zip")
overwrite(false)
}

Expand All @@ -67,12 +71,12 @@ val unzipConfigurationSchema by tasks.registering(Copy::class) {
val pathParts = path.split("/")
path = pathParts.subList(1, pathParts.size).joinToString("/")
})
into("$buildDir/configuration/")
into("$buildDirectory/configuration/")
}

jsonSchema2Pojo {
sourceFiles = setOf(file("$buildDir/configuration/schema"))
targetDirectory = file("$buildDir/generated/sources/js2p/java/main")
sourceFiles = setOf(file("$buildDirectory/configuration/schema"))
targetDirectory = file("$buildDirectory/generated/sources/js2p/java/main")
targetPackage = "io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model"

// Clear old source files to avoid contaminated source dir when updating
Expand Down Expand Up @@ -100,8 +104,8 @@ generateJsonSchema2Pojo.dependsOn(unzipConfigurationSchema)
val jsonSchema2PojoPostProcessing by tasks.registering(Copy::class) {
dependsOn(generateJsonSchema2Pojo)

from("$buildDir/generated/sources/js2p")
into("$buildDir/generated/sources/js2p-tmp")
from("$buildDirectory/generated/sources/js2p")
into("$buildDirectory/generated/sources/js2p-tmp")
filter {
it
// Remove @Nullable annotation so it can be deterministically added later
Expand All @@ -117,13 +121,13 @@ val jsonSchema2PojoPostProcessing by tasks.registering(Copy::class) {
val overwriteJs2p by tasks.registering(Copy::class) {
dependsOn(jsonSchema2PojoPostProcessing)

from("$buildDir/generated/sources/js2p-tmp")
into("$buildDir/generated/sources/js2p")
from("$buildDirectory/generated/sources/js2p-tmp")
into("$buildDirectory/generated/sources/js2p")
}
val deleteJs2pTmp by tasks.registering(Delete::class) {
dependsOn(overwriteJs2p)

delete("$buildDir/generated/sources/js2p-tmp/")
delete("$buildDirectory/generated/sources/js2p-tmp/")
}

tasks.getByName("compileJava").dependsOn(deleteJs2pTmp)
Expand All @@ -139,7 +143,7 @@ tasks {
environment(
mapOf(
// Expose the kitchen sink example file to tests
"CONFIG_EXAMPLE_DIR" to "$buildDir/configuration/examples/"
"CONFIG_EXAMPLE_DIR" to "$buildDirectory/configuration/examples/"
)
)
}
Expand Down
Binary file removed sdk-extensions/incubator/img/traceconfigz.png
Binary file not shown.
Binary file removed sdk-extensions/incubator/img/tracez-details.png
Binary file not shown.
Binary file removed sdk-extensions/incubator/img/tracez-table.png
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@ public OpenTelemetrySdk create(

OpenTelemetrySdkBuilder builder = OpenTelemetrySdk.builder();

Resource resource = Resource.getDefault();
if (model.getResource() != null) {
resource = ResourceFactory.getInstance().create(model.getResource(), spiHelper, closeables);
}
builder.setPropagators(
PropagatorsFactory.getInstance().create(model.getPropagators(), spiHelper, closeables));

Resource resource =
ResourceFactory.getInstance().create(model.getResource(), spiHelper, closeables);

if (model.getLoggerProvider() != null) {
builder.setLoggerProvider(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.sdk.extension.incubator.fileconfig;

import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator;
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.TextMapPropagator;
import io.opentelemetry.sdk.autoconfigure.internal.NamedSpiManager;
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurablePropagatorProvider;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
import java.io.Closeable;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.Nullable;

final class PropagatorsFactory implements Factory<List<String>, ContextPropagators> {

private static final PropagatorsFactory INSTANCE = new PropagatorsFactory();

private PropagatorsFactory() {}

static PropagatorsFactory getInstance() {
return INSTANCE;
}

@Override
public ContextPropagators create(
@Nullable List<String> model, SpiHelper spiHelper, List<Closeable> closeables) {
if (model == null || model.isEmpty()) {
model = Arrays.asList("tracecontext", "baggage");
}

if (model.contains("none")) {
if (model.size() > 1) {
throw new ConfigurationException(
"propagators contains \"none\" along with other propagators");
}
return ContextPropagators.noop();
}

NamedSpiManager<TextMapPropagator> spiPropagatorsManager =
spiHelper.loadConfigurable(
ConfigurablePropagatorProvider.class,
ConfigurablePropagatorProvider::getName,
ConfigurablePropagatorProvider::getPropagator,
DefaultConfigProperties.createForTest(Collections.emptyMap()));
Set<TextMapPropagator> propagators = new LinkedHashSet<>();
for (String propagator : model) {
propagators.add(getPropagator(propagator, spiPropagatorsManager));
}

return ContextPropagators.create(TextMapPropagator.composite(propagators));
}

private static TextMapPropagator getPropagator(
String name, NamedSpiManager<TextMapPropagator> spiPropagatorsManager) {
if (name.equals("tracecontext")) {
return W3CTraceContextPropagator.getInstance();
}
if (name.equals("baggage")) {
return W3CBaggagePropagator.getInstance();
}

TextMapPropagator spiPropagator = spiPropagatorsManager.getByName(name);
if (spiPropagator != null) {
return spiPropagator;
}
throw new ConfigurationException("Unrecognized value for otel.propagators: " + name);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,15 @@
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator;
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.TextMapPropagator;
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
import io.opentelemetry.extension.trace.propagation.B3Propagator;
import io.opentelemetry.extension.trace.propagation.JaegerPropagator;
import io.opentelemetry.extension.trace.propagation.OtTracePropagator;
import io.opentelemetry.internal.testing.CleanupExtension;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
Expand Down Expand Up @@ -82,7 +89,14 @@ void create_InvalidFileFormat() {
@Test
void create_Defaults() {
List<Closeable> closeables = new ArrayList<>();
OpenTelemetrySdk expectedSdk = OpenTelemetrySdk.builder().build();
OpenTelemetrySdk expectedSdk =
OpenTelemetrySdk.builder()
.setPropagators(
ContextPropagators.create(
TextMapPropagator.composite(
W3CTraceContextPropagator.getInstance(),
W3CBaggagePropagator.getInstance())))
.build();
cleanup.addCloseable(expectedSdk);

OpenTelemetrySdk sdk =
Expand All @@ -104,6 +118,15 @@ void create_Configured() {
.build();
OpenTelemetrySdk expectedSdk =
OpenTelemetrySdk.builder()
.setPropagators(
ContextPropagators.create(
TextMapPropagator.composite(
W3CTraceContextPropagator.getInstance(),
W3CBaggagePropagator.getInstance(),
OtTracePropagator.getInstance(),
B3Propagator.injectingMultiHeaders(),
B3Propagator.injectingSingleHeader(),
JaegerPropagator.getInstance())))
.setLoggerProvider(
SdkLoggerProvider.builder()
.setResource(expectedResource)
Expand Down Expand Up @@ -143,6 +166,9 @@ void create_Configured() {
.create(
new OpenTelemetryConfiguration()
.withFileFormat("0.1")
.withPropagators(
Arrays.asList(
"tracecontext", "baggage", "ottrace", "b3multi", "b3", "jaeger"))
.withResource(
new Resource()
.withAttributes(
Expand Down

0 comments on commit 113dd33

Please sign in to comment.