shad-go/iprange/README.md

34 lines
1.2 KiB
Markdown
Raw Normal View History

2022-04-14 01:36:15 +00:00
## iprange [BONUS]
В этой задаче вам предстоит познакомиться с фаззингом, и его нативной поддержкой в go.
Нужно поправить баги в функции `ParseList`.
`ParseList` принимает на вход строку с описанием рейнджей ip адрессов в одном из `n` форматов
* `10.0.0.1`
* `10.0.0.0/24`
* `10.0.0.*`
* `10.0.0.1-10`
и возвращает список пар `(min ip, max ip)` (см. [example](./example_test.go)).
Для обнаружения бага (crash функции) предлагается написать fuzz тест на функцию `ParseList`.
### Проверка решения
Во-первых должны работать имеющиеся тесты
```
go test -v ./iprange...
```
Во-вторых, в CI есть приватные тесты, молча падающие на неправильной `ParseList`.
Как запустить fuzz тесты?
```
go test -v -fuzz=. ./iprange...
```
### Ссылки
* design draft https://go.googlesource.com/proposal/+/master/design/draft-fuzzing.md
* fuzzing tutorial в блоге go https://go.dev/doc/tutorial/fuzz