diff --git a/sidecar/src/test/kotlin/dev/sanderling/sidecar/DriverServiceTest.kt b/sidecar/src/test/kotlin/dev/sanderling/sidecar/DriverServiceTest.kt index 77f148f..65d046b 100644 --- a/sidecar/src/test/kotlin/dev/sanderling/sidecar/DriverServiceTest.kt +++ b/sidecar/src/test/kotlin/dev/sanderling/sidecar/DriverServiceTest.kt @@ -5,6 +5,7 @@ import dev.sanderling.driver.v1.Duration import dev.sanderling.driver.v1.Empty import dev.sanderling.driver.v1.EraseTextRequest import dev.sanderling.driver.v1.LaunchRequest +import dev.sanderling.driver.v1.MetricsRequest import dev.sanderling.driver.v1.Point import dev.sanderling.driver.v1.PressKeyRequest import dev.sanderling.driver.v1.RecentLogsRequest @@ -338,6 +339,40 @@ class DriverServiceTest { assertEquals("boom", response.getEntries(0).message) } + // With no explicit bundle in the request, metrics must sample the app the + // service launched; otherwise CPU/memory are read from the wrong process. + @Test fun metricsFallsBackToLaunchedBundleWhenRequestOmitsIt() { + var sampled: String? = null + val backend = object : DriverBackend by StubDriverBackend("android") { + override fun metrics(bundleId: String): MetricsSample { + sampled = bundleId + return MetricsSample(0.0, 0L, 0L) + } + } + val client = newClient(backend) + + client.launch(LaunchRequest.newBuilder().setBundleId("com.launched").build()) + client.metrics(MetricsRequest.getDefaultInstance()) + + assertEquals("com.launched", sampled) + } + + @Test fun metricsRequestBundleOverridesLaunchedBundle() { + var sampled: String? = null + val backend = object : DriverBackend by StubDriverBackend("android") { + override fun metrics(bundleId: String): MetricsSample { + sampled = bundleId + return MetricsSample(0.0, 0L, 0L) + } + } + val client = newClient(backend) + + client.launch(LaunchRequest.newBuilder().setBundleId("com.launched").build()) + client.metrics(MetricsRequest.newBuilder().setBundleId("com.other").build()) + + assertEquals("com.other", sampled) + } + @Test fun healthReportsPlatformAndVersion() { val backend = StubDriverBackend("android") val client = newClient(backend)