Commit Graph

600 Commits

Author SHA1 Message Date
John Mulligan 36196c5e60 cephfs: release fs resources in remaining test cases
In a previous commit we added fsDisconnect to match with fsConnect.  For
tests that do not use fsConnect but still acquire resources we need to
free up those resources with direct calls to the appropriate functions.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-04-06 16:29:26 -04:00
John Mulligan 1842ad248d cephfs: pair fsConnect with a fsDisconnect function
For every (most?) call to fsConnect we should pair it with a (deferred)
call to fsDisconnect to close connection and release resources
associated with the mount object we have created for the test.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-04-06 16:29:26 -04:00
John Mulligan bdee9f4aab cephfs: TestMountWithRoot should only try unmounting after mounting
The defer function in TestMountWithRoot was always trying to call
unmount before release. This is not correct if the fs was not mounted
so we reorganize this code to more closely match what should be done
in normal practice.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-04-06 16:29:26 -04:00
John Mulligan 6a08124775 cephfs: TestCreateMount should not try to mount twice
Somehow we managed to introduce extra code into TestCreateMount that
had it create two mounts. This is undesirable for this test so this
change eliminates the extra unwanted invocation.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-04-06 16:29:26 -04:00
John Mulligan ab178bc7ed cephfs: allow passing mds name into test through env var
Previously, the mds name was hardcoded in the tests to match that set up
by "micro-osd.sh". We continue to default to that value, but allow the
test to be supplied a custom value by the environment.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-04-06 16:29:26 -04:00
John Mulligan 900302b1ce entrypoint: set default env var for requiring cephfs mount point
When running cephfs tests locally there is no strong urge to require
an environment exactly like that of the test container. However, we do
want tests run under the container image (especially our default ci) to
use the cephfs mountpoint as they were previously. Set a default value
in the entrypoint script to require the mountpoint so we don't
accidentally miss the tests if something unexpected goes wrong.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-04-06 16:29:26 -04:00
John Mulligan 0b658baebf cephfs: restrict running of tests that need a mounted fs instance
Add a utility function to test cases that expect the cephfs file system
to be mounted locally and accessible.
Add environment vars to configure the location of the mount point as
well whether the function causes the test to be skipped (the default)
or force an early but clear failure.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-04-06 16:29:26 -04:00
John Mulligan 2c249311ef travis: use "octopus" release by name
Within the last 24hrs the "octopus" release of ceph is available, and
matching tags have been created in the ceph containers project. Consume
the release name rather than master.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-25 17:37:43 +01:00
John Mulligan eb6386e416 testing: set "exported" rule failures back to errors
We had a lot of "exported" badness previously but that either been
resolved or disabled on a case-by-case basis. Make the rule fail the
check so that new cases like this are not brought in.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-23 10:09:25 -04:00
John Mulligan eee19d642f rbd: rename uses of RbdImageOptions to ImageOptions
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-23 10:09:25 -04:00
John Mulligan a29025a893 rbd: drop the Rbd prefix from ImageOptions and ImageOption
Previously, the types were named RbdImageOptions and RbdImageOption.
Now they are named ImageOptions and ImageOption.
Type aliases have been added to prevent existing code from
breaking. As these types were new in v0.2, I suspect we can drop
the aliases post-v0.3.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-23 10:09:25 -04:00
John Mulligan 51827ead4e rbd: convert uses of RbdImageOptionX to ImageOptionX
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-23 10:09:25 -04:00
John Mulligan 6d77dc97dc rbd: remove Rbd prefix from constants and provide aliases
Image option constants are now named ImageOptionX, without an Rbd
prefix. Aliases to the old names are provided and doc comments for both.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-23 10:09:25 -04:00
John Mulligan c2d0bc90ef rbd: add comments to features go file to pass check tool
Make the features.go file clean to the revive checker tool.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-23 10:09:25 -04:00
John Mulligan 8f2671fee9 rbd: add doc comments for (Get|Set|Remove)Metadata funcs
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-23 10:09:25 -04:00
John Mulligan 53fd07425a rbd: add doc comment for GetSnapshotNames function
This function also happens to be mis-named.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-20 09:43:15 -04:00
John Mulligan 644b7939d0 rbd: add doc comments for Flush function
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-20 09:43:15 -04:00
John Mulligan 51e9a080bb rbd: add doc comments for ReadAt and WriteAt
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-20 09:43:15 -04:00
John Mulligan 223f1e01d7 rbd: add doc comment to Discard function
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-20 09:43:15 -04:00
John Mulligan d71fb3b2ea rbd: add a doc comment for the Seek function
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-20 09:43:15 -04:00
John Mulligan c3e1a2d032 rbd: add doc comment for image type
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-20 09:43:15 -04:00
John Mulligan eb1cccea2f rbd: add doc comment for Locker type
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-20 09:43:15 -04:00
John Mulligan b98ecb12fc rbd: add doc comments for ImageInfo and SnapInfo types
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-20 09:43:15 -04:00
John Mulligan 5b76299c40 entrypoint: allow configuring ceph config source
This further improves the ability to use the script outside the
container itself and against alternate ceph cluster configs.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-20 11:06:25 +01:00
John Mulligan 953a22bd12 rados: temporarily disable revive caring about RadosError stuttering
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-17 09:56:49 -04:00
John Mulligan 2e5a2c3b9e cephfs: temporarily disable revive caring about CephFSError stuttering
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-17 09:56:49 -04:00
John Mulligan 96396d4fca rbd: temporarily disable revive caring about RBDError stuttering
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-17 09:56:49 -04:00
John Mulligan 4f2fc34445 rbd: add revive comments for disabling check on backwards-compat vars
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-17 09:15:24 +01:00
John Mulligan 149827c4e2 rbd: add doc comments to error values
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-17 09:15:24 +01:00
John Mulligan 5a35fc8643 rbd: add doc comment to error type
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-17 09:15:24 +01:00
John Mulligan 002ffc8c91 rbd: doc comments for Seek constants
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-17 09:15:24 +01:00
John Mulligan 560d6ccd2c rbd: properly format the doc comment for Copy2
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-17 09:15:24 +01:00
John Mulligan 3f92504a00 travis: enable testing with ceph "octopus"
Currently there's no container image named "octopus" but its imminent.
Once ceph container starts tagging images with "latest-octopus" we
should switch to that.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 13:33:16 +01:00
John Mulligan 1bd65c6f20 rados: fix test for mon command with input buffer on ceph octopus
It appears that ceph octopus (currently testing as master) is stricter
about some inputs and the old formatting in the test was failing.
Use formatting that all versions should be happy with.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 13:33:16 +01:00
John Mulligan 01b38c2e42 testing: move ubuntu xenial based Dockerfile to a subdir
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 13:33:16 +01:00
John Mulligan 825f07583e makefile: use ceph based containers by default
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 13:33:16 +01:00
John Mulligan a61cc3f13d testing: add Dockerfile based on ceph containers
Ceph containers [1] are built by the ceph team and for our purposes,
only lack build tools and Go making the delta we need to do smaller.

