Создайте фиктивный файл, используя dd на Android с помощью скрипта monkeyrunner

Пишу скрипт для автоматизации теста: заполнить внутреннюю память Android-устройства. Скрипт написан на python, и я использую monkeyrunner для подключения к устройству и выдачи команд.
Для этого мне нужно создать фиктивные файлы. Если я использую эту команду:

subprocess.call('adb shell dd if=/dev/zero of=/storage/sdcard0/dummy/dummy_file bs=1000000000 count=1', shell = True)

Оно работает. Создается фиктивный файл. Но я хотел бы использовать следующее:

device.shell('dd if=/dev/zero of=/storage/sdcard0/dummy/dummy_file bs=1000000000 count=1')

Который должен делать то же самое. Но последний не работает и генерирует это:

Importing modules
Waiting for connection
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice] Error executing command: dd if=/dev/zero of=/storage/sdcard0/dummy/dummy2 bs=1000000000 count=1
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]com.android.ddmlib.ShellCommandUnresponsiveException
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:408)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at com.android.ddmlib.Device.executeShellCommand(Device.java:453)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at com.android.chimpchat.adb.AdbChimpDevice.shell(AdbChimpDevice.java:269)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at com.android.monkeyrunner.MonkeyDevice.shell(MonkeyDevice.java:217)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at java.lang.reflect.Method.invoke(Method.java:597)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:175)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.PyObject.__call__(PyObject.java:355)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.PyMethod.__call__(PyMethod.java:215)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.PyMethod.instancemethod___call__(PyMethod.java:221)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.PyMethod.__call__(PyMethod.java:206)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.PyObject.__call__(PyObject.java:397)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.PyObject.__call__(PyObject.java:401)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.pycode._pyx0.f$0(/home/gabriel/android/git/androidqa/prebuilt/monkeyrunner/InternalStorage/int_storage_fill.py:57)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.pycode._pyx0.call_function(/home/gabriel/android/git/androidqa/prebuilt/monkeyrunner/InternalStorage/int_storage_fill.py)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.PyTableCode.call(PyTableCode.java:165)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.PyCode.call(PyCode.java:18)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.Py.runCode(Py.java:1197)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.core.__builtin__.execfile_flags(__builtin__.java:538)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:156)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at com.android.monkeyrunner.ScriptRunner.run(ScriptRunner.java:116)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at com.android.monkeyrunner.MonkeyRunnerStarter.run(MonkeyRunnerStarter.java:77)
121003 16:54:32.383:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]   at com.android.monkeyrunner.MonkeyRunnerStarter.main(MonkeyRunnerStarter.java:189)

Кто-нибудь знает, почему возникает эта ошибка?


person Gabriel Porumb    schedule 03.10.2012    source источник


Ответы (1)


AdbChimpDevice генерирует TimeoutException, если команда оболочки не завершается через определенное время, а ваша команда dd превышает этот предел. Вы должны придерживаться альтернативы subprocess.

Время ожидания по умолчанию составляет 5 секунд.

person Diego Torres Milano    schedule 03.10.2012
comment
На запись большого файла уходит от 9 до 40 секунд. (1 ГБ) - person Gabriel Porumb; 04.10.2012
comment
Есть ли способ увеличить время, за которое команда оболочки может завершиться? - person Gabriel Porumb; 04.10.2012