diff options
author | Cassidy Burden <cburden@google.com> | 2016-07-22 10:08:50 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-07-26 10:55:14 -0700 |
commit | 8f7e4bc040879b7a2eb22033f2c83d99cedbe6f4 (patch) | |
tree | fcbdee7ea9a972b2b7dc9444ae7573be03545517 /binary_search_tool/test/switch_to_good_noinc_prune.py | |
parent | 5a9c4419a7625926712263b345f21ad6d204f130 (diff) | |
download | toolchain-utils-8f7e4bc040879b7a2eb22033f2c83d99cedbe6f4.tar.gz |
binary search tool: Fix edge case with noincremental and prune
Fix edge case where not all items were sent to switch_to_good script
when noincremental and prune were both set. Pruning progressively narrows
down the total number of items being searched across because some items
can be assumed good. This fix ensures that these "known good" items are
also sent to the switch script if noincremental is set.
TEST=Add unit test for this case, run other tests
Change-Id: I1145f6eea224f06ceb2352ec77e17e849d489606
Reviewed-on: https://chrome-internal-review.googlesource.com/270718
Commit-Ready: Cassidy Burden <cburden@google.com>
Tested-by: Cassidy Burden <cburden@google.com>
Reviewed-by: Caroline Tice <cmtice@google.com>
Diffstat (limited to 'binary_search_tool/test/switch_to_good_noinc_prune.py')
-rwxr-xr-x | binary_search_tool/test/switch_to_good_noinc_prune.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/binary_search_tool/test/switch_to_good_noinc_prune.py b/binary_search_tool/test/switch_to_good_noinc_prune.py new file mode 100755 index 00000000..c5e78e45 --- /dev/null +++ b/binary_search_tool/test/switch_to_good_noinc_prune.py @@ -0,0 +1,40 @@ +#!/usr/bin/python2 +"""Change portions of the object files to good. + +The "portion" is defined by the file (which is passed as the only argument to +this script) content. Every line in the file is an object index, which will be +set to good (mark as 0). + +This switch script is made for the noincremental-prune test. This makes sure +that, after pruning starts (>1 bad item is found), that the number of args sent +to the switch scripts is equals to the actual number of items (i.e. checking +that noincremental always holds). + +Warning: This switch script assumes the --file_args option +""" + +from __future__ import print_function + +import shutil +import sys + +import common + + +def Main(argv): + working_set = common.ReadWorkingSet() + object_index = common.ReadObjectIndex(argv[1]) + + for oi in object_index: + working_set[int(oi)] = 0 + + shutil.copy(argv[1], './noinc_prune_good') + + common.WriteWorkingSet(working_set) + + return 0 + + +if __name__ == '__main__': + retval = Main(sys.argv) + sys.exit(retval) |