LINUX.ORG.RU
ФорумMobile

Linaro LAVA & Android on Pandaboard

 , , , ,


0

2

My bad expirients with LAVA on Pandaboard OMAP4460.

Линаровский билд Android'а был взят мною с сайта Linaro и так исторически сложилось, что версия билда была мою выбрана 93-я: https://android-build.linaro.org/builds/~linaro-android/panda-jb-gcc47-tilt-t...

Dispatcher.

Итак, вы установили LAVу(lava-deployment-tool скачанную где-то тут https://launchpad.net/lava), и вам даже удалось создать свой инстанс. Как это сделать описанно где-то тут http://lava-deployment-tool.readthedocs.org/en/latest/#limited-deployments так же в самой папке с lava-deployment-tool есть файл в котором это все описанно SETUP-WEBDEV-ENV. По этому останавливаться и расписывать я это не стану.

Если не вышло создать по инструкции Bundle Streams, то это можно создать руками через админ понель при помощи юзера, которого вы создавили во время установки LAVы. Ок. Допустим, вам даже удалось успешно установить lava-dispatcher(скачанную где-то тут https://launchpad.net/lava-dispatcher). Инструкция по установке была где-то внутри папки со скачанным dispatcherом. И вот еще одна полезная ссылка: http://lava-dispatcher.readthedocs.org/en/latest/standalonesetup.html

Для того что бы запустить, выполнить и засабмитить результаты теста busybox в Linaro LAVA на Pandaboard 4460 пришлось похачить файл под названием master.py. Пришлось закоментить некоторые строки в функции _boot_linaro_image т.к. попытка перепрошивки Pandы Linaroвскими билдами не увенчались успехом, итак коментим следующие строки в файле /LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/device/master.py(строка 469):

def _boot_linaro_image(self): print 'MatserImage:Boot linaro image' boot_cmds = 'boot' options = boot_options.as_dict(self) if 'boot_cmds' in options: boot_cmds = options['boot_cmds'].value #boot_cmds = getattr(self.config, boot_cmds) self._boot(string_to_list(boot_cmds.encode('ascii'))) def _boot(self, boot_cmds): try: self._soft_reboot() #self._enter_uboot() except: logging.exception(«_enter_uboot failed») self._hard_reboot() #self._enter_uboot() # self.proc.sendline(" ") # for line in range(1, len(boot_cmds)): #self.proc.expect(self.config.bootloader_prompt, timeout=300) # self.proc.sendline(" ")

И дабы не возникало ошибки KeyError: 'TESTER_PS1_PATTERN' вроде:

<LAVA_DISPATCHER>2013-01-09 12:24:34 PM INFO: Attempting to connect to device Connected to panda01 console [channel connected] (~$quit to exit) (user:x0194611) is already connected (user:x0194611) is already connected <LAVA_DISPATCHER>2013-01-09 12:24:44 PM INFO: Matched <class 'pexpect.TIMEOUT'> which means all-good <LAVA_DISPATCHER>2013-01-09 12:24:44 PM INFO: [ACTION-B] lava_android_test_install is started with {u'tests': [u'busybox'], 'timeout': 18000} /usr/local/bin/lava-android-test <LAVA_DISPATCHER>2013-01-09 12:24:44 PM INFO: ensuring ADB port is ready MatserImage:Boot linaro image <LAVA_DISPATCHER>2013-01-09 12:24:44 PM INFO: Perform soft reboot the system

130|root@android:/ # reboot [ 954.643920] SysRq : Emergency Remount R/O [ 955.966766] EXT4-fs (mmcblk0p3): re-mounted. Opts: (null) [ 956.195617] EXT4-fs (mmcblk0p5): re-mounted. Opts: (null) [ 956.204864] Emergency Remount complete [ 956.264862] PVR: PVRSRVDriverShutdown(pDevice=efea1e00) [ 956.270751] PVR: SysSystemPrePowerState: Entering state D3 [ 956.276794] PVR: Uninstalling device LISR on IRQ 53 with cookie efeb3b80 [ 956.284057] PVR: DisableSystemClocks: Disabling System Clocks [ 956.290405] Restarting system. <LAVA_DISPATCHER>2013-01-09 12:24:51 PM WARNING: [ACTION-E] lava_android_test_install is finished with error ('TESTER_PS1_PATTERN'). Lava failed at action lava_android_test_install with error:'TESTER_PS1_PATTERN'

Traceback (most recent call last): File «/home/x0194611/Документы/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/job.py», line 179, in run action.run(**params) File «/home/x0194611/Документы/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/actions/lava_android_test.py», line 211, in run with self.client.android_tester_session() as session: File «/usr/lib/python2.7/contextlib.py», line 17, in __enter__ return self.gen.next() File «/home/x0194611/Документы/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/client/base.py», line 327, in android_tester_session self.boot_linaro_android_image() File «/home/x0194611/Документы/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/client/base.py», line 423, in boot_linaro_android_image TESTER_PS1_PATTERN = self.target_device.deployment_data['TESTER_PS1_PATTERN'] KeyError: 'TESTER_PS1_PATTERN' <LAVA_DISPATCHER>2013-01-09 12:24:51 PM INFO: Submitting the test result with parameters = {u'stream': u'/anonymous/test/', u'server': u'http://localhost/RPC2/'} dashboard-put-result: http://localhost/dashboard/permalink/bundle/7300799c313a215b46bc0da84e85f1cff... <LAVA_DISPATCHER>2013-01-09 12:24:51 PM INFO: Dashboard : http://localhost/dashboard/permalink/bundle/7300799c313a215b46bc0da84e85f1cff...

Traceback (most recent call last): File «/usr/local/bin/lava», line 9, in <module> load_entry_point('lava-tool==0.6', 'console_scripts', 'lava')() File «/usr/local/lib/python2.7/dist-packages/lava/tool/dispatcher.py», line 147, in run raise SystemExit(cls().dispatch(args)) File «/usr/local/lib/python2.7/dist-packages/lava/tool/dispatcher.py», line 137, in dispatch return command.invoke() File «/home/x0194611/Документы/LAVA/lava-dispatcher-0.23-2012.11/lava/dispatcher/commands.py», line 100, in invoke job.run() File «/home/x0194611/Документы/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/job.py», line 179, in run action.run(**params) File «/home/x0194611/Документы/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/actions/lava_android_test.py», line 211, in run with self.client.android_tester_session() as session: File «/usr/lib/python2.7/contextlib.py», line 17, in __enter__ return self.gen.next() File «/home/x0194611/Документы/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/client/base.py», line 327, in android_tester_session self.boot_linaro_android_image() File «/home/x0194611/Документы/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/client/base.py», line 423, in boot_linaro_android_image TESTER_PS1_PATTERN = self.target_device.deployment_data['TESTER_PS1_PATTERN'] KeyError: 'TESTER_PS1_PATTERN'

В тот же файл master.py добавляем следующие строки в самы конец класса MasterImageTarget(Target):

ANDROID_TESTER_PS1 = «root@android:/ #» self.deployment_data = { 'TESTER_PS1': ANDROID_TESTER_PS1, 'TESTER_PS1_PATTERN': ANDROID_TESTER_PS1, 'TESTER_PS1_INCLUDES_RC': False, }

Должно получиться так(строка 62):

class MasterImageTarget(Target): MASTER_PS1 = 'root@master [rc=$(echo \$?)]# ' MASTER_PS1_PATTERN = 'root@master \[rc=(\d+)\]# ' def __init__(self, context, config): super(MasterImageTarget, self).__init__(context, config) Target.android_deployment_data['boot_cmds'] = 'boot_cmds_android' Target.ubuntu_deployment_data['boot_cmds'] = 'boot_cmds' Target.oe_deployment_data['boot_cmds'] = 'boot_cmds_oe' # used for tarballcache logic to get proper boot_cmds Target.ubuntu_deployment_data['data_type'] = 'ubuntu' Target.oe_deployment_data['data_type'] = 'oe' self.target_map = { 'android': Target.android_deployment_data, 'oe': Target.oe_deployment_data, 'ubuntu': Target.ubuntu_deployment_data, } self.master_ip = None if config.pre_connect_command: logging_system(config.pre_connect_command) self.proc = self._connect_carefully(config.connection_command) atexit.register(self._close_logging_spawn) ANDROID_TESTER_PS1 = «root@android:/ #» self.deployment_data = { 'TESTER_PS1': ANDROID_TESTER_PS1, 'TESTER_PS1_PATTERN': ANDROID_TESTER_PS1, 'TESTER_PS1_INCLUDES_RC': False, }

Теперь не забудем переинсталить наш dispatcher. В моем случае это выглядело так:

/LAVA/lava-dispatcher-0.23-2012.11$ sudo ./setup.py install

Если вы этого еще не сделали, то незабудем упомянуть про то, что вам так же нужно было создать для своей борды (у меня это Panda) конфиг файлик, который в моем случае назывался panda01.conf и положила я его в папочку /devices(/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/default-config/lava-dispatcher) выглядел он так:

device_type = panda hostname = panda01

Так же необходимо создать конфиг файлик для типа вашего девайса (device-types) в моем случае он назывался panda.conf и положила я его соответственно в папочку /device-types(/LAVA/lava-dispatcher-0.23-2012.11/lava_dispatcher/default-config/lava-dispatcher), содержимое файла в моем случае следующее:

boot_cmds = boot boot_cmds_android = boot boot_cmds_oe = boot

Полезная ссылка: http://linuxtesting.blogspot.ru/2011/09/configuring-lava-dispatcher.html

Разные примеры этих файликов можно найти прямо в папке с dispatcherом в каталоге doc: /Документы/LAVA/lava-dispatcher-0.23-2012.11/doc/examples.

Отлично! Теперь можно запускать наш джоб! В моем случае он назывался lava-android-test3.json положила я его в папку с инстансом LAVы(/srv/lava/instances/test/tmp/) и выглядел он так:

{ «job_name»: «lava_android_test_busybox», «target»: «panda01», «timeout»: 18000, «actions»: [ { «command»: «lava_android_test_install», «parameters»: { «tests»: [«busybox»] } }, { «command»: «lava_android_test_run», «parameters»: { «test_name»: «busybox» } }, { «command»: «submit_results», «parameters»: { «server»: "http://localhost/RPC2/", «stream»: «/anonymous/test/» } } ] }

Лично я запускала его таким образом: :~LAVA/lava-dispatcher-0.23-2012.11$ lava-dispatch /srv/lava/instances/test/tmp/lava-android-test3.json

В результате тест busybox запустился, выполнился и засабмитился на хост:

root@android:/ # <LAVA_DISPATCHER>2013-01-09 03:19:42 PM INFO: Execute command on host: timeout 18000s lava-android-test run busybox -s 10.167.145.211:5555 -o /tmp/tmp49Ddx1/busybox.2013-01-09T13:19:42Z.bundle LAVA: --Start Operation: Run test (busybox) on device(XX.XXX.XXX.XXX:XXXX) LAVA: Begin to execute command: adb -s XX.XXX.XXX.XXX:XXXX shell /data/lava-android-test/share/installed-tests/busybox/busybox_test.sh LAVA: (stdout) mkdir=pass LAVA: (stdout) touch=pass LAVA: (stdout) ls=pass LAVA: (stdout) ps=pass LAVA: (stdout) whoami=pass LAVA: (stdout) which=pass LAVA: (stdout) basename=pass LAVA: (stdout) cp=pass LAVA: (stdout) rm=pass LAVA: (stdout) dmesg=pass LAVA: (stdout) grep=pass [ 109.436431] omapfb omapfb: Unknown ioctl 0x5401 ANDROID TEST RUN COMPLETE: Result id is 'busybox1357730383.0' LAVA: --End Operation: Run test (busybox) on device(XX.XXX.XXX.XXX:XXXX) <LAVA_DISPATCHER>2013-01-09 03:19:54 PM INFO: Execute adb command on host: adb disconnect XX.XXX.XXX.XXX

Scheduler.

Как установить скедюлер(шедулер) описанно тут: https://lava-scheduler.readthedocs.org/en/latest/usage.html?highlight=lava-to... Скачать его можно тут: https://launchpad.net/lava-scheduler А lava-scheduler-tool соответственно тут: https://launchpad.net/lava-scheduler-tool

Для сабмита джобы из scheduler (Scheduler --> Jobs) с запуском, выполнением и сабмитом результатов на хост в дальнейшем(Тут описанно как это можно сделать: https://lava-scheduler.readthedocs.org/en/latest/usage.html?highlight=lava-to...), необходимо сперва создать token. Сделать это можно непосредственно с веб-интерфейса LAVы: API-->Authentication Tokens. Созданный token копируем в память и вставляем в консоль так, как описанно ниже.

При попытке сделать необходимые действия у вас может возникнуть ошибка Fault 401 появляющаяся из-за proxy: EXPERIMENTAL - SUBJECT TO CHANGE (See --experimental-notice for more info) ERROR: <Fault 401: 'Authentication with user and token required for this API.'>

Исправить это можно так: :~LAVA/lava-scheduler-tool-0.5$ export http_proxy= :~LAVA/lava-scheduler-tool-0.5$ echo $http_proxy Для добавления token'а вводим следующую строку: :~/LAVA/lava-scheduler-tool-0.5$ lava-tool auth-add http://USERNAME@127.0.0.1/RPC2/

Сюда вставляем созданный и скопированный рание из веб-интерфейса token: Paste token for http://USERNAME@127.0.0.1/RPC2/:

После чего, если все было сделанно верно, вы должны увидеть: Token added successfully for user USERNAME.

Теперь наконец-то мы можем при помощи lava-tool засабмитить джоб с помощью ava-scheduler-tool на хост. И сделать это можно при помощи следующей команды: :~/LAVA/lava-scheduler-tool-0.5$ lava-tool submit-job http://USERNAME@127.0.0.1/RPC2/ /srv/lava/instances/test/tmp/lava-android-test3.json EXPERIMENTAL - SUBJECT TO CHANGE (See --experimental-notice for more info) submitted as job id: 5

Выглядеть в результате это будет так:

Useful links:

https://launchpad.net/lava

http://www.linaro.org

https://answers.launchpad.net/lava

http://lava-android-test.readthedocs.org/en/latest/index.html

https://docs.google.com/a/globallogic.com/viewer?a=v&q=cache:ue4eqqk6GHkJ...

LAVA Project Update - ELC 2012

Linaro LAVA test system

Чо-чо?

Во-первых, есть [code]

Во-вторых, чо-чо?

derlafff ★★★★★
()

жесть, слишком большая простыня

amazpyel ★★★
()

Честно скажу - глянул на скроллбар, сделал 5-6 скроллов мышкой, и решил написать этот коммент.
Я не хочу это читать. И мало кто захочет это делать.
Будь снисходительней к людям.

Spirit_of_Stallman ★★★
()

Это гуглотранслейт? Но зачем?

shell-script ★★★★★
()
Ответ на: комментарий от Spirit_of_Stallman

Да или тот же raspberry. А сабж дорогой, старый и достать его тяжело. Почему оно должно быть актуально на лоре.

quowah
()
Ответ на: комментарий от quowah

ЛОР - место всех ниш. От ламеров эникейщиков до гикобогов.
Я думаю есть шанс кого-то найти (малый, но..).
Так что чего бы не спросить :)

Spirit_of_Stallman ★★★
()

Это чей-то вобще было??? Давай уж лучше про девиацию компаса....

usub
()

Краткость - сестра таланта.

qrck ★★
()

Всем

Попробую ответить всем и сразу.:) Во-первых, сори за отсутствие форматирования. Инфу скидывала сюда торопясь и при помощи iPhone'a. Тут вот выложила с отступами и картинками: http://eva-koroleva1.livejournal.com/20019.html Да, Linaro LAVA это редкастное уг с кучей костылей. И это реально мало кому нужно, но на работе бывает такое - надо! А когда реально нодо, но толком в нете ничего не описанно и ты сидышь и на собственных ошибках пытаешься это все сделать, то поверьте мне, на душе становиться не сладко... По этому я из самых светлых побуждений старалась описать то, что не описанно в гугле. Для того несчастного человечка, которому вдруг придется с этим столкнуться. Про pandaboard или нексус 7 или raspberry даже спорить не стану. Моей задачей было развернуть LAVA на нашем борде(неважно даже каком), но сделать это не удалось. Тогда было принято решение попытаться проделать это на pandaboard так как LAVA была под него заточена, но по факту и тут оказалось не все так просто - простыню вы скролили.;) Это не гуглотранслит, это мне лень переключать раскладку, но для тех кому нужно, и так поймут. Запостила тут просто потому, что... этот форум попался первым в гугле. Чтиво это не развлекательное, но в редких случаях и для некоторых людей может оказаться очень полезным. Если посоветуете другой сайт, куда это можно выложить - буду благодарна. Спасибо за ваши коменты и проявленный интерес.

Trinity87
() автор топика

Рекомендую написать это в блоге. С соответствующим форматированием.

Quasar ★★★★★
()
Ответ на: Всем от Trinity87

Ну вот так куда удобнее. Лучше было сразу ссылку на блог в стартовом сообщении давать с кратким описанием.

Quasar ★★★★★
()
Ответ на: Всем от Trinity87

И ещё: в ЖЖ есть более продвинутые средства форматирования, чем у тебя использованы. Код можно отдельно выделить как минимум. А вообще как-то странно выходит. У самих ребят из Linaro ответы выпытать об этих трудностях не удалось?

Quasar ★★★★★
()
Ответ на: комментарий от Pupkin92

А фиг знает. Может ТС троллит. Сейчас будем выяснять.

Quasar ★★★★★
()
Ответ на: комментарий от Pupkin92

Если не хотите, не читайте. Никто ж никого не заставляет. Инфа исключительно для тех, кто с этим столкнется. Можете обращаться к линаровцам. It's up to you! Я с этим столкнулась, описала и выложила. Думаю, одного спасибо мне бы хватило за это, а тут такую полемику оживленную развели!!! Столько внимания..., а девушки вообще любят когда им внимание уделяют. Приятно! :)))

Trinity87
() автор топика
Ответ на: комментарий от Trinity87

а тут такую полемику оживленную развели!!!

Это ещё не развели. И да: это ЛОР.

Quasar ★★★★★
()

я точно не знаю насчет модели платы, но юзер dim-kut с форума puppyrus пытается запустить puppy на arm

вот его блог http://dim-kut.livejournal.com/

irton ★★★★★
()
Ответ на: комментарий от Trinity87

Девушка? Эмбеддер? 87-го года рождения?

Выходи за меня замуж. Кроме шуток.

Есть вопрос по теме: в нескольких блогах читал, как собирают Android от Linaro и запускают не в эмуляторе из SDK, а в модифицированном qemu. У тебя нет такого опыта? А то у меня линаровский тулчейн магическим образом вырубает комп при сборке. Я долго копался в ядре и теперь хочу посмотреть в сторону Android (в рамках хобби).

Вообще круто, что девушки интересуются такими вещами.

tlx ★★★★★
()
6 ноября 2014 г.

Lava Installation on UBUNTU(14.04) LTS

Hi may know how to install lava server in ubunt14.04 LTS. If it is not possible to install where we need to install and how to use LAVA for testing some platform. please provide steps don't share any links for doing the above jobs. Quick reply will be helpful.

Thanks & Regards, Narendra Kumar.

narendrakc
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.