tree: d3cd943db6737bcf19bf65a8641a3a374a41c4c3 [path history] [tgz]
  1. cutoff/
  2. chrome_debug_tunnel.sh
  3. chrome_openurl.sh
  4. commit_msg_checker.sh
  5. common.sh
  6. cros_payload.sh
  7. device_id.sh
  8. disabled.sh
  9. factory.sh
  10. factory_external_result.sh
  11. factory_restart.sh
  12. goofy_control.sh
  13. goofy_docker.sh
  14. README.md
  15. run_inhibited_job.sh
  16. stub_startup.sh
sh/README.md

factory Usage

factory contains miscellaneous factory commands to run on DUTs. This user guide lists some commonly used factory commands.

factory clear

This command stops all running tests and clears their states.

factory device-data

This command shows the content of the device data dictionary.

localhost ~ # factory device-data
component:
  ...
fw_config: ...
program: <program>
project: <project>
...

To get a specific device data, use -g option.

localhost ~ # factory device-data -g fw_config
12345

device-data also supports setting or deleting keys.

localhost ~ # factory device-data --delete project
localhost ~ # factory device-data project=<project>

Or you can set the device data from a yaml file.

factory device-data --set-yaml FILE

To specify the output format, use --format. The supported formats are yaml, json and pprint.

factory dump-test-list

This command dumps a test list in certain format. For instance, factory dump-test-list main_<project>. You can specify the output format by factory dump-test-list --format [format] <test_list>. The supported formats are: yaml, csv, json, pprint.

factory phase

This command queries or sets the current phase.

localhost ~ # factory phase
PROTO
localhost ~ # factory phase --set EVT
[INFO] factory.py phase.py:180 2021-07-18 13:45:46.786 Setting phase to EVT in /var/factory/state/PHASE
EVT
localhost ~ # factory phase
EVT

factory screenshot

This command takes a screenshot of the Goofy tab that runs the factory test UI. By default, the images are stored under /var/log/screenshot_<TIME>.png.

factory stop

This command stops all running tests.

factory test-list

This command is able to set or get the active test list, and/or list all test lists. Note that generic test list is allowed only when there is no main test list.

To show current test-list:

localhost ~ # factory test-list
[INFO] factory.py manager.py:109 2021-07-18 13:39:17.601 No test list constants config found
[INFO] factory.py manager.py:254 2021-07-18 13:39:17.902 No active test list configuration is found, fall back to select the default test list.
main_<project>

To show all the test lists available.

localhost ~ # factory test-list --list
[INFO] factory.py manager.py:109 2021-07-18 14:12:32.408 No test list constants config found
[INFO] factory.py manager.py:254 2021-07-18 14:12:32.714 No active test list configuration is found, fall back to select the default test list.
main_<project>
[INFO] factory.py manager.py:254 2021-07-18 14:12:32.739 No active test list configuration is found, fall back to select the default test list.
 ACTIVE? ID                      PATH
         generic_main            /usr/local/factory/py/test/test_lists/generic_main.test_list.json
         generic_replacement_mlb /usr/local/factory/py/test/test_lists/generic_replacement_mlb.test_list.json
         generic_rf_station      /usr/local/factory/py/test/test_lists/generic_rf_station.test_list.json
         generic_rma             /usr/local/factory/py/test/test_lists/generic_rma.test_list.json
         generic_rrt             /usr/local/factory/py/test/test_lists/generic_rrt.test_list.json
         generic_tast            /usr/local/factory/py/test/test_lists/generic_tast.test_list.json
         generic_unprovisioned   /usr/local/factory/py/test/test_lists/generic_unprovisioned.test_list.json
(active) main_<project>          /usr/local/factory/py/test/test_lists/main_<project>.test_list.json

factory tests

This command lists all the test on current test list.

localhost ~ # factory tests
main_<project>:SMT.CR50FirmwareUpdate.UpdateCR50Firmware
main_<project>:SMT.CR50FirmwareUpdate.RebootStep
...

You can also combine this command with grep to get desired tests. For instance, if you want to show all the camera related tests, you can:

localhost ~ # factory tests | grep -i camera
main_<project>:FAT.FrontCamera
main_<project>:FAT.RearCamera

To get the running status of a test, run factory tests --status.

localhost ~ # factory tests --status | grep -i main_<project>:FAT.FrontCamera
main_<project>:FAT.FrontCamera: PASSED

To show current active run:

localhost ~ # factory tests --this-run
main_<project>:FAT.FrontCamera

To show detailed information in yaml format:

localhost ~ # factory tests --yaml | grep -i \'main_<project>:FAT.FrontCamera\'
  iterations: 1, iterations_left: 1, parent: false, path: 'main_<project>:FAT.FrontCamera',

factory run

This command runs a certain test. This is the same as clicking the UI to run the test.

localhost ~ # factory run main_<project>:FAT.FrontCamera
Running test main_<project>:FAT.FrontCamera
Active test run ID: f8fd163f-5805-4c3d-99ee-23fadaca7818

factory run-status

This command shows the information about the latest test.

localhost ~ # factory run-status
status: RUNNING
run_id: fb64e9b3-7da2-47ee-b967-afceb42f67a7
scheduled_tests:
main_<project>:FAT.FrontCamera: ACTIVE

factory wait

This command waits for all tests to finish and displays tests' statuses.

localhost ~ # factory wait
main_<project>:FAT.FrontCamera: ACTIVE
main_<project>:FAT.FrontCamera: PASSED
done