Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: tools/isolate/trace_inputs.py

Issue 10381112: Add .clean_trace() to the APIs to delete the stale traces. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # coding=utf-8 2 # coding=utf-8
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Runs strace or dtrace on a test and processes the logs to extract the 7 """Runs strace or dtrace on a test and processes the logs to extract the
8 dependencies from the source tree. 8 dependencies from the source tree.
9 9
10 Automatically extracts directories where all the files are used to make the 10 Automatically extracts directories where all the files are used to make the
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 logging.debug( 382 logging.debug(
383 '_handle_file(%d, %s) -> %s' % (pid, old_filepath, filepath)) 383 '_handle_file(%d, %s) -> %s' % (pid, old_filepath, filepath))
384 else: 384 else:
385 logging.debug('_handle_file(%d, %s)' % (pid, filepath)) 385 logging.debug('_handle_file(%d, %s)' % (pid, filepath))
386 if filepath not in self.files and filepath not in self.non_existent: 386 if filepath not in self.files and filepath not in self.non_existent:
387 if os.path.isfile(filepath): 387 if os.path.isfile(filepath):
388 self.files.add(filepath) 388 self.files.add(filepath)
389 else: 389 else:
390 self.non_existent.add(filepath) 390 self.non_existent.add(filepath)
391 391
392 @staticmethod
393 def clean_trace(logname):
394 """Deletes the old log."""
395 if os.path.isfile(logname):
396 os.remove(logname)
MAD 2012/05/11 18:51:38 Shouldn't we try to catch these? "On Windows, att
M-A Ruel 2012/05/11 18:57:25 I prefer the script to crash if the files can't be
397
392 @classmethod 398 @classmethod
393 def gen_trace(cls, cmd, cwd, logname, output): 399 def gen_trace(cls, cmd, cwd, logname, output):
394 """Runs strace on an executable.""" 400 """Runs strace on an executable."""
395 logging.info('gen_trace(%s, %s, %s, %s)' % (cmd, cwd, logname, output)) 401 logging.info('gen_trace(%s, %s, %s, %s)' % (cmd, cwd, logname, output))
396 stdout = stderr = None 402 stdout = stderr = None
397 if output: 403 if output:
398 stdout = subprocess.PIPE 404 stdout = subprocess.PIPE
399 stderr = subprocess.STDOUT 405 stderr = subprocess.STDOUT
400 traces = ','.join(cls.Context.traces()) 406 traces = ','.join(cls.Context.traces())
401 trace_cmd = ['strace', '-f', '-e', 'trace=%s' % traces, '-o', logname] 407 trace_cmd = ['strace', '-f', '-e', 'trace=%s' % traces, '-o', logname]
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 logging.debug('_handle_file(%d, %s)' % (pid, filepath)) 698 logging.debug('_handle_file(%d, %s)' % (pid, filepath))
693 if os.path.isfile(filepath): 699 if os.path.isfile(filepath):
694 self.files.add(filepath) 700 self.files.add(filepath)
695 else: 701 else:
696 self.non_existent.add(filepath) 702 self.non_existent.add(filepath)
697 703
698 @staticmethod 704 @staticmethod
699 def _handle_ignored(_ppid, pid, function, args, result): 705 def _handle_ignored(_ppid, pid, function, args, result):
700 logging.debug('%d %s(%s) = %s' % (pid, function, args, result)) 706 logging.debug('%d %s(%s) = %s' % (pid, function, args, result))
701 707
708 @staticmethod
709 def clean_trace(logname):
710 """Deletes the old log."""
711 if os.path.isfile(logname):
712 os.remove(logname)
713
702 @classmethod 714 @classmethod
703 def gen_trace(cls, cmd, cwd, logname, output): 715 def gen_trace(cls, cmd, cwd, logname, output):
704 """Runs dtrace on an executable.""" 716 """Runs dtrace on an executable."""
705 logging.info('gen_trace(%s, %s, %s, %s)' % (cmd, cwd, logname, output)) 717 logging.info('gen_trace(%s, %s, %s, %s)' % (cmd, cwd, logname, output))
706 logging.info('Running: %s' % cmd) 718 logging.info('Running: %s' % cmd)
707 signal = 'Go!' 719 signal = 'Go!'
708 logging.debug('Our pid: %d' % os.getpid()) 720 logging.debug('Our pid: %d' % os.getpid())
709 721
710 # Part 1: start the child process. 722 # Part 1: start the child process.
711 stdout = stderr = None 723 stdout = stderr = None
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 self.IGNORED.add(os.environ[i]) 1018 self.IGNORED.add(os.environ[i])
1007 1019
1008 # Also add their short path name equivalents. 1020 # Also add their short path name equivalents.
1009 for i in list(self.IGNORED): 1021 for i in list(self.IGNORED):
1010 self.IGNORED.add(GetShortPathName(i)) 1022 self.IGNORED.add(GetShortPathName(i))
1011 1023
1012 # Add this one last since it has no short path name equivalent. 1024 # Add this one last since it has no short path name equivalent.
1013 self.IGNORED.add('\\systemroot') 1025 self.IGNORED.add('\\systemroot')
1014 self.IGNORED = tuple(sorted(self.IGNORED)) 1026 self.IGNORED = tuple(sorted(self.IGNORED))
1015 1027
1028 @staticmethod
1029 def clean_trace(logname):
1030 """Deletes the old log."""
1031 if os.path.isfile(logname):
1032 os.remove(logname)
1033 if os.path.isfile(logname + '.etl'):
1034 os.remove(logname + '.etl')
1035
1016 @classmethod 1036 @classmethod
1017 def gen_trace(cls, cmd, cwd, logname, output): 1037 def gen_trace(cls, cmd, cwd, logname, output):
1018 logging.info('gen_trace(%s, %s, %s, %s)' % (cmd, cwd, logname, output)) 1038 logging.info('gen_trace(%s, %s, %s, %s)' % (cmd, cwd, logname, output))
1019 # Use "logman -?" for help. 1039 # Use "logman -?" for help.
1020 1040
1021 etl = logname + '.etl' 1041 etl = logname + '.etl'
1022 1042
1023 stdout = stderr = None 1043 stdout = stderr = None
1024 if output: 1044 if output:
1025 stdout = subprocess.PIPE 1045 stdout = subprocess.PIPE
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
1331 1351
1332 Arguments: 1352 Arguments:
1333 - logfile: file to write to. 1353 - logfile: file to write to.
1334 - cmd: command to run. 1354 - cmd: command to run.
1335 - cwd: current directory to start the process in. 1355 - cwd: current directory to start the process in.
1336 - api: a tracing api instance. 1356 - api: a tracing api instance.
1337 - output: if True, returns output, otherwise prints it at the console. 1357 - output: if True, returns output, otherwise prints it at the console.
1338 """ 1358 """
1339 cmd = fix_python_path(cmd) 1359 cmd = fix_python_path(cmd)
1340 assert os.path.isabs(cmd[0]), cmd[0] 1360 assert os.path.isabs(cmd[0]), cmd[0]
1341 if os.path.isfile(logfile): 1361 api.clean_trace(logfile)
1342 os.remove(logfile)
1343 return api.gen_trace(cmd, cwd, logfile, output) 1362 return api.gen_trace(cmd, cwd, logfile, output)
1344 1363
1345 1364
1346 def load_trace(logfile, root_dir, api): 1365 def load_trace(logfile, root_dir, api):
1347 """Loads a trace file and returns the processed file lists. 1366 """Loads a trace file and returns the processed file lists.
1348 1367
1349 Arguments: 1368 Arguments:
1350 - logfile: file to load. 1369 - logfile: file to load.
1351 - root_dir: root directory to use to determine if a file is relevant to the 1370 - root_dir: root directory to use to determine if a file is relevant to the
1352 trace or not. 1371 trace or not.
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1478 os.path.abspath(options.log), 1497 os.path.abspath(options.log),
1479 args, 1498 args,
1480 options.root_dir, 1499 options.root_dir,
1481 options.cwd, 1500 options.cwd,
1482 options.product_dir, 1501 options.product_dir,
1483 options.force) 1502 options.force)
1484 1503
1485 1504
1486 if __name__ == '__main__': 1505 if __name__ == '__main__':
1487 sys.exit(main()) 1506 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698