1# Copyright 2013 The Chromium 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 5import time 6 7 8class PageRunnerRepeatState(object): 9 def __init__(self, repeat_options): 10 self.pageset_start_time = None 11 self.pageset_iters = None 12 self.page_start_time = None 13 self.page_iters = None 14 15 self.options = repeat_options 16 17 def WillRunPage(self): 18 """Runs before we start repeating a page""" 19 self.page_start_time = time.time() 20 self.page_iters = 0 21 22 def WillRunPageSet(self): 23 """Runs before we start repeating a pageset""" 24 self.pageset_start_time = time.time() 25 self.pageset_iters = 0 26 27 def DidRunPage(self): 28 """Runs after each completion of a page iteration""" 29 self.page_iters += 1 30 31 def DidRunPageSet(self): 32 """Runs after each completion of a pageset iteration""" 33 self.pageset_iters += 1 34 35 def ShouldRepeatPageSet(self): 36 """Returns True if we need to repeat this pageset more times""" 37 if (self.options.pageset_repeat_secs and 38 time.time() - self.pageset_start_time > 39 self.options.pageset_repeat_secs): 40 return False 41 elif (not self.options.pageset_repeat_secs and 42 self.pageset_iters >= self.options.pageset_repeat_iters): 43 return False 44 return True 45 46 def ShouldRepeatPage(self): 47 """Returns True if we need to repeat this page more times""" 48 if (self.options.page_repeat_secs and 49 time.time() - self.page_start_time > self.options.page_repeat_secs): 50 return False 51 elif (not self.options.page_repeat_secs and 52 self.page_iters >= self.options.page_repeat_iters): 53 return False 54 return True 55