Skip to content

Commit 8b5087f

Browse files
authored
feat(android): add profiling link (#982)
1 parent 5158ce6 commit 8b5087f

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

configuration/src/main/kotlin/com/malinskiy/marathon/config/vendor/android/ProfilingConfiguration.kt

+1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ import java.io.File
66
data class ProfilingConfiguration(
77
@JsonProperty("enabled") val enabled: Boolean = false,
88
@JsonProperty("pbtxt") val pbtxt: File? = null,
9+
@JsonProperty("urlTemplate") val urlTemplate: String = "https://cloud.marathonlabs.io/"
910
)

core/src/main/kotlin/com/malinskiy/marathon/report/allure/AllureReporter.kt

+17-8
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ import com.github.automatedowl.tools.AllureEnvironmentWriter.allureEnvironmentWr
44
import com.google.common.collect.ImmutableMap
55
import com.malinskiy.marathon.analytics.internal.sub.ExecutionReport
66
import com.malinskiy.marathon.config.Configuration
7+
import com.malinskiy.marathon.config.vendor.VendorConfiguration
78
import com.malinskiy.marathon.device.DeviceInfo
89
import com.malinskiy.marathon.execution.AttachmentType
910
import com.malinskiy.marathon.execution.TestResult
1011
import com.malinskiy.marathon.execution.TestStatus
12+
import com.malinskiy.marathon.extension.relativePathTo
1113
import com.malinskiy.marathon.report.Reporter
1214
import com.malinskiy.marathon.test.Test
1315
import com.malinskiy.marathon.test.toClassName
@@ -21,6 +23,7 @@ import io.qameta.allure.model.Status
2123
import io.qameta.allure.model.StatusDetails
2224
import io.qameta.allure.util.ResultsUtils
2325
import java.io.File
26+
import java.net.URLEncoder
2427
import java.util.Locale
2528
import java.util.UUID
2629
import io.qameta.allure.Description as JavaDescription
@@ -81,26 +84,32 @@ class AllureReporter(val configuration: Configuration, private val outputDirecto
8184

8285
val links = mutableListOf<Link>()
8386

84-
val allureAttachments: List<Attachment> = testResult.attachments.mapNotNull {
85-
if (it.empty) {
87+
val allureAttachments: List<Attachment> = testResult.attachments.mapNotNull { attachment ->
88+
if (attachment.empty) {
8689
null
8790
} else {
88-
when (it.type) {
91+
val androidConfiguration = configuration.vendorConfiguration as? VendorConfiguration.AndroidConfiguration
92+
when (attachment.type) {
8993
AttachmentType.PROFILING -> links.add(
9094
Link().apply {
91-
setUrl("https://cloud.marathonlabs.io/trace/view?todo=x")
92-
setName("Tracing")
95+
androidConfiguration?.profilingConfiguration?.urlTemplate?.let { urlTemplate ->
96+
val relativePath = '/' + attachment.file.relativePathTo(configuration.outputDir)
97+
val urlEncodedPath = URLEncoder.encode(relativePath, Charsets.UTF_8)
98+
val url = urlTemplate.replace("{}", urlEncodedPath)
99+
setUrl(url)
100+
setName("Tracing")
101+
}
93102
}
94103
)
95104

96105
else -> Unit
97106
}
98-
val name = it.name ?: it.type.name.lowercase(Locale.ENGLISH)
107+
val name = attachment.name ?: attachment.type.name.lowercase(Locale.ENGLISH)
99108
.replaceFirstChar { cher -> if (cher.isLowerCase()) cher.titlecase(Locale.ENGLISH) else cher.toString() }
100109
Attachment()
101110
.setName(name)
102-
.setSource(it.file.absolutePath)
103-
.setType(it.type.mimeType)
111+
.setSource(attachment.file.absolutePath)
112+
.setType(attachment.type.mimeType)
104113
}
105114
}
106115

0 commit comments

Comments
 (0)