Commit Graph

75 Commits

Author SHA1 Message Date
Adam Williamson
5bd815bf41 createhdds: add a disk image for use by a 'support server'
Summary:
this will be used for tests like iSCSI and NFS which need a
server end, but where (unlike e.g. FreeIPA) we don't want set
up of the server end to be considered a test and run on the
compose being tested, but instead we just consider the server
end a 'test asset' and expect it to be as reliable as possible.

For now we just set it up to provide an iSCSI target, as that's
what I want to write a test for first.

Note: I was initially writing the actual iSCSI target config
file as part of image creation, but that turns out to be a bit
tricky because we can't safely write a relative or absolute path
for the source file into the commands file. We'd have to instead
allow specifying file injections in the JSON, similar to how we
do for guestfs images, then construct an absolute path in the
Python code using SCRIPTDIR, but it was easier to just write the
file in the openQA test instead, so I did that.

Test Plan:
check that creating the support image works (and if
you're being really thorough, boot it and check the package is
there).

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D883
2016-06-08 15:45:54 -07:00
Adam Williamson
a67ee015ea bump the selinux relabel boot timeout
from 5 mins to 10 mins...we seem to hit it far too often, I
guess initial relabel takes more than 5 mins.
2016-06-07 13:27:30 -07:00
Adam Williamson
6ee0e2217d createhdds: use a temp file for virt-builder image creation
Summary:
Creating the virt-builder images directly with their final file
name means that if we're rebuilding them for age and the build
fails, we'll lose the existing image: it seems better to keep
it than have no image at all, when this happens. It also means
that while the rebuild is in process, the file might exist but
be useless and cause any tests that happen to be running at the
time to fail. So just like the guestfs images, create the file
with a .tmp extension initially and rename it after a successful
build.

Test Plan:
Do some image builds and check they work, check that
temp file is cleaned up on failure and ctrl-c if you can...

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D858
2016-05-23 06:55:17 -07:00
Adam Williamson
fc57ccdecc disable initial-setup in the KDE upgrade disk images
we don't want it (a realistic upgrade scenario would not involve
initial-setup getting in the way) and it seems to mess up boot
sometimes (i-s crashes on start if the system wasn't installed
via anaconda, and that seems to be causing the failed boots
sometimes).
2016-05-06 12:43:33 -07:00
Adam Williamson
a1bef836d7 add desktop terminal test reporting, change 'ejohn' to 'test'
Summary:
This goes with D839. It makes the necessary changes to report
the results for the desktop-terminal tests, and changes the
username in the upgrade test disk images from 'ejohn' to 'test'
to be in line with the name used in all the other tests, and
save us having to change the 'user_logged_in' needles.

Test Plan:
Run with D839, check that all tests work and results
are correctly sent to the wiki.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D840
2016-05-05 16:43:10 -07:00
Adam Williamson
731cd6e69c add FreeIPA test disks (with kickstarts) and update InstallGuide
Summary:
This goes along with the openqa_fedora commit to add the tests.
I didn't update the Docker instructions yet because I don't
quite remember how that goes. It might need a whole different
setup using some other networking...thing...

Test Plan: See https://phab.qadevel.cloud.fedoraproject.org/D831

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D832
2016-05-04 11:55:22 -07:00
Jan Sedlák
b09754cf9e add kde and server upgrade tests, build images for them
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D823
2016-04-25 09:59:21 +02:00
Adam Williamson
1ac2a95ed6 createhdds: flip updates_img image over to new updates image
Summary:
this goes with D799, which changes the updates image tests to
use a different updates image that works with current anaconda.
One of the updates image tests is for loading the updates image
from a hard disk, so we have a hard disk image that contains
the updates image, so that needs rebuilding with the new update
image. Simples! This is the first time we use 'imgver', I knew
it'd come in handy some time...

Test Plan:
Apply with D799, do `createhdds.py all --clean`, make
sure the new image is built and the old one removed, run the
tests and make sure they work (especially install_updates_img_
local).

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D800
2016-04-01 08:01:12 -07:00
Adam Williamson
055c79fc58 createhdds: use temp file correctly when uploading
Summary:
With the previous code, the temporary file wasn't closed before
we try to upload its contents to the disk image. This seems to
cause problems when run in Python 2; the file is truncated on
upload. So rejig things a bit so we use tempfile.mkstemp, close
the file after writing to it, then remove it ourselves after
doing the upload. Tested with Python 2 and Python 3 that this
creates a correct image.

