marathon icon indicating copy to clipboard operation
marathon copied to clipboard

One test file or more to run in multiple devices in parallel fails

Open stefanosn opened this issue 5 months ago • 6 comments

Describe the bug I use the following parameters in Marathonfile

name: "Myapp"
outputDir: "build/reports/marathon/android"
deviceInitializationTimeoutMillis: 60000
debug: true
batchingStrategy:
  type: "fixed-size"
  size: 5

vendorConfiguration:
  type: "Android"
  testApplicationPmClear: true
  screenRecordConfiguration:
    preferableRecorderType: "screenshot"
    videoConfiguration:
      enabled: false
  applicationPmClear: true
  autoGrantPermission: true
  waitForDevicesTimeoutMillis: 60000
  adbInitTimeoutMillis: 60000
  androidSdk: "/Users/name/Library/Android/sdk"  # Update this path to yours
  outputs:
  - application: "build/app/outputs/flutter-apk/app-uat-debug.apk"
    testApplication: "build/app/outputs/apk/androidTest/uat/debug/app-uat-debug-androidTest.apk"
  testAccessConfiguration:
    adb: true
  testParserConfiguration:
    type: "remote"
    instrumentationArgs:
      log: "true"
      listener: "com.malinskiy.adam.junit4.android.listener.TestAnnotationProducer"

shardingStrategy:
  type: "parallel"

poolingStrategy:
  type: "device-model"

batchingStrategy:
  type: "isolate"

filteringConfiguration:
  allowlist:
   - type: "package"
     regex: ".*"

I want to run one patrol _test.dart file in flutter that has two patrol tests inside. I want to run the test file in all devices connected. So I added poolingStrategy: type: "device-model" in order to be able to run in parallel the same test file to all devices. But when I run marathon I get the following errors and one of the two devices connected disconnects while the test runs but I do not understand why. Any help to understand appreciated.

