A FAFT test to execute the CgptState test on client side.
This test triggers the CgptState test on client side. In the client
CgptState test, it set kernels A and B with different cgpt states
(priority, tries, successful) and checks their boot results.
The test items and logic are now handled in client. This FAFT test
just handles the reboot logic.
See /usr/local/sbin/firmware/saft/cgpt_state.py for more detail.
BUG=chromium-os:19710
TEST=run_remote_tests.sh --remote=$REMOTE_IP -a "xml_config=$OVERLAY_XML \
servo_vid=0x18d1 servo_pid=0x5001" firmware_CgptState
Change-Id: Ib1e6b924b9822004d8b1a22e6e9cfb8ce01b9af5
Reviewed-on: https://gerrit.chromium.org/gerrit/13575
Reviewed-by: Tom Wai-Hong Tam <waihong@chromium.org>
Tested-by: Tom Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Ready: Tom Wai-Hong Tam <waihong@chromium.org>
diff --git a/client/cros/faft_client.py b/client/cros/faft_client.py
index 8cad7f7..e56cc16 100644
--- a/client/cros/faft_client.py
+++ b/client/cros/faft_client.py
@@ -10,14 +10,13 @@
"""
import functools
-import os
import sys
-import tempfile
from optparse import OptionParser
from SimpleXMLRPCServer import SimpleXMLRPCServer
# Import libraries from SAFT.
sys.path.append('/usr/local/sbin/firmware/saft')
+import cgpt_state
import chromeos_interface
import flashrom_handler
import kernel_handler
@@ -51,13 +50,13 @@
def __init__(self):
"""Initialize the data attributes of this class."""
- tmp_dir = tempfile.mkdtemp()
-
# TODO(waihong): Move the explicit object.init() methods to the
# objects' constructors (ChromeOSInterface, FlashromHandler,
# KernelHandler, and TpmHandler).
self._chromeos_interface = chromeos_interface.ChromeOSInterface(False)
- self._chromeos_interface.init(tmp_dir)
+ # We keep the state of FAFT test in a permanent directory over reboots.
+ self._chromeos_interface.init(state_dir='/var/tmp/faft',
+ log_file='/tmp/faft_log.txt')
self._flashrom_handler = flashrom_handler.FlashromHandler()
self._flashrom_handler.init(saft_flashrom_util,
@@ -70,6 +69,9 @@
self._tpm_handler = tpm_handler.TpmHandler()
self._tpm_handler.init(self._chromeos_interface)
+ self._cgpt_state = cgpt_state.CgptState(
+ 'AUTO', self._chromeos_interface, self.get_root_dev())
+
def _dispatch(self, method, params):
"""This _dispatch method handles string conversion especially.
@@ -282,6 +284,34 @@
self._kernel_handler.restore_kernel(section)
+ def run_cgpt_test_loop(self):
+ """Run the CgptState test loop. The tst logic is handled in the client.
+
+ Returns:
+ 0: there are more cgpt tests to execute.
+ 1: no more CgptState test, finished.
+ """
+ return self._cgpt_state.test_loop()
+
+
+ def set_cgpt_test_step(self, step):
+ """Set the CgptState test step.
+
+ Args:
+ step: A test step number.
+ """
+ self._cgpt_state.set_step(step)
+
+
+ def get_cgpt_test_step(self):
+ """Get the CgptState test step.
+
+ Returns:
+ A test step number.
+ """
+ return self._cgpt_state.get_step()
+
+
def cleanup(self):
"""Cleanup for the RPC server. Currently nothing."""
pass