Когда я запускаю CTS через несколько часов, соединение adb с устройством перестает отвечать на запросы.

Я выполняю CTS в оценочном модуле Jacinto 6 (ti-jacinto6evm) и сталкиваюсь с рядом сбои тестового примера, которые я не понимаю.

Я начал с создания AOSP и CTS. Обе сборки были просто в порядке. Я могу прошить свое тестовое оборудование (ti-jacinto6evm), а затем я следовал инструкциям по настройке CTS. Я запускал CTS более 10 раз на одном и том же устройстве и каждый раз получал разные результаты. Устройство ti-jacinto6 случайно зависает во время выполнения тестов.

Большую часть времени цель зависает и показывает следующую ошибку:

Reason: 'Failed to receive adb shell test output within 600000 ms. Test may have timed out, or adb connection to device became unresponsive'. Check device logcat for details  

Device 170090035a700002 shell is unresponsive
05-30 04:52:21 W/TestInvocation: Invocation did not complete due to device 170090035a700002 becoming not available. Reason: Could not find device 170090035a700002

в следующих тестовых примерах моя цель зависает:

CtsPreference2TestCases
CtsUiHostTestCases
CtsServicesHostTestCases
CtsTrustedVoiceHostTestCases
CtsTransitionTestCases
CtsAppTestCases
CtsGraphicsTestCases
CtsCameraTestCases
CtsWebkitTestCases
CtsFragmentTestCases
CtsViewTestCases 

Поэтому я просто исключил эти тестовые примеры из CTS и снова запустил CTS с помощью следующей команды:

 run cts --skip-preconditions --exclude-filter CtsPreference2TestCases --exclude-filter CtsServicesHostTestCases --exclude-filter CtsUiHostTestCases --exclude-filter CtsTrustedVoiceHostTestCases --exclude-filter CtsAppTestCases --exclude-filter CtsGraphicsTestCases --exclude-filter CtsTransitionTestCases --exclude-filter CtsCameraTestCases --exclude-filter CtsWebkitTestCases --exclude-filter CtsFragmentTestCases --plan cts

Проблема 1

Я столкнулся с проблемой, когда некоторые тестовые случаи выполняются правильно в первый раз, но когда я запускаю CTS во второй раз, они не проходят некоторые пройденные тестовые наборы.

1-я итерация. На этой итерации прошло 166 модулей:

Testcase name
Passed
Failed 
Total executed 
armeabi-v7a CtsWebkitTestCases
201
12
213

Вторая итерация. На этой итерации прошел 91 модуль:

Testcase name
Passed
Failed 
Total executed 
armeabi-v7a CtsWebkitTestCases
80
1
81

Проблема 2

Когда CTS застревает на некоторых тесткейсах, он показывает TimeoutException:

com.android.ddmlib.TimeoutException
    at com.android.ddmlib.AdbHelper.read(AdbHelper.java:767)
    at com.android.ddmlib.AdbHelper.read(AdbHelper.java:736)
    at com.android.ddmlib.AdbHelper.readAdbResponse(AdbHelper.java:222)
    at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:456)
    at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:382)
    at com.android.ddmlib.Device.executeShellCommand(Device.java:617)
    at com.android.tradefed.device.NativeDeviceStateMonitor.waitForDeviceShell(NativeDeviceStateMonitor.java:170)
    at com.android.tradefed.device.WaitDeviceRecovery.recoverDevice(WaitDeviceRecovery.java:142)
    at com.android.tradefed.device.NativeDevice.recoverDevice(NativeDevice.java:1720)
    at com.android.tradefed.device.NativeDevice.performDeviceAction(NativeDevice.java:1661)
    at com.android.tradefed.device.NativeDevice.runInstrumentationTests(NativeDevice.java:615)
    at com.android.tradefed.device.NativeDevice.runInstrumentationTests(NativeDevice.java:698)
    at com.android.tradefed.testtype.InstrumentationTest.runWithRerun(InstrumentationTest.java:797)
    at com.android.tradefed.testtype.InstrumentationTest.doTestRun(InstrumentationTest.java:740)
    at com.android.tradefed.testtype.InstrumentationTest.run(InstrumentationTest.java:643)
    at com.android.tradefed.testtype.AndroidJUnitTest.run(AndroidJUnitTest.java:233)
    at com.android.compatibility.common.tradefed.testtype.ModuleDef.run(ModuleDef.java:250)
    at com.android.compatibility.common.tradefed.testtype.CompatibilityTest.run(CompatibilityTest.java:506)
    at com.android.tradefed.invoker.TestInvocation.runTests(TestInvocation.java:761)
    at com.android.tradefed.invoker.TestInvocation.prepareAndRun(TestInvocation.java:446)
    at com.android.tradefed.invoker.TestInvocation.performInvocation(TestInvocation.java:300)
    at com.android.tradefed.invoker.TestInvocation.invoke(TestInvocation.java:886)
    at com.android.tradefed.command.CommandScheduler$InvocationThread.run(CommandScheduler.java:567)

В чем причина этой неудачи?


person shubhamA    schedule 30.05.2018    source источник


Ответы (1)


Нет необходимости повторно запускать тесты, которые уже прошли, вы можете продолжить и запустить только те тесты, которые не прошли или не были запущены, используйте команду

l r 

чтобы получить результаты, а затем использовать идентификатор сеанса с номером первого столбца для продолжения теста следующим образом:

 run cts --retry 12

где 12 — идентификатор сеанса выполнения, отображаемый в первом столбце l r.

adb отключение действительно может повлиять на тестовые примеры, я использую этот небольшой скрипт для повторного подключения, вы можете изменить его в соответствии со своими потребностями.

кошка adb_retry.sh:

while : 
do
if ((`adb devices  | wc -l` < 3 )); then
echo Connection for $1 droped out 
echo retrying
adb connect "$1"
fi
sleep 5
echo Watching... 
done
person Eduard Florinescu    schedule 14.06.2018
comment
Благодарю за ваш ответ. - person shubhamA; 22.06.2018