If something goes wrong at the wrong time the temp file will
be left around, but hey, it's a temp file - they get cleaned
up on system shutdown. So doesn't seem like a big deal.

Test Plan:
Check building the two images that involve a file
upload in both Python 2 and Python 3, make sure the file is
complete and correct in all cases.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D786
2016-03-21 08:53:13 -07:00
Adam Williamson
326dd08e25 rewrite createhdds in python, make it shinier
Summary:
createhdds.sh was just too damn simple and understandable, so
I thought I'd make it three times longer, object oriented,
and hard to understand!

OK, OK, that's not great sales. Alright. The main thing was to
make it smarter. This rewrite lets it do these things:

* Only create the images that are missing (not rebuild all)
* Work out the releases to build images for
* Rename images when appropriate
* Rebuild images when they need rebuilding
* Remove old / abandoned images

It can figure out what images ought to be present - including
working out the 'next' release and figuring out from that what
releases it needs images for - and build only the missing ones.
There's a 'version' concept for images; if the existing image
is older than the version given in the data file, it'll be
rebuilt. The data file can list 'rename' pairs, allowing images
to be renamed (like when we move from a single image to multiple
label/filesystem variants). This code uses fedfind's ability
to find the current release version to figure out what releases
we need virtbuilder images for (so you don't have to pass it
in). And it can find image files that aren't in the 'currently
expected' set and wipe them. Images can also have a 'maxage',
triggering a rebuild when they exceed it - this is intended
for the virtbuilder images, so we get a rebuild with the
latest updates every so often (default is two weeks).

The point of all this is to help with unattended deployment/
maintenance, i.e. the ansible deployment we have in infra;
the idea is that we can just set that up to run the 'all'
subcommand every so often, and it'll remove old images, create
new ones, and rebuild ones that are outdated.

I kept the ability to build a single image (or a whole image
'group'), and included the ability to just run a check without
actually doing a rebuild. There's a few little weird things
and holes here as it's not really the focus of the tool.

Test Plan:
Build all images, do a full test run, and see if
it works OK. Test out all the variations of building single
images / image groups, and using the 'check' command.

Reviewers: jskladan, garretraziel

Reviewed By: jskladan, garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D687
2015-12-17 13:25:30 -08:00
Petr Schindler
0b3c6beab9 Creating of mbr and gpt disks added
I left 2MB on beginning and 2MB on the end of disks because
there will be saved gpt.

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D624
2015-10-21 09:42:28 +02:00
Adam Williamson
a35f7e5e13 tweak desktop creation commands and comments for F21 and F22
Summary:
For F22 we don't need to remove firewalld, as the approach to
flavor configurations was changed and the conflict wasn't
there any more. On the other hand for F21 we still do, and
we need to use yum, not dnf. So make the command run inside
virt-builder conditional on $VERSION. I figure we still might
want to create F21 images if we want to test F21->F23 upgrades.

Test Plan:
I built the new set of HDDs on BOS with this change,
so we can see if the upgrade tests all run as expected. To
check the F21 images I guess we'd have to poke at 'em with
guestfish or something.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D572
2015-09-11 13:25:40 -07:00
Jan Sedlák
a0e20004b5 fix updating and installing packages in virt-builder
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D569
2015-09-10 09:30:59 +02:00
Jan Sedlák
08a84b73cc add guided shrink test - config and disk creation
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D560
2015-09-08 15:53:12 +02:00
Adam Williamson
86999701d3 modularize openqa_trigger -> fedora_openqa_schedule (T541)
Summary:
This converts openqa_trigger into a fedora_openqa_schedule
package which is properly modularized: there's a CLI module,
a schedule module, a report module, and for now conf_test_
suites is its own module (though I think it's kind of ugly
and we should turn it into a JSON file or something).

ISO file download location configuration is now done with
an optional config file, as with the splits it becomes a
mess to try and pass it through from the CLI args. This also
means custom ISO locations will be respected by other things
we write which use the 'schedule' module.

This includes a setup.py so the package and fedora-openqa-
schedule command can be installed systemwide. We could now
extend this to install stuff like the systemd services and
little scripts like run-nightly.sh.

