#!/usr/bin/python # Copyright 2011 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import cliapp import subprocess import sys import time class SpeedTest(cliapp.Application): def add_settings(self): self.add_string_list_setting(['program', 'p'], 'test using PROGRAM ' '(can be given multiple times)') def process_args(self, args): for program in self['program']: argv = [program] + args devnull = open('/dev/null', 'w') started = time.time() p = subprocess.Popen(argv, stdout=devnull, stderr=subprocess.PIPE) out, err = p.communicate('') ended = time.time() if p.returncode: sys.stderr.write('Program failed: %s\n%s' % (argv, err)) sys.exit(1) secs = ended - started self.output.write('%.1f %s\n' % (secs, program)) if __name__ == '__main__': SpeedTest().run()