mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 18:10:34 +01:00
41 lines
1.9 KiB
Markdown
41 lines
1.9 KiB
Markdown
# Fuzzing LND #
|
|
|
|
The following runs all fuzz tests on default settings:
|
|
```shell
|
|
$ make fuzz
|
|
```
|
|
The following runs all fuzz tests inside the lnwire package, each for a total of 1 minute, using 4 procs.
|
|
It is recommended that processes be set to the number of processor cores in the system:
|
|
```shell
|
|
$ make fuzz pkg=lnwire fuzztime=1m parallel=4
|
|
```
|
|
Alternatively, individual fuzz tests can be ran manually by setting the working directory to the location of the .go file holding the fuzz tests.
|
|
The go test command can only test one fuzz test at a time:
|
|
```shell
|
|
$ cd lnwire
|
|
$ go test -fuzz=FuzzAcceptChannel -fuzztime=1m -parallel=4
|
|
```
|
|
The following can be used to show all fuzz tests in the working directory:
|
|
```shell
|
|
$ cd lnwire
|
|
$ go test -list=Fuzz.*
|
|
```
|
|
|
|
Fuzz tests can be ran as normal tests, which only runs the seed corpus:
|
|
```shell
|
|
$ cd lnwire
|
|
$ go test -run=FuzzAcceptChannel -parallel=4
|
|
```
|
|
The generated corpus values can be found in the $(go env GOCACHE)/fuzz directory.
|
|
## Options ##
|
|
Several parameters can be appended to the end of the make commands to tune the build process or the way the fuzzer runs.
|
|
- `fuzztime` specifies how long each fuzz test runs for, corresponding to the `go test -fuzztime` option. The default is 30s.
|
|
- `parallel` specifies the number of parallel processes to use while running the harnesses, corresponding to the `go test -parallel` option.
|
|
- `pkg` specifies the `lnd` packages to build or fuzz. The default is to build and run all available packages (`brontide lnwire watchtower/wtwire zpay32`). This can be changed to build/run against individual packages.
|
|
|
|
## Corpus ##
|
|
Fuzzing generally works best with a corpus that is of minimal size while achieving the maximum coverage.
|
|
|
|
## Disclosure ##
|
|
If you find any crashers that affect LND security, please disclose with the information found [here](https://github.com/lightningnetwork/lnd/#security).
|