The layout of my home directory is somewhat peculiar: I store
all git repositories in ~/src/upstream, but since I spend
almost all of my time hacking on libvirt, I also have a
convenience symlink ~/src/libvirt -> ~/src/upstream/libvirt
that I use to access that specific git repository.
The above setup has served me well for years; however, ever
since commit ca1471622dd9 dropped our own custom definitions
for abs_{,top_}{src,build}dir and started using the ones
provided by autotools, virstoragetest has started reliably
failing with errors such as
2) Storage backing chain 2 ...
Offset 0
Expect [chain member: 0
path:/home/abologna/src/upstream/libvirt/tests/virstoragedata/raw
backingStoreRaw: <null>
capacity: 0
encryption: 0
relPath:<null>
type:1
format:1
protocol:none
hostname:<null>
]
Actual [chain member: 0
path:/home/abologna/src/libvirt/tests/virstoragedata/raw
backingStoreRaw: <null>
capacity: 0
encryption: 0
relPath:<null>
type:1
format:1
protocol:none
hostname:<null>
]
... FAILED
Using abolute paths instead of canonical ones in the tests makes
the problem go away.
Note that all tests that are specifically designed to test path
canonicalization via TEST_PATH_CANONICALIZE() were passing even
before this patch and are not touched by it.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
I'm far from being confident this is the correct approach, but
I've grown annoyed enough by the constant 'make check' failures
that I figured I'd at least get the discussion going :)
tests/virstoragetest.c | 50 +++++++++---------------------------------
1 file changed, 10 insertions(+), 40 deletions(-)
diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c
index fb98903f02..d2be6fffef 100644
--- a/tests/virstoragetest.c
+++ b/tests/virstoragetest.c
@@ -46,21 +46,16 @@ VIR_LOG_INIT("tests.storagetest");
* sub/link2: symlink to wrap
*
* Relative names to these files are known at compile time, but absolute
- * and canonical names depend on where the test is run; for convenience,
+ * names depend on where the test is run; for convenience,
* we pre-populate the computation of these names for use during the test.
*/
static char *qemuimg;
static char *absraw;
-static char *canonraw;
static char *absqcow2;
-static char *canonqcow2;
static char *abswrap;
-static char *canonwrap;
static char *absqed;
-static char *canonqed;
static char *absdir;
-static char *canondir;
static char *abslink2;
static void
@@ -68,15 +63,10 @@ testCleanupImages(void)
{
VIR_FREE(qemuimg);
VIR_FREE(absraw);
- VIR_FREE(canonraw);
VIR_FREE(absqcow2);
- VIR_FREE(canonqcow2);
VIR_FREE(abswrap);
- VIR_FREE(canonwrap);
VIR_FREE(absqed);
- VIR_FREE(canonqed);
VIR_FREE(absdir);
- VIR_FREE(canondir);
VIR_FREE(abslink2);
if (chdir(abs_builddir) < 0) {
@@ -165,10 +155,6 @@ testPrepImages(void)
fprintf(stderr, "unable to create directory %s\n", datadir
"/dir");
goto cleanup;
}
- if (!(canondir = virFileCanonicalizePath(absdir))) {
- virReportOOMError();
- goto cleanup;
- }
if (chdir(datadir) < 0) {
fprintf(stderr, "unable to test relative backing chains\n");
@@ -180,10 +166,6 @@ testPrepImages(void)
fprintf(stderr, "unable to create raw file\n");
goto cleanup;
}
- if (!(canonraw = virFileCanonicalizePath(absraw))) {
- virReportOOMError();
- goto cleanup;
- }
/* Create a qcow2 wrapping relative raw; later on, we modify its
* metadata to test other configurations */
@@ -200,10 +182,6 @@ testPrepImages(void)
"-F", "raw", "-b",
"raw", "qcow2", NULL);
if (virCommandRun(cmd, NULL) < 0)
goto skip;
- if (!(canonqcow2 = virFileCanonicalizePath(absqcow2))) {
- virReportOOMError();
- goto cleanup;
- }
/* Create a second qcow2 wrapping the first, to be sure that we
* can correctly avoid insecure probing. */
@@ -214,10 +192,6 @@ testPrepImages(void)
virCommandAddArg(cmd, "wrap");
if (virCommandRun(cmd, NULL) < 0)
goto skip;
- if (!(canonwrap = virFileCanonicalizePath(abswrap))) {
- virReportOOMError();
- goto cleanup;
- }
/* Create a qed file. */
virCommandFree(cmd);
@@ -227,10 +201,6 @@ testPrepImages(void)
virCommandAddArg(cmd, "qed");
if (virCommandRun(cmd, NULL) < 0)
goto skip;
- if (!(canonqed = virFileCanonicalizePath(absqed))) {
- virReportOOMError();
- goto cleanup;
- }
#ifdef HAVE_SYMLINK
/* Create some symlinks in a sub-directory. */
@@ -731,7 +701,7 @@ mymain(void)
/* Raw image, whether with right format or no specified format */
testFileData raw = {
- .path = canonraw,
+ .path = absraw,
.type = VIR_STORAGE_TYPE_FILE,
.format = VIR_STORAGE_FILE_RAW,
};
@@ -743,12 +713,12 @@ mymain(void)
testFileData qcow2 = {
.expBackingStoreRaw = "raw",
.expCapacity = 1024,
- .path = canonqcow2,
+ .path = absqcow2,
.type = VIR_STORAGE_TYPE_FILE,
.format = VIR_STORAGE_FILE_QCOW2,
};
testFileData qcow2_as_raw = {
- .path = canonqcow2,
+ .path = absqcow2,
.type = VIR_STORAGE_TYPE_FILE,
.format = VIR_STORAGE_FILE_RAW,
};
@@ -772,7 +742,7 @@ mymain(void)
testFileData wrap = {
.expBackingStoreRaw = absqcow2,
.expCapacity = 1024,
- .path = canonwrap,
+ .path = abswrap,
.type = VIR_STORAGE_TYPE_FILE,
.format = VIR_STORAGE_FILE_QCOW2,
};
@@ -795,7 +765,7 @@ mymain(void)
testFileData wrap_as_raw = {
.expBackingStoreRaw = absqcow2,
.expCapacity = 1024,
- .path = canonwrap,
+ .path = abswrap,
.type = VIR_STORAGE_TYPE_FILE,
.format = VIR_STORAGE_FILE_QCOW2,
};
@@ -878,12 +848,12 @@ mymain(void)
testFileData qed = {
.expBackingStoreRaw = absraw,
.expCapacity = 1024,
- .path = canonqed,
+ .path = absqed,
.type = VIR_STORAGE_TYPE_FILE,
.format = VIR_STORAGE_FILE_QED,
};
testFileData qed_as_raw = {
- .path = canonqed,
+ .path = absqed,
.type = VIR_STORAGE_TYPE_FILE,
.format = VIR_STORAGE_FILE_RAW,
};
@@ -892,12 +862,12 @@ mymain(void)
/* directory */
testFileData dir = {
- .path = canondir,
+ .path = absdir,
.type = VIR_STORAGE_TYPE_DIR,
.format = VIR_STORAGE_FILE_DIR,
};
testFileData dir_as_raw = {
- .path = canondir,
+ .path = absdir,
.type = VIR_STORAGE_TYPE_DIR,
.format = VIR_STORAGE_FILE_RAW,
};
--
2.20.1