Commit Graph

38 Commits

Author SHA1 Message Date
Kefu Chai
f7331fdc3f Merge pull request #8786 from tchaikov/wip-btrfs-sudo
test: sudo to rm btrfs subvol

Reviewed-by: Erwan Velu <erwan@redhat.com>
2016-05-09 22:38:07 +08:00
Sage Weil
475cc08c33 qa/workunits/ceph-helpers.sh: make ceph-osd behave on ext4
Signed-off-by: Sage Weil <sage@redhat.com>
2016-04-30 17:12:05 -04:00
Kefu Chai
a5b2658f9f test: sudo to rm btrfs subvol
"btrfs subvolume {list,delete}" needs root privilege even if the current
user owns this subvol. one can only list/delete he/she is the root, or
if the btrfs volume was mounted with "-o user_subvol_rm_allowed".

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-04-28 02:05:26 +08:00
Sage Weil
bbdec192f8 Merge pull request #8691 from flyd1005/master
cleanup: Fix typos, change prefered to preferred

Reviewed-by: Sage Weil <sage@redhat.com>
2016-04-22 10:37:48 -04:00
Sage Weil
5698cd4889 Merge pull request #8530 from wjwithagen/patch-6
ceph-helpers.sh: only use mon*pid files when killing MONs

Reviewed-by: Kefu Chai <kchai@redhat.com>
2016-04-22 09:35:41 -04:00
Li Peng
88ae8c38d0 Fix typos, change prefered to preferred 2016-04-22 15:18:44 +08:00
Ali Maredia
e0f400fdef cmake: test-ceph-helpers working
Moved all the libraries in CMAKE_BINARY_DIR/lib
and all the binaries in CMAKE_BINARY_DIR/bin. Set
various environment variables for test-ceph-helpers.
Put those variables throughout
qa/workunits/ceph-helpers.sh.

NOTE: This is a very rough draft of these fixes.

Signed-off-by: Ali Maredia <amaredia@redhat.com>
2016-04-14 20:48:19 -04:00
Willem Jan Withagen
d5376c545b ceph-helpers.sh: only use mon*pid files when killing MONs
FreeBSD once in a while forgets to remove *pid files (this is probably a bug).
But taking care of it this way is probably much in line of what is actually needs to be done

Signed-off-by: Willem Jan Withagen wjw@digiware.nl
2016-04-11 11:45:29 +02:00
Erwan Velu
0eea2436d9 tests: Optimizing kill_daemons() sleep time
It could sounds like nothing but the actual sleeping rampup is counter
productive.

The code does : kill <proc>; sleep 0; kill <proc>; sleep 0; kill <proc;
sleep 1; and then it grows up 120 seconds by a smooth rampup.

But actually there is almost no chance the process dies so fast meaning
that by default we switch to the sleep 1.

Moving from sleep 0 to sleep 1 doesn't seems a big win but as
kill_daemons() is called very often we can save a lot of time by then
end.

This patch offer to sleep first a 1/10th of second instead of 0 and then
1/20th of second instead of 0.

The sleep call is also moved after the kill call as it's not necessary
waiting before executing the command.

This patch makes the running time of a test like osd-scrub-repair.sh
dropping from 7m30 to 7m7.

Saving another ~30seconds is an interesting win at make check level.
Signed-off-by: Erwan Velu <erwan@redhat.com>
2016-04-05 09:36:25 +02:00
Erwan Velu
84197f1641 tests: Optimizing wait_for_clean()
wait_for_clean() is a very common call when running the make check.
It does wait the cluster to be stable before continuing.

This script was doing the same calls twice and could be optimized by
making the useful calls only once.

is_clean() function was checking num_pgs & get_num_active_clean()
The main loop itself was also calling get_num_active_clean()

This patch is inlining the is_clean() inside this loop to benefit from a
single get_num_active_clean() call. This avoid a useless call of (ceph +
xmlstarlet).

This patch does move all the 'timer reset' conditions into an else
avoiding spawning other ceph+xmlstarlet call while we already know we
should reset the timer.

The last modification is to reduce the sleeping time as the state of the
cluster is changing very fast.

This whole patch could looks like almost not a big win but for a test
like test/osd/osd-scrub-repair.sh, we drop from 9m56 to 9m30 while
reducing the number system calls.

At the scale of make check, that's a lot of saving.

Signed-off-by: Erwan Velu <erwan@redhat.com>
2016-04-05 09:36:25 +02:00
Erwan Velu
b3f7392d9d tests: Reducing commands in get_num_active_clean()
get_num_active_clean() is called very often but spawn 1 useless process.
The current "grep -v | wc -l" can be easily replaced by "grep -cv" which
do the same while spawning one process less.

Signed-off-by: Erwan Velu <erwan@redhat.com>
2016-04-05 09:36:25 +02:00
Erwan Velu
d8f07c3ff6 tests: Killing daemons in parallel
The current code of kill_daemons() was killing daemons one after the
other and wait it to actually die before switching to the next one.

This patch makes the kill_daemons() loop being run in parallel to avoid
this bottleneck.

Signed-off-by: Erwan Velu <erwan@redhat.com>
2016-04-05 09:36:25 +02:00
Erwan Velu
db31cc6cbc tests: Adding parallelism helpers in ceph-helpers.sh
This commit introduce two new functions in ceph-helpers.sh to ease
parallelism in tests.

It's based on two functions : run_in_background() & wait_background()

The first one allow you to spawn processes or functions in background and saves
the associated pid in a variable passed as first argument.

The second one waits for thoses pids to complete and report their exit status.
If one or more failed then wait_background() reports a failure.

A typical usage looks like :

 pids1=""
 run_in_background pids1 bash -c 'sleep 5; exit 0'
 run_in_background pids1 bash -c 'sleep 1; exit 1'
 run_in_background pids1 my_bash_function
 wait_background pids1

The variable that contains pids is local making possible to do nested calls of
thoses two new functions.

Signed-off-by: Erwan Velu <erwan@redhat.com>
2016-04-05 09:36:25 +02:00
Loic Dachary
fa450896ac Makefile-env.am: set a default for CEPH_BUILD_VIRTUALENV (part 2)
The new default must be taken into account by make check scripts
otherwise they fail.

Followup of 5b3da26.

Signed-off-by: Loic Dachary <loic@dachary.org>
2016-03-27 22:28:50 +02:00
Loic Dachary
eb583cbbbf build/ops: in jessie virtualenv is in package virtualenv
The python scripts are not yet compatible with python3, yet it is the
default on jessie. Force the creation of the virtualenv to use python2.7
instead. The wheelhouse is already explicitly populated for both python3
and python2.7 by install-deps.sh, regardless of the default interpreter.

Signed-off-by: Loic Dachary <loic@dachary.org>
2016-03-23 19:56:11 +01:00
Erwan Velu
9ae89269f8 ceph-helpers: Delete remaining subvolumes on destroy_osd()
Before deleting $dir/$id, we have to delete the associated subvolumes unless the
rm will fail.

Signed-off-by: Erwan Velu <erwan@redhat.com>
2016-02-25 16:46:49 +01:00
Erwan Velu
cd0389ddb1 ceph-helpers.sh: Deleting forgoten btrfs subvolumes
While running a make check on a btrfs system, many subvolumes are let at the end
of the build. It's pretty common to have several hundreds of those.

btrfs is pretty sensible to the path when requesting a subvolume removal.
The current code was misleading the path and didn't deleted the remaining
volumes.

This patch list the current subvolumes, filter thoses created by the
test process and ajust the path because brtfs reports
  erwan/chroot/ceph/src/testdir/test-7202/dev/osd1/snap_439
while regarding the current working directory we want to delete :
  testdir/test-7202/dev/osd1/snap_439

Signed-off-by: Erwan Velu <erwan@redhat.com>
2016-02-25 15:33:10 +01:00
Nathan Cutler
882066d6b7 doc: standardize @param (not @parma, @parmam, @params)
Signed-off-by: Nathan Cutler <ncutler@suse.com>
2016-02-19 15:32:14 +01:00
Loic Dachary
7f6295d21f ceph-disk: make all must setup.py install
Refactor the test / virtualenv setup in the same way it was done for
ceph-detect-init.

All shell tests use ceph-helpers.sh which is modified to add ceph-disk /
ceph-detect-init virtualenv/bin to the PATH to ensure the source version
is used even if ceph is installed.

See "ceph-detect-init: make all must setup.py install"

Signed-off-by: Loic Dachary <loic@dachary.org>
2016-02-04 14:38:08 +07:00
Ved-vampir
300c2f773b Compressor: compressor plugins unit tests
Signed-off-by: Alyona Kiseleva <akiselyova@mirantis.com>
2016-01-14 19:04:19 -05:00
Sage Weil
3aa9eb3518 Merge pull request #6900 from liewegas/wip-13988
mon: fix reuse of osd ids (clear osd info on osd deletion)

Reviewed-by: Loic Dachary <ldachary@redhat.com>
2015-12-18 15:07:49 -05:00
Loic Dachary
c6cdc33432 tests: verify it is possible to reuse an OSD id
When an OSD id is removed via ceph osd rm, it will be reused by the next
ceph osd create command. Verify that and OSD reusing such an id
successfully comes up.

http://tracker.ceph.com/issues/13988 Refs: #13988

Signed-off-by: Loic Dachary <loic@dachary.org>
2015-12-10 20:46:23 +01:00
Loic Dachary
5876829dc7 tests: kill_daemons uses TERM instead of KILL
When called to teardown a test, kill_daemon should use KILL to ensure
all leftovers are removed as quickly as possible to leave a clean state
for the next test. However, when kill_daemons is called to shutdown a
given daemon from within a test, it should use TERM by default so the
daemon has time to notify the MON that it goes down. For instance, if
KILLing an OSD, the mon will still report it as being up although the
calling function probably expects that it will be marked out.

Signed-off-by: Loic Dachary <loic@dachary.org>
2015-12-10 17:34:32 +01:00
Loic Dachary
99bcc7cf16 tests: --osd-scrub-load-threshold=2000 for more consistency
In a test environment, consistency is more important than
performances. Effectively disable the test that would postpone a scrub
depending on the load average. It is assumed that a machine with a load
average higher than 2000 won't be useable anyway.

http://tracker.ceph.com/issues/14027 Refs: #14027

Signed-off-by: Loic Dachary <loic@dachary.org>
2015-12-09 11:48:45 +01:00
Xinze Chi
ce2d3c73ba test: add pg_scrub for ceph-helpers.sh
Signed-off-by: Xinze Chi <xinze@xsky.com>
2015-12-01 11:10:10 +08:00
Loic Dachary
f79e28902f tests: fix race condition testing auto scrub
When testing auto scrub, waiting 20 seconds for the scrub to complete is
sometimes not enough and creates false negatives.

Split wait_for_scrub out of the repair helper so that it can be used to
wait for the scrub to happen instead of using a timer.

The scrub timestamp is obtained after removing the object, therefore
there is a chance for the scrub to be finished already. But since auto
scrub is scheduled every 5 seconds, it will only make the test wait an
extra 5 seconds and not hang forever.

http://tracker.ceph.com/issues/13592

Signed-off-by: Xinze Chi <xinze@xsky.com>
Signed-off-by: Loic Dachary <loic@dachary.org>
2015-11-29 12:17:16 +01:00
Loic Dachary
15b2aca3cd tests: ceph-helpers assert success getting backfills
Signed-off-by: Loic Dachary <loic@dachary.org>
2015-11-25 12:23:45 +01:00
Loic Dachary
f14144441b tests: port uniqueness reminder
When copy/pasting a tests, it is easy to forget (or not know) that the
port used must be unique to allow for multiple tests to run in
parallel (make -j8). Add a reminder next to each port.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-10-27 17:38:17 +09:00
Sage Weil
660ae5bcbb osd: always load erasure plugins from the configured directory
Ignore the profile 'directory' field.

This ensures that we can always find plugins even when teh cluster
is installed across a mix of distros.

Rename the option to have no osd_ (or mon_) prefix since anybody
may use the ec factory/plugin code.

We still hard-code .libs in the unit tests... sigh.

Signed-off-by: Sage Weil <sage@redhat.com>
2015-08-21 16:03:30 -04:00
David Zafman
2869a8367a Merge pull request #5189 from athanatos/wip-recovery-defaults
config_opts: turn down default recovery tunables

Reviewed-by: David Zafman <dzafman@redhat.com>
2015-07-23 11:47:37 -07:00
Samuel Just
cd2d7d086f ceph-helpers.sh: don't test the osd_max_backfills value
This isn't a very meaningful assert since the default could
easily change.

Signed-off-by: Samuel Just <sjust@redhat.com>
2015-07-23 10:41:45 -07:00
Loic Dachary
96ec2a7444 tests: ceph-helpers.sh get_osds with no trailing whitespace
Trim the trailing whitespace of the get_osds output to help with
comparisons.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-07-08 16:14:23 +02:00
Loic Dachary
d791a722a7 tests: improve shell output readability
Modify the test traces to include the file name in addition to the
function and line name. It makes it easier to locate the faulty line
without going back to the test name.

Format the trace lines to be emacs friendly (filename:lineno) so that
C-x ` or C-c C-c jumps to the right file and the right line when running
the test with M-x compile.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-07-08 16:14:01 +02:00
Loic Dachary
aefcf6d385 tests: ceph-helpers.sh reduce kill_daemon verbosity
When a test fails, the script returns immediately and kill_daemon
function is called to cleanup. It is quite verbose and requires
scrolling hundreds of lines back to find the actual error
message. Turn off the shell trace to reduce the verbosity and improve
error output readability.

The kill_daemon cannot just turn off set -x because it may be called by
a test, not just at the end of the run. Instead the kill_daemon function
checks if tracing is activated and temporarily disables it.

Also get rid of the find standard error that commonly happens when
kill_daemon is called to verify there are no leftovers and the test
directory does not exist.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-07-08 13:58:10 +02:00
Sebastien Ponce
2409a90dcc tests: fixed environment for osd-class-dir
osd-class-dir was not set when activating osds in the test environment leading to failures with 'operation not supported' message when trying to lock objects

Signed-off-by: Sebastien Ponce <sebastien.ponce@cern.ch>
2015-06-23 13:04:21 +02:00
Loic Dachary
deb651b61c tests: implement erasure_code_plugin_exists in ceph-helpers.sh
Return 0 if the erasure code *plugin* is available, 1 otherwise.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-06-07 10:51:07 +02:00
Loic Dachary
64944d4105 tests: ceph-helpers.sh use expr instead of (( ))
Because (( timer++ )) is mistaken by set -e to not be a successful
command, use expr instead.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-05-31 18:33:20 +02:00
Loic Dachary
d2172b0e89 tests: move ceph-helpers.sh to qa/workunits
So that it can be used by scripts in qa/workunits that need it.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-05-31 18:33:17 +02:00