Experiment to start adding fuzzing tests to the project.
A new way of testing called fuzzing was added in Go 1.18 (see tutorial https://go.dev/doc/tutorial/fuzz)
Both myself and lmars think adding fuzz tests to the project is a good idea.
A good starting point for fuzzing would be to consider user defined strings. One place that a user can define a string is the name they provide when they create a channel.
I would propose as an experiment, we add a single fuzz test for channel.Get() so that we can learn more about this testing technique, assess if fuzz tests are suitable for this project and (if they are) create a foundation upon which more fuzzing tests can be added. Note that fuzz tests are long running tests which are started and left running for a duration of time (similar to soak tests), so it will not be practical to run them in the CI pipeline.
Acceptance criteria:
- Implement a new fuzzing test for
channel.Get() - Run the new fuzz test and raise any new bugs which are discovered by the test.
- Update the tests section of
CONTRIBUTING.mdto explain how the fuzz test can be run locally.