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