mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
d0f817a60b
* Add basic benchmark * Add basic documentation for how to run and add tests/benchmarks * Update benchmark example output * Add changelog entry Co-authored-by: zneix <zneix@zneix.eu>
89 lines
3 KiB
Markdown
89 lines
3 KiB
Markdown
# Test and Benchmark
|
|
|
|
Chatterino includes a set of unit tests and benchmarks. These can be built using cmake by adding the `-DBUILD_TESTS=On` and `-DBUILD_BENCHMARKS=On` flags respectively.
|
|
|
|
## Adding your own test
|
|
|
|
1. Create a new file for the file you're adding tests for. If you're creating tests for `src/providers/emoji/Emojis.cpp`, create `tests/src/Emojis.cpp`.
|
|
2. Add the newly created file to `tests/CMakeLists.txt` in the `test_SOURCES` variable (see the comment near it)
|
|
|
|
See `tests/src/Emojis.cpp` for simple tests you can base your tests off of.
|
|
|
|
Read up on http://google.github.io/googletest/primer.html to figure out how GoogleTest works.
|
|
|
|
## Building and running tests
|
|
|
|
```sh
|
|
mkdir build-tests
|
|
cd build-tests
|
|
cmake -DBUILD_TESTS=On ..
|
|
make
|
|
./bin/chatterino-test
|
|
```
|
|
|
|
### Example output
|
|
|
|
```
|
|
[==========] Running 26 tests from 8 test suites.
|
|
[----------] Global test environment set-up.
|
|
[----------] 2 tests from AccessGuardLocker
|
|
[ RUN ] AccessGuardLocker.NonConcurrentUsage
|
|
[ OK ] AccessGuardLocker.NonConcurrentUsage (0 ms)
|
|
[ RUN ] AccessGuardLocker.ConcurrentUsage
|
|
[ OK ] AccessGuardLocker.ConcurrentUsage (686 ms)
|
|
[----------] 2 tests from AccessGuardLocker (686 ms total)
|
|
|
|
[----------] 4 tests from NetworkCommon
|
|
[ RUN ] NetworkCommon.parseHeaderList1
|
|
[ OK ] NetworkCommon.parseHeaderList1 (0 ms)
|
|
[ RUN ] NetworkCommon.parseHeaderListTrimmed
|
|
[ OK ] NetworkCommon.parseHeaderListTrimmed (0 ms)
|
|
[ RUN ] NetworkCommon.parseHeaderListColonInValue
|
|
...
|
|
[ RUN ] TwitchAccount.NotEnoughForMoreThanOneBatch
|
|
[ OK ] TwitchAccount.NotEnoughForMoreThanOneBatch (0 ms)
|
|
[ RUN ] TwitchAccount.BatchThreeParts
|
|
[ OK ] TwitchAccount.BatchThreeParts (0 ms)
|
|
[----------] 3 tests from TwitchAccount (2 ms total)
|
|
|
|
[----------] Global test environment tear-down
|
|
[==========] 26 tests from 8 test suites ran. (10297 ms total)
|
|
[ PASSED ] 26 tests.
|
|
```
|
|
|
|
## Adding your own benchmark
|
|
|
|
1. Create a new file for the file you're adding benchmark for. If you're creating benchmarks for `src/providers/emoji/Emojis.cpp`, create `benchmarks/src/Emojis.cpp`.
|
|
2. Add the newly created file to `benchmarks/CMakeLists.txt` in the `benchmark_SOURCES` variable (see the comment near it)
|
|
|
|
See `benchmarks/src/Emojis.cpp` for simple benchmark you can base your benchmarks off of.
|
|
|
|
## Building and running benchmarks
|
|
|
|
```sh
|
|
mkdir build-benchmarks
|
|
cd build-benchmarks
|
|
cmake -DBUILD_BENCHMARKS=On ..
|
|
make
|
|
./bin/chatterino-benchmark
|
|
```
|
|
|
|
### Example output
|
|
|
|
```
|
|
2021-07-18T13:12:11+02:00
|
|
Running ./bin/chatterino-benchmark
|
|
Run on (12 X 4000 MHz CPU s)
|
|
CPU Caches:
|
|
L1 Data 32 KiB (x6)
|
|
L1 Instruction 32 KiB (x6)
|
|
L2 Unified 256 KiB (x6)
|
|
L3 Unified 15360 KiB (x1)
|
|
Load Average: 2.86, 3.08, 3.51
|
|
***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead.
|
|
--------------------------------------------------------------
|
|
Benchmark Time CPU Iterations
|
|
--------------------------------------------------------------
|
|
BM_ShortcodeParsing 2394 ns 2389 ns 278933
|
|
```
|