Jithish P N
Jithish P N

Reputation: 2160

Automation Test in CircleCI Build failed with an exception

Circle Ci Android Test emulator script always fails

circle.yml file used in project.

#
#Build configuration for Circle CI
#

general:
artifacts:
    - /home/ubuntu/TestApp/app/build/outputs/apk/

machine:
environment:
    ANDROID_HOME: /usr/local/android-sdk-linux
dependencies:
override:
    - echo y | android update sdk --no-ui --all --filter tools,platform-tools,build-tools-21.1.2,android-21,extra-google-m2repository,extra-google-google_play_services,extra-android-support
     - ANDROID_HOME=/usr/local/android-sdk-linux ./gradlew dependencies


test:
 override:
    - (./gradlew assemble):
        timeout: 360



test:
 override:
# start the emulator
- emulator -avd circleci-android21 -no-audio -no-window:
    background: true
    parallel: true
# wait for it to have booted
- circle-android wait-for-boot
# run tests  against the emulator.
- ./gradlew connectedAndroidTest
# copy the build outputs to artifacts
- cp -r /home/ubuntu/TestApp/app/build/outputs $CIRCLE_ARTIFACTS
# copy the test results to the test results directory.
- cp -r /home/ubuntu/TestApp/app/build/outputs/androidTest-results/* $CIRCLE_TEST_REPORT

Error Message shown in CircleCi.

   com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException
at com.android.builder.testing.ConnectedDevice.installPackages(ConnectedDevice.java:108)
at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:125)
at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:48)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
 Caused by: com.android.ddmlib.InstallException
at com.android.ddmlib.Device.installPackages(Device.java:927)
at com.android.builder.testing.ConnectedDevice.installPackages(ConnectedDevice.java:105)
... 8 more
     Caused by: com.android.ddmlib.ShellCommandUnresponsiveException
at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:513)
at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:390)
at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:359)
at com.android.ddmlib.Device.executeShellCommand(Device.java:566)
at com.android.ddmlib.Device.createMultiInstallSession(Device.java:987)
at com.android.ddmlib.Device.installPackages(Device.java:884)
... 9 more

How to solve this issue ? It is success when remove emulator test code from circle.yml

Upvotes: 2

Views: 1555

Answers (1)

Geekarist
Geekarist

Reputation: 849

Try this in your circle.yml:

test:
    override:
    - ADB_INSTALL_TIMEOUT=10 ./gradlew connectedAndroidTest
        timeout: 360

If it doesn't work, add this in your build.gradle:

com.android.ddmlib.DdmPreferences.setTimeOut(600000)

If it's still not working, add adbOptions in build.gradle:

android {
    adbOptions {
        timeOutInMs 600000
    }
}

See also this repo. I had to do all 3 and it works there.

Upvotes: 5

Related Questions