Commit Graph

114 Commits

Author SHA1 Message Date
Rishabh Dave
c279b47ec9 qa/cephfs: lazy-force unmount clients that have been evicted
Before unmounting check if the client has been evicted and, if so, run
"umount -f -l" for the mount point of the client and cleanup the mount
right after it.

Attempting to unmount, cleanup or operate in any way over mount point
of a evicted client will hang the operation (and thereby our Python
code too). Lazy-force unmount prevents such hangs for our Python code
and also frees the mount point.

This commit also adds code to gather session info for kernel mounts
after mounting is successful. This is a necessity since network address
of session is needed to check if it is blocked by Ceph cluster.

Fixes: https://tracker.ceph.com/issues/56476
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-08-19 21:00:00 +05:30
Rishabh Dave
b79853fbe9 qa/cephfs: add a method to check if CephFS mounts have hanged
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-08-19 19:40:38 +05:30
Rishabh Dave
cef4c8d832
Merge pull request #45036 from rishabh-d-dave/qa-fix-is_mounted
qa/cephfs: upgrade is_mounted() in mount.py

Reviewed-by: Kotresh HR <khiremat@redhat.com>
Reviewed-by: Dhairya Parmar <dparmar@redhat.com>
Reviewed-by: Nikhilkumar Shelke <nshelke@redhat.com>
Reviewed-by: Ramana Raja <rraja@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Xiubo Li <xiubli@redhat.com>
2022-08-19 18:43:59 +05:30
Rishabh Dave
f96031b920 qa/cephfs: upgrade is_mounted() in mount.py
Instead of relying on value of a mutable variable, actually check if the
CephFS is mounted on the system. This will prevent bugs due to stale and
incorrect values.

Fixes: https://tracker.ceph.com/issues/54283
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-07-20 22:36:18 +05:30
Rishabh Dave
82b58e3667 qa/cephfs: allow checking for multiple error messages while...
while negative testing.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-07-20 13:11:31 +05:30
Rishabh Dave
5967592792 qa/cephfs: remove sudo parameter from run_shell()
Right now, run_shell() in mount.py accepts both "sudo" and "omit_sudo"
as parameters. It's better to accept only one of these two parameters.
A call to run_shell() where both are set to opposing values will be
buggy. Therefore, methods calling run_shell() must add "sudo" to command
arguments before call and set omit_sudo to False in call.

As a result of this change, methods like stat() and run_python() in
mount.py are now modified to add "sudo" to command arguments
and set omit_sudo to False within their own definitions.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-06-27 19:56:04 +05:30
Rishabh Dave
d28f2a29a7 qa/cephfs/mount: set omit_sudo when sudo is present in args
Methods run_as_user() and run_python() don't set omit_sudo to False even
when command arguments contain sudo. This will cause vstart_runner.py to
delete "sudo" from command arguments which will/might lead to a bug.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-06-27 19:43:54 +05:30
Venky Shankar
27f4729256
Merge pull request #45556 from mchangir/qa-add-subvolume-option-flavors
qa: add subvolume option flavors

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Ramana Raja <rraja@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Kotresh HR <khiremat@redhat.com>
2022-06-13 12:29:43 +05:30
Venky Shankar
375c8a6006
Merge pull request #44335 from SMIL-Infra/export-unlinked-dir
mds: fix crash when exporting unlinked dir

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Xiubo Li <xiubli@redhat.com>
2022-06-07 22:47:36 +05:30
Venky Shankar
2ab2777722
Merge pull request #46165 from rishabh-d-dave/qa-omit-sudo
qa/cephfs: set omit_sudo False when sudo is set to True

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Dhairya Parmar <dparmar@redhat.com>
Reviewed-by: Nikhilkumar Shelke <nshelke@redhat.com>
2022-06-06 11:23:11 +05:30
Rishabh Dave
f58bcac7cb qa/cephfs: modify get_key_from_keyfile() in mount.py
CephFSMount.get_key_from_keyfile() should raise an exception instead of
returning None if key is not found in keyring file.

