Capturing screenshot of error page when configuration fails for AP.
BUG=None
TEST=manual
Change-Id: I73979636ff866d9b5b191e1c4f880d72a67eb8d8
Reviewed-on: https://gerrit.chromium.org/gerrit/63759
Reviewed-by: Kris Rambish <krisr@chromium.org>
Commit-Queue: Viral Modi <viralmodi@chromium.org>
Tested-by: Viral Modi <viralmodi@chromium.org>
diff --git a/server/cros/chaos_ap_configurators/ap_cartridge.py b/server/cros/chaos_ap_configurators/ap_cartridge.py
index 48b6cf8..220a292 100644
--- a/server/cros/chaos_ap_configurators/ap_cartridge.py
+++ b/server/cros/chaos_ap_configurators/ap_cartridge.py
@@ -44,6 +44,7 @@
logging.error('Configuration failed for AP: %s\n%s',
configurator.get_router_name(),
''.join(traceback.format_exc()))
+ configurator.screenshot_list
configurator.reset_command_list()
logging.info('Configuration of AP %s complete.',
configurator.get_router_name())
diff --git a/server/cros/chaos_ap_configurators/ap_configurator.py b/server/cros/chaos_ap_configurators/ap_configurator.py
index 21fa5ea..0ee44b6 100644
--- a/server/cros/chaos_ap_configurators/ap_configurator.py
+++ b/server/cros/chaos_ap_configurators/ap_configurator.py
@@ -74,6 +74,7 @@
self.wep_authentication_shared = config.WEP_AUTHENTICATION_SHARED
self._command_list = []
+ self._screenshot_list = []
self.driver_connection_established = False
self.router_on = False
@@ -110,6 +111,17 @@
self.destroy_driver_connection()
+ @property
+ def screenshot_list(self):
+ """Returns the file as a base 64 encoded string for screenshot."""
+ if self.driver_connection_established:
+ screenshot = self.driver.get_screenshot_as_base64()
+ if screenshot:
+ self._screenshot_list.append(screenshot)
+ return self._screenshot_list
+ self._screenshot_list = []
+
+
def get_router_name(self):
"""Returns a string to describe the router."""
return ('Router name: %s, Controller class: %s, MAC '
diff --git a/server/cros/chaos_lib/chaos_base_test.py b/server/cros/chaos_lib/chaos_base_test.py
index 9f086e5..0cf2e28 100644
--- a/server/cros/chaos_lib/chaos_base_test.py
+++ b/server/cros/chaos_lib/chaos_base_test.py
@@ -149,6 +149,14 @@
{'error': self.FAILED_CONFIG_MSG,
'try': 0})
self.error_list.append(ap_info)
+ # Capture screenshot when configuration fails
+ for image in ap_info['configurator'].screenshot_list:
+ error = os.path.join(log_dir,
+ 'config_error_screenshot_%d.png' %
+ ap_info['configurator'].screenshot_list.index(image))
+ f = open(error, 'wb')
+ f.write(image.decode('base64'))
+ f.close()
return
# Make iteration 1-indexed