Copyright (c) 2010 The Chromium OS Authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. This document describes the steps to go through in order to run Chrome OS hardware qualification on a device under test. ================================================================================ Glossary ================================================================================ - $: command line prompt - $HOME: home directory of current user. - AC: alternating current, implies device is not powered by battery. - DUT: device under test - Semi-Automated Test: test that runs with automation but requires manual intervention. ================================================================================ Test Setup ================================================================================ - Setup a Linux machine to serve as the Autotest server. The Autotest server requires Python, Wireless access to the DUT and basic Linux shell utilities. The setup has been tested on Ubuntu 9.10 available for download at http://www.ubuntu.com/getubuntu/download/. - Create an installation directory on the Autotest server for the Chrome OS hardware qualification package. The rest of the instructions assume that you're installing the package in the current user home directory ($HOME/). - Contact your Google technical support person and download the Chrome OS hardware qualification package chromeos-hwqual-TAG.tar.bz2 for your device in $HOME/. - Install the package on the server: $ cd $HOME/ && tar xjf chromeos-hwqual-TAG.tar.bz2 - Install the Chrome OS test image on the DUT. The USB test image is available in: $HOME/chromeos-hwqual-TAG/chromeos-hwqual-usb.img Here are sample steps to install the test image. - Plug a USB storage device into the Autotest server. Note that all data on your USB stick will be destroyed. - Unmount any mounts on the USB device. - Copy the USB image to a USB storage device by executing: $ sudo dd if=$HOME/chromeos-hwqual-TAG/chromeos-hwqual-usb.img \ of=/dev/sdX - where /dev/sdX is your USB device. - Plug the USB device into the DUT and boot from it. - Log in to Chrome OS. Start the Chrome OS shell by pressing Ctrl-Alt-T. Install Chrome OS on the DUT: crosh> install - Cold boot the DUT -- turn the DUT off and then back on. This ensures a consistent starting point for the qualification tests and allows the system to collect cold boot performance metrics. Make sure you don't boot from USB. - Connect the DUT to the network and note its IP address <DUT_IP>. The IP address is displayed at the bottom of the network selection menu. Unless specified explicitly, the test setup works correctly through either wireless or wired network connections. - Add the DUT root private key to ssh-agent on the Autotest server: $ ssh-add $HOME/chromeos-hwqual-TAG/testing_rsa - If ssh-add fails saying that it cannot connect to your authentication agent, retry the command after running: $ eval `ssh-agent -s` - These commands allow the Autotest server to connect and login as root on the DUT. - Make sure you can ssh as root to the DUT from the Autotest server. The command below should print 0. $ ssh root@<DUT_IP> true; echo $? ================================================================================ Automated and Semi-Automated Test Runs ================================================================================ - Unless otherwise noted, all tests can be performed on an AC-powered DUT. - Go to the Autotest server directory and clean up previous test results. $ cd $HOME/chromeos-hwqual-TAG/autotest/ $ rm -rf results.* - Run the fully automated client-side tests: $ ./server/autoserv -r results.auto -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.auto - Plug high-speed high-capacity storage devices in all USB and SD Card slots and run the external storage test: $ ./server/autoserv -r results.external_devices -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.external_drives - Run the system suspend/resume stability test: $ ./server/autoserv -r results.suspend_resume -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.suspend_resume - If the DUT has video out ports, run the Video Out semi-automated test by following the instructions specified in the control file (control.video_out) and then executing: $ ./server/autoserv -r results.video_out.${PORT} -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.video_out - Where PORT is the name of each video port you are testing. For example, if the DUT has one HDMI and one VGA out port, run: $ ./server/autoserv -r results.video_out.hdmi1 -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.video_out $ ./server/autoserv -r results.video_out.vga1 -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.video_out - Run the graphics tearing test: $ ./server/autoserv -r results.teartest -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.teartest - Run audio test, with built-in speakers and microphone $ ./server/autoserv -r results.audio -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.audio - Plug-in headphone and microphone, run audio test again $ ./server/autoserv -r results.audio_ext -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.audio - Run the Keyboard test : (Wait several seconds after running the test. Then strike the "Search" key, e.g. the key above Left Shift and below Tab) $ ./server/autoserv -r result.keyboard -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.keyboard - Run the DUT on AC. Probe the AC driver: $ ./server/autoserv -r result.probe_ac -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.probe_ac - Run the DUT on battery. Probe the battery driver: (If you just unplugged AC, please wait for a second before running the test for kernel updating power status.) $ ./server/autoserv -r result.probe_bat -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.probe_bat - Run the DUT on AC. Plug a power draw USB dongle in each USB port. Run the max power draw test: $ ./server/autoserv -r results.max_power_draw.ac -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.max_power_draw - Run the DUT on battery. Plug a power draw USB dongle in each USB port. Run the max power draw test: $ ./server/autoserv -r results.max_power_draw.batt -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.max_power_draw - Run the DUT on AC. Run the power settings test: $ ./server/autoserv -r results.power_x86_setting.ac -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.power_x86_settings - Run the DUT on battery. Run the power settings test: $ ./server/autoserv -r results.power_x86_setting.batt -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.power_x86_settings - Make sure the remaining battery charge is less than 5%. Note that the test will check and fail quickly if the initial battery charge is more than 5%. Run the DUT on AC. Run the battery charge test: $ ./server/autoserv -r results.battery_charge_time -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.battery_charge_time - Make sure that the battery is fully charged. Note that the test will not check if the battery is fully charged before running. Run the DUT on battery. Run the battery load test by first following the manual instructions specified in the control file (control.battery_load) and then executing: $ ./server/autoserv -r results.battery_load -m <DUT_IP> \ -c client/site_tests/suite_HWQual/control.battery_load ================================================================================ Reviewing Automated and Semi-Automated Test Results ================================================================================ - Autotest logs progress and performance data in results.* directories specified through the '-r' autoserv option. The easy way to see a summary of your test results is to use the 'generate_test_report' script installed under $HOME/chromeos-hwqual-TAG/: $ ../generate_test_report results.* This will display a table with test status and perfomance data for all result directories. - If deeper investigation into a failure is required, you can review the debug information stored in results: $ ls */*/debug/. ================================================================================ Manual Test Runs ================================================================================ - Perform the manual tests specified in $HOME/chromeos-hwqual-TAG/manual/testcases.csv. - Please note that some tests cannot be tested as they rely on features not yet implemented. They are being included as a preview for manual tests that will be required. Such tests will have "NotImplemented" in their "LABELS" column. - Update this spreadsheet with a column of pass/fail results with any notes which may be useful. ================================================================================ Reporting Results ================================================================================ - Upon completing automatic, semi-automatic, and manual test runs, you should report your results to a Google technical support contact to verify the tests were run correctly and to help diagnose failures. Verify you have updated your manual test spreadsheet as described above and copy it into your autotest output directory: $ cd $HOME/chromeos-hwqual-TAG/autotest/ $ cp ../manual/testcases.csv . - Package all results into a tar file: $ tar cjf chromeos-hwqual-results-TAG-DATE.tar.bz2 results.* testcases.csv - Send the resulting chromeos-hwqual-results file to your technical support contact.