aboutsummaryrefslogtreecommitdiff
path: root/binary_search_tool
AgeCommit message (Collapse)Author
2016-06-21Add tests to and update sysroot_wrapper bisectorCassidy Burden
Add new testing script to sysroot_wrapper bisector and make all shell scripts for sysroot_wrapper bisector executable. TEST=Run new test on chromeos-chrome Change-Id: I312e50108e36341517ed1f8ea6b8d415e4184c2e Reviewed-on: https://chrome-internal-review.googlesource.com/265975 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-21binary search tool: Add Run method and move Main logic thereCassidy Burden
Add Run method so that the binary search tool can be easily invoked from other Python scripts (see update to binary_search_tool_tester.py). Now Main only does very basic arg_parse logic and leaves rest up to Run. Test=Unit tests run, cros_pkg tester passes Change-Id: I90400f9223c7aad0a2701944ba8282fb763f1cf7 Reviewed-on: https://chrome-internal-review.googlesource.com/265628 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com> Reviewed-by: Han Shen <shenhan@google.com>
2016-06-20Binary search tool: Refactor bs to binary_searchCassidy Burden
TEST=Run unit tests Change-Id: Ia7f682c42602e9355d1e2db67e258e2864c78126 Reviewed-on: https://chrome-internal-review.googlesource.com/265276 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com> Reviewed-by: Han Shen <shenhan@google.com>
2016-06-20binary search tool: Cleanup state files after SaveState unit testCassidy Burden
Running test_bad_save_state would previously leave a save state with no symlink pointing to it. This would cause multiple save states to gather and clutter up the directory. We now simply cleanup the generated save state in this test case. TEST=Run unit test and see if any state files remain Change-Id: If594c7266b2ff24a260e746a4d06bddea2c0bf78 Reviewed-on: https://chrome-internal-review.googlesource.com/265286 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-17Remove unnecessary prune iterations from binary search toolCassidy Burden
Previously the binary search tool would do multiple prune iterations to check if it was complete (using num_bad_items_history). This could lead to dozens of unneccesary prune iterations. Now we just do one extra prune iteration before completing by checking the found_items set. TEST=Run unit tests and test cros_pkg bisector Change-Id: Id5d6e45c15dcf4b4c0a1c1e6c3feb97d5c0d6d62 Reviewed-on: https://chrome-internal-review.googlesource.com/265275 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-17[crosperf] Add phony image testing, for easier package development.Caroline Tice
Using a 'real' bad image for bisecting tool development makes it very slow because it often requires manual intervention to push images onto device and to verify if image is good or bad. This CL creates a phony good/bad test that just looks at the md5 hash value of Chrome package, allowing testing to be done with two good images, which greatly simplifies bisecting tool development. BUG=None TEST=Tested these scripts individually in my chroot. Change-Id: I4342f8f152162e12f49b916f5977776aa79e1b03 Reviewed-on: https://chrome-internal-review.googlesource.com/264605 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-17Fix binary search tool SaveState to correctly save bisecting logicCassidy Burden
Previously SaveState wasn't saving the full program state. Now resuming can continue at the latest possible iteration. TEST=Unit tests run, tested with package bisector Change-Id: Id8542a61d16b4c3e18d696d0b601fbd0dd98d048 Reviewed-on: https://chrome-internal-review.googlesource.com/265096 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com> Reviewed-by: Han Shen <shenhan@google.com>
2016-06-17Fix cros_pkg switch scripts so last input is properly readCassidy Burden
When using --file_args the last line of input won't have a newline. This commit fixes the switch scripts so that read doesn't finish before reading the last line. Change-Id: Ia180ca2c26a40d6d0dafdb53d9129f3079e79a1b Reviewed-on: https://chrome-internal-review.googlesource.com/265085 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com> Reviewed-by: Han Shen <shenhan@google.com>
2016-06-16Add resuming to binary search toolCassidy Burden
Move around logic so that the binary search tool can be properly resumed and add the --resume option. TEST=Added unit test for LoadState Change-Id: I7059fab9ac6c37ecfd79e4cf2ef976bdebfef8fb Reviewed-on: https://chrome-internal-review.googlesource.com/264778 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com> Reviewed-by: Han Shen <shenhan@google.com>
2016-06-15Fix binary search tool's temp file creationCassidy Burden
Fix the binary search tool so that temp files are created properly. This means that temp files made for the switch scripts should be automatically deleted once the switch script completes. TEST=New unit test for temp file deletion Change-Id: I5d36bfa07e274cd79965f182d85d6a7ea3006c85 Reviewed-on: https://chrome-internal-review.googlesource.com/264735 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-15Fix binary search tool install unit testsCassidy Burden
Change from using module wide variable common.installed to using a file called "./installed". Previously common.installed wouldn't actually be set properly because there would be two separate instances of Python running. TEST=More robust install unit test made Change-Id: Iee87a52e0f54fc63837b25918764e804747525db Reviewed-on: https://chrome-internal-review.googlesource.com/264745 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-14Fix binary search tool tester to process output correctlyCassidy Burden
Fix the unit tests so that they run tail on the correct logs. Also fix edge case when only one bad item is found. Change-Id: I31f34755440af51a8a2310d9393aa87dc852c31d Reviewed-on: https://chrome-internal-review.googlesource.com/264695 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Luis Lozano <llozano@chromium.org>
2016-06-14Update BinarySearchState's SaveState to be atomicCassidy Burden
SaveState will now save the current state of the binary search tool to a temp file then atomically switch the symlink to the new file. TEST=Added new unit test for SaveState Change-Id: Idf97c8ef346700a6e653206083ee7ab75832dbd5 Reviewed-on: https://chrome-internal-review.googlesource.com/264419 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-13Add constant progress output to binary search toolCassidy Burden
Add output for each iteration of the binary search tool to inform user of current status: number of remaining iterations, found bad items, etc. TEST=Ran binary_search_tool_tester and cros_pkg Change-Id: I835893330b532b7f0de9b4fe072ca72c6d7f3b6c Reviewed-on: https://chrome-internal-review.googlesource.com/264258 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-13[crosperf] Update binary search scripts to use same logger.Cassidy Burden
TEST=Run with package bisector, logs no longer overwritten BUG=619081 Change-Id: I0f9b76a2b08c98b53a7e7a98b52ba4a1f02a0276 Reviewed-on: https://chrome-internal-review.googlesource.com/263946 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-13Update bisection tool to use RunCommandWExceptionCleanupCassidy Burden
Update all calls to RunCommand to RunCommandWExceptionCleanup so that processes spawned by the bisection tool are properly cleaned up. TEST=Ctrl-c properly kill cros flash BUG=chromium:618461 Change-Id: I53871a911b723007d550876241129708b7ae2a92 Reviewed-on: https://chrome-internal-review.googlesource.com/264278 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-10Add verbose option to binary search toolCassidy Burden
Ignore most output from binary search tool and provide option to see full output with the -V or --verbose option. Full output will still logged even without the --verbose option. TEST=Ran binary_search_tool_tester and cros_pkg Change-Id: I02d958f79813083b48d989c9881536ad025bb1dc Reviewed-on: https://chrome-internal-review.googlesource.com/264075 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com> Reviewed-by: Han Shen <shenhan@google.com>
2016-06-09Add default install script to cros_pkgCassidy Burden
Provide install script to package bisecting tool. This script handles failed flash by prompting user to flash via usb or resetting the Chromebook. Test=A few iterations of bisecting tool run. Successfully install after initial failed flash. Change-Id: I161c697a87e87cb66ce5a2efc152505d8a2a5b8e Reviewed-on: https://chrome-internal-review.googlesource.com/263915 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-08Add install_script argument to binary search tool.Cassidy Burden
Add optional install_script argument that will run before test_script use this install_script to perform building/flashing/other misc. setup. If your build or flash succeeds then return 0, otherwise return 1 and this build will be "skipped" (equivalent to the test script returning a 2 exit code). Test=Update unit tests to test for successful and failed install Change-Id: Ic492f08230796f50b7bb93aebe078960419a3c99 Reviewed-on: https://chrome-internal-review.googlesource.com/262988 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-03Fix typo with package bisector switch_to_good scriptCassidy Burden
Fix error where cros_pkg_switch_to_good.sh was using the bad build files if passed a file argument. Test=Switch to good verification passed with cros_pkg bisector Change-Id: Ie2d5e1e741ceb97ba05d6f827161d12c103d9e48 Reviewed-on: https://chrome-internal-review.googlesource.com/262466 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-06-01Fix linting errors with binary search tool.Cassidy Burden
Fix basic style errors in BST tests and remove use of optparse across scripts. Change-Id: I4f484fb22ca6bb6849d79144bf7bdb7a38e49468 Reviewed-on: https://chrome-internal-review.googlesource.com/261739 Commit-Ready: Cassidy Burden <cburden@google.com> Tested-by: Cassidy Burden <cburden@google.com> Reviewed-by: Caroline Tice <cmtice@google.com> Reviewed-by: Han Shen <shenhan@google.com>
2016-05-26[crosperf] Update bisecing triage tool to not update build_image.Caroline Tice
The package bisecting tool used to actually edit the build_image script, to prevent it from calling 'eclean', which messed up the bisecting tool. Now there's a flag '-noeclean' that can be passed to build_image instead. This CL updates the tool to use the flag, which is much safer, rather than modifying the build_image script. It also cleans up a few other minor issues with the tool BUG=chromium:614829 TEST=Ran the tool with these changes. Change-Id: If92148306c041b49d3fa45253ea5451bc840d862 Reviewed-on: https://chrome-internal-review.googlesource.com/260726 Commit-Ready: Caroline Tice <cmtice@google.com> Tested-by: Caroline Tice <cmtice@google.com> Reviewed-by: Yunlian Jiang <yunlian@google.com>
2016-01-23toolchain-utils: fix class-missing-docstring lint warnings.Rahul Chaudhry
BUG=chromium:570458 TEST='crosperf/run_tests.sh' passes. Change-Id: I0640cab2c8d15380badbfbc0db39e3063cc85471 Reviewed-on: https://chrome-internal-review.googlesource.com/244867 Commit-Ready: Rahul Chaudhry <rahulchaudhry@google.com> Tested-by: Rahul Chaudhry <rahulchaudhry@google.com> Reviewed-by: Luis Lozano <llozano@chromium.org>
2016-01-23toolchain-utils: fix module-missing-docstring lint warnings.Rahul Chaudhry
BUG=chromium:570458 TEST='crosperf/run_tests.sh' passes. Change-Id: Ifda134bf5f26db04551b915c189814b86e750df3 Reviewed-on: https://chrome-internal-review.googlesource.com/244866 Commit-Ready: Rahul Chaudhry <rahulchaudhry@google.com> Tested-by: Rahul Chaudhry <rahulchaudhry@google.com> Reviewed-by: Luis Lozano <llozano@chromium.org>
2016-01-04toolchain-utils: fix docstring-second-line-blank lint warnings.Rahul Chaudhry
BUG=chromium:570458 TEST='crosperf/run_tests.sh' passes. Change-Id: I5b8e7fafbfb73abedb03a1d01267b4216493773b Reviewed-on: https://chrome-internal-review.googlesource.com/243456 Commit-Ready: Rahul Chaudhry <rahulchaudhry@google.com> Tested-by: Rahul Chaudhry <rahulchaudhry@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-01-04toolchain-utils: fix missing-print-function lint warnings.Rahul Chaudhry
BUG=chromium:570458 TEST='crosperf/run_tests.sh' passes. Change-Id: I2e0cf0d903b0ca7662132528ee6860ea8eaee83b Reviewed-on: https://chrome-internal-review.googlesource.com/243412 Commit-Ready: Rahul Chaudhry <rahulchaudhry@google.com> Tested-by: Rahul Chaudhry <rahulchaudhry@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2016-01-04toolchain-utils: apply pyformat to the source files.Rahul Chaudhry
BUG=chromium:570458 TEST='crosperf/run_tests.sh' passes. Change-Id: I0cb94c77c26941fafb97cca2b9e9bb12cf4c210e Reviewed-on: https://chrome-internal-review.googlesource.com/243411 Commit-Ready: Rahul Chaudhry <rahulchaudhry@google.com> Tested-by: Rahul Chaudhry <rahulchaudhry@google.com> Reviewed-by: Caroline Tice <cmtice@google.com>
2015-12-28toolchain-utils: fix shebang related lint warnings.Rahul Chaudhry
This CL fixes all missing-shebang and bad-shebang lint warnings. BUG=chromium:570458 TEST='crosperf/run_tests.sh' passes. Change-Id: I41bd3516496b246e4e4a8ccc9f97fb25007738a7 Reviewed-on: https://chrome-internal-review.googlesource.com/243136 Commit-Ready: Rahul Chaudhry <rahulchaudhry@google.com> Tested-by: Rahul Chaudhry <rahulchaudhry@google.com> Reviewed-by: Luis Lozano <llozano@chromium.org>
2015-12-28toolchain-utils: remove unused imports.Rahul Chaudhry
This CL fixes all unused-import lint warnings. BUG=chromium:570458 TEST='crosperf/run_tests.sh' passes. Change-Id: I145cebe61117388e729cf1b67001cb727fee1b33 Reviewed-on: https://chrome-internal-review.googlesource.com/243108 Commit-Ready: Rahul Chaudhry <rahulchaudhry@google.com> Tested-by: Rahul Chaudhry <rahulchaudhry@google.com> Reviewed-by: Luis Lozano <llozano@chromium.org>
2015-12-17toolchain-utils: clean lint warning.Yunlian Jiang
BUG=chromium:567921 TEST=binary_search_state.py is lint clean. Change-Id: Ie5f3b056e64167ac715b1cb03cc796aa4f3f33be Reviewed-on: https://chrome-internal-review.googlesource.com/242515 Commit-Ready: Yunlian Jiang <yunlian@google.com> Tested-by: Yunlian Jiang <yunlian@google.com> Reviewed-by: Caroline Tice <cmtice@google.com> Reviewed-by: Yunlian Jiang <yunlian@google.com>
2015-12-17toolchani-utils: clean lint warning for binary_search_perforce.pyYunlian Jiang
BUG=chromium:567921 TEST=binary_search_perforce.py is lint clean. Change-Id: Ib77e93f719df0de740e8954c67de40fd754dd245 Reviewed-on: https://chrome-internal-review.googlesource.com/242505 Commit-Ready: Yunlian Jiang <yunlian@google.com> Tested-by: Yunlian Jiang <yunlian@google.com> Reviewed-by: Han Shen <shenhan@google.com>
2015-12-16Run pyformat on all the toolchain-utils files.Luis Lozano
This gets rid of a lot of lint issues. Ran by doing this: for f in *.py; do echo -n "$f " ; if [ -x $f ]; then pyformat -i --remove_trailing_comma --yapf --force_quote_type=double $f ; else pyformat -i --remove_shebang --remove_trailing_comma --yapf --force_quote_type=double $f ; fi ; done BUG=chromium:567921 TEST=Ran simple crosperf run. Change-Id: I59778835fdaa5f706d2e1765924389f9e97433d1 Reviewed-on: https://chrome-internal-review.googlesource.com/242031 Reviewed-by: Luis Lozano <llozano@chromium.org> Commit-Queue: Luis Lozano <llozano@chromium.org> Tested-by: Luis Lozano <llozano@chromium.org> Reviewed-by: Yunlian Jiang <yunlian@google.com>
2015-12-15crosperf: RunCommand should return one type of object.Luis Lozano
Cleaned up the interfaces for the RunCommand routines. These were returning different types (int or tuple) depending on the value of the return_ouput parameter. Returning different unrelated types from a routine is bad practice. Linter complains about this with several warnings like this: "Attempting to unpack a non-sequence defined at line XY of utils.command_executer" BUG=chromium:566256 TEST=ran crosperf with a example experiment file Ran run_tests. Change-Id: Ibb83ab9322c87558077fc4937ef5c0686bbe5417 Reviewed-on: https://chrome-internal-review.googlesource.com/241459 Commit-Ready: Luis Lozano <llozano@chromium.org> Tested-by: Luis Lozano <llozano@chromium.org> Reviewed-by: Han Shen <shenhan@google.com>
2015-03-27Scripts to use with sysroot_wrapper bisecting.Luis Lozano
Scripts to be used by the binary searching tool to interact with the bisecting functionality in the sysroot_wrapper. BUG=None TEST=Tested on 3 different occasions while triaging problems in flash, kernel and glibc. Change-Id: Icf55f60b0cb160ae453c9384ca77da70710c3f48 Reviewed-on: https://chrome-internal-review.googlesource.com/188665 Reviewed-by: Han Shen <shenhan@google.com> Commit-Queue: Luis Lozano <llozano@chromium.org> Tested-by: Luis Lozano <llozano@chromium.org>
2015-02-07Add all the files and scripts for using the binary search tool tocmtice
do binary search triage on ChromeOS packages. BUG=None TEST=Tested the scripts on a lumpy build. Change-ID: I131b4f24d53a32ccec70fe320119ffccb09e73ca Reviewed-on: https://chrome-internal-review.googlesource.com/194849 Reviewed-by: Luis Lozano <llozano@chromium.org> Commit-Queue: Caroline Tice <cmtice@google.com> Tested-by: Caroline Tice <cmtice@google.com>
2014-11-27Move binary search tool to toolchain-utils with a comprehensive test suite.Han Shen
We now can test the binary search tool with - ./binary_search_tool_tester.py This will generate a set of object files with some bad ones, and call the binary search tool to find them out. TEST=gpylint and passed my test suite BUG=None Change-Id: I56fbda7f75fe3bc239e456161c48b7611c3a315d Reviewed-on: https://chrome-internal-review.googlesource.com/150255 Reviewed-by: Luis Lozano <llozano@chromium.org> Commit-Queue: Han Shen <shenhan@google.com> Tested-by: Han Shen <shenhan@google.com>