Home | History | Annotate | Download | only in power_ThermalLoad
      1 # Copyright 2018 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 import logging
      5 import time
      6 
      7 from autotest_lib.client.common_lib.cros import chrome
      8 from autotest_lib.client.cros.input_playback import keyboard
      9 from autotest_lib.client.cros.power import power_test
     10 
     11 class power_ThermalLoad(power_test.power_Test):
     12     """class for power_WebGL test.
     13     """
     14     version = 1
     15 
     16     JELLYFISH_URL = 'https://arodic.github.io/p/jellyfish/'
     17     HOUR = 60 * 60
     18 
     19     def run_once(self, test_url=JELLYFISH_URL, duration=2.5 * HOUR):
     20         """run_once method.
     21 
     22         @param test_url: url of webgl heavy page.
     23         @param duration: time in seconds to display url and measure power.
     24         """
     25         with chrome.Chrome(init_network_controller=True) as self.cr:
     26             tab = self.cr.browser.tabs.New()
     27             tab.Activate()
     28 
     29             # Just measure power in full-screen.
     30             fullscreen = tab.EvaluateJavaScript('document.webkitIsFullScreen')
     31             if not fullscreen:
     32                 with keyboard.Keyboard() as keys:
     33                     keys.press_key('f4')
     34 
     35             self.backlight.set_percent(100)
     36 
     37             logging.info('Navigating to url: %s', test_url)
     38             tab.Navigate(test_url)
     39             tab.WaitForDocumentReadyStateToBeComplete()
     40 
     41             if test_url == self.JELLYFISH_URL:
     42                 # Change param to 100 fast moving jellyfish.
     43                 tab.EvaluateJavaScript('$("#jCount").val(100);')
     44                 tab.EvaluateJavaScript('$("#jSpeed").val(0.1);')
     45 
     46                 # Jellyfish is added one by one. Wait until we have 100.
     47                 while tab.EvaluateJavaScript('jellyfish.count') < 100:
     48                     time.sleep(0.1)
     49 
     50             self.start_measurements()
     51             time.sleep(duration)
     52