Autobisect
==========
[![Task Status](https://community-tc.services.mozilla.com/api/github/v1/repository/MozillaSecurity/autobisect/master/badge.svg)](https://community-tc.services.mozilla.com/api/github/v1/repository/MozillaSecurity/autobisect/master/latest)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![codecov](https://codecov.io/gh/MozillaSecurity/autobisect/branch/master/graph/badge.svg)](https://codecov.io/gh/MozillaSecurity/autobisect)
Autobisect is a python module that automates bisection of Mozilla Firefox and SpiderMonkey bugs.
Installation
------------
```bash
git clone git@github.com:MozillaSecurity/autobisect.git
cd autobisect
poetry install
```
Usage
-----
Firefox bug bisection supports the following arguments:
```
python -m autobisect firefox --help
usage: __main__.py firefox [-h] [--log-level LOG_LEVEL] [--start START] [--end END] [--timeout TIMEOUT] [--repeat REPEAT] [--config CONFIG] [--find-fix] [--os {Android,Darwin,Linux,Windows}]
[--cpu {AMD64,ARM64,aarch64,arm,arm64,i686,x64,x86,x86_64}] [--central | --release | --beta | --esr-stable | --esr-next | --try | --autoland] [-d] [-a] [-t] [--fuzzing]
[--fuzzilli] [--coverage] [--valgrind] [--no-opt] [--launch-timeout LAUNCH_TIMEOUT] [-p PREFS] [--xvfb] [--ignore [IGNORE [IGNORE ...]]]
testcase
positional arguments:
testcase Path to testcase
optional arguments:
-h, --help show this help message and exit
--log-level LOG_LEVEL
Configure console logging. Options: DEBUG, INFO, WARN, ERROR, CRIT (default: INFO)
Boundary Arguments:
Accepts revision or build date in YYYY-MM-DD format)
--start START Start build id (default: earliest available build)
--end END End build id (default: latest available build)
Bisection Arguments:
--timeout TIMEOUT Maximum iteration time in seconds (default: 60)
--repeat REPEAT Number of times to evaluate testcase (per build)
--config CONFIG Path to optional config file
--find-fix Identify fix date
Target Arguments:
--os {Android,Darwin,Linux,Windows}
Specify the target system. (default: Linux)
--cpu {AMD64,ARM64,aarch64,arm,arm64,i686,x64,x86,x86_64}
Specify the target CPU. (default: x86_64)
Branch Arguments:
--central Download from mozilla-central (default)
--release Download from mozilla-release
--beta Download from mozilla-beta
--esr-stable Download from esr-stable
--esr-next Download from esr-next
--try Download from try
--autoland Download from autoland
Build Arguments:
-d, --debug Get debug builds w/ symbols (default=optimized).
-a, --asan Download AddressSanitizer builds.
-t, --tsan Download ThreadSanitizer builds.
--fuzzing Download --enable-fuzzing builds.
--fuzzilli Download --enable-js-fuzzilli builds.
--coverage Download --coverage builds.
--valgrind Download Valgrind builds.
--no-opt Download non-optimized builds.
Launcher Arguments:
--launch-timeout LAUNCH_TIMEOUT
Number of seconds to wait before LaunchError is raised (default: 300)
-p PREFS, --prefs PREFS
Optional prefs.js file to use
--xvfb Use Xvfb (Linux only)
Reporter Arguments:
--ignore [IGNORE [IGNORE ...]]
Space separated list of issue types to ignore. Valid options: log-limit memory timeout (default: log-limit memory timeout)
```
Simple Bisection
----------------
```
python -m autobisect firefox trigger.html --prefs prefs.js --asan --end 2017-11-14
```
By default, Autobisect will cache downloaded builds (up to 30GBs) to reduce bisection time. This behavior can be modified by supplying a custom configuration file in the following format:
```
[autobisect]
storage-path: /home/ubuntu/cached
persist: true
; size in MBs
persist-limit: 30000
```
Development
-----------
Autobisect includes a pre-commit hook for [black](https://github.com/psf/black) and [flake8](https://flake8.pycqa.org/en/latest/). To install the pre-commit hook, run the following.
```bash
pre-commit install
```
Furthermore, all tests should be executed via tox.
```bash
poetry run tox
```
Raw data
{
"_id": null,
"home_page": "https://github.com/MozillaSecurity/autobisect",
"name": "autobisect",
"maintainer": "Mozilla Fuzzing Team",
"docs_url": null,
"requires_python": "<4.0.0,>=3.8.1",
"maintainer_email": "fuzzing@mozilla.com",
"keywords": "bisection, fuzz, fuzzing, security, test, testing",
"author": "Jason Kratzer",
"author_email": "jkratzer@mozilla.com",
"download_url": "https://files.pythonhosted.org/packages/30/81/7b7fc54c8fdf2357a86c07975931d1c73f325993a020a0352aa8e2110e72/autobisect-7.8.0.tar.gz",
"platform": null,
"description": "Autobisect\n==========\n[![Task Status](https://community-tc.services.mozilla.com/api/github/v1/repository/MozillaSecurity/autobisect/master/badge.svg)](https://community-tc.services.mozilla.com/api/github/v1/repository/MozillaSecurity/autobisect/master/latest)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![codecov](https://codecov.io/gh/MozillaSecurity/autobisect/branch/master/graph/badge.svg)](https://codecov.io/gh/MozillaSecurity/autobisect)\n\nAutobisect is a python module that automates bisection of Mozilla Firefox and SpiderMonkey bugs.\n\nInstallation\n------------\n\n```bash\ngit clone git@github.com:MozillaSecurity/autobisect.git\ncd autobisect\npoetry install\n```\n\nUsage\n-----\nFirefox bug bisection supports the following arguments:\n\n```\npython -m autobisect firefox --help\nusage: __main__.py firefox [-h] [--log-level LOG_LEVEL] [--start START] [--end END] [--timeout TIMEOUT] [--repeat REPEAT] [--config CONFIG] [--find-fix] [--os {Android,Darwin,Linux,Windows}]\n [--cpu {AMD64,ARM64,aarch64,arm,arm64,i686,x64,x86,x86_64}] [--central | --release | --beta | --esr-stable | --esr-next | --try | --autoland] [-d] [-a] [-t] [--fuzzing]\n [--fuzzilli] [--coverage] [--valgrind] [--no-opt] [--launch-timeout LAUNCH_TIMEOUT] [-p PREFS] [--xvfb] [--ignore [IGNORE [IGNORE ...]]]\n testcase\n\npositional arguments:\n testcase Path to testcase\n\noptional arguments:\n -h, --help show this help message and exit\n --log-level LOG_LEVEL\n Configure console logging. Options: DEBUG, INFO, WARN, ERROR, CRIT (default: INFO)\n\nBoundary Arguments:\n Accepts revision or build date in YYYY-MM-DD format)\n\n --start START Start build id (default: earliest available build)\n --end END End build id (default: latest available build)\n\nBisection Arguments:\n --timeout TIMEOUT Maximum iteration time in seconds (default: 60)\n --repeat REPEAT Number of times to evaluate testcase (per build)\n --config CONFIG Path to optional config file\n --find-fix Identify fix date\n\nTarget Arguments:\n --os {Android,Darwin,Linux,Windows}\n Specify the target system. (default: Linux)\n --cpu {AMD64,ARM64,aarch64,arm,arm64,i686,x64,x86,x86_64}\n Specify the target CPU. (default: x86_64)\n\nBranch Arguments:\n --central Download from mozilla-central (default)\n --release Download from mozilla-release\n --beta Download from mozilla-beta\n --esr-stable Download from esr-stable\n --esr-next Download from esr-next\n --try Download from try\n --autoland Download from autoland\n\nBuild Arguments:\n -d, --debug Get debug builds w/ symbols (default=optimized).\n -a, --asan Download AddressSanitizer builds.\n -t, --tsan Download ThreadSanitizer builds.\n --fuzzing Download --enable-fuzzing builds.\n --fuzzilli Download --enable-js-fuzzilli builds.\n --coverage Download --coverage builds.\n --valgrind Download Valgrind builds.\n --no-opt Download non-optimized builds.\n\nLauncher Arguments:\n --launch-timeout LAUNCH_TIMEOUT\n Number of seconds to wait before LaunchError is raised (default: 300)\n -p PREFS, --prefs PREFS\n Optional prefs.js file to use\n --xvfb Use Xvfb (Linux only)\n\nReporter Arguments:\n --ignore [IGNORE [IGNORE ...]]\n Space separated list of issue types to ignore. Valid options: log-limit memory timeout (default: log-limit memory timeout)\n```\n\nSimple Bisection\n----------------\n```\npython -m autobisect firefox trigger.html --prefs prefs.js --asan --end 2017-11-14\n```\n\nBy default, Autobisect will cache downloaded builds (up to 30GBs) to reduce bisection time. This behavior can be modified by supplying a custom configuration file in the following format:\n```\n[autobisect]\nstorage-path: /home/ubuntu/cached\npersist: true\n; size in MBs\npersist-limit: 30000\n```\n\nDevelopment\n-----------\nAutobisect includes a pre-commit hook for [black](https://github.com/psf/black) and [flake8](https://flake8.pycqa.org/en/latest/). To install the pre-commit hook, run the following. \n```bash\npre-commit install\n```\n\nFurthermore, all tests should be executed via tox.\n```bash\npoetry run tox\n```\n\n\n",
"bugtrack_url": null,
"license": "MPL-2.0",
"summary": "Automatic bisection utility for Mozilla Firefox and SpiderMonkey",
"version": "7.8.0",
"project_urls": {
"Homepage": "https://github.com/MozillaSecurity/autobisect",
"Repository": "https://github.com/MozillaSecurity/autobisect"
},
"split_keywords": [
"bisection",
" fuzz",
" fuzzing",
" security",
" test",
" testing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8bf3780adea50ff4f1ead216630418342d4238e79177ac25740190a1b7997a09",
"md5": "68cf723952d6bee5439b5a31663bf1cb",
"sha256": "804ddbfdd6ba7656fe327a24cbe31482225c568cb8fbe3249324e00c20fbc90e"
},
"downloads": -1,
"filename": "autobisect-7.8.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "68cf723952d6bee5439b5a31663bf1cb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0.0,>=3.8.1",
"size": 29578,
"upload_time": "2024-07-24T19:30:58",
"upload_time_iso_8601": "2024-07-24T19:30:58.425953Z",
"url": "https://files.pythonhosted.org/packages/8b/f3/780adea50ff4f1ead216630418342d4238e79177ac25740190a1b7997a09/autobisect-7.8.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "30817b7fc54c8fdf2357a86c07975931d1c73f325993a020a0352aa8e2110e72",
"md5": "6268c963ac20fb628ce47953535e82dc",
"sha256": "34f5b2640943c3b33345bd0a68cc2452efc922039b9a1a0839aa457deea59bf9"
},
"downloads": -1,
"filename": "autobisect-7.8.0.tar.gz",
"has_sig": false,
"md5_digest": "6268c963ac20fb628ce47953535e82dc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0.0,>=3.8.1",
"size": 276366,
"upload_time": "2024-07-24T19:31:00",
"upload_time_iso_8601": "2024-07-24T19:31:00.526520Z",
"url": "https://files.pythonhosted.org/packages/30/81/7b7fc54c8fdf2357a86c07975931d1c73f325993a020a0352aa8e2110e72/autobisect-7.8.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-24 19:31:00",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "MozillaSecurity",
"github_project": "autobisect",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "autobisect"
}