Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions workflow-tracing-papa/api/workflow-tracing-papa.api
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
public final class com/squareup/workflow1/tracing/papa/PapaSafeTrace : com/squareup/workflow1/tracing/SafeTraceInterface {
public fun <init> ()V
public fun <init> (Z)V
public synthetic fun <init> (ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kotlin generates this when you have parameters with default values - see https://stackoverflow.com/a/53912965 for details

public fun beginAsyncSection (Ljava/lang/String;I)V
public fun beginSection (Ljava/lang/String;)V
public fun endAsyncSection (Ljava/lang/String;I)V
Expand Down
2 changes: 1 addition & 1 deletion workflow-tracing-papa/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ android {

dependencies {
api(libs.androidx.collection)
api(libs.androidx.tracing.ktx)
api(libs.kotlin.jdk8)
api(libs.kotlinx.coroutines.core)
api(libs.squareup.papa)

api(project(":workflow-core"))
api(project(":workflow-runtime"))
Expand Down
14 changes: 2 additions & 12 deletions workflow-tracing-papa/dependencies/releaseRuntimeClasspath.txt
Original file line number Diff line number Diff line change
@@ -1,21 +1,11 @@
androidx.annotation:annotation-experimental:1.1.0
androidx.annotation:annotation-jvm:1.9.1
androidx.annotation:annotation:1.9.1
androidx.arch.core:core-common:2.0.0
androidx.collection:collection-jvm:1.5.0
androidx.collection:collection:1.5.0
androidx.core:core:1.6.0
androidx.lifecycle:lifecycle-common:2.0.0
androidx.lifecycle:lifecycle-runtime:2.0.0
androidx.tracing:tracing-ktx:1.1.0
androidx.tracing:tracing:1.1.0
androidx.versionedparcelable:versionedparcelable:1.1.1
com.squareup.curtains:curtains:1.2.5
androidx.tracing:tracing-ktx:1.2.0
androidx.tracing:tracing:1.2.0
com.squareup.okio:okio-jvm:3.3.0
com.squareup.okio:okio:3.3.0
com.squareup.papa:papa-main-trace:0.30
com.squareup.papa:papa-safetrace:0.30
com.squareup.papa:papa:0.30
org.jetbrains.kotlin:kotlin-bom:2.1.21
org.jetbrains.kotlin:kotlin-stdlib-common:2.1.21
org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.21
Expand Down
Original file line number Diff line number Diff line change
@@ -1,41 +1,45 @@
package com.squareup.workflow1.tracing.papa

import androidx.tracing.Trace
import androidx.tracing.trace
import com.squareup.workflow1.tracing.SafeTraceInterface
import papa.SafeTrace

/**
* Production implementation of [SafeTraceInterface] that delegates to the actual [SafeTrace].
* Production implementation of [SafeTraceInterface] that uses androidx.tracing.Trace.
*
* @param isTraceable Whether tracing is enabled. Clients should configure this directly.
* Defaults to false for backwards compatibility.
*/
class PapaSafeTrace : SafeTraceInterface {
override val isTraceable: Boolean
get() = SafeTrace.isTraceable
class PapaSafeTrace(
override val isTraceable: Boolean = false
) : SafeTraceInterface {

override val isCurrentlyTracing: Boolean
get() = SafeTrace.isCurrentlyTracing
get() = Trace.isEnabled()

override fun beginSection(label: String) {
SafeTrace.beginSection(label)
Trace.beginSection(label)
}

override fun endSection() {
SafeTrace.endSection()
Trace.endSection()
}

override fun beginAsyncSection(
name: String,
cookie: Int
) {
SafeTrace.beginAsyncSection(name, cookie)
Trace.beginAsyncSection(name, cookie)
}

override fun endAsyncSection(
name: String,
cookie: Int
) {
SafeTrace.endAsyncSection(name, cookie)
Trace.endAsyncSection(name, cookie)
}

override fun logSection(info: String) {
SafeTrace.logSection(info)
trace(info) {}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,11 @@ import kotlin.reflect.KType
* [WorkflowRuntimeTracer] plugin to add [SafeTraceInterface] traces.
* By default this uses [PapaSafeTrace] which will use [androidx.tracing.Trace] calls that
* will be received by the system and included in Perfetto traces.
*
* @param safeTrace The [SafeTraceInterface] implementation to use for tracing.
*/
class WorkflowPapaTracer(
private val safeTrace: SafeTraceInterface = PapaSafeTrace()
private val safeTrace: SafeTraceInterface = PapaSafeTrace(isTraceable = false)
) : WorkflowRuntimeTracer() {

private data class NameAndCookie(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,22 @@ internal class WorkflowPapaTracerTest {
assertNotNull(papaTracer)
}

@Test
fun `PapaSafeTrace can be configured with isTraceable`() {
val traceableTrace = PapaSafeTrace(isTraceable = true)
assertEquals(true, traceableTrace.isTraceable)

val nonTraceableTrace = PapaSafeTrace(isTraceable = false)
assertEquals(false, nonTraceableTrace.isTraceable)
}

@Test
fun `WorkflowPapaTracer can be configured with custom SafeTrace`() {
val customTrace = FakeSafeTrace(isTraceable = true)
val tracer = WorkflowPapaTracer(safeTrace = customTrace)
assertNotNull(tracer)
}

@Test
fun `onPropsChanged delegates to proceed function`() {
val testWorkflow = TestWorkflow()
Expand Down
Loading