1*9c5db199SXin Li""" 2*9c5db199SXin LiWhat's eating the battery life of my laptop? Why isn't it many more 3*9c5db199SXin Lihours? Which software component causes the most power to be burned? 4*9c5db199SXin LiThese are important questions without a good answer... until now. 5*9c5db199SXin Li""" 6*9c5db199SXin Liimport time, os 7*9c5db199SXin Lifrom autotest_lib.client.bin import utils, profiler 8*9c5db199SXin Li 9*9c5db199SXin Liclass powertop(profiler.profiler): 10*9c5db199SXin Li version = 1 11*9c5db199SXin Li preserve_srcdir = True 12*9c5db199SXin Li 13*9c5db199SXin Li # filenames: list of filenames to cat 14*9c5db199SXin Li def setup(self, *args, **dargs): 15*9c5db199SXin Li os.chdir(self.srcdir) 16*9c5db199SXin Li utils.make() 17*9c5db199SXin Li 18*9c5db199SXin Li 19*9c5db199SXin Li def start(self, test): 20*9c5db199SXin Li self.child_pid = os.fork() 21*9c5db199SXin Li if self.child_pid: # parent 22*9c5db199SXin Li return None 23*9c5db199SXin Li else: # child 24*9c5db199SXin Li powertop = os.path.join(self.srcdir, 'powertop') + ' -d' 25*9c5db199SXin Li outputfile = os.path.join(test.profdir, 'powertop') 26*9c5db199SXin Li while True: 27*9c5db199SXin Li output = open(outputfile, 'a') 28*9c5db199SXin Li output.write(time.asctime() + '\n') 29*9c5db199SXin Li data = utils.system_output('%s >> %s' % (powertop, outputfile)) 30*9c5db199SXin Li output.write(data) 31*9c5db199SXin Li output.write('\n=========================\n') 32*9c5db199SXin Li output.close() 33*9c5db199SXin Li 34*9c5db199SXin Li 35*9c5db199SXin Li def stop(self, test): 36*9c5db199SXin Li os.kill(self.child_pid, 15) 37*9c5db199SXin Li 38*9c5db199SXin Li 39*9c5db199SXin Li def report(self, test): 40*9c5db199SXin Li return None 41