Test scripts for thin provisioning targets
Ruby CSS
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
compile-bench-datasets snapshot test Jul 8, 2011
lib [thinp] check a read only metadata device forces read only pool Apr 16, 2013
reports more log formatting Oct 20, 2011
spec [thinp] check a read only metadata device forces read only pool Apr 16, 2013
suites Merge remote-tracking branch 'remotes/github-mike/master' Apr 17, 2013
test Translate the multisnap bench program Jul 5, 2011
tests Merge remote-tracking branch 'remotes/github-mike/master' Apr 17, 2013
.gitignore remove dm_ prefix from files in lib/device-mapper. Also move spec fil… Feb 27, 2013
README.md Deprecate in favour of dmtest Dec 11, 2013
Rakefile add deploy target to Rakefile Mar 11, 2013
analyse_metadata analyse_metadata was requiring far too much Jun 12, 2012
check_kernels.rb introduce lib/device-mapper sub dir Jun 15, 2012
config.rb config.rb: STEC card Nov 30, 2012
generate_reports switch to new cache args and status format Nov 15, 2012
incremental_backup_example incremental_backup_example had bitrot Jul 4, 2012
instr_play.rb experiments with a dm_exec instruction set Nov 24, 2011
lvconvert_example rename lvconvert_example Jul 4, 2012
mir_play.rb tweaks to mir_play Jun 25, 2012
run_tests run_tests now takes a mandatory --suite argument Jun 15, 2012
serve_reports make serve_reports an executable Oct 19, 2011
title_page.rb add report generators Sep 9, 2011
todo.org add xml writer infrastructure requirement to todo.org Oct 21, 2011
untar_kernels.rb introduce lib/device-mapper sub dir Jun 15, 2012



Use device-mapper-test-suite instead.


Test suite for device-mapper thin provisioning targets. Uses Ruby 1.8.x.

You need a program called 'thin_repair' in your path. This hasn't been released yet, so just sym link it to /bin/true.

You also need dt in your path.

And aio_stress (http://fsbench.filesystems.org/bench/aio-stress.c).

And blktrace.

And bonnie++.


Edit config.rb, adding suitable entries for you test machine. Check things are ok with a dry run:


Once you're happy you can set the env var THIN_TESTS and run it for real:


You can select subsets of the tests via the test suite class, methods or tags, for more info:

./run_tests --help


Run all tests that have been tagged as quick: ./run_tests -T quick

Run all tests that have been tagged with some sort of target: ./run_tests -T /_target$/

Run all tests that have 'resize' in their name: ./run_tests -n /resize/

Run all tests in the MultiplePoolTests suite: ./run_tests -t MultiplePoolTests


After you run some tests you can view the results and logs by pointing your browser at reports/index.html.

If you wish to quickly serve these reports on port 8080 for access from another machine.



You may find that udev interferes with your tests. The typical symptom is test scripts being unable to remove devices (because udev has it open). The test suite does retry removal after a pause, which avoids most cases of this.

One way to disable udev is:

mv /lib/udev/rules.d/80-udisks.rules /lib/udev/rules.d/80-udisks.rules.dieudevdie