shad-go/iprange/README.md

35 lines
1.2 KiB
Markdown
Raw Normal View History

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