Fixes: https://tracker.ceph.com/issues/50010
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-06-03 09:40:28 +05:30
胡玮文
9558a6ada2 qa: reproduce the crash when exporting unlinked dir
Signed-off-by: 胡玮文 <huww98@outlook.com>
2022-05-25 15:55:14 +08:00
Rishabh Dave
02f0a3f136 qa/cephfs: omit_sudo must be passed to underlying method...
so that it can have it's intended effect.

Fixes: https://tracker.ceph.com/issues/55572
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-05-06 22:04:18 +05:30
Rishabh Dave
76edd3bb32 qa/cephfs: set omit_sudo False when sudo is set to True
In these methods, parameter "sudo" indicates whether or not sudo is set
to True but the same is not indicated to methods underneath. This value
needs to be passed for the parameter to fulfill it's commitment.

Fixes: https://tracker.ceph.com/issues/55557
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-05-05 20:03:28 +05:30
Rishabh Dave
27eaacd98a qa/vstart_runner: accept multiple commands as str
Convert all command arguments to str from list, update checks and
adjustments performed on command arguments accordingly and update
documentation to include warnings about some critical parts of
vstart_runner.py and update tasks.cephfs.mount.MountCephFS.run_shell().

Fixes: https://tracker.ceph.com/issues/47849
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-05-02 20:24:08 +05:30
Rishabh Dave
2fcdbcd6f5 qa/cephfs: don't remove sudo from the command arguments
run_shell() in qa.tasks.cephfs.mount.CephFSMount prepends "sudo" to its
command arguments but it doesn't specify to the underlying method that
"sudo" shouldn't be deleted from the command arguments.

Fixes: https://tracker.ceph.com/issues/53601
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-04-27 16:02:36 +05:30
Rishabh Dave
ac5de474cf qa/cephfs: change default timeout from 900 secs to 300
15 minutes is unnecessarily large as a default value for timeout for a
command. Not having to wait unnecessarily on a crash of a command will
reduce teuthology's testing queue and will save individual developer's
time while running tests locally.

Whatever lines are modified for this purpose are also modified to follow
the stlye guideline, specfically wrapping at 80 characters.

Fixes: https://tracker.ceph.com/issues/54236
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2022-04-26 18:34:42 +05:30
Milind Changire
bf83eaa4e7 qa: enhancement for subvol creation and mounting
Fixes: https://tracker.ceph.com/issues/54317
Signed-off-by: Milind Changire <mchangir@redhat.com>
2022-04-07 14:15:56 +05:30
Kotresh HR
5c282616c6 qa/cephfs-data-scan: Validate symlink recovery
Validates that the 'cephfs-data-scan' tool recovers
symlink during disaster recovery of metadata pool
from data pool correctly as symlink

Signed-off-by: Kotresh HR <khiremat@redhat.com>
Fixes: https://tracker.ceph.com/issues/46166
2021-12-07 15:39:52 +05:30
Patrick Donnelly
a8e77365b1
Merge PR #43425 into master
* refs/pull/43425/head:
	qa: import CommandFailedError from exceptions not run

Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Jos Collin <jcollin@redhat.com>
2021-10-15 11:13:55 -04:00
Sebastian Wagner
d4783f5a65
Merge pull request #43214 from batrick/i52654
pybind/mgr/cephadm: set allow_standby_replay during CephFS upgrade

Reviewed-by: Sage Weil <sage@newdream.net>
Reviewed-by: Sebastian Wagner <sewagner@redhat.com>
2021-10-14 16:28:30 +02:00
Patrick Donnelly
395d20a2b7
qa: refactor and generalize create_n_files
Few things:

- Allow calling fsync on directory (to support async create kernel).
- Allow immediately unlinking the created file (for stray testing).
- Close any file descriptors created.
- Write unique content (the i variable) to each file.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2021-10-07 15:08:34 -04:00
Rishabh Dave
485841b255 qa: import CommandFailedError from exceptions not run
Stop importing CommandFailedError from teuthology.orchestra.run, it is
actually defined in teuthology.exception.

