72 lines
3.4 KiB
Markdown
72 lines
3.4 KiB
Markdown
|
Programs and scripts for automated testing of LZ4
|
||
|
=======================================================
|
||
|
|
||
|
This directory contains the following programs and scripts:
|
||
|
- `datagen` : Synthetic and parametrable data generator, for tests
|
||
|
- `frametest` : Test tool that checks lz4frame integrity on target platform
|
||
|
- `fullbench` : Precisely measure speed for each lz4 inner functions
|
||
|
- `fuzzer` : Test tool, to check lz4 integrity on target platform
|
||
|
- `test-lz4-speed.py` : script for testing lz4 speed difference between commits
|
||
|
- `test-lz4-versions.py` : compatibility test between lz4 versions stored on Github
|
||
|
|
||
|
|
||
|
#### `test-lz4-versions.py` - script for testing lz4 interoperability between versions
|
||
|
|
||
|
This script creates `versionsTest` directory to which lz4 repository is cloned.
|
||
|
Then all taged (released) versions of lz4 are compiled.
|
||
|
In the following step interoperability between lz4 versions is checked.
|
||
|
|
||
|
|
||
|
#### `test-lz4-speed.py` - script for testing lz4 speed difference between commits
|
||
|
|
||
|
This script creates `speedTest` directory to which lz4 repository is cloned.
|
||
|
Then it compiles all branches of lz4 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.
|
||
|
The results of the speed benchmark are compared to the previous results.
|
||
|
If compression or decompression speed for one of lz4 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).
|
||
|
|
||
|
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
|
||
|
|
||
|
|
||
|
The example usage with two test files, one e-mail address, and with an additional message:
|
||
|
```
|
||
|
./test-lz4-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-lz4-speed.py testFileNames emails &
|
||
|
```
|
||
|
|
||
|
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
|
||
|
```
|
||
|
|
||
|
|
||
|
#### License
|
||
|
|
||
|
All files in this directory are licensed under GPL-v2.
|
||
|
See [COPYING](COPYING) for details.
|
||
|
The text of the license is also included at the top of each source file.
|