1: https://github.com/ceph/ceph-container

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 13:33:16 +01:00
John Mulligan e1cab82587 makefile: support selecting alternate container builds
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 13:33:16 +01:00
John Mulligan 86945c70db travis: use makefile rules in travis configuration
Instead of duplicating some of the actions in the travis yaml file and
the Makefile, have travis rules make use of the Makefile.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 13:33:16 +01:00
John Mulligan 68cdcc3b4e makefile: add rules for explicitly creating the ci container image
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 13:33:16 +01:00
John Mulligan 0b6bc6e4dd travis: update to use bionic for travis
Our use of the base os is pretty minimal as the tests mainly rely on
what happens inside the container. Might as well not use something old.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 13:33:16 +01:00
John Mulligan 3afcc68ac7 entrypoint: enable go vet checking on packages
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 09:02:53 +01:00
John Mulligan fa3bce7234 rbd: hide ioctx.Pointer incantations in a function
A previous change improved our use of pointers such that go vet no
longer had an issue with these lines but if we ever need to change the
interaction between rbd and rados like that again we can now rely on a
single call site `cephIoctx` that will return our ceph/c type given the
public Go-language level type from the rados pkg.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 09:02:53 +01:00
John Mulligan 1abd1423c1 rbd: prevent a go vet error by doing type-casting in C
The void * is (ab)used in C for passing arbitrary data to the callback,
which in our case is a integer index. However, Go tools can not tell
this is OK and throws an error running go vet. Change the wrapper
function to take a uintptr_t and cast that to void* only in the
(unchecked) C layer.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 09:02:53 +01:00
John Mulligan 754d744ac8 rados: return an unsafe.Pointer from ioctx Pointer call
This improves the code in two ways: first, it makes the function name and the
return type match. Second, it avoids issues found by go vet converting
from uintptr to unsafe.Pointer without any obvious pointer math.
(See: https://pkg.go.dev/unsafe)

Technically, this is an API breaking change but this function is only
public to exchange the internal ceph structure between the rados and
rbd modules. This had the smallest delta and doesn't feel any more
hacky than what already existed in the code. If someone was using this
function externally then too bad.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-12 09:02:53 +01:00
John Mulligan 944510bd8c entrypoint: add a --results option for alternate results dir
This can be useful when running the script outside of the
container or doing other sneaky things. :-)

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-11 13:31:22 +01:00
John Mulligan 6b396f70b2 errutil: move errutil pkg into internal subdir
Moving the errutil pkg to "internal/errutil" makes errutil private-like
and accessible to only other go-ceph packages. The functions it provided
were always meant to be used only by go-ceph, this just makes it more
official. This is a breaking change but it was only available to
outside users for 1 release and it is somewhat doubtful users outside
of go-ceph would have reached for these functions.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-10 08:41:44 +01:00
John Mulligan 33422fc2cb cephfs: add SetConfigOption and GetConfigOption functions
These are implemented similarly to the rados equivalents.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-10 08:15:16 +01:00
John Mulligan d9ce9ad799 rbd: add well-formed doc comments to the rbd snapshot functions.
No functionality change, just comments.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-10 07:47:59 +01:00
John Mulligan 4fc730ad39 rbd: move snapshot test funcs to a new file
Signed-off-by: John Mulligan <jmulligan@redhat.com>
2020-03-10 07:47:59 +01:00