marathon run -m Marathonfile
SLF4J(I): Connected with provider of type [ch.qos.logback.classic.spi.LogbackServiceProvider]
00:22:18.907 [main] INFO  c.m.marathon.cli.ApplicationView - Starting marathon v0.10.4, CliConfiguration: MarathonRunCommandCliConfiguration(marathonfile=Marathonfile, analyticsTracking=true, bugsnagReporting=true)
00:22:18.915 [main] INFO  c.m.marathon.cli.ApplicationView - Checking Marathonfile config
00:22:20.022 [main] INFO  c.m.m.e.BugsnagExceptionsReporter - Init BugSnag
I 00:22:20.687 [main @coroutine#2] <com.malinskiy.marathon.Marathon> System Information:
I 00:22:20.691 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.specification.version: 11
I 00:22:20.691 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.class.path: /usr/local/Cellar/marathon/0.10.4/libexec/lib/cli-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/vendor-android-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/ios-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/macos-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/base-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/core-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/usage-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/configuration-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/html-report-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/execution-timeline-0.10.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/common-31.6.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/adam-0.5.8.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/influxdb-java-2.24.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/influxdb-client-java-7.2.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/influxdb-client-core-7.2.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/logging-interceptor-4.12.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/converter-moshi-2.9.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/converter-scalars-2.11.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/converter-gson-2.11.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/retrofit-2.11.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/okhttp-4.12.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/allure-kotlin-commons-2.4.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/bugsnag-3.7.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jackson-dataformat-yaml-2.17.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jackson-datatype-jsr310-2.17.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jackson-databind-2.17.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jackson-annotations-2.17.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/vertx-lang-kotlin-4.4.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/vertx-lang-kotlin-coroutines-4.4.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/vertx-core-4.4.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jackson-core-2.17.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jackson-module-kotlin-2.17.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlin-reflect-1.9.24.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/parser-2.3.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/ktor-network-jvm-2.3.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/ktor-utils-jvm-2.3.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/ktor-io-jvm-2.3.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlin-stdlib-jdk7-1.9.24.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlinx-coroutines-jdk8-1.8.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/grpc-kotlin-stub-1.4.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlinx-coroutines-core-jvm-1.8.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/clikt-mordant-jvm.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/koin-core-jvm-3.5.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/allure-kotlin-model-2.4.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlinx-serialization-json-jvm-1.2.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/stately-concurrent-collections-jvm-2.0.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/stately-concurrency-jvm-2.0.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlinx-serialization-core-jvm-1.2.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/stately-strict-jvm-2.0.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/clikt-jvm.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/mordant-omnibus-jvm.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/grpc-okhttp-1.59.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/okio-jvm-3.9.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/mordant-jvm-jna-jvm.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/mordant-jvm-ffm-jvm.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/mordant-jvm-graal-ffi-jvm.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/mordant-jvm.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/colormath-jvm.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlin-stdlib-1.9.24.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlin-logging-jvm-3.0.5.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlin-stdlib-jdk8-1.9.24.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/logback-classic-1.5.8.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/allure-test-filter-2.29.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/allure-environment-writer-1.0.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/allure-testng-2.8.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/allure-descriptions-javadoc-2.8.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/allure-java-commons-2.29.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/grpc-util-1.59.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/grpc-core-1.59.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/gson-2.11.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/commons-csv-1.11.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/rsync4j-all-3.3.0-1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/rsync4j-windows64-3.3.0-1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/rsync4j-core-3.3.0-1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/commons-io-2.17.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/imgscalr-lib-4.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/axmlparser-1.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/android-testrunner-contract-0.5.8.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/logback-core-1.5.8.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/sshj-0.39.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/asn-one-0.6.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/slf4j-api-2.0.15.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/commons-text-1.12.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/allure-model-2.29.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/testng-6.14.3.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/grpc-protobuf-lite-1.59.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/grpc-stub-1.59.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/grpc-context-1.59.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/grpc-api-1.59.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/guava-33.3.0-jre.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/error_prone_annotations-2.28.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/msgpack-core-0.9.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/rxjava-3.1.8.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/adapter-rxjava3-2.11.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/influxdb-client-utils-7.2.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jsr305-3.0.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/dd-plist-1.28.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jansi-2.4.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/kotlin-process-1.5.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/commons-lang3-3.14.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/annotations-31.6.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jna-platform-5.6.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/annotations-24.0.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/javax.annotation-api-1.3.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/commons-pool2-2.11.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/protobuf-javalite-3.25.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/snakeyaml-2.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jcommander-1.72.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/bsh-2.0b6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/moshi-1.8.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/reactive-streams-1.0.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/failureaccess-1.0.2.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/checker-qual-3.43.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/bcpkix-jdk18on-1.78.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/bcutil-jdk18on-1.78.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/bcprov-jdk18on-1.78.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/eddsa-0.3.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/jna-5.14.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-handler-proxy-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-codec-http2-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-codec-http-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-resolver-dns-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-handler-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-transport-native-unix-common-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-codec-socks-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-codec-dns-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-codec-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-transport-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-buffer-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-resolver-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/netty-common-4.1.100.Final.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/perfmark-api-0.26.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/commons-codec-1.16.1.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/commons-lang-2.6.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/argparse4j-0.9.0.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/processoutput4j-0.0.12.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/annotations-4.1.1.4.jar:/usr/local/Cellar/marathon/0.10.4/libexec/lib/animal-sniffer-annotations-1.23.jar
I 00:22:20.694 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.vendor: Homebrew
I 00:22:20.694 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vendor.url: https://github.com/Homebrew/homebrew-core/issues
I 00:22:20.694 [main @coroutine#2] <com.malinskiy.marathon.Marathon> os.name: Mac OS X
I 00:22:20.694 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.specification.version: 11
I 00:22:20.694 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.specification.vendor: Oracle Corporation
I 00:22:20.694 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.version.date: 2025-04-15
I 00:22:20.695 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.home: /usr/local/Cellar/openjdk@11/11.0.27/libexec/openjdk.jdk/Contents/Home
I 00:22:20.695 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.compressedOopsMode: Zero based
I 00:22:20.695 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.specification.name: Java Platform API Specification
I 00:22:20.695 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.specification.vendor: Oracle Corporation
I 00:22:20.695 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.awt.graphicsenv: sun.awt.CGraphicsEnvironment
I 00:22:20.695 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.runtime.version: 11.0.27+0
I 00:22:20.695 [main @coroutine#2] <com.malinskiy.marathon.Marathon> os.version: 15.4.1
I 00:22:20.695 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.runtime.name: OpenJDK Runtime Environment
I 00:22:20.695 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.name: OpenJDK 64-Bit Server VM
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vendor.version: Homebrew
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vendor.url.bug: https://github.com/Homebrew/homebrew-core/issues
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.io.tmpdir: /var/folders/k3/z30tg53s5xn1s7518p4_q_000000gn/T/
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.version: 11.0.27
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> os.arch: x86_64
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.specification.name: Java Virtual Machine Specification
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.awt.printerjob: sun.lwawt.macosx.CPrinterJob
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.library.path: /Users/name/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.info: mixed mode
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vendor: Homebrew
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.vm.version: 11.0.27+0
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.specification.maintenance.version: 3
I 00:22:20.696 [main @coroutine#2] <com.malinskiy.marathon.Marathon> java.class.version: 55.0
D 00:22:21.159 [main @coroutine#2] <AdamDeviceProvider> Android Debug Bridge /127.0.0.1:5037: version 41
D 00:22:21.227 [DeviceMonitor-1 @coroutine#7] <AdamDeviceProvider> Device R5CRC0F4LVD changed state to CONNECTED
D 00:22:21.227 [DeviceMonitor-1 @coroutine#7] <AdamDeviceProvider> Device RZCT70PEY8R changed state to CONNECTED
D 00:22:21.344 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @coroutine#13] <AndroidDevice> Device 127.0.0.1:5037:R5CRC0F4LVD booted!
D 00:22:21.360 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-2 @coroutine#14] <AndroidDevice> Device 127.0.0.1:5037:RZCT70PEY8R booted!
D 00:22:22.005 [main @coroutine#2] <c.m.m.a.adam.AmInstrumentTestParser> Parsing bundle(s):
- testPackage: myapp.uat.test
  targetPackage: myapp.uat
D 00:22:22.008 [main @coroutine#2] <AndroidAppInstaller> Installing application output to 127.0.0.1:5037:RZCT70PEY8R
I 00:22:22.102 [main @coroutine#2] <AndroidAppInstaller> Uninstalling myapp.uat from 127.0.0.1:5037:RZCT70PEY8R
D 00:22:22.588 [main @coroutine#2] <AndroidAppInstaller> Success
I 00:22:22.592 [main @coroutine#2] <AndroidAppInstaller> Installing myapp.uat, /Users/name/build/app/outputs/flutter-apk/app-uat-debug.apk to 127.0.0.1:5037:RZCT70PEY8R
D 00:22:31.925 [main @coroutine#2] <AndroidAppInstaller> Success
D 00:22:31.926 [main @coroutine#2] <AndroidAppInstaller> Installing instrumentation package to 127.0.0.1:5037:RZCT70PEY8R
I 00:22:32.056 [main @coroutine#2] <AndroidAppInstaller> Uninstalling myapp.uat.test from 127.0.0.1:5037:RZCT70PEY8R
D 00:22:32.396 [main @coroutine#2] <AndroidAppInstaller> Success
I 00:22:32.396 [main @coroutine#2] <AndroidAppInstaller> Installing myapp.uat.test, /Users/name/build/app/outputs/apk/androidTest/uat/debug/app-uat-debug-androidTest.apk to 127.0.0.1:5037:RZCT70PEY8R
D 00:22:33.061 [main @coroutine#2] <AndroidAppInstaller> Success
D 00:22:33.063 [main @coroutine#2] <AndroidAppInstaller> Prepare installation finished for 127.0.0.1:5037:RZCT70PEY8R
D 00:22:40.464 [main @coroutine#2] <com.malinskiy.marathon.Marathon> Parsing took 20046 ms
I 00:22:40.472 [main @coroutine#2] <com.malinskiy.marathon.Marathon> Scheduling 1 tests
D 00:22:40.473 [main @coroutine#2] <com.malinskiy.marathon.Marathon> myapp.MainActivityTest#runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds]
I 00:22:40.475 [main @coroutine#2] <com.malinskiy.marathon.Marathon> Output /Users/name/build/reports/marathon/android already exists
D 00:22:40.494 [main @coroutine#78] <Scheduler> device 127.0.0.1:5037:R5CRC0F4LVD associated with poolId SM-G990B
D 00:22:40.518 [main @coroutine#78] <Scheduler> pool actor SM-G990B is being created
D 00:22:40.526 [main @coroutine#78] <Scheduler> device 127.0.0.1:5037:RZCT70PEY8R associated with poolId SM-A536B
D 00:22:40.526 [main @coroutine#78] <Scheduler> pool actor SM-A536B is being created
D 00:22:40.527 [main @coroutine#79] <DevicePoolActor[SM-G990B]> add device 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:40.538 [main @coroutine#81] <DevicePoolActor[SM-A536B]> add device 127.0.0.1:5037:RZCT70PEY8R
D 00:22:40.540 [main @coroutine#83] <D.0.0.1:5037:R5CRC0F4LVD]> initialize 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:40.541 [main @coroutine#84] <D.0.0.1:5037:RZCT70PEY8R]> initialize 127.0.0.1:5037:RZCT70PEY8R
D 00:22:40.546 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @coroutine#87] <AndroidAppInstaller> Installing application output to 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:40.546 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @coroutine#88] <AndroidAppInstaller> Installing application output to 127.0.0.1:5037:RZCT70PEY8R
I 00:22:40.654 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @coroutine#88] <AndroidAppInstaller> Uninstalling myapp.uat from 127.0.0.1:5037:RZCT70PEY8R
I 00:22:40.659 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-1 @coroutine#87] <AndroidAppInstaller> Uninstalling myapp.uat from 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:41.057 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @coroutine#88] <AndroidAppInstaller> Success
I 00:22:41.057 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @coroutine#88] <AndroidAppInstaller> Installing myapp.uat, /Users/name/build/app/outputs/flutter-apk/app-uat-debug.apk to 127.0.0.1:5037:RZCT70PEY8R
D 00:22:41.113 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-1 @coroutine#87] <AndroidAppInstaller> Success
I 00:22:41.113 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-1 @coroutine#87] <AndroidAppInstaller> Installing myapp.uat, /Users/name/build/app/outputs/flutter-apk/app-uat-debug.apk to 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:51.348 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-2 @coroutine#88] <AndroidAppInstaller> Success
D 00:22:51.348 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-2 @coroutine#88] <AndroidAppInstaller> Installing instrumentation package to 127.0.0.1:5037:RZCT70PEY8R
I 00:22:51.419 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @coroutine#88] <AndroidAppInstaller> Uninstalling myapp.uat.test from 127.0.0.1:5037:RZCT70PEY8R
D 00:22:52.142 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @coroutine#88] <AndroidAppInstaller> Success
I 00:22:52.142 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @coroutine#88] <AndroidAppInstaller> Installing myapp.uat.test, /Users/name/build/app/outputs/apk/androidTest/uat/debug/app-uat-debug-androidTest.apk to 127.0.0.1:5037:RZCT70PEY8R
D 00:22:52.842 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @coroutine#88] <AndroidAppInstaller> Success
D 00:22:52.842 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @coroutine#88] <AndroidAppInstaller> Prepare installation finished for 127.0.0.1:5037:RZCT70PEY8R
D 00:22:53.120 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-1 @coroutine#87] <AndroidAppInstaller> Success
D 00:22:53.120 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-1 @coroutine#87] <AndroidAppInstaller> Installing instrumentation package to 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:53.148 [main @coroutine#82] <QueueActor[DevicePoolId(name=SM-A536B)]> request next batch for device 127.0.0.1:5037:RZCT70PEY8R
D 00:22:53.148 [main @coroutine#82] <QueueActor[DevicePoolId(name=SM-A536B)]> sending next batch for device 127.0.0.1:5037:RZCT70PEY8R
D 00:22:53.152 [main @coroutine#84] <D.0.0.1:5037:RZCT70PEY8R]> executeBatch 127.0.0.1:5037:RZCT70PEY8R
D 00:22:53.173 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-2 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <AndroidDeviceTestRunner> tests = [myapp.MainActivityTest#runDartTest[features.notifications.notifications_comment_post_test\ Just\ pump\ app\ and\ wait\ Just\ pump\ app\ and\ wait\ 15\ seconds]]
I 00:22:53.252 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @coroutine#87] <AndroidAppInstaller> Uninstalling myapp.uat.test from 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:53.492 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-2 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <AndroidDeviceTestRunner> Package myapp.uat cleared: Success
D 00:22:53.690 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-1 @coroutine#87] <AndroidAppInstaller> Success
I 00:22:53.690 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-1 @coroutine#87] <AndroidAppInstaller> Installing myapp.uat.test, /Users/name/build/app/outputs/apk/androidTest/uat/debug/app-uat-debug-androidTest.apk to 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:53.721 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <AndroidDeviceTestRunner> Package myapp.uat.test cleared: Success
D 00:22:53.723 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <AndroidDeviceTestRunner> Running am instrument -w -r --no-window-animation -e class myapp.MainActivityTest#runDartTest[features.notifications.notifications_comment_post_test\ Just\ pump\ app\ and\ wait\ Just\ pump\ app\ and\ wait\ 15\ seconds] -e com.malinskiy.adam.android.ADB_PORT 5037 -e com.malinskiy.adam.android.ADB_HOST localhost -e com.malinskiy.adam.android.ADB_SERIAL RZCT70PEY8R myapp.uat.test/pl.leancode.patrol.PatrolJUnitRunner
D 00:22:54.487 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @coroutine#87] <AndroidAppInstaller> Success
D 00:22:54.488 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @coroutine#87] <AndroidAppInstaller> Prepare installation finished for 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:54.629 [main @coroutine#80] <QueueActor[DevicePoolId(name=SM-G990B)]> request next batch for device 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:54.630 [main @coroutine#80] <QueueActor[DevicePoolId(name=SM-G990B)]> sending next batch for device 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:54.630 [main @coroutine#83] <D.0.0.1:5037:R5CRC0F4LVD]> executeBatch 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:54.631 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-1 @execute 127.0.0.1:5037:R5CRC0F4LVD#142] <AndroidDeviceTestRunner> tests = [myapp.MainActivityTest#runDartTest[features.notifications.notifications_comment_post_test\ Just\ pump\ app\ and\ wait\ Just\ pump\ app\ and\ wait\ 15\ seconds]]
D 00:22:54.962 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @execute 127.0.0.1:5037:R5CRC0F4LVD#142] <AndroidDeviceTestRunner> Package myapp.uat cleared: Success
D 00:22:55.052 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @execute 127.0.0.1:5037:R5CRC0F4LVD#142] <AndroidDeviceTestRunner> Package myapp.uat.test cleared: Success
D 00:22:55.053 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @execute 127.0.0.1:5037:R5CRC0F4LVD#142] <AndroidDeviceTestRunner> Running am instrument -w -r --no-window-animation -e class myapp.MainActivityTest#runDartTest[features.notifications.notifications_comment_post_test\ Just\ pump\ app\ and\ wait\ Just\ pump\ app\ and\ wait\ 15\ seconds] -e com.malinskiy.adam.android.ADB_PORT 5037 -e com.malinskiy.adam.android.ADB_HOST localhost -e com.malinskiy.adam.android.ADB_SERIAL R5CRC0F4LVD myapp.uat.test/pl.leancode.patrol.PatrolJUnitRunner
I 00:22:58.475 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @execute 127.0.0.1:5037:R5CRC0F4LVD#142] <DebugTestRunListener> testRunStarted 127.0.0.1:5037:R5CRC0F4LVD
D 00:22:58.476 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @execute 127.0.0.1:5037:R5CRC0F4LVD#142] <ScreenCapturerTestRunListener> Starting recording for MainActivityTest.runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds]
I 00:22:58.478 [AndroidDevice - execution - 127.0.0.1:5037:R5CRC0F4LVD-2 @execute 127.0.0.1:5037:R5CRC0F4LVD#142] <DebugTestRunListener> testStarted 127.0.0.1:5037:R5CRC0F4LVD test = TestIdentifier(className=myapp.MainActivityTest, testName=runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds])
I 00:22:59.501 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-2 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <DebugTestRunListener> testRunStarted 127.0.0.1:5037:RZCT70PEY8R
D 00:22:59.501 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-2 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <ScreenCapturerTestRunListener> Starting recording for MainActivityTest.runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds]
I 00:22:59.502 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-2 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <DebugTestRunListener> testStarted 127.0.0.1:5037:RZCT70PEY8R test = TestIdentifier(className=myapp.MainActivityTest, testName=runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds])
D 00:23:00.734 [main @coroutine#78] <Scheduler> device 127.0.0.1:5037:R5CRC0F4LVD disconnected
D 00:23:00.736 [main @coroutine#81] <DevicePoolActor[SM-A536B]> remove device 127.0.0.1:5037:R5CRC0F4LVD
D 00:23:00.736 [main @coroutine#81] <DevicePoolActor[SM-A536B]> devices.size = 1
D 00:23:00.737 [main @coroutine#79] <DevicePoolActor[SM-G990B]> remove device 127.0.0.1:5037:R5CRC0F4LVD
D 00:23:00.737 [main @coroutine#79] <DevicePoolActor[SM-G990B]> devices.size = 0
W 00:23:00.737 [DeviceMonitor-4 @coroutine#169] <com.malinskiy.adam.request.Request> adb server rejected command 001Ahost:transport:R5CRC0F4LVD
D 00:23:00.737 [main @coroutine#79] <DevicePoolActor[SM-G990B]> pool DevicePoolId(name=SM-G990B): noActiveDevices
D 00:23:00.738 [main @coroutine#79] <DevicePoolActor[SM-G990B]> terminate pool DevicePoolId(name=SM-G990B)
E 00:23:00.740 [DeviceMonitor-3 @coroutine#9] <AdamDeviceProvider> CoroutineContext closing due to unrecoverable error
com.malinskiy.adam.exception.RequestRejectedException: device 'R5CRC0F4LVD' not found
        at com.malinskiy.adam.request.Request.handshake$suspendImpl(Request.kt:50)
        at com.malinskiy.adam.request.Request$handshake$1.invokeSuspend(Request.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
        at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:277)
        at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:95)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:69)
        at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:48)
        at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
        at com.malinskiy.marathon.android.adam.AdamAndroidDevice.dispose(AdamAndroidDevice.kt:509)
        at com.malinskiy.marathon.android.adam.AdamDeviceProvider$initialize$5.invokeSuspend(AdamDeviceProvider.kt:170)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
E 00:23:00.740 [DefaultDispatcher-worker-3 @coroutine#148] <AndroidDevice> CoroutineContext closing due to unrecoverable error
java.nio.BufferUnderflowException: null
        at java.base/java.nio.Buffer.nextGetIndex(Buffer.java:643)
        at java.base/java.nio.HeapByteBuffer.get(HeapByteBuffer.java:165)
        at com.malinskiy.adam.transport.vertx.VertxSocket.readByte(VertxSocket.kt:152)
        at com.malinskiy.adam.transport.vertx.VertxSocket$readByte$1.invokeSuspend(VertxSocket.kt)
        at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42)
        at com.malinskiy.adam.request.shell.AsyncCompatShellCommandRequest$execute$2.invokeSuspend(AsyncCompatShellCommandRequest.kt:56)
Caused by: java.nio.BufferUnderflowException: null
        at java.base/java.nio.Buffer.nextGetIndex(Buffer.java:643)
        at java.base/java.nio.HeapByteBuffer.get(HeapByteBuffer.java:165)
        at com.malinskiy.adam.transport.vertx.VertxSocket.readByte(VertxSocket.kt:152)
        at com.malinskiy.adam.transport.vertx.VertxSocket$readByte$1.invokeSuspend(VertxSocket.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
W 00:23:00.741 [main @coroutine#141] <D.0.0.1:5037:R5CRC0F4LVD]> Device execution has been cancelled
kotlinx.coroutines.JobCancellationException: Job was cancelled
        at kotlinx.coroutines.JobSupport.cancel(JobSupport.kt:1556)
        at kotlinx.coroutines.Job$DefaultImpls.cancel$default(Job.kt:195)
        at com.malinskiy.marathon.execution.DevicePoolActor.terminate(DevicePoolActor.kt:131)
        at com.malinskiy.marathon.execution.DevicePoolActor.removeDevice(DevicePoolActor.kt:143)
        at com.malinskiy.marathon.execution.DevicePoolActor.receive(DevicePoolActor.kt:42)
        at com.malinskiy.marathon.execution.DevicePoolActor.receive(DevicePoolActor.kt:26)
        at com.malinskiy.marathon.actor.Actor$delegate$1.invokeSuspend(Actor.kt:34)
        at _COROUTINE._BOUNDARY._(CoroutineDebugging.kt:42)
        at com.malinskiy.marathon.android.adam.AdamAndroidDevice.execute(AdamAndroidDevice.kt:479)
        at com.malinskiy.marathon.execution.device.DeviceActor$executeBatch$2.invokeSuspend(DeviceActor.kt:190)
Caused by: kotlinx.coroutines.JobCancellationException: Job was cancelled
        at kotlinx.coroutines.JobSupport.cancel(JobSupport.kt:1556)
        at kotlinx.coroutines.Job$DefaultImpls.cancel$default(Job.kt:195)
        at com.malinskiy.marathon.execution.DevicePoolActor.terminate(DevicePoolActor.kt:131)
        at com.malinskiy.marathon.execution.DevicePoolActor.removeDevice(DevicePoolActor.kt:143)
        at com.malinskiy.marathon.execution.DevicePoolActor.receive(DevicePoolActor.kt:42)
        at com.malinskiy.marathon.execution.DevicePoolActor.receive(DevicePoolActor.kt:26)
        at com.malinskiy.marathon.actor.Actor$delegate$1.invokeSuspend(Actor.kt:34)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
        at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:277)
        at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:95)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:69)
        at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:48)
        at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
        at com.malinskiy.marathon.Marathon.run(Marathon.kt:69)
        at com.malinskiy.marathon.cli.ApplicationViewKt.execute(ApplicationView.kt:86)
        at com.malinskiy.marathon.cli.ApplicationViewKt.access$execute(ApplicationView.kt:1)
        at com.malinskiy.marathon.cli.ApplicationViewKt$main$4.invoke(ApplicationView.kt:35)
        at com.malinskiy.marathon.cli.ApplicationViewKt$main$4.invoke(ApplicationView.kt:35)
        at com.malinskiy.marathon.cli.args.RunMarathon.run(CliCommands.kt:102)
        at com.github.ajalt.clikt.core.CoreCliktCommandKt.parse(CoreCliktCommand.kt:107)
        at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:78)
        at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:90)
        at com.malinskiy.marathon.cli.ApplicationViewKt.main(ApplicationView.kt:36)
D 00:23:00.747 [main @coroutine#141] <D.0.0.1:5037:R5CRC0F4LVD]> Returning batch 24d8f6e2-fd65-4316-9fe5-51bf5541b11e. Reason: Device 127.0.0.1:5037:R5CRC0F4LVD terminated
D 00:23:00.749 [main @coroutine#173] <D.0.0.1:5037:R5CRC0F4LVD]> terminate 127.0.0.1:5037:R5CRC0F4LVD
W 00:23:00.754 [DefaultDispatcher-worker-5 @execute 127.0.0.1:5037:R5CRC0F4LVD#142] <c.m.m.a.e.listeners.TestResultsListener> uncompleted = myapp.MainActivityTest#runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds], 127.0.0.1:5037:R5CRC0F4LVD
I 00:23:12.342 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <DebugTestRunListener> testFailed 127.0.0.1:5037:RZCT70PEY8R test = TestIdentifier(className=myapp.MainActivityTest, testName=runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds]) trace = java.lang.AssertionError: Dart test failed: features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds

D 00:23:12.344 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <ScreenCapturerTestRunListener> Finished recording for MainActivityTest.runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds]
I 00:23:12.352 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <DebugTestRunListener> testEnded 127.0.0.1:5037:RZCT70PEY8R test = TestIdentifier(className=myapp.MainActivityTest, testName=runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds])
I 00:23:12.360 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <DebugTestRunListener> testRunEnded elapsedTime 12834
D 00:23:12.406 [AndroidDevice - execution - 127.0.0.1:5037:RZCT70PEY8R-1 @execute 127.0.0.1:5037:RZCT70PEY8R#119] <AndroidDeviceTestRunner> Execution finished
D 00:23:12.410 [main @coroutine#82] <QueueActor[DevicePoolId(name=SM-A536B)]> handle test results 127.0.0.1:5037:RZCT70PEY8R
D 00:23:12.411 [main @coroutine#82] <QueueActor[DevicePoolId(name=SM-A536B)]> handle failed tests 127.0.0.1:5037:RZCT70PEY8R
00% | [SM-A536B]-[127.0.0.1:5037:RZCT70PEY8R] myapp.MainActivityTest#runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds] failed
D 00:23:12.423 [main @coroutine#82] <QueueActor[DevicePoolId(name=SM-A536B)]> request next batch for device 127.0.0.1:5037:RZCT70PEY8R
D 00:23:12.424 [main @coroutine#81] <DevicePoolActor[SM-A536B]> pool DevicePoolId(name=SM-A536B): onQueueTerminated
D 00:23:12.424 [main @coroutine#81] <DevicePoolActor[SM-A536B]> terminate pool DevicePoolId(name=SM-A536B)
Allure environment data saved.
Marathon run finished:
Device pool SM-G990B:
        0 passed, 0 failed, 0 ignored tests
        Flakiness overhead: 0s
        Raw: 0 passed, 0 failed, 0 ignored, 0 incomplete tests
Device pool SM-A536B:
        0 passed, 1 failed, 0 ignored tests
        Failed tests:
                myapp.MainActivityTest#runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds]
        Flakiness overhead: 0s
        Raw: 0 passed, 1 failed, 0 ignored, 0 incomplete tests
        Failed tests:
                myapp.MainActivityTest#runDartTest[features.notifications.notifications_comment_post_test Just pump app and wait Just pump app and wait 15 seconds] failed 1 time(s)
Total time: 0H 00m 52s

I 00:23:14.206 [main] <c.m.m.e.BugsnagExceptionsReporter> Finish BugSnag
D 00:23:14.207 [main] <com.bugsnag.Bugsnag> Closing connection to Bugsnag
Marathon execution failed
D 00:23:14.643 [Thread-2] <com.bugsnag.Bugsnag> Closing connection to Bugsnag

To Reproduce Steps to reproduce the behaviour:

  1. Full configuration
  2. Any additional information about the device provider (devices that were stuck, etc.)

Expected behavior A clear and concise description of what you expected to happen.

Logs and reports Add an execution log to help explain your problem. If possible, provide the report folder.

Devices (please complete the following information):

  • Device: [e.g. emulator/simulator/Nexus 5/etc]
  • OS: [e.g. iOS8.1]

Additional context Add any other context about the problem here.

stefanosn avatar Jul 24 '25 21:07 stefanosn

Hey. Marathon doesn't support cross-device tests. Each test is considered to be isolated to a specific device only.

What you're describing should be a test outside of each device i.e. java/etc test runtime that communicates with each device and orchestrates the execution. You can still use instrumented tests if you require APIs from system, but Marathon solves a completely different problem.

Hope this helps

Malinskiy avatar Jul 25 '25 07:07 Malinskiy

Thanks for answering @Malinskiy .

Regarding you statement Hey. Marathon doesn't support cross-device tests. Each test is considered to be isolated to a specific device only. So one test file should have one patrol test inside to use Marathon and achieve my goal which is to run one test file in all devices connected locally?

I did not understand that part of your answer could you please explain more.

What you're describing should be a test outside of each device i.e. java/etc test runtime that communicates with each device and orchestrates the execution. You can still use instrumented tests if you require APIs from system, but Marathon solves a completely different problem.

stefanosn avatar Jul 25 '25 09:07 stefanosn

Maybe I am not understanding your use-case correctly. What do you want to achieve i.e. why do you need to run the same test in parallel on multiple devices?

Malinskiy avatar Jul 25 '25 09:07 Malinskiy

@Malinskiy Because we have flutter and every device has different Android system and different specs and different brand (Samsung , Xiaomi, Pixel etc). Every real device acts different that is why we need one (or more) patrol test(s) run on multiple devices.

So we want to have each one patrol tests (_test.dart files that contain patrol tests) run on each one real device that is connected locally and find the ones that fail. But we need to run it in parallel so tests complete faster...any suggestions appreciated.

stefanosn avatar Jul 25 '25 09:07 stefanosn

My assumption about your use case was wrong, so please ignore my last reply.

You're using device model pooling correctly for your desired behaviour. Unfortunately, your device is not stable and loses the connection to adb server

W 00:23:00.737 [DeviceMonitor-4 @coroutine#169] <com.malinskiy.adam.request.Request> adb server rejected command 001Ahost:transport:R5CRC0F4LVD

This means that effectively the device is lost and can't be recovered. Marathon is designed for testing at scale where usually there are more than one instance of the same device. In your case there is only one SM-G990B so the pool terminates effective immediately after the disconnect and the whole test run fails.

You can try to figure out what went wrong by looking at the logcat of the SM-G990B and reading what happens immediately before the disconnect. Unfortunately these are real devices and answers can be also bad USB cable, errors in USB drivers, errors in device's firmware and many more. At least logcat should help you figure out what's wrong in your case

Malinskiy avatar Jul 25 '25 12:07 Malinskiy

You are right. Fixed this cable issue. Now I can run one patrol _test.dart file that contains one test inside on each device connected. But if there are two tests inside the _test.dart file I get error PatrolAppServiceClientException: Invalid response 500, Internal Server Error and closes.

I guess I have to use one file one test strategy.

is there any way I can exclude patrol files that include all phrase in their filename so I can exclude test files with more than one test inside? guess through filteringConfiguration?

Exclude this name notifications_comment_post_all_test that contains _all_ phrase in its name @Malinskiy MainActivityTest#runDartTest[features.notifications.notifications_comment_post_all_test Notifications]

tried this but does not work

filteringConfiguration:
  allowlist:
   - type: "package"
     regex: ".*"
  blocklist:
    - type: "simple-test-name"
      values:
        - "*_all_*"
name: "Myapp"
outputDir: "build/reports/marathon/android"
deviceInitializationTimeoutMillis: 60000
debug: true
batchingStrategy:
  type: "fixed-size"
  size: 5

vendorConfiguration:
  type: "Android"
  testApplicationPmClear: true
  screenRecordConfiguration:
    preferableRecorderType: "screenshot"
    videoConfiguration:
      enabled: false
  applicationPmClear: true
  autoGrantPermission: true
  waitForDevicesTimeoutMillis: 60000
  adbInitTimeoutMillis: 60000
  androidSdk: "/Users/name/Library/Android/sdk"  # Update this path to yours
  outputs:
  - application: "build/app/outputs/flutter-apk/app-uat-debug.apk"
    testApplication: "build/app/outputs/apk/androidTest/uat/debug/app-uat-debug-androidTest.apk"
  testAccessConfiguration:
    adb: true
  testParserConfiguration:
    type: "remote"
    instrumentationArgs:
      log: "true"
      listener: "com.malinskiy.adam.junit4.android.listener.TestAnnotationProducer"

shardingStrategy:
  type: "parallel"

poolingStrategy:
  type: "device-model"

batchingStrategy:
  type: "isolate"

filteringConfiguration:
  allowlist:
   - type: "package"
     regex: ".*"

Also I get at the end of multiple tests incomplete instead of failed or passed. I notice that if I have dart test names over 256 characters then I get them truncated with a message from marathon that it needs to be truncated.

File name length cannot exceed 255 characters and has been trimmed toapp.MainActivityTest#runDartTest-features.notifications.notifications-replied-comment-test-Notifications-social-replied-comment-post---Happy-path-Should-make-a-reply-to-a-comment-from-account-A-and-see-the-notification-for---ccd2 and can create a conflict.This usually happens because the test name is too long. Then after all tests end I see the following again and again and marathon command never ends.

69% | app.MainActivityTest#runDartTest[features.notifications.notifications_love_post_test Notifications social love post - Happy path Should make a like on a post from account A and see the notification for like (love) in accoun] incomplete

This causes the command of marathon to never end it constantly shows incomplete

Is my assumption correct that the never ending issue has to do with the 256 characters for the incomplete state I get?

stefanosn avatar Jul 25 '25 12:07 stefanosn