Fixes: https://tracker.ceph.com/issues/51226
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2021-10-05 23:41:09 +05:30
Patrick Donnelly
dbe5573ed4
qa: add note about where caps are generated
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2021-10-05 13:32:15 -04:00
Patrick Donnelly
24bb450d39
qa: use ctx's ceph_manager to run ceph commands by mount
This allows hooks for `cephadm shell` to function so that this code
works with cephadm deployments.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2021-10-05 13:32:15 -04:00
Patrick Donnelly
e2b39f6c8c
qa: avoid using sudo for regular test artifacts
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2021-07-01 10:56:10 -07:00
Patrick Donnelly
facd7a59ae
Merge PR #39847 into master
* refs/pull/39847/head:
	qa/cephfs: don't expect "file exists" error for "mkdir -p"
	qa/cephfs: don't take parameter cwd in _create_mntpt()

Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Xiubo Li <xiubli@redhat.com>
2021-03-16 20:21:52 -07:00
Venky Shankar
cecc3a6982 test: add symbolic link synchronization test for cephfs-mirror
Fixes: http://tracker.ceph.com/issues/49711
Signed-off-by: Venky Shankar <vshankar@redhat.com>
2021-03-12 03:53:42 -05:00
Rishabh Dave
60d5d7cf9c qa/cephfs: don't expect "file exists" error for "mkdir -p"
Get rid of try-except block in _create_mntpt() since "mkdir -p" doesn't
raise any error when the directory to be created already exists. Also,
use chmod command instead of mkdir command to set the permission mode on
directory since mkdir command would have no effect on the directory's
permission mode if the directory already exists.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2021-03-10 12:05:15 +05:30
Rishabh Dave
1b34665741 qa/cephfs: don't take parameter cwd in _create_mntpt()
Accepting "cwd" as a parameter in _create_mntpt() methods was a mistake
that happened commit 5e71e9b065.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2021-03-10 12:04:41 +05:30
Patrick Donnelly
1cbad56fd2
Merge PR #37711 into master
* refs/pull/37711/head:
	qa/cephfs: create class LocalCephFSMount
	vstart_runner: reuse FuseMount methods in LocalFuseMount
	vstart_runner: reuse KernelMount methods in LocalKernelMount
	qa/cephfs: move common and generic methods mount.py
	qa/cephfs: refactor FuseMount.mount method
	qa/cephfs: refactor KernelMount.mount method

Reviewed-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
2021-03-09 13:41:53 -08:00
Rishabh Dave
4d0f56fcc5 qa/cephfs: move is_blocklisted() to filesystem.CephCluster
Using self.fs.mon_manager in mount.py can lead to a crash since self.fs
can be None. Move is_blocklisted() to tasks.filesystem.CephCluster where
it can get access to mon_manager without depending on objects
representing Ceph FSs.

Fixes: https://tracker.ceph.com/issues/49511
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2021-03-06 09:11:36 +05:30
Rishabh Dave
5e71e9b065 qa/cephfs: move common and generic methods mount.py
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2021-03-05 10:03:12 +05:30
Rishabh Dave
95eb0043bf qa/cephfs: check for Ceph FS before mounting
If the given Ceph FS, or the default Ceph FS when no Ceph FS is given,
is absent, abort the execution with AsssertionError and an error
message.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2021-02-24 19:10:52 +05:30
Rishabh Dave
db0b85b440 qa/cephfs: remove parameter createfs from mount classes
It's better to get rid of this paramter since it doesn't actually create
any new Ceph file system.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2021-02-20 15:32:52 +05:30
Venky Shankar
f81e8f1e88 test: add tests for mirroring module w/ daemon verification
Signed-off-by: Venky Shankar <vshankar@redhat.com>
2021-01-19 01:08:10 -05:00
Xiubo Li
2f4980f394 qa: test_readahead add kernel client support
If the "ceph.cluster_fsid" and "ceph.client_id" vxattrs or the
"metric" debug file are not support yet, will assume the test
succeeds.

Fixes: https://tracker.ceph.com/issues/48053
Signed-off-by: Xiubo Li <xiubli@redhat.com>
2020-12-18 09:07:26 +08:00
Xiubo Li
cf6797828a qa: add debug information for client address for kclient
Fixes: https://tracker.ceph.com/issues/48242
Signed-off-by: Xiubo Li <xiubli@redhat.com>
2020-11-17 09:44:57 +08:00
Patrick Donnelly
0939625530
qa: avoid using ceph.dir.entries for empty check
This avoids a bug [1] in the kernel client.

[1] https://tracker.ceph.com/issues/48104

