Home | History | Annotate | Download | only in catprofile
      1 """
      2 Sets up a subprocses to cat a file on a specified interval
      3 
      4 Defaults options:
      5 job.profilers.add('catprofile', ['/proc/meminfo','/proc/uptime'],
      6                   outfile=monitor, interval=1)
      7 """
      8 import time, os
      9 from autotest_lib.client.bin import profiler
     10 
     11 class catprofile(profiler.profiler):
     12     version = 1
     13 
     14     # filenames: list of filenames to cat
     15     def initialize(self, filenames = ['/proc/meminfo', '/proc/slabinfo'],
     16                             outfile = 'monitor', interval = 1):
     17         self.filenames = filenames
     18         self.outfile = outfile
     19         self.interval = interval
     20 
     21 
     22     def start(self, test):
     23         self.child_pid = os.fork()
     24         if self.child_pid:                      # parent
     25             return None
     26         else:                                   # child
     27             while 1:
     28                 lines = []
     29                 for filename in self.filenames:
     30                     input = open(filename, 'r')
     31                     lines += '\n----- %s -----\n' % filename
     32                     lines += input.readlines()
     33                     input.close
     34                 outfile = test.profdir + '/' + self.outfile
     35                 output = open(outfile, 'a')
     36                 output.write(time.asctime() + '\n')
     37                 output.writelines(lines)
     38                 output.write('\n=========================\n')
     39                 output.close()
     40                 time.sleep(self.interval)
     41 
     42 
     43     def stop(self, test):
     44         os.kill(self.child_pid, 15)
     45 
     46 
     47     def report(self, test):
     48         return None
     49