Test Plan:
Check that things work more or less as before. New CLI command
is 'fedora-openqa-schedule'; it has the 'current' and 'compose'
sub-commands, plus a new 'report' sub-command which works like calling
report-job-results.py directly used to. Check that installing systemwide
works properly. Check that ISO download location configuration works as
expected. Running './fedora-openqa-schedule' from within the git checkout
should also work.

Reviewers: garretraziel, jskladan

Reviewed By: garretraziel, jskladan

Maniphest Tasks: T541

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D547
2015-09-01 15:58:28 -07:00
Adam Williamson
2c09f465e1 CLI commands should exit-fail if no jobs scheduled
Summary:
Have the backing functions always raise TriggerExceptions if
no jobs could be scheduled, and have the CLI command functions
just quit (with exit code 1) immediately when this happens.
I don't see any value to logging the errors and continuing to
run, nothing useful is going to happen with no jobs.

This allows us to have the 'current' cronjob run the compose
report: we just have it do:

openqa_trigger.py current && check-compose

then it won't generate a compose report every time it runs, but
only when the current compose changed and some jobs ran.

Test Plan:
Well, just make sure things quit or run as intended,
I guess.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D541
2015-08-28 10:00:35 -07:00
Adam Williamson
0396d70de0 handle errors while waiting for compose smartly
Summary:
So the first attempt to use the waiting stuff in production
failed because, at some point, koji_done got a socket.error
from the server. Not sure if that was a Koji outage or some
kind of rate control, but even if it's rate control and we need
to tweak the wait interval, this seems advisable: we shouldn't
die the first time we hit any kind of error while waiting, we
should retry a few times first (with increasingly long delays
between the retry attempts). I know bare except clauses are BAD,
but I think it's OK here as we can't really cover every possible
exception which might get raised in any module during a 'go hit
a server and do a bunch of stuff' operation, and if the error
keeps happening we *are* going to raise it eventually.

Test Plan:
Check I didn't break the 'normal' case, and try causing
an error to appear somehow (e.g. disconnect from the network or
hack up the 'client' instantiation in fedfind to use the wrong URL)
and see if the error handling works as intended.

Reviewers: garretraziel, jskladan

