binary_search_tool_tester.py revision d7444b7a6d96440d0229d898401a59f141576381
1#!/usr/bin/python2 2 3# Copyright 2012 Google Inc. All Rights Reserved. 4"""Tests for bisecting tool.""" 5 6__author__ = 'shenhan@google.com (Han Shen)' 7 8import os 9import random 10import sys 11import unittest 12 13from utils import command_executer 14from binary_search_tool import binary_search_state 15 16import common 17import gen_obj 18 19 20class BisectingUtilsTest(unittest.TestCase): 21 22 def setUp(self): 23 """Generate [100-1000] object files, and 1-5% of which are bad ones.""" 24 obj_num = random.randint(100, 1000) 25 bad_obj_num = random.randint(obj_num / 100, obj_num / 20) 26 if bad_obj_num == 0: 27 bad_obj_num = 1 28 gen_obj.Main(['--obj_num', str(obj_num), '--bad_obj_num', str(bad_obj_num)]) 29 30 def tearDown(self): 31 """Cleanup temp files.""" 32 os.remove(common.OBJECTS_FILE) 33 os.remove(common.WORKING_SET_FILE) 34 print 'Deleted "{0}" and "{1}"'.format(common.OBJECTS_FILE, 35 common.WORKING_SET_FILE) 36 37 def runTest(self): 38 args = ['--get_initial_items', './gen_init_list.py', '--switch_to_good', 39 './switch_to_good.py', '--switch_to_bad', './switch_to_bad.py', 40 '--test_script', './is_good.py', '--prune', '--file_args'] 41 binary_search_state.Main(args) 42 43 _, out, _ = command_executer.GetCommandExecuter().RunCommandWOutput( 44 'tail -n 10 logs/binary_search_state.py.out') 45 ls = out.splitlines() 46 for l in ls: 47 t = l.find('Bad items are: ') 48 if t > 0: 49 bad_ones = l[(t + len('Bad items are: ')):].split() 50 objects_file = common.ReadObjectsFile() 51 for b in bad_ones: 52 self.assertEqual(objects_file[int(b)], 1) 53 54 55def Main(argv): 56 num_tests = 2 57 if len(argv) > 1: 58 num_tests = int(argv[1]) 59 60 suite = unittest.TestSuite() 61 for _ in range(0, num_tests): 62 suite.addTest(BisectingUtilsTest()) 63 runner = unittest.TextTestRunner() 64 runner.run(suite) 65 66 67if __name__ == '__main__': 68 Main(sys.argv) 69