firmware_UpdateFirmwareVersion: Adding reboot_and_reset_tpm function in cleanup.

firmware_UpdateFirmwareVersion & firmware_UpdateFirmwareDataKeyVersion tests
will modifies the firmware version of the shellball and then updates firmware
using Autoupdate.

Then test will recover the original firmware version stored in TPM by calling
reboot_and_reset_tpm after running FirmwareUpdate Recovery.

But if test fails before recovering the original firmware version, then current
cleanup() doesnt recover the original firmware version stored in TPM.

So adding the reboot_and_reset_tpm function in cleanup() to recover the
firmware version stored in TPM when test fails in recovery.

BUG=None
Branch=None
TEST= Verified firmware_UpdateFirmwareVersion &
firmware_UpdateFirmwareDataKeyVersion tests on Octopus-Yorp board.

Change-Id: I656a3b3b4501e52f488f5a1f2bb96d7ac93edc4b
Signed-off-by: Lenine Ajagappane <leninex.ajagappane@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/1344609
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Reviewed-by: Wai-Hong Tam <waihong@google.com>
diff --git a/server/site_tests/firmware_UpdateFirmwareDataKeyVersion/firmware_UpdateFirmwareDataKeyVersion.py b/server/site_tests/firmware_UpdateFirmwareDataKeyVersion/firmware_UpdateFirmwareDataKeyVersion.py
index adf6a7b..03ce99f 100644
--- a/server/site_tests/firmware_UpdateFirmwareDataKeyVersion/firmware_UpdateFirmwareDataKeyVersion.py
+++ b/server/site_tests/firmware_UpdateFirmwareDataKeyVersion/firmware_UpdateFirmwareDataKeyVersion.py
@@ -67,6 +67,7 @@
         self.setup_usbkey(usbkey=True)
         self._fwid = self.faft_client.updater.get_fwid()
 
+        self.fw_ver_tpm = self.faft_client.tpm.get_firmware_datakey_version()
         actual_ver = self.faft_client.bios.get_datakey_version('a')
         logging.info('Origin version is %s', actual_ver)
         self._update_version = actual_ver + 1
@@ -80,6 +81,9 @@
 
     def cleanup(self):
         try:
+            if (self.faft_client.tpm.get_firmware_datakey_version() !=
+                                                       self.fw_ver_tpm):
+                self.reboot_and_reset_tpm()
             self.restore_firmware()
             self.invalidate_firmware_setup()
         except Exception as e:
diff --git a/server/site_tests/firmware_UpdateFirmwareVersion/firmware_UpdateFirmwareVersion.py b/server/site_tests/firmware_UpdateFirmwareVersion/firmware_UpdateFirmwareVersion.py
index ea03e4f..d547d21 100644
--- a/server/site_tests/firmware_UpdateFirmwareVersion/firmware_UpdateFirmwareVersion.py
+++ b/server/site_tests/firmware_UpdateFirmwareVersion/firmware_UpdateFirmwareVersion.py
@@ -55,6 +55,7 @@
 
         self._fwid = self.faft_client.updater.get_fwid()
 
+        self.fw_ver_tpm = self.faft_client.tpm.get_firmware_version()
         actual_ver = self.faft_client.bios.get_version('a')
         logging.info('Origin version is %s', actual_ver)
         self._update_version = actual_ver + 1
@@ -66,6 +67,8 @@
 
     def cleanup(self):
         try:
+            if self.faft_client.tpm.get_firmware_version() != self.fw_ver_tpm:
+                self.reboot_and_reset_tpm()
             self.restore_firmware()
             self.invalidate_firmware_setup()
         except Exception as e: