zstd/tests/README.md

67 lines
3.4 KiB
Markdown
Raw Normal View History

2016-08-29 11:04:26 +00:00
Programs and scripts for automated testing of Zstandard
=======================================================
2016-06-10 10:53:39 +00:00
2016-08-25 06:47:18 +00:00
This directory contains the following programs and scripts:
2016-08-25 08:07:20 +00:00
- `datagen` : Synthetic and parametrable data generator, for tests
- `fullbench` : Precisely measure speed for each zstd inner functions
- `fuzzer` : Test tool, to check zstd integrity on target platform
- `paramgrill` : parameter tester for zstd
- `test-zstd-speed.py` : script for testing zstd speed difference between commits
- `test-zstd-versions.py` : compatibility test between zstd versions stored on Github (v0.1+)
2016-08-25 08:42:49 +00:00
- `zbufftest` : Test tool to check ZBUFF (a buffered streaming API) integrity
2016-08-25 08:07:20 +00:00
- `zstreamtest` : Fuzzer test tool for zstd streaming API
2016-08-25 06:47:18 +00:00
2016-08-25 08:07:20 +00:00
#### `test-zstd-versions.py` - script for testing zstd interoperability between versions
2016-06-10 10:53:39 +00:00
This script creates `versionsTest` directory to which zstd repository is cloned.
Then all taged (released) versions of zstd are compiled.
In the following step interoperability between zstd versions is checked.
2016-08-25 08:07:20 +00:00
#### `test-zstd-speed.py` - script for testing zstd speed difference between commits
2016-06-10 10:53:39 +00:00
This script creates `speedTest` directory to which zstd repository is cloned.
Then it compiles all branches of zstd and performs a speed benchmark for a given list of files (the `testFileNames` parameter).
After `sleepTime` (an optional parameter, default 300 seconds) seconds the script checks repository for new commits.
If a new commit is found it is compiled and a speed benchmark for this commit is performed.
2016-06-10 10:53:39 +00:00
The results of the speed benchmark are compared to the previous results.
If compression or decompression speed for one of zstd levels is lower than `lowerLimit` (an optional parameter, default 0.98) the speed benchmark is restarted.
If second results are also lower than `lowerLimit` the warning e-mail is send to recipients from the list (the `emails` parameter).
2016-06-10 11:59:08 +00:00
Additional remarks:
- To be sure that speed results are accurate the script should be run on a "stable" target system with no other jobs running in parallel
- Using the script with virtual machines can lead to large variations of speed results
- The speed benchmark is not performed until computers' load average is lower than `maxLoadAvg` (an optional parameter, default 0.75)
- The script sends e-mails using `mutt`; if `mutt` is not available it sends e-mails without attachments using `mail`; if both are not available it only prints a warning
2016-06-10 10:53:39 +00:00
The example usage with two test files, one e-mail address, and with an additional message:
```
./test-zstd-speed.py "silesia.tar calgary.tar" "email@gmail.com" --message "tested on my laptop" --sleepTime 60
```
To run the script in background please use:
```
nohup ./test-zstd-speed.py testFileNames emails &
```
2016-06-10 10:53:39 +00:00
The full list of parameters:
```
positional arguments:
testFileNames file names list for speed benchmark
emails list of e-mail addresses to send warnings
optional arguments:
-h, --help show this help message and exit
--message MESSAGE attach an additional message to e-mail
--lowerLimit LOWERLIMIT
send email if speed is lower than given limit
--maxLoadAvg MAXLOADAVG
maximum load average to start testing
--lastCLevel LASTCLEVEL
last compression level for testing
--sleepTime SLEEPTIME
frequency of repository checking in seconds
```