Skip to content

Commit f5bbbb7

Browse files
committed
Adding code to check R8 rules around grpc exporters
1 parent 55ab255 commit f5bbbb7

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

core/consumer-rules.pro

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
-dontwarn com.google.auto.value.AutoValue$Builder
22
-dontwarn com.google.auto.value.AutoValue$CopyAnnotations
33
-dontwarn com.google.auto.value.AutoValue
4-
-dontwarn com.google.auto.value.extension.memoized.Memoized
4+
-dontwarn com.google.auto.value.extension.memoized.Memoized
5+
-dontwarn io.grpc.Channel
6+
-dontwarn io.grpc.MethodDescriptor$Builder
7+
-dontwarn io.grpc.MethodDescriptor$Marshaller
8+
-dontwarn io.grpc.MethodDescriptor$MethodType
9+
-dontwarn io.grpc.MethodDescriptor
10+
-dontwarn io.grpc.stub.AbstractFutureStub
11+
-dontwarn io.grpc.stub.AbstractStub$StubFactory
12+
-dontwarn io.grpc.stub.AbstractStub

demo-app/src/main/java/io/opentelemetry/android/demo/OtelDemoApplication.kt

+22-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import android.app.Application
1010
import android.util.Log
1111
import io.opentelemetry.android.OpenTelemetryRum
1212
import io.opentelemetry.android.OpenTelemetryRumBuilder
13-
import io.opentelemetry.android.agent.setSlowRenderingDetectionPollInterval
1413
import io.opentelemetry.android.config.OtelRumConfig
1514
import io.opentelemetry.android.features.diskbuffering.DiskBufferingConfiguration
1615
import io.opentelemetry.api.common.AttributeKey.stringKey
@@ -19,9 +18,9 @@ import io.opentelemetry.api.incubator.events.EventBuilder
1918
import io.opentelemetry.api.trace.Tracer
2019
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter
2120
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter
21+
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter
22+
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter
2223
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider
23-
import java.time.Duration
24-
import kotlin.math.log
2524

2625
const val TAG = "otel.demo"
2726

@@ -62,6 +61,26 @@ class OtelDemoApplication : Application() {
6261
} catch (e: Exception) {
6362
Log.e(TAG, "Oh no!", e)
6463
}
64+
65+
// This is needed to get R8 missing rules warnings.
66+
initializeOtelWithGrpc()
67+
}
68+
69+
// This is not used but it's needed to verify that our consumer proguard rules cover this use case.
70+
private fun initializeOtelWithGrpc() {
71+
val builder = OpenTelemetryRum.builder(this)
72+
.addSpanExporterCustomizer {
73+
OtlpGrpcSpanExporter.builder().build()
74+
}
75+
.addLogRecordExporterCustomizer {
76+
OtlpGrpcLogRecordExporter.builder().build()
77+
}
78+
79+
// This is an overly-cautious measure to prevent R8 from discarding away the whole method
80+
// in case it identifies that it's actually not doing anything meaningful.
81+
if (System.currentTimeMillis() < 0) {
82+
print(builder)
83+
}
6584
}
6685

6786
companion object {

0 commit comments

Comments
 (0)