Reviewed By: garretraziel, jskladan

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D532
2015-08-27 15:51:15 -07:00
Jan Sedlák
75936a2870 add 32bit disk creation
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D534
2015-08-27 13:48:25 +02:00
Adam Williamson
b8fe095296 drop 'all', add 'current' check and waiting to 'compose'
Summary:
This is an alternative to D516. It drops the 'all' subcommand
entirely and adds some capabilities to 'compose' to make it
suitable for scripting. --ifnotcurrent will check if the compose
is the same as the current validation event, and bail out if it
is. --wait waits for the compose to be available. I've also
enhanced fedfind (in 1.4.1) to allow passing just 'Branched'
as the milestone; it will guess the release and date, now (it
didn't before).

With all of that taken together, we could have three cron jobs,
one for 'current', one for 'branched', and one for 'rawhide'.
That way we don't have to do any clever multiprocess/round-robin
waiting stuff, and the jobs for each release will be run and
reported as fast as possible (and we can run the compose report
right after the trigger script and have that sent out
efficiently too).

Test Plan:
Try all the possibilities with 'compose' - especially
check that it works with just '-m Rawhide' and '-m Branched',
and that the --wait and --ifnotcurrent args work as intended.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D525
2015-08-24 11:38:50 -07:00
Adam Williamson
b2a19e1894 pass a proper 'version' value
Summary:
We can just parse the release out of the 'build' value, here.
All tests still run properly because we use the * wildcard
in the job groups and so on. Passing a proper 'version' value
prevents T581: when you schedule jobs from an ISO, openQA
will obsolete any running or scheduled jobs with the same
DISTRI, FLAVOR, VERSION and ARCH.

Test Plan:
Schedule jobs for two composes at the same time
(e.g. Branched and Rawhide), see that the second set does
not obsolete the first. Make sure setting VERSION has no
unexpected consequences.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D522
2015-08-20 23:48:26 -07:00
Adam Williamson
c334c7f4f5 add new no_swap test to conf_test_suites
Summary:
This goes along with the openqa_fedora diff to add a no_swap
test.

Test Plan:
If the new test runs (see other diff), check its results
can be submitted to the wiki correctly.

Reviewers: garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D504
2015-08-19 17:42:31 -04:00
Jan Sedlák
d33df701e4 add updates.img via local media test
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D497
2015-08-17 17:28:33 +02:00
Jan Sedlák
f4b3bee699 add creation of disk containing updates.img
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D494
2015-08-17 17:22:20 +02:00
Jan Sedlák
5579572db5 split createhdds.sh into functions, bump Fedora release 2015-08-17 17:22:07 +02:00
Adam Williamson
269dbbe004 schedule tests for i386 by default
Summary:
D500 adds 32-bit test definitions to the test templates, so we
can schedule that arch again.

Test Plan: Goes along with D500, same test plan.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D501
2015-08-15 21:10:50 -04:00
Adam Williamson
f681dce47e fix previous commit: job IDs are ints not strs
Forgot to fix this up before landing. As landed it didn't work
because job IDs are ints not strs.
2015-08-10 11:14:37 -07:00
Adam Williamson
836dec71fe print job ID lists with just space separators
Summary:
This way you can just copy/paste the damn list for report_job_
results instead of reformatting it, if you want to feed it in
manually for any reason.

Test Plan:
Run some commands that schedule jobs and make sure they're
printed as '1 2 3' not '[1, 2, 3]'

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D493
2015-08-10 11:11:20 -07:00
Adam Williamson
5c9d7142d5 report_job_results: handle cancelled jobs
Summary:
Cancelled jobs have their own state (at least in the openQA
running on happyassassin, they do). This causes r_j_r to get
stuck forever if any of the jobs are cancelled. Consider a
cancelled job 'done'.

Test Plan:
Try submitting results for a set of jobs that includes one or
more cancelled jobs. It should now work (before it would get
stuck).

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D492
2015-08-10 11:10:57 -07:00
Adam Williamson
3755fca412 add new custom storage cases (and rename software RAID case)
Summary:
This adds the three new custom storage tests from D490 to the
conf_test_suites table. It also renames the software RAID test,
as I changed the test case names upstream (in the wiki) to be
more consistent.

Test Plan:
After running the new tests, try submitting the results to the
wiki. It should work correctly.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D491
2015-08-10 11:09:42 -07:00
Jan Sedlák
ba512e93cd change default logging level to INFO
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D480
2015-07-29 14:31:05 +02:00
Adam Williamson
2229e8d3e9 fix typo: dupe.testcase not dupe.testcases
Summary: This broke result reporting if any dupes were present.

Test Plan: Try reporting some results with dupes.

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D477
2015-07-26 23:49:29 -07:00
Adam Williamson
803573edbc drop i386 from default arches for now
Summary:
We've never quite set things up to run 32-bit tests. We should,
at some point, but for now we're just wasting a bunch of time/
bandwidth downloading them and never testing them.

Test Plan:
Schedule a run and make sure all the same tests are still run,
but half as many images are downloaded...

Reviewers: jskladan, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D455
2015-07-20 07:41:15 -07:00
Garret Raziel
699be78fac add fedup desktop test
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D452
2015-07-17 12:55:18 +02:00
Garret Raziel
1672b1320c add desktop disk image creation
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D446
2015-07-16 09:31:53 +02:00
Auto PEP8
12a58e84a6 reformatted to PEP8 2015-07-14 08:10:38 +02:00
Garret Raziel
4b77522b03 use qemu and expect to do selinux relabelling on created disk image
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D428
2015-07-10 15:34:32 +02:00
Garret Raziel
acac8a2f5e Merge branch 'feature/openqa-python-library' into develop 2015-07-10 10:40:53 +02:00
Garret Raziel
b360155048 use openqa-python client instead of subprocess calling
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D425
2015-07-10 10:40:31 +02:00
Garret Raziel
68c7c2a126 use openqa-python client instead of subprocess calling
Summary:
Since adamw created Python client for OpenQA, we
can use it instead of calling Perl in subprocess. It simplyfies
usage and special code for running in Docker is no longer needed.
This version requires user to create configuration file either
in `/etc/openqa/client.conf` or in `~/.config/openqa/client.conf`
with the same KEY and SECRET as in host machine.

To execute jobs in Docker, just specify correct server and
port (probably `[localhost:8080]`) in configuration file.

Only problem remains with self-signed certificate. It's
necessary to either disable SSL cert verifying, import
self-signed certificate or use HTTP instead of HTTPS in Docker,
see https://github.com/os-autoinst/openQA-python-client/pull/1.

Test Plan: Tested on running tests for compose F22 Final RC1.

Reviewers: adamwill, jskladan

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D425
2015-07-09 13:42:56 +02:00
Garret Raziel
894e27ea84 allow running OpenQA in docker container, add logging instead of printing to stdout
Summary:
Logging is introduced instead of output to stdout and several
new options are added - user can specify directory for downloading
isos and he can also specify docker container where openqa is
running. Info about newest tested version is not written if no
images were found.

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D420
2015-07-09 10:31:53 +02:00
Adam Williamson
093c2b5be7 typo fix
Summary:
Wrong brace used for a str.format() call - caused a crash when
no universal test image is found for a compose.

Test Plan:
Check that tests still run. Ideally try testing a compose with
no universal image (e.g. a Rawhide nightly with no boot.iso).

Reviewers: garretraziel, kparal

Reviewed By: kparal

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D384
2015-06-11 10:00:26 -07:00
Garret Raziel
a6d48fb3aa add fedup_minimal to trigger configuration
Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D359
2015-05-13 13:05:36 +02:00
Adam Williamson
1ea0ba1db8 mark results as 'bot'
Summary:
Use the new wikitcms / Wikitcms feature that results can be
marked as 'bot' (indicating they're from an automated test
system, not a human). Requires python-wikitcms >= 1.1.4

Test Plan:
Update to wikitcms 1.1.4, report some results; they should
appear with bot=true and show the bot head on the result page.

Reviewers: kparal, garretraziel

Reviewed By: garretraziel

Subscribers: tflink

Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D349
2015-04-22 16:20:36 -07:00
Garret Raziel
4f25c90dbf Merge branch 'develop' of bitbucket.org:rajcze/openqa_fedora_tools into develop 2015-03-26 09:47:20 +01:00
Adam Williamson
3f7e77d71f report results using wikitcms directly, not via relval
Also refactor the result submission a bit to share the code
between CLI and module modes. This requires python-wikitcms
1.11+.

This should be substantially more efficient - it should make
only two wiki roundtrips per result page, and only init and
login to the wiki once. Going via relval requires a wiki init
and then two roundtrips for *each result*.

https://phab.qadevel.cloud.fedoraproject.org/D316
2015-03-25 17:53:58 -07:00
Adam Williamson
cbe7769748 handling scheduling of jobs for multiple images
This handles scheduling of jobs for more than one type of
image; currently we'll run tests for Workstation live as well.
It requires some cleverness to run some tests for *all* images
(currently just default_boot_and_install) but run all the tests
that can be run with any non-live installer image with the best
image available for the compose. We introduce a special (openQA,
not fedfind) 'flavor' called 'universal'; we run a couple of
checks to find the best image in the compose for running the
universal tests, and schedule tests for the 'universal' flavor
with that image. The 'best' image is a server or 'generic' DVD
if possible, and if not, a server or 'generic' boot.iso.

ISO files have the compose's version identifier prepended to
their names. Otherwise they retain their original names, which
should usually be unique within a given compose, except for
boot.iso files, which have their payload and arch added into
their names to ensure they don't overwrite each other.

This also adds a mechanism for TESTCASES (in conf_test_suites)
to define a callback which will be called with the flavor of
the image being tested; the result of the callback will be used
as the 'test name' for relval result reporting purposes. This
allows us to report results against the correct 'test instance'
for the image being tested, for tests like Boot_default_install
which have 'test instances' for each image. We can extend this
general approach in future for other cases where we have
multiple 'test instances' for a single test case.
2015-03-18 14:51:01 -07:00
Garret Raziel
9a2e608395 small change in createhdds.sh 2015-03-18 13:43:40 +01:00
Garret Raziel
6a47d2f426 add kickstart hdd test suite 2015-03-12 11:09:34 +01:00
Garret Raziel
95aa680064 creating new HDDs 2015-03-11 16:19:20 +01:00
Garret Raziel
cb0451f7b3 add software raid test 2015-03-06 10:35:59 +01:00