| Overview: | 
 |  | 
 | The labpretest.sh script is designed to emulate a typical automated test lab | 
 | session.  It puts a device into bootloader mode, reboots into bootloader mode, | 
 | determines device type, erases user cache, flashes a generic userdata image, | 
 | updates the bootloader image, updates the radio image, updates the system image | 
 | and reboots, sets up for a monkey run and finally runs a random monkey test. | 
 | It will repeat this based on an optional parameter(-i) or default to 100 times. | 
 | It will detect if it is in a low battery situation and wait for it to charge | 
 | again. | 
 |  | 
 | The goal is to see if a device is ready for deployment to automated lab testing | 
 | and can also be used to verify that lab infrastructure is ready for devices. | 
 | The idea is to run this script at the same time for multiple devices, typically | 
 | I would connect 8 devices to a host and run this script in 8 separate shell | 
 | sessions and watch for failures. | 
 |  | 
 | Running the script: | 
 |  | 
 | If there is only one device attached to the host you can simply just run the | 
 | script, it will detect the device and go through 100 cycles, running the monkey | 
 | for 200 events each cycle.  The script ignores normal monkey failures. If you | 
 | have multiple devices attached use the -d <device_id> parameter to target a | 
 | specific devices.  Additional parameters are -i for how many cycles and -m for | 
 | how many monkey events and finally -x to make it skip the monkey run portion | 
 | altogether. | 
 |  | 
 | Adding support for new devices or from scratch: | 
 |  | 
 | The script uses included copies of adb and fastboot which are in in the tools/ | 
 | sub directory. If you are setting this up with only the script, create a tools | 
 | sub directory and put adb and fastboot in it and make sure they are executable. | 
 | Currently we use userdebug builds. | 
 |  | 
 | Here are the steps to add a new device: | 
 |  | 
 |   1) Create a new sub directory using the result of "fastboot getvar product". | 
 |   2) Copy a build image to the new sub directory in our format. | 
 |      (i.e. passion-img-24827.zip) | 
 |   3) Copy a boot image to the new sub directory in our format. | 
 |      (i.e. hboot.0.33.2012.img) | 
 |   4) Copy a radio image to the new sub directory in our format. | 
 |      (i.e. radio.4.04.00.03_2.img) | 
 |   5) Copy a userdata.img file, possibly from one of the other directories. | 
 |  | 
 | Customizations to the flashing process are handled by adding a custom_flash.sh | 
 | file that is read in before the main loop starts. It allows you to add any non | 
 | generic functions or details to the flashing process. You must use it to define | 
 | the variable "bootpart" which is not defined by default. Also, use this file to | 
 | rewrite the flash_device function and any others, etc... | 
 |  | 
 | The script should handle the rest, unless there are radical changes to file | 
 | names or the process. |