Когда я запускаю CTS через несколько часов, ADB-соединение с устройством перестает отвечать на запросы. - PullRequest
0 голосов
/ 30 мая 2018

Я выполняю 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

2-я итерация .На этой итерации было пройдено 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)

Что такоепричина этой неудачи?

1 Ответ

0 голосов
/ 14 июня 2018

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

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
...