diff options
Diffstat (limited to 'src/VBox/Storage/testcase/tstVDSnap.cpp')
-rw-r--r-- | src/VBox/Storage/testcase/tstVDSnap.cpp | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/src/VBox/Storage/testcase/tstVDSnap.cpp b/src/VBox/Storage/testcase/tstVDSnap.cpp index 83313e1f..d32d3b55 100644 --- a/src/VBox/Storage/testcase/tstVDSnap.cpp +++ b/src/VBox/Storage/testcase/tstVDSnap.cpp @@ -4,7 +4,7 @@ */ /* - * Copyright (C) 2010 Oracle Corporation + * Copyright (C) 2010-2011 Oracle Corporation * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -229,6 +229,21 @@ static int tstVDOpenCreateWriteMerge(PVDSNAPTEST pTest) unsigned cDiffs = 0; unsigned idDiff = 0; /* Diff ID counter for the filename */ + /* Delete all images from a previous run. */ + RTFileDelete(pTest->pcszBaseImage); + for (unsigned i = 0; i < pTest->cIterations; i++) + { + char *pszDiffFilename = NULL; + + rc = RTStrAPrintf(&pszDiffFilename, "tstVDSnapDiff%u.%s", i, pTest->pcszDiffSuff); + if (RT_SUCCESS(rc)) + { + if (RTFileExists(pszDiffFilename)) + RTFileDelete(pszDiffFilename); + RTStrFree(pszDiffFilename); + } + } + /* Create the virtual disk test data */ pbTestPattern = (uint8_t *)RTMemAlloc(pTest->cbTestPattern); @@ -260,10 +275,22 @@ static int tstVDOpenCreateWriteMerge(PVDSNAPTEST pTest) if (pbTestPattern) \ RTMemFree(pbTestPattern); \ VDDestroy(pVD); \ + g_cErrors++; \ return rc; \ } \ } while (0) +#define CHECK_BREAK(str) \ + do \ + { \ + RTPrintf("%s rc=%Rrc\n", str, rc); \ + if (RT_FAILURE(rc)) \ + { \ + g_cErrors++; \ + break; \ + } \ + } while (0) + /* Create error interface. */ /* Create error interface. */ VDIfError.pfnError = tstVDError; @@ -292,7 +319,7 @@ static int tstVDOpenCreateWriteMerge(PVDSNAPTEST pTest) { /* Write */ rc = tstVDSnapWrite(pVD, paDiskSeg, cDiskSegments, cbDisk, fInit); - CHECK("tstVDSnapWrite()"); + CHECK_BREAK("tstVDSnapWrite()"); fInit = false; @@ -313,7 +340,7 @@ static int tstVDOpenCreateWriteMerge(PVDSNAPTEST pTest) rc = VDCreateDiff(pVD, pTest->pcszBackend, pszDiffFilename, VD_IMAGE_FLAGS_NONE, "Test diff image", NULL, NULL, VD_OPEN_FLAGS_NORMAL, NULL, NULL); - CHECK("VDCreateDiff()"); + CHECK_BREAK("VDCreateDiff()"); RTStrFree(pszDiffFilename); VDDumpImages(pVD); @@ -333,7 +360,7 @@ static int tstVDOpenCreateWriteMerge(PVDSNAPTEST pTest) rc = VDMerge(pVD, uStartMerge, uEndMerge, NULL); else rc = VDMerge(pVD, uEndMerge, uStartMerge, NULL); - CHECK("VDMerge()"); + CHECK_BREAK("VDMerge()"); cDiffs -= uEndMerge - uStartMerge; @@ -351,7 +378,7 @@ static int tstVDOpenCreateWriteMerge(PVDSNAPTEST pTest) /* Now compare the result with our test pattern */ rc = tstVDSnapReadVerify(pVD, paDiskSeg, cDiskSegments, cbDisk); - CHECK("tstVDSnapReadVerify()"); + CHECK_BREAK("tstVDSnapReadVerify()"); } cIteration++; } @@ -372,7 +399,7 @@ static int tstVDOpenCreateWriteMerge(PVDSNAPTEST pTest) RTStrFree(pszDiffFilename); } #undef CHECK - return 0; + return rc; } int main(int argc, char *argv[]) |