| OLD | NEW |
| 1 # Web Bluetooth Fuzzer | 1 # Web Bluetooth Fuzzer |
| 2 | 2 |
| 3 The Web Bluetooth Fuzzer generates test pages that can be run as layout tests. | 3 The Web Bluetooth Fuzzer generates test pages that can be run as layout tests. |
| 4 These pages consist of a sequence of calls to the Web Bluetooth API whose | 4 These pages consist of a sequence of calls to the Web Bluetooth API whose |
| 5 purpose is to stress test the API's implementation and catch any bugs | 5 purpose is to stress test the API's implementation and catch any bugs |
| 6 or regressions. | 6 or regressions. |
| 7 | 7 |
| 8 This document describes the overall design of the fuzzer. | 8 This document describes the overall design of the fuzzer. |
| 9 | 9 |
| 10 [TOC] | 10 [TOC] |
| 11 | 11 |
| 12 ## Overview | 12 ## Overview |
| 13 To generate test pages the fuzzer performs the following steps: | 13 To generate test pages the fuzzer performs the following steps: |
| 14 | 14 |
| 15 1. Generate a test page that consists of a series of random calls to the API | 15 1. Generate a test page that consists of a series of random calls to the API |
| 16 with template parameters, calls to reload the page and calls to run garbage | 16 with template parameters, calls to reload the page and calls to run garbage |
| 17 collection. | 17 collection. |
| 18 2. Replace the template parameters with random values. | 18 2. Replace the template parameters with random values. |
| 19 | 19 |
| 20 These generated test pages can then be run as Layout Tests in content_shell. | 20 These generated test pages can then be run as Layout Tests in content_shell. |
| 21 | 21 |
| 22 ## ClusterFuzz | 22 ## ClusterFuzz |
| 23 This fuzzer is designed to be run by ClusterFuzz and therefore takes three | 23 This fuzzer is designed to be run by ClusterFuzz and therefore takes three |
| 24 arguments, `--no_of_files`, `--input_dir`, and `--output_dir`. | 24 arguments, `--no_of_files`, `--input_dir`, and `--output_dir`. |
| 25 | 25 |
| 26 ## Setup | 26 ## Setup |
| 27 This fuzzer depends on files in: | 27 This fuzzer depends on files in: |
| 28 * `//src/third_party/WebKit/LayoutTests/resources` | 28 * `//src/third_party/WebKit/LayoutTests/resources` |
| 29 * `//src/testing/clusterfuzz/common` |
| 29 | 30 |
| 30 To ease development a setup.py script is included to copy over the necessary | 31 To ease development a setup.py script is included to copy over the necessary |
| 31 files to run the fuzzer locally. Additionally the script can be used to generate | 32 files to run the fuzzer locally. Additionally the script can be used to generate |
| 32 a .tar.bz2 file that can be uploaded to ClusterFuzz. To see the available | 33 a .tar.bz2 file that can be uploaded to ClusterFuzz. To see the available |
| 33 options, run: | 34 options, run: |
| 34 ```sh | 35 ```sh |
| 35 python setup.py -h | 36 python setup.py -h |
| 36 ``` | 37 ``` |
| OLD | NEW |