Fixes: https://tracker.ceph.com/issues/23718
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2020-11-03 15:43:04 -08:00
Patrick Donnelly
f8f607dbd1
qa: print debug info on mount cleanup
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2020-10-13 10:16:40 -07:00
Rishabh Dave
3f0284f272 qa/cephfs: add methods to read/write on CephFS mounts
Signed-off-by: Rishabh Dave <ridave@redhat.com>
2020-09-10 23:57:15 +05:30
Rishabh Dave
9a36a0abd0 qa/cephfs: allow not aborting execution when mount command fails
This commit adds a new argument check_status to mount methods of
KernelMount, FuseMount, LocalKernelMount and LocalFuseMount. When value
of this argument is False, these methods would catch the
CommandFailedError exception and would return a tuple consisting of the
exception itself, and stdout and stderr of the mount command. This
allows reusing these mount methods while running negative tests for
commands.

The name "check_status" is selected so since teuthology's run() and
vstart_runner's run() use a variable with same name for the very same
purpose.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2020-09-10 17:10:51 +05:30
Rishabh Dave
07e493ffb5 qa/cephfs: allow reusing mount objects and add remount method
This commit introduces following two set of changes -

First, make client keyring path, mountpoint on host FS and CephFS and
CephFS's name attributes of the object representing the mount
and update all the mount object creation calls accordingly. Also,
rewrite all the mount object creation to use keyword arguments instead
of positional arguments to avoid mistakes, especially since a new
argument was added in this commit.

Second, add remount method to mount.py so that it's possible to unmount
safely, modify the attributes of the object representing the mount and
mount again based on new state of the object *in a single call*. The
method is placed in mount.py to avoid duplication.

This change has two leads to two more changes: upgrading interface of
mount() and mount_wait() and upgrading testsuites to adapt to these
change.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
2020-09-10 17:10:51 +05:30
Patrick Donnelly
72d6f0413e
qa: move run_shell args to kwargs
To avoid listing all run args.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2020-08-29 10:22:12 -07:00
Sage Weil
dfd01d7653 blacklist -> blocklist
Signed-off-by: Sage Weil <sage@newdream.net>
Signed-off-by: Neha Ojha <nojha@redhat.com>
2020-08-24 19:53:08 +00:00
Patrick Donnelly
ac6c150eb0
qa: do not append file names to dirname
Otherwise the files generated are not actually under the sub-directory!
This is correcting a confusing aspect of the test infrastructure but
doesn't actually require any changes to the tests.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2020-08-06 19:17:02 -07:00
Xiubo Li
47600028ae qa: defer cleaning the mountpoint's netnses and the bridge
The netnses maybe created/deleted many times in the whole test cases,
we can defer cleaning them untile the last mountpoint is unmounted
or when the test is exiting.

Fixes: https://tracker.ceph.com/issues/46282
Signed-off-by: Xiubo Li <xiubli@redhat.com>
2020-07-29 20:58:36 -04:00
Xiubo Li
c0c5550ed7 qa/tasks/cephfs/mount.py: remove the stale netnses and bridge
If the previous test cases failed, the netnses and bridge will be
left. Here will remove them when new test cases begin.

Fixes: https://tracker.ceph.com/issues/45806
Signed-off-by: Xiubo Li <xiubli@redhat.com>
2020-07-29 08:41:18 +08:00
Xiubo Li
438aaf851f qa/tasks/cephfs/mount.py: try to flush the stale ceph-brx dev info
Once we have run the test cases and the ceph-brx bridge is setup,
it will save the config in "/etc/sysconfig/network-scripts/ifcfg-ceph-brx"
or somewhere else. It will be kept after the ceph-brx bridge removed.
So next time once the ceph-brx bridge is created or added, it will
read the config from it, then when we config it again we will get
error like:

    "RTNETLINK answers: File exists"

Here we need to flush it before config it.

Fixes: https://tracker.ceph.com/issues/45817
Signed-off-by: Xiubo Li <xiubli@redhat.com>
2020-07-29 08:41:02 +08:00
Xiubo Li
f8d8e3083a qa/tasks/cephfs/mount.py: switch to run_shell_payload() helper
Signed-off-by: Xiubo Li <xiubli@redhat.com>
2020-07-29 08:40:43 +08:00