Table of contents:

Useful Information

Setup Test Environment

  • Install Linaro Android Image

  • Connect Serial Cable
  • Connect HDMI cable to an external monitor
  • Connect USB Mouse and USB Keyboard
  • Insert SD Card


Boot Test Procedure For Linaro Android Monthly Release Candidate

Process

Test Requirement

  • installing JDK on host PC: JDK.

  • Installing required packages on host PC (for ubuntu 12.04) Packages.

  • Configuring USB access for adb:configuring usb-access .

  • Follow the instructions to configure ADB on host PC:

https://wiki.linaro.org/Platform/Android/ConfigureAndUseAdb http://developer.android.com/tools/help/adb.html

  • install android sdk on Host PC: SDK

  • make sure that eth network with dhcp available.

Setup Test Environment

  • Program the build & flash the image into SD Card with the instructions listed on the build page. Use the "release instructions"

  • Plug in the serial cable from Host to Target and Launch "minicom" on Host.
  • Connect HDMI cable to an external monitor or LCD to display
  • Connect USB mouse to USB port on device,if the features available.
  • By connect ethernet, from target to the network with a dhcp running.

Test Cases

  • boot the board with Linaro Android image and Wait for device to boot completely to UI,
  • verify that the board boots ok, and you can type in the serial console.
  • check with "dmesg" if any error on boot prompt.
  • Make sure that USB mouse and USB keyboard are working well,if the device support it.
  • check Linux kernel version type in the serial console  # uname -r 

  • check Linaro toolchain version  # cat/proc/version 

  • Check busybox  # busybox ls 

  • Start the 3D 0xbenchmark, hit home before it completes
  • Connect USB-OTG cable from Host to target check ADB Over USB by run the following commands on console

      # adb start-server
      # adb devices
      # adb shell
      # adb push <file_on_host_pc> /sdcard
      # adb pull /sdcard/<file_on_host_pc> ./
      # adb install <apk_file_on_host_pc> 
  • Enable the Ethernet (if it is not enabled) in network manager, then back to serial console and run:

     # ifconfig eth0
     # ping <inet_addr>
     # ping www.google.com 
  • Using work around to enable Ethernet from serial console

     # ifconfig eth0 192.168.1.8 netmask 255.255.255.0 up
      # route add default gw 192.168.1.1 dev eth0
      # setprop net.dns1 192.168.1.1
      # setprop net.dns2 8.8.8.8
      # stop adbd
      # setprop service.adb.tcp.port 5555
      # start adbd 
  • on target open browser and run "www.google.com"
  • check ADB over Ethernet, For ADB over Ethernet use after running Ethernet workaround:

     # sudo adb connect 192.168.1.8:5555
     # sudo adb shell 
  • check wifi if avilable.
  • Launch browser and Play Youtube video verify Video and Audio should be played smoothly.
  • Launch "Gallery" app and play the video clip of 480p, 720p and 1080p verify that video played successfully with good video quality.
  • Check that hardware acceleration works, see https://wiki.linaro.org/Platform/QA/TestCases/Android#hwgfx

Validation

  • Make sure all steps work well (or with a workaround).


Test Cases

Installation Instructions

  • Run Type: Manually
  • Tag for Bug: install-instructions
  • Steps
    • Follow the installation instructions explicitly as it shows in "Using the pre-built images" section on build page
  • Validation
    • Make sure that there are no missed or incorrect procedures on instructions


Linaro Toolchain Version

  • Run Type: Manually
  • Tag for Bug: toolchain
  • Steps
    • Run

         # dmesg | busybox grep gcc > /sdcard/log.txt 2>&1 &
         # busybox vi /sdcard/log.txt
  • Validation
    • Verify Linaro Toolchain version matches the version on build page


Linux Kernel Version

  • Run Type: Manually
  • Tag for bug: Kernel
    • Steps:
      • Run 'uname -a' on serial or adb console.
    • Validation
      • Verify the Linux Linaro Kernel Version.


Linux Linaro Android Version

  • Run Type: Manually
  • Tag for bug: Linaro Android
    • Steps:
      • From UI application goto Settings and select 'About tablet' feature from the last options of settings.
      • Check the Android Version.
    • Validation
      • Validate the Android version shown correctly.


Serial Console

  • Run Type: Manually
  • Tag for Bug: serial
  • Steps
    • Pluhttps://wiki.linaro.org/Platform/QA/TestCases/Android#Linux_Kernel_Versiong in the serial cable

    • Install "minicom" on host PC from system repository
      • $ sudo apt-get install minicom

    • Launch "minicom"
      • $ sudo minicom -s

    • Set data transfer speed to "115200 8N1". For ARM Versatile Express board, it is "38400 8N1"
    • Save and exit "minicom"
    • Re-launch "minicom"
      • $ sudo minicom

    • Power on and boot the board
  • Validation
    • Verify that the output looks good
    • Verify that you can type in this serial console


Boot

  • Run Type: Automated

  • Tag for Bug: boot
  • Steps
    • Turn on monitor
    • Connect power cable
    • Wait for device to boot completely to UI
    • Shutdown device
    • Repeat 3 times
  • Validation
    • Verify that output in the monitor looks ok
    • Verify that boot logo (Android) looks ok
    • Verify that boot logo (Android text) looks ok
    • Verify that the board boots ok


SD / MMC

  • Run Type: Manually
  • Tag for Bug: sd-mmc
  • Steps
    • Boot the board until main desktop screen shows up;
    • In serial or ADB console, run:

         # echo $EXTERNAL_STORAGE
         # df
  • Validation
    • The return string of "echo $EXTERNAL_STORAGE" should be in output of "df"


USB Host

  • Run Type: Manually
  • Tag for Bug: usb-host
  • Steps
    • USB Keyboard
      • Connect USB keyboard to USB OTG port on device and boot
      • After the board booted up, press "F1" key
    • USB Mouse
      • Connect USB mouse to USB OTG port on device and boot
      • Click "Calculator" app
      • Click right button of the mouse
    • USB Storage device
      • Connect a USB storage device (e.g: USB Flash device or Pen drive)
      • Type following commands in serial or ADB console:

            # mkdir /mnt/msc
            # mount -t vfat /dev/block/sda1 /mnt/msc
            # cd /mnt/msc
            # ls 
  • Validation
    • USB Keyboard: Verify that the navigation on UI is possible using USB keyboard.
    • USB Mouse: USB Mouse should be detected successfully. Navigation and app selection via USB Mouse should work well.
    • USB Storage device: Content in USB flash drive should be shown successfully in serial or ADB console after "ls" command executed.


USB Device

  • Run Type: Manually
  • Tag for Bug: usb-device
  • Status: (invalid)
  • Steps
    • USB Device: ADB Debug Interface
      • Connect device to host PC via USB cable
      • Run "$ sudo adb devices" in host PC terminal
    • USB Device: Mass Storage (SD Card Export)
      • Bootup device with SD card then connect it to host PC via USB cable
      • Notification area on screen should show USB connection notification and options to use device as a mass storage transfer. Select this option then transfer some files from host PC to SD card and SD card to host PC
  • Validation
    • ADB Debug Interface: Connected device ID should be listed in output of "$ sudo adb device" command
    • Mass Storage (SD Card Export): File transfer from between PC and SD card should work well. File transfer via MTP should work well too.
  • Notes
    • Either USB Mass storage or MTP (Media Transfer Protocol) should be available for file transfer between Host machine and target device. If notification icon does not show either of them, then it is an issue.
    • For Snowball there is a work around to use USB hub: to enable usage of mass storage device and low speed devices (e.g.: USB mouse) together, as the direct connection between Snowball USB port and USB hub will not work (http://www.igloocommunity.org/support/Work-around_for_USB-Host_issue)


Suspend and Resume

  • Run Type: Manually
  • Tag for Bug: suspend-resume
  • Steps
    • Suspend
      • Connect USB keyboard to the board and boot
      • Set suspend time to 15 seconds: Settings -> Display -> Screen Timeout = 15 Seconds

      • Wait for around 20 seconds
    • Resume
      • Press "F1" or "Esc" key on keyboard in suspend mode
  • Validation
    • Suspend
      • The board should go to suspend mode successfully, display on screen should be dimmed
    • Resume
      • The board can wake up successfully from suspend mode, UI display should be shown well on screen.
      • No freezing or kernel panic or any other serve error observed.


Busybox

  • Run Type: Automated

  • Tag for Bug: busybox
  • Steps
    • After the board booted successfully, press "Enter" key in serial console
    • Run "# busybox ls"
  • Validation
    • "#" should be shown up after "Enter" key clicked
    • File details should be listed in output of "# busybox ls" command


0xbenchmark

  • Run Type: Automated

  • Tag for Bug: 0xbench
  • Steps
    • After the board booted up successfully, click "0xBenchmark" app
    • Select all test suites
  • Validation
    • 2D and 3D Graphic test should be performed succeessfully and look good
    • All test should be finished without freezing, kernel panic or crash


ADB Over USB

  • Run Type: Manually
  • Tag for Bug: adb
  • Steps
  • Validation
    • ADB shell should be launched successfully, output of "ls" should look good
    • ADB push, pull and install should work well
    • After apk installation, the app icon should be found on UI and should be launched successfully
    • No hang, kernel panic or crash observed during the whole process


ADB Over Ethernet

  • Run Type: Manually
  • Tag for Bug: adb-ethernet
  • Steps
    • Configure ADB over Ethernet by following this instruction ADB over Ethernet Setup

    • Run following commands (Replace the content in <> to yours)

         $ sudo adb shell
         $ ls
         $ exit
         $ sudo adb push <file_on_host_pc> /sdcard
         $ sudo adb pull /sdcard/<file_on_host_pc> ./
         $ sudo adb install <apk_file_on_host_pc> 
  • Validation
    • ADB shell should be launched successfully, output of "ls" should look good
    • ADB push, pull and install should work well
    • After apk installation, the app icon should be found on UI and should be launched successfully
    • No hang, kernel panic or crash observed during the whole process


Audio

  • Run Type: Manually
  • Tag for Bug: audio
  • Steps
    • Audio Output via 3.5mm Jack Port
      • After the board booted up successfully, plug in the headset and microphone
      • Open browser and click a "YouTube" clip to listen the sound from headset

      • Install "Angry Birds" and start to play the game, listen the sound from headset
    • HDMI Audio
      • Plug out headset and microphone from the board
      • Plug in HDMI cable to connect the board with a monitor or TV which contains speakers
      • Download a music file from Audio Test Data then transfer it to SD card

      • Launch "Music" app to play that music file
    • Audio Input via 3.5mm Jack Port
      • Plug in headset and microphone
      • Click "Messaging -> New Message -> Attach -> Record Audio"

      • Play the recorded audio clip
  • Validation
    • Audio Output via 3.5mm Jack Port
      • Sounds from YouTube clips and "Angry Birds" game should be heard clearly

    • HDMI Audio
      • Sound of music should be heard clearly from monitor or TV speakers
    • Audio Input via 3.5mm Jack Port
      • Sound record should be done successfully and should be heard clearly as original
      No hang, kernel panic and crash during the whole test process.


Primary Video Output

  • Run Type: Manually
  • Tag for Bug: primary-video-out
  • Steps
    • Primary Video Output: HDMI (Monitor recognized)
      • Plug in HDMI cable between the board and HDMI Monitor or HDMI TV
      • Power on the HDMI Monitor or HDMI TV, assign input source to HDMI
      • Boot the board
    • Primary Video Output: VGA (Monitor recognized)
      • Plug in HDMI cable between the board and VGA Monitor or VGA TV
      • Power on the VGA Monitor or VGA TV, assign input source to VGA if required
      • Boot the board
    • Primary Video Output: HDMI (Monitor Hot Plug)
      • Plug in HDMI cable between the board and HDMI Monitor or HDMI TV
      • Power on the HDMI Monitor or HDMI TV, assign input source to HDMI
      • Boot the board
      • Plug out HDMI cable
      • Plug in HDMI cable again
  • Validation
    • Primary Video Output: HDMI (Monitor recognized): Display should be shown well on monitor or TV
    • Primary Video Output: VGA (Monitor recognized): Display should be shown well on monitor or TV
    • Primary Video Output: HDMI (Monitor Hot Plug): After plugged out HDMI cable, display should be gone from monitor or TV; after plugged in HDMI cable again, display should back to work as normal
  • Note
    • For the board comes with LCD module, Primary Video Output means that LCD display


Secondary Video Output

  • Run Type: Manually
  • Tag for Bug: secondary-video-output
  • Steps
    • If the board support the secondary display output, then connect it to a monitor or TV
    • Power on the monitor or TV, assign input source properly
    • Boot the board
    • Validation
      • The display should be shown well on monitor or TV


HwGFX

  • Run Type: Manually
  • Tag for Bug: hwgfx
  • Steps
    • After the board booted up successfully, click "0xbenchmark" to run the graphic test suites.
    • For STE Snowball board, run

         # dmesg > /sdcard/snowball_dmesg.txt 2>&1 &
         # logcat > /sdcard/snowball_logcat.txt 2>&1 & 
    • For TI Panda 4430 and 4460
      • Install hardware acceleration by following the instructions on Linaro Android Build Service page
      • In serial console, run

            # logcat > /sdcard/ti_panda_logcat.txt 2>&1 & 
    • For old Samsung Origen board, in serial console, run

         # logcat > /sdcard/old_samsung_origen_logcat.txt 2>&1 & 
  • Validation
    • Graphic test in "0xbenchmark" should look smoothly without any characteristic tearing.
    • For STE Snowball board:
      • The output similarly likes this should be observed in file "/sdcard/snowball_dmesg.txt".

            [    1.781585] Mali<2>: Inserting Mali v9 device driver.
            [    1.786712] Mali<2>: Compiled: Dec 19 2011, time: 07:16:47.
            [    1.792327] Mali<2>: Svn revision:
            [    1.795806] Mali<2>: MMU memory system initializing
            [    1.800689] Mali<2>: Rendercore: subsystem global mutex initialized
            [    1.806945] Mali<2>: Core: subsystem_init: Mali-400 PP
            [    1.812103] Mali<2>: Core: subsystem_init: Mali-400 GP
            [    1.817230] Mali<2>: Mali L2 cache system initializing
            [    1.822387] Mali<1>: Overriding arch resource[4] :
            [    1.827178] Mali<1>: Type: MEMORY, base: 8000000, size 2000000
            [    1.833251] Mali<2>: MMU registered
            [    1.836761] Mali<2>: MMU registered
            [    1.840270] Mali<2>: Mali OS memory allocator created with max allocation size of 0x7FF00000 bytes, cpu_usage_adjust 0x00000000
            [    1.851776] Mali<2>: Memory Validator 'Framebuffer' installed for Mali physical address base==0x00000000, size==0x7FF00000, cpu_
            adjust==0x00000000
            [    1.864959] Mali<2>: Creating Mali L2 cache: Mali-400 L2 cache
            [    1.870880] Mali<1>: Mali memory allocators will be used in this order of preference (lowest numbered first) :
            [    1.880889] Mali<1>:         0: Mali SDRAM
            [    1.884399] Mali<1>:         5: Linux kernel memory
            [    1.888916] Mali<2>: Attach mmu: 0xe6df72c0 to core: Mali-400 PP in subsystem: Mali-400 PP
            [    1.897216] Mali<2>: Attach mmu: 0xe6df7320 to core: Mali-400 GP in subsystem: Mali-400 GP
            [    1.905487] Mali<2>: Mali L2 cache system load complete
            [    1.910705] Mali: Mali device driver  loaded
            [    1.915008] Mali<2>: malidrv:  CONFIG=ux500 USING_OS_MEMORY=1 API_VERSION=9 REPO_URL= REVISION= CHANGED_REVISION= CHANGE_DATE= B
            UILD_DATE=Mon Dec 19 07:16:46 UTC 2011 BUILD=DEBUG CPU=ux500 USING_UMP=1 USING_HWMEM=1 USING_PMM=1 USING_MALI200=0 USING_MALI400=3
            USING_MALI400_L2_CACHE=1 USING_GP2=0 KDIR= MALI_PLATFORM_FILE=platform/ux500/mali_platform.c OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB=6 U
            SING_PROFILING=0 USING_GPU_UTILIZATION=1 USING_MALI_RUN_TIME_PM=1 
      • The output similarly likes this should be observed in file "snowball_logcat.txt".

            D/libEGL  ( 1595): loaded /system/lib/egl/libGLES_android.so
            D/libEGL  ( 1595): loaded /system/lib/egl/libEGL_mali.so
            D/libEGL  ( 1595): loaded /system/lib/egl/libGLESv1_CM_mali.so
            [  142.400238] Mali<2>: D/libEGL  ( 1595): loaded /system/lib/egl/libGLESv2_mali.soMMU session begin
        
            [  142.414825] Mali<2>: Page directory for session 0xe510b680 placed at physical address 0x09FC8000
            [  142.424072] Mali<2>: MMU session begin: success
            [  142.429168] Mali<2>: Core: session_begin: for Mali-400 PP
            [  142.434600] Mali<2>: Core: session_begin: for Mali-400 GP
            I/Mali-EGL( 1595): Mali libraries compiled on Dec  8 2011, at 09:40:03
            D/OpenGLRenderer( 1595): Enabling debug mode 0 
    • For TI Panda 4430 and 4460, the output similarly likes this should be observed in file "/sdcard/ti_panda_logcat.txt".

          D/libEGL  ( 1334): loaded /system/lib/egl/libGLES_android.so
          D/libEGL  ( 1334): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
          D/libEGL  ( 1334): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
          D/libEGL  ( 1334): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
          W/SurfaceFlinger( 1334): ro.sf.lcd_density not defined, using 160 dpi by default.
          I/SurfaceFlinger( 1334): EGL informations:
          I/SurfaceFlinger( 1334): # of configs : 33
          I/SurfaceFlinger( 1334): vendor    : Android
          I/SurfaceFlinger( 1334): version   : 1.4 Android META-EGL
          I/SurfaceFlinger( 1334): extensions: EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_ANDROID_image_native_buffer EGL_ANDROID_image_native_buffer
          I/SurfaceFlinger( 1334): Client API: OpenGL ES
          I/SurfaceFlinger( 1334): EGLSurface: 8-8-8-8, config=0x1
          I/SurfaceFlinger( 1334): OpenGL informations:
          I/SurfaceFlinger( 1334): vendor    : Imagination Technologies
          I/SurfaceFlinger( 1334): renderer  : PowerVR SGX 540
          I/SurfaceFlinger( 1334): version   : OpenGL ES-CM 1.1 build 1.8@550175
          I/SurfaceFlinger( 1334): extensions: GL_OES_byte_coordinates GL_OES_fixed_point GL_OES_single_precision GL_OES_matrix_get GL_OES_read_format GL_OES_compressed_paletted_texture GL_OES_point_sprite GL_OES_point_size_array GL_OES_matrix_palette GL_OES_draw_texture GL_OES_query_matrix GL_OES_texture_env_crossbar GL_OES_texture_mirrored_repeat GL_OES_texture_cube_map GL_OES_blend_subtract GL_OES_blend_func_separate GL_OES_blend_equation_separate GL_OES_stencil_wrap GL_OES_extended_matrix_palette GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_depth24 GL_OES_stencil8 GL_OES_compressed_ETC1_RGB8_texture GL_OES_mapbuffer GL_OES_EGL_image GL_OES_EGL_image_external GL_EXT_multi_draw_arrays GL_OES_required_internalformat GL_IMG_read_format GL_IMG_texture_compression_pvrtc GL_IMG_texture_format_BGRA8888 GL_EXT_texture_format_BGRA8888 GL_OES_egl_sync GL_IMG_vertex_array_object
          I/SurfaceFlinger( 1334): GL_MAX_TEXTURE_SIZE = 2048
          I/SurfaceFlinger( 1334): GL_MAX_VIEWPORT_DIMS = 2048 x 2048
          I/SurfaceFlinger( 1334): flags = 00010000 
    • For old Samsung Origen board, the output similarly likes this should be observed in file "/sdcard/old_samsung_origen_logcat.txt"

          Mali: Mali: Mali device driver  loaded
          Mali device driver  loaded
          D/libEGL  ( 2094): loaded /system/lib/egl/libGLES_android.so
          D/libEGL  ( 2094): loaded /system/lib/egl/libEGL_mali.so
          D/libEGL  ( 2094): loaded /system/lib/egl/libGLESv1_CM_mali.so
          D/libEGL  ( 2094): loaded /system/lib/egl/libGLESv2_mali.so
          W/SurfaceFlinger( 2094): ro.sf.lcd_density not defined, using 160 dpi by default.
          E/libEGL  ( 2094): eglSetSwapRectangleANDROID:1460 error 3008 (EGL_BAD_DISPLAY)
          I/SurfaceFlinger( 2094): EGL informations:
          I/SurfaceFlinger( 2094): # of configs : 28
          I/SurfaceFlinger( 2094): vendor    : Android
          I/SurfaceFlinger( 2094): version   : 1.4 Android META-EGL
          I/SurfaceFlinger( 2094): extensions: EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image EGL_KHR_gl_t
          exture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL_ANDROID_image_native_buffer EGL_ANDROID_swap_rectangle EG
          L_NV_system_time
          I/SurfaceFlinger( 2094): Client API: OpenGL ES
          I/SurfaceFlinger( 2094): EGLSurface: 8-8-8-8, config=0x13
          I/SurfaceFlinger( 2094): OpenGL informations:
          I/SurfaceFlinger( 2094): vendor    : ARM
          I/SurfaceFlinger( 2094): renderer  : Mali-400 MP
          I/SurfaceFlinger( 2094): version   : OpenGL ES-CM 1.1
          I/SurfaceFlinger( 2094): extensions: GL_OES_byte_coordinates GL_OES_fixed_point GL_OES_single_precision GL_OES_matrix_get GL_OES_re
          ad_format GL_OES_compressed_paletted_texture GL_OES_point_size_array GL_OES_point_sprite GL_OES_texture_npot GL_OES_query_matrix GL
          _OES_matrix_palette GL_OES_extended_matrix_palette GL_OES_compressed_ETC1_RGB8_texture GL_OES_EGL_image GL_OES_draw_texture GL_OES_
          depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_format_BGRA8888 GL_OES_framebuffer_object GL_OES_stencil8 GL_OES_depth24 G
          L_ARM_rgba8 GL_OES_EGL_image_external GL_OES_EGL_sync
          I/SurfaceFlinger( 2094): GL_MAX_TEXTURE_SIZE = 4096
          I/SurfaceFlinger( 2094): GL_MAX_VIEWPORT_DIMS = 4096 x 4096
          I/SurfaceFlinger( 2094): flags = 00000000 


Hardware Video

  • Run Type: Manually
  • Tag for Bug: hwvideo
  • Steps
    • Download and transfer the 480p Video to SD card

    • Download and transfer the 1080p Video to SD card

    • After the board booted successfully, launch "Gallery" app to play above two video clips
  • Validation
    • 480p video should be played successfully with good quality
    • 1080p video should be played successfully with good quality


Hardware Audio

  • Run Type: Manually
  • Tag for Bug: hwaudio
  • Status: (invalid)
  • Steps
    • Copy some "WAV" files to SD card
    • Plug in 3.5mm headset, launch "Music" App, play the "WAV" files
    • Check the sound from headset
    • HDMI
      • Check the sound from HDMI monitor speakers if it is supported.
  • Validation
    • The audio from 3.5mm headset or HDMI should work well
    • No hang, kernel panic or other serve error during music playback


GLMark II

  • Run Type: Automated

  • Tag for Bug: glmark2
  • Steps
    • After the board booted up successfully, in serial console, run

         # logcat > /sdcard/boardname_logcat.txt 2>&1 & 
    • Launch "GLMark2" app from UI
  • Validation
    • GLMark2 app should work well
    • Open "/sdcard/boardname_logcat.txt" with any text editor then search "glmark2 Score" as keyword
    • The score should be shown like

         I/glmark2 ( 5137): glmark2 Score: 21 
  • Note


Ethernet

  • Run Type: Manually
  • Tag for Bug: ethernet
  • Steps
  • Ethernet
    • Manually Configuration:
      • Device IP: 192.168.1.7; Router (Gateway) IP: 192.168.1.1; Google DNS Server: 8.8.8.8
      • After the board booted successfully, in serial console, run:

            # busybox ifconfig eth0 192.168.1.7 netmask 255.255.255.0 up
            # route add default gw 192.168.1.1 dev eth0
            # setprop net.dns1 192.168.1.1
            # setprop net.dns2 8.8.8.8
            # setprop net.eth0.dns1 192.168.1.1
            # setprop net.eth0.dns2 8.8.8.8
            # busybox ping www.google.com 
    • Automatic Configuration:
      • Plug in Ethernet cable
      • Power ON the board
      • After the board booted successfully, enable the Ethernet (if it is not enabled) in network manager, then back to serial console and run:

            # busybox ifconfig -a
            # busybox ping www.google.com 
  • Validation
    • Manually Configuration:
      • IP address should be assigned successfully
      • No data loss in ping test
    • Automatic Configuration:
      • IP address and other related information should be shown successfully in "ifconfig -a" output
      • No data loss in ping test


YouTube

  • Run Type: Manually
  • Tag for Bug: youtube
  • Steps
    • Enable Ethernet or WiFi, plug in 3.5mm headset or HDMI cable

    • Launch web browser to access www.google.com
    • Click YouTube link on the top left bar of the Google main page

    • Click any video clip to play
  • Validation
    • Video and Audio should be played smoothly and synchronously.


WiFi

  • Run Type: Manually
  • Tag for Bug: wifi
  • Steps
    • Plug out Ethernet cable if any, boot the board
    • After the board booted successfully, enable WiFi via Settings -> Wireless and Networks -> WiFi

    • Connect to an access point with PSK-2 password enabled
    • In serial console, run:

         # busybox ifconfig -a
         # busybox ping www.google.com 
    • Launch web browser, access "www.google.com"
  • Validation
    • WiFi should be enabled successfully, with a PSK-2 password

    • IP address should be shown successfully in output of "ifconfig -a"
    • No data loss in "ping" test
    • Google main page should be shown up successfully


Bluetooth

  • Run Type: Manually
  • Tag for Bug: bluetooth
  • Steps
  • Bluetooth - ON and OFF
    • After the board booted successfully, enable Bluetooth by click "Settings -> Wireless and Networks -> Bluetooth"

    • After Bluetooth turned ON and surround devices (if any) showed up, turn Bluetooth OFF
    • Do above ON and OFF procedures again
  • Bluetooth - File Transfer
    • If the Bluetooth can be enabled successfully, try to pair it to another Bluetooth, for example, a Bluetooth enabled mobile phone or laptop
    • If the pair can be done successfully, send a picture from another Bluetooth to the board
    • Send a picture from the board to another Bluetooth device (mobile phone or laptop)
    • View the picture on both devices
  • Validation
    • Bluetooth - ON and OFF
      • Bluetooth feature should can be continuously enabled and disabled at least twice without any error
      • If there is any other Bluetooth enabled device surround and searchable, those devices should be shown in the discoveried device list on the board
    • Bluetooth - File Transfer
      • "Pair" should be done successfully
      • Picture file should can be transfered from the board to another paired Bluetooth device
      • Picture file should can be transfered from another Bluetooth enabled device to the board
      • Picture file should be shown successfully on both paired devices


Bluetooth Headset

  • Run Type: Manually
  • Tag for Bug: bluetooth-headset
  • Status: (invalid)
  • Steps
    • Power on Bluetooth headset (A2DP supported), set it as "discoverable"
    • Power on the board, after it booted successfully, turn on the Bluetooth
    • Pair the board and Bluetooth headset, set it as the audio output device
    • Play a music file from the board
  • Validation
    • The Bluetooth headset should can be paired with the board successfully
    • The music file can be played successfully, and the sound can be heard from Bluetooth headset smoothly.


Modem

  • Run Type: Manually
  • Tag for Bug: modem
  • Status: (invalid)
  • Steps
    • TBD
  • Validation
    • TBD
  • Note:
    • This test is dedicated for Samsung Galaxy Nexus


Video Playback

  • Run Type: Manually
  • Tag for Bug: video-playback
  • Status: (invalid)
  • Steps
    • Download and transfer the 480p Video to SD card

    • After the board booted successfully, launch "Gallery" app to play above two video clips
  • Validation
    • 480p video should be played successfully with good quality


PowerTop

  • Run Type: Manually
  • Tag for Bug: powertop
  • Steps
    • After the board booted successfully, in serial console, run:

         # powertop 
    • If the output can be shown successfully, using "Tab" key to navigate between different tabs
    • Press "Esc" key to exit the program
  • Validation
    • "powertop" command should can be executed successfully
    • Output from "powertop" command should can be read clearly
    • Tabs can be navigated successfully
    • PowerTop program can exit successfully after press "Esc" key

    • No hang, kernel panic or other serve error during the test


Clock App

  • Run Type: Manually
  • Tag for Bug: clock-app
  • Status: (invalid)
  • Steps
    • Clock app should be available and shown after the board booted successfully
    • Launch Clock app
    • Set an alarm clock
  • Validation
    • Clock app can be launched successfully
    • Time and date should be shown correct and clearly in Clock app
    • Alarm setting should can be done successfully, and alarm clock should can be triggered correctly and successfully


Browser App

  • Run Type: Manually
  • Tag for Bug: browser-app
  • Steps
    • Browser app should be available and shown after the board booted successfully
    • Launch Browser app
    • Type "www.google.com" in address bar and press "Enter" key
  • Validation
    • Browser app should can be launched successfully
    • Google main page should be shown successfully


Calculator App

  • Run Type: Manually
  • Tag for Bug: calculator-app
  • Status: (invalid)
  • Steps
    • Calculator app should be available and shown after the board booted successfully
    • Launch Calculator app
    • Do some calculations
  • Validation
    • Calculator app should can be launched successfully
    • Some simple calculations should can be done correctly


Calendar App

  • Run Type: Manually
  • Tag for Bug: calendar-app
  • Status: (invalid)
  • Steps
    • Prepare a Google account
    • Calendar app should be available and shown after the board booted successfully
    • Launch Calendar app, log in with a Google account
    • Create an event in Calendar app
  • Validation
    • Calendar app should can be launched successfully
    • Calendar event should can be synced successfully from a Google account
    • New calendar event should can be added synced successfully under a Google account
  • Note:


People App

  • Run Type: Manually
  • Tag for Bug: people-app
  • Status: (invalid)
  • Steps
    • Prepare a Google account
    • People app should be available and shown after the board booted successfully
    • Launch People app, log in with a Google account
    • Create an contact item in People app
  • Validation
    • People app should can be launched successfully
    • Contact item should can be synced successfully from a Google account
    • New Contact item should can be added synced successfully under a Google account
  • Note:


Email App

  • Run Type: Manually
  • Tag for Bug: email-app
  • Status: (invalid)
  • Steps
    • Prepare a Google account
    • Email app should be available and shown after the board booted successfully
    • Launch Email app, log in with a Google account
    • Create and sent an new email to someone
  • Validation
    • Email app should can be launched successfully
    • Email should can be synced successfully from a Google account
    • Email should can be sent successfully to someone else


  • Run Type: Manually
  • Tag for Bug: gallery-app
  • Steps
    • Put some pictures and videos to SD card then boot the board
    • Gallery app should be available and shown after the board booted successfully
    • Launch Gallery app, and click some pictures and videos
  • Validation
    • Gallery app should can be launched successfully
    • The thumbnails of pictures and videos should be available
    • Pictures should can be shown full size successfully after click it
    • Video can be played successfully after click it


Messaging App

  • Run Type: Manually
  • Tag for Bug: messaging-app
  • Status: (invalid)
  • Steps
    • Messaging app should be available and shown after the board booted successfully
    • Launch Messaging app
    • Create a new message and sent it to a mobile phone number
  • Validation
    • Gallery app should can be launched successfully
    • A new message should can be drafted successfully
  • Note
    • No real wireless support for the board


Phone App

  • Run Type: Manually
  • Tag for Bug: phone-app
  • Status: (invalid)
  • Steps
    • Phone app should be available and shown after the board booted successfully
    • Launch Phone app
    • Dial 911
  • Validation
    • Phone app should can be launched successfully
    • 911 can be dialed, a calling screen should be shown up
  • Note
    • No real wireless support for the board


Speech Recorder

  • Run Type: Manually
  • Tag for Bug: speech-recorder
  • Status: (invalid)
  • Steps
    • "Speech Recorder" app should be available and shown after the board booted successfully
    • Launch "Speech Recorder" app
    • Record an audio clip by available configurations
  • Validation
    • "Speech Recorder" app should can be launched successfully
    • Audio clip should can be recorded successfully and can be found under the path:

         /data/data/com.android.speechrecorder.com/app_recordings 
    • Transfer the recorded audio files to SD card or a computer, they should can be played back successfully, same as the sound got recorded


USB Camera

  • Run Type: Manually
  • Tag for Bug: usb-camera
  • Steps
    • Plug in external USB camera
    • Power on the board, Camera App should be pre-installed
    • Launch Camera App, take a picture
    • View the picture in Gallery App
  • Validation
    • Camera App should exist
    • Camera App can be launched successfully with the view mode of USB camera
    • Pictures can be taken in Camera App and viewed in Gallery App
  • Note: This test is not applicable for Android Jelly Bean.


USB Camera Record

  • Run Type: Manually
  • Tag for Bug: usb-camera-record
  • Steps
    • Plug in external USB camera
    • Power on the board, Camera App should be pre-installed
    • Launch Camera App, switch to the video record mode
    • Start to record an video clip and stop
    • Play the video in Gallery App
  • Validation
    • Camera App should exist
    • Camera App can be launched successfully with the view mode of USB camera
    • Video clip can be recorded and saved successfully
    • Video clip can be played in Gallery App successfully
  • This test is not applicable for Android Jelly Bean.


Angry Birds

  • Run Type: Manually
  • Tag for Bug: angrybirds
  • Steps
    • Download Angry Birds installation APK file from Internet
    • Install the APK file via ADB:

         $ sudo adb install angrybirds.apk 
    • After Angry Birds icon shows on screen, click it to launch the game
    • Play this game for several minutes
  • Validation
    • Angry Birds can be launched successfully
    • The game should work well, both video and audio should can be played smoothly
    • No freezing, kernel panic or crash observed during the game


Open Accessory

http://staging.git.linaro.org/people/soumya.basak/accessory.git

  • Run eclipse goto File > Import Select Android and Existing Android Code into Workplace > Next

  • Browse the root directory,
  • Select the Project root directory 'Right Click' and Run As > Android Application.

  • It will automatically install & Launch the app into device.

  • Run gcc simplectrl.c -I/usr/include/ -o simplectrl -lusb-1.0 -I/usr/include/ -I/usr/include/libusb-1.0
  • Validation
    • Make sure adb over USB is ok.
    • Successfully install and launch the openaccessory app into the device.
    • From Host run gcc simplectrl.c -I/usr/include/ -o simplectrl -lusb-1.0 -I/usr/include/ -I/usr/include/libusb-1.0 will successfully open the app into device.
    • From Eclipse goto Run and open Debug mode and check the Bi-directional data transfer from Device to Host.


Device Tree

  • Run Type: Manually
  • Tag for Bug: device-tree
  • Steps
    • Power on the board until boot succeeded
    • In serial console, run:

         # cat /proc/device-tree/model 
  • Validation
    • The string "Flattened Device Tree blob" should be shown in boot log
    • Board model name should be shown after the command ran


Tethering

  • Run Type: Manually
  • Tag for Bug: tethering
  • Steps
    • USB Tethering
      • Ensure there is no active network connection on host PC, plug out Ethernet cable or disable wireless adapter (if any)
      • Plug in USB cable to USB OTG port on the board, then plug the other side to host PC
      • Power on the board to boot into Android main screen
      • Ensure network works well, in serial console, run:

            # busybox ping www.google.com 
      • Click "Settings" -> "More" -> "USB Tethering" -> "Enable" (If "USB Tethering" exists)

      • In serial console, run:

            # busybox ifconfig -a 
      • On host PC, terminal, run:

            $ ifconfig -a
            $ ping <Board_IP_Address> 
      • Terminate the ping command on host PC by press "Ctrl+C"
      • In serial console, run:

            # busybox ping <Host_PC_IP_Address> 
      • Terminate the ping command in serial console by press "Ctrl+C"
      • On host PC, launch browser, access www.google.com
    • WiFi Tethering

      • TBD
    • Bluetooth Tethering
      • Select another Android device as device B and the target Android device A (Samsung Galaxy Nexus).
      • Remove SIM card on device A, power on both devices until boot up succeeded.
      • Ensure device B can access Internet successfully (launch Browser to test it), turn on Bluetooth, then go to Settings -> More -> Portable hotspot & tethering -> enable Bluetooth tethering.

      • On Device A, disconnect WiFi, also disable "Data enabled" from Settings -> More -> Mobile networks.

      • Turn on Bluetooth on Device A and pair with Device B.
      • After pairing successfully, launch Browser on device A to access Internet.
  • Validation
    • USB Tethering
      • "USB Tethering" item should exist
      • The network should work well before tethering enable, no data loss in "ping" test
      • In serial console, a new network interface should be shown in output of "busybox ifconfig -a", the board should get a sub network IP address successfully on that interface after tethering enabled. This sub network IP address should be different with the one which the board got before tethering enable.
      • In terminal on host PC, a new network interface should be shown in output of "ifconfig -a", the host PC should get a sub network IP address successfully on that interface after the tethering enabled on the board. This sub network IP address should be in the same network segment as the board's
      • "ping" test from host PC to the board should be done successfully, no data loss
      • "ping" test from the board to host PC should be done successfully, no data loss
      • The host PC now can access Internet, Google main page should be shown well
    • WiFi Tethering

      • TBD
    • Bluetooth Tethering
      • Device A should can access Internet successfully via device B.


DS-5

  • Run Type: Manually
  • Tag for Bug: ds-5
  • Steps
    • Install ARM DS-5 on host PC
    • Power on the board until it booted successfully
    • In serial console, run:

         # lsmod
         # ps | busybox grep gatord 
    • Check the Ethernet or wireless connection, ensure the board can get IP address
    • On host PC, launch ARM DS-5 by run (Replace "ds5_installation_path" to yours):

         $ cd /ds5_installation_path/bin
         $ ./eclipse 
    • After set up work space, then on eclipse main screen, from menu bar, click "Window" -> "Show View" -> "Other"

    • Then click "DS-5" -> "Streamline Data" -> OK

    • Put the board IP address in "Address" filed, click "Start Capture"
    • Let the data capture running for 10 seconds, then click "Stop"
  • Validation
    • "gator" should be shown in output of "lsmod"
    • "gatord" should be shown in output of "ps | busybox grep gatord"
    • After clicked "Stop", a statistics data graph should be shown
  • Notes:
    • Here is a detailed instructions to install DS-5 and verify "gatord".

    • You may want to skip the gdb debugging under the section "Getting started". gdb debugging is completely done over adb, so the responsibility of Linaro for functionality is just to make sure that adb is working. For Snowball that means adb over Ethernet.
    • The the link at the bottom of the page goes to the Developer peoples page where it is demonstrated how to run Slipstream. Streamline is the thing that talks to gatord and makes sense out of the data collection that gatord gets from gator.ko. So if DS-5 can draw its fancy charts then the gator functionality is verified.
    • This is a good page for further information.

    • Also, see This which contains a good, detailed walkthrough as well as information on how to install licenses in DS-5.


Download and Install APK

  • Run Type: Manually
  • Tag for Bug: download-install-apk
  • Steps
    • Power on the board to boot into Android main screen, ensure there is at least one active network connection, Ethernet or WiFi

    • Launch browser, visit http://www.whatsapp.com/android/

    • Click "Download Now" button
    • After the APK downloaded successfully, click "Settings" -> "Security", then enable the "Unknown Sources"

    • Click "Downloads" app, find that APK file, then click it.
  • Validation
    • The APK file should can be downloaded successfully and shown in "Downloads" app
    • The APK file should can be installed successfully after click it in in "Downloads" app


Android Net Connectivity Manager

  • Run Type: Manually
  • Tag for Bug: connectivitymanager
  • Status: (invalid)
  • Steps
    • Setup a WiFi access point without password

    • Write down the information of this access point to file "accesspoints.xml" inside this APK package
      • Note: If you edit "accesspoints.xml" after you compile the source code of this APK, then a re-pack is required in this condition; or you can edit the file first, then compile the source code.
    • Setup ADB over USB or ADB over Ethernet
    • Using ADB command to install this APK
    • In terminal of host PC, run:

         $ sudo adb shell am instrument -e ssid <SSID> -w com.android.connectivitymanagertest/.ConnectivityManagerTestRunner 
    • For unit test, in terminal of host PC, run:

         $ sudo adb shell am instrument -w com.android.connectivitymanagertest/.ConnectivityManagerUnitTestRunner 
    • For stress test, in terminal of host PC, run:

         $ sudo adb shell am instrument -e stressnum <200> -w com.android.connectivitymanagertest/.ConnectivityManagerStressTestRunner 
  • Validation
    • Check the output of test command, there should be no failure occurred
    • All test should be finished without freezing, kernel panic or crash


Linaro Android Build Command

  • Run Type: Manually
  • Tag for Bug: linaro-android-build-cmds-sh
  • Steps
    • On host PC, download "linaro_android_build_cmds.sh" script from the build site which you will test
    • In terminal of host PC, run:

         $ mkdir build_test
         $ mv linaro_android_build_cmds.sh build_test/
         $ chmod +x linaro_android_build_cmds.sh
         $ ./linaro_android_build_cmds.sh -h 
    • Copy and paste the overlay URL to browser, accept the license, download "vendor.tar.bz2"
    • In terminal of host PC, run:

         $ mv vendor.tar.bz2 build_test/
         $ ./linaro_android_build_cmds.sh -t -o vendor.tar.bz2 
    • After generated "boot.tar.bz2", "system.tar.bz2" and "userdata.tar.bz2", using Linaro Image Tools to flash them to SD card and boot the board
  • Validation
    • "linaro_android_build_cmds.sh" can be download successfully from build web page
    • "vendor.tar.bz2" can be downloaded successfully from overlay URL
    • "boot.tar.bz2", "system.tar.bz2" and "userdata.tar.bz2" can be successfully generated and flashed to SD card by using Linaro Image Tools
    • The target board can be booted into Android main screen and works well


Linaro Kernel Build Command

  • Run Type: Manually
  • Tag for Bug: linaro-kernel-build-cmds-sh
  • Steps
    • On host PC, download "linaro_kernel_build_cmds.sh" script from the build site which you will test
    • TBD
  • Validation
    • TBD


Android Hardware USB

  • Run Type: Manually
  • Tag for Bug: android-hardware-usb
  • Steps
    • Using LAVA
      • Power on the board to boot into Android main screen
      • On host PC, in terminal, run:

            # lava-android-test install usbhardware
            # lava-android-test run usbhardware 
    • Not using LAVA
      • Power on the board to boot into Android main screen
      • In serial console, run:

            # cat /sys/class/android_usb/android0/state 
      • Check the return value
  • Validation
    • Using LAVA
      • Test should pass
    • Not using LAVA
      • If the return value is "DISCONNECTED", then it means test failed; if the return value is "CONFIGURED", it means test passed


Android Input Method Service

  • Run Type: Manually
  • Tag for Bug: android-inputmethodservice
  • Steps
    • Using LAVA
      • Power on the board to boot into Android main screen
      • On host PC, in terminal, run:

            # lava-android-test install ime
            # lava-android-test run ime 
    • Not using LAVA
      • Power on the board to boot into Android main screen
      • In serial console, run:

            # /system/bin/ime list -a 
  • Validation
    • Using LAVA
      • Test should pass
    • Not using LAVA
      • Input method service should be shown in output of command "/system/bin/ime list -a"


Pre-built Image

  • Run Type: Manually
  • Tag for Bug: pre-built
  • Steps
    • On host PC, download binary "img.bz2" file from build page
    • Extract the "img" file from the compressed package:

         $ tar xjvf XXXXX.img.bz2 
    • Plug in SD card to host PC, in terminal, run:

         $ sudo fdisk -l
         $ sudo dd if=XXXXX.img of=/dev/sdX bs=4M 
    • After SD card flashing completed, then insert it to the board and power on
  • Validation
    • The SD card should can be flashed successfully with "dd" command
    • The board should can boot into Android main screen and work well
  • Note:
    • Remember to replace "XXXXX" and "sdX" to yours


Google Hangouts

  • Run Type: Manually
  • Tag for Bug: google-hangouts
  • Steps
    • Power on the board to boot into Android main screen
    • "Google+" or "Hangouts" app should be pre-installed
    • Ensure there is at least one active network on the board
    • Login with "test01" Gmail account on the board
    • Login with "test02" Gmail account on host PC
    • From host PC, start a Google Hangout session and invite "test01"
    • After a notification shows on the board, click it to join in the Hangout session
    • Check the audio and video on both host PC and board
  • Validation
    • "Google+" or "Hangouts" app should exist
    • The board can join in the Hangout session successfully
    • Audio and video work well during the Hangout session


Monkey Runner Test

  • Run Type: Manually
  • Tag for Bug: monkeyrunner-test
  • Steps
    • On host PC, ensure Android SDK is the latest version, "platform-tools" and "tools" have been added to system PATH or user environment
    • Power on the board to boot into Android main screen
    • Setup ADB over USB or ADB over Ethernet
    • On host PC, in terminal, run:

         $ git clone git://android.git.linaro.org/test/linaro/android/system.git
         $ cd system
         $ sudo monkeyrunner 0xbench/run.py <device serial number>
         $ sudo monkeyrunner 3D_game/run.py <device serial number>
         $ sudo monkeyrunner localaudio/run.py <device serial number>
         $ sudo monkeyrunner localswvideo/run.py <device serial number>
         $ sudo monkeyrunner localhwvideo/run.py <device serial number>
         $ sudo monkeyrunner angrybird/run.py <device serial number> 
  • Validation
    • Monkey Runner can be triggered successfully


Perf

  • Run Type: Manually
  • Tag for Bug: perf
  • Steps
    • Power on the board to boot into Android main screen
    • In serial console, run:

         # perf stat ls 
  • Validation
    • The output of command "perf stat ls" should look like this:

         Performance counter stats for 'ls':
      
                0.659622 task-clock                #    0.665 CPUs utilized          
                      24 context-switches          #    0.036 M/sec                  
                       0 CPU-migrations            #    0.000 K/sec                  
                     273 page-faults               #    0.414 M/sec                  
               1'996'348 cycles                    #    3.027 GHz                     [78.98%]
               1'274'167 stalled-cycles-frontend   #   63.82% frontend cycles idle   
               1'005'419 stalled-cycles-backend    #   50.36% backend  cycles idle   
               1'397'625 instructions              #    0.70  insns per cycle        
                                                   #    0.91  stalled cycles per insn
                 277'755 branches                  #  421.082 M/sec                  
                   7'689 branch-misses             #    2.77% of all branches         [28.76%]
      
         0.000992095 seconds time elapsed 


GCC

  • Run Type: Manually
  • Tag for Bug: gcc
  • Steps
    • Power on the board to boot into Android main screen
    • In serial console, run:

         # cd /data/data
         # busybox vi test.c
    • Add following contents to file "test.c", save and quit:

         #include <stdio.h>
         int main(int argc, char **argv) {
             puts("gcc works");
         } 
    • In serial console, run:

         # gcc -O3 test.c
         # ./a.out
  • Validation
    • Output should be "gcc works", anything else is a bug.


G++

  • Run Type: Manually
  • Tag for Bug: g++
  • Steps
    • Power on the board to boot into Android main screen
    • In serial console, run:

         # cd /data/data
         # busybox vi test.cpp
    • Add following contents to file "test.cpp", save and quit:

         #include <iostream>
         int main(int argc, char **argv) {
             std::cout << "g++ works" << std::endl;
         } 
    • In serial console, run:

         # g++ -O3 test.cpp
         # ./a.out
  • Validation
    • Output should be "g++ works", anything else is a bug.


MakeFile

  • Run Type: Manually
  • Tag for Bug: makefile
  • Steps
    • Make
      • Power on the board to boot into Android main screen
      • In serial console, run:

            # cd /data/data
            # busybox vi Makefile
      • Add following contents to file "Makefile", save and quit:

            g++test: test.cpp
            <Insert a Tab Here>$(CXX) -o $@ $< 
      • In serial console, run:

            # make
            # ./g++test
    • Objective Dump
      • In serial console, run:

            # objdump -x g++test | busybox grep stlport
  • Validation
    • Make
      • Output should be normal make output followed by "g++ works", anything else is a bug.
    • Objective Dump
      • Output should be

             NEEDED          libstlport.so
  • Note:
    • A Tab must be used at the beginning of the second line in MakeFile.


Power Management QA

  • Run Type: Manually
  • Tag for Bug: pm-qa
  • Steps
    • Using LAVA pm-qa test
      • Power on the board to boot into Android main screen
      • lp:~kejun-zhou/lava-android-test/pm-qa
    • Using script "pm-qa.sh"
      • Power on the board to boot into Android main screen
      • Ensure there is at least one active network connection on the board
      • In serial console, run:

            # cd /sdcard
            # wget http://bazaar.launchpad.net/~linaro-validation/lava-android-test/trunk/view/head:/lava_android_test/test_definitions/pm-qa/pm-qa.sh
            # ./pm-qa.sh 
  • Validation
    • The test result of "cpuidle" suite in pm-qa should look like this:

          root@android:/ # pm-qa.sh
          /system/xbin/pm-qa
          /system/xbin/pm-qa/cpuidle
          ./cpuidle_01.sh
          cpuidle_01.0: checking 'current_driver' exists...                           pass
          cpuidle_01.1: checking 'current_governor_ro' exists...                      pass
          cpuidle_01.0/cpu0: checking 'desc' exists...                                pass
          cpuidle_01.1/cpu0: checking 'latency' exists...                             pass
          cpuidle_01.2/cpu0: checking 'name' exists...                                pass
          cpuidle_01.3/cpu0: checking 'power' exists...                               pass
          cpuidle_01.4/cpu0: checking 'time' exists...                                pass
          cpuidle_01.5/cpu0: checking 'usage' exists...                               pass
          cpuidle_01.6/cpu0: checking 'desc' exists...                                pass
          cpuidle_01.7/cpu0: checking 'latency' exists...                             pass
          cpuidle_01.8/cpu0: checking 'name' exists...                                pass
          cpuidle_01.9/cpu0: checking 'power' exists...                               pass
          cpuidle_01.10/cpu0: checking 'time' exists...                               pass
          cpuidle_01.11/cpu0: checking 'usage' exists...                              pass
          cpuidle_01.0/cpu1: checking 'desc' exists...                                pass
          cpuidle_01.1/cpu1: checking 'latency' exists...                             pass
          cpuidle_01.2/cpu1: checking 'name' exists...                                pass
          cpuidle_01.3/cpu1: checking 'power' exists...                               pass
          cpuidle_01.4/cpu1: checking 'time' exists...                                pass
          cpuidle_01.5/cpu1: checking 'usage' exists...                               pass
          cpuidle_01.6/cpu1: checking 'desc' exists...                                pass
          ... 
    • The test result of "cpufreq" suite in pm-qa should look like this:

          /system/xbin/pm-qa/cpufreq
          ./cpufreq_06.sh
          ./cpufreq_06.sh[107]: [: gid=1007(log): unexpected operator/operand
          cpufreq_06.0/cpu0: checking deviation for frequency 200.0 MHz...            pass
          cpufreq_06.1/cpu0: checking deviation for frequency 400.0 MHz...            pass
          cpufreq_06.2/cpu0: checking deviation for frequency 800.0 MHz...            pass
          cpufreq_06.3/cpu0: checking deviation for frequency 1000.0 MHz...           fail
          cpufreq_06.0/cpu1: checking deviation for frequency 200.0 MHz...            pass
          cpufreq_06.1/cpu1: checking deviation for frequency 400.0 MHz...            pass
          cpufreq_06.2/cpu1: checking deviation for frequency 800.0 MHz...            pass
          cpufreq_06.3/cpu1: checking deviation for frequency 1000.0 MHz...           fail
          ./cpufreq_08.sh
          ./cpufreq_08.sh[72]: [: gid=1007(log): unexpected operator/operand
          cpufreq_08.0/cpu0: checking 'userspace' 200.0 MHz is fixed...               pass
          cpufreq_08.1/cpu0: checking 'userspace' 400.0 MHz is fixed...               pass
          cpufreq_08.2/cpu0: checking 'userspace' 800.0 MHz is fixed...               pass
          cpufreq_08.3/cpu0: checking 'userspace' 1000.0 MHz is fixed...              pass
          cpufreq_08.0/cpu1: checking 'userspace' 200.0 MHz is fixed...               pass
          ... 
    • The test result of "cpuhotplug" suite in pm-qa should look like this:

          /system/xbin/pm-qa/cpuhotplug
          ./cpuhotplug_05.sh
          [  340.828277] [sched_delayed] process 2310 (cpuidle_killer) no longer affine to cpu1
          [  340.828308] CPU1: shutdown
          [  340.828308] CPU1: shutdown
          cpuhotplug_05.0/cpu1: checking offline processor not found in cpuinfo...    pass
          [  341.087402] CPU1: Booted secondary processor
          ./cpuhotplug_06.sh
          [  341.199829] CPU1: shutdown
          [  341.199859] CPU1: shutdown
          cpuhotplug_06.0/cpu1: checking offline processor not found in interrupts... pass
          [  341.347381] CPU1: Booted secondary processor
          ./cpuhotplug_01.sh
          cpuhotplug_01.0: checking 'online' exists...                                pass
          cpuhotplug_01.1: checking 'offline' exists...                               pass
          cpuhotplug_01.2: checking 'possible' exists...                              pass
          cpuhotplug_01.3: checking 'present' exists...                               pass
          ... 
    • The test result of "sched_mc" suite in pm-qa should look like this:

          /system/xbin/pm-qa/sched_mc
          ./sched_01.sh
          sched_01.0: checking 'sched_mc_power_savings' exists...                     pass
          ./sched_03.sh
          sched_03.0/cpu0: checking 'core_id' exists...                               pass
          sched_03.1/cpu0: checking 'core_siblings' exists...                         pass
          sched_03.2/cpu0: checking 'core_siblings_list' exists...                    pass
          sched_03.3/cpu0: checking 'physical_package_id' exists...                   pass
          sched_03.4/cpu0: checking 'thread_siblings' exists...                       pass
          sched_03.5/cpu0: checking 'thread_siblings_list' exists...                  pass
          sched_03.0/cpu1: checking 'core_id' exists...                               pass
          sched_03.1/cpu1: checking 'core_siblings' exists...                         pass
          sched_03.2/cpu1: checking 'core_siblings_list' exists...                    pass
          sched_03.3/cpu1: checking 'physical_package_id' exists...                   pass
          sched_03.4/cpu1: checking 'thread_siblings' exists...                       pass
          sched_03.5/cpu1: checking 'thread_siblings_list' exists...                  pass
          ./sched_04.sh
          ./sched_04.sh[67]: [: gid=1007(log): unexpected operator/operand
          sched_04.0: checking setting value to 0...                                  pass
          sched_04.1: checking setting value to 1...                                  pass
          sched_04.2: checking setting value to 2...                                  pass
          sched_04.3: checking setting invalid value to 3...                          pass
          sched_04.4: checking setting invalid value to -1...                         pass
          ./sched_02.sh
          sched_02.0/cpu0: checking topology is enabled...                            pass
          sched_02.0/cpu1: checking topology is enabled...                            pass
          ... 
    • The test result of "suspend" suite in pm-qa should look like this:

          /system/xbin/pm-qa/suspend
          ./suspend_06.sh
          ./suspend_06.sh: ../include/suspend.sh[301]: uid=0(root) gid=1007(log): unexpected '('
          *** machine will suspend for 20 seconds
          Suspend iteration 1 of 5
          suspend_06.0: checking iteration suspend/resume stress test...              test-suspend SUSPEND FAILED, did not go to sleep
          fail
          wait for 10 seconds...
          Suspend iteration 2 of 5
          suspend_06.1: checking iteration suspend/resume stress test...              test-suspend SUSPEND FAILED, did not go to sleep
          fail
          wait for 10 seconds...
          Suspend iteration 3 of 5
          suspend_06.2: checking iteration suspend/resume stress test...              test-suspend SUSPEND FAILED, did not go to sleep
          fail
          wait for 10 seconds...
          Suspend iteration 4 of 5
          suspend_06.3: checking iteration suspend/resume stress test...              test-suspend SUSPEND FAILED, did not go to sleep
          fail
          wait for 10 seconds...
          Suspend iteration 5 of 5
          suspend_06.4: checking iteration suspend/resume stress test...              test-suspend SUSPEND FAILED, did not go to sleep
          fail
          wait for 10 seconds...
          ./suspend_01.sh
          ./suspend_01.sh: ../include/suspend.sh[301]: uid=0(root) gid=1007(log): unexpected '('
          *** no primary user (via sudo) dbus tests skipped ...
          ./suspend_05.sh
          ./suspend_05.sh: ../include/suspend.sh[301]: uid=0(root) gid=1007(log): unexpected '('
          *** machine will suspend for 20 seconds
          suspend_05.0: checking iteration variable delay suspend/resume...           test-suspend SUSPEND FAILED, did not go to sleep
          fail
          wait for 20 seconds... 


Powerdebug

  • Run Type: Manually
  • Tag for bug: Powermanagement, powerdebug
  • Steps
    • simply run "powerdebug" in a ADB shell
    • then go through those 4 tabs by clicking "Tab" key
    • and click "Q" to exit.
  • Validation


ARM Browser Benchmark Tests

  • Run Type: Manually
  • Tag for Bug: arm-browser-benchmark
  • Steps
    • Power on the board to boot into Android main screen
    • Ensure there is at least one active network connection on the board
    • On host PC, ensure "lava-android-test" exists with the latest version
    • Assume host PC IP address is 192.168.1.10
    • On host PC, in terminal, run:

         /* Install methanol test on target board*/
         $ lava-android-test install methanol -s <dev_serial_no>
         /* Run fire.html on stock browser */
         $ lava-android-test run methanol -O "-b DEFAULT -d 192.168.1.10" -O result.json -s <dev_serial_no>
         /* Run fire-svg.html on stock browser */
         $ lava-android-test run methanol -O "-t svg -b DEFAULT -d 192.168.1.10" -O result.json -s <dev_serial_no>
         /* Run fire-smp.html on stock browser */
         $ lava-android-test run methanol -O "-t smp -b DEFAULT -d 192.168.1.10" -O result.json -s <dev_serial_no>
         /* Run fire.html on chrome browser */
         $ lava-android-test run methanol -O "-b CHROME -d 192.168.1.10" -O result.json -s <dev_serial_no>
         /* Run fire-svg.html on chrome browser */
         $ lava-android-test run methanol -O "-t svg -b CHROME -d 192.168.1.10" -O result.json -s <dev_serial_no>
         /* Run fire-smp.html on chrome browser */
         $ lava-android-test run methanol -O "-t smp -b CHROME -d 192.168.1.10" -O result.json -s <dev_serial_no> 
  • Validation
    • Test can be triggered and performed successfully
    • The benchmark tools runs successfully and collect the profiling data.

Platform/QA/TestCases/Android (last modified 2014-03-28 05:31:04)