From 251e04a9c17a0d9422727473f28e215fc2c6ae20 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Thu, 15 Sep 2022 16:48:28 -0700 Subject: added test able to catch bug #1167 also : errors during benchmark mode return an error code. --- programs/bench.c | 58 +++++++++++++++++++++++++++++++++++--------------------- tests/Makefile | 1 + 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/programs/bench.c b/programs/bench.c index f7eb63d..2d9961d 100644 --- a/programs/bench.c +++ b/programs/bench.c @@ -369,6 +369,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, size_t const maxInSize = (size_t)LZ4_MAX_INPUT_SIZE / decMultiplier; size_t const maxDecSize = srcSize < maxInSize ? srcSize * decMultiplier : LZ4_MAX_INPUT_SIZE; void* const resultBuffer = malloc(maxDecSize); + int benchError = 0; U32 nbBlocks; struct compressionParameters compP; @@ -465,7 +466,10 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, &compP, blockTable[blockNb].srcPtr, blockTable[blockNb].cPtr, (int)blockTable[blockNb].srcSize, (int)blockTable[blockNb].cRoom); - if (LZ4_isError(rSize)) END_PROCESS(1, "LZ4 compression failed"); + if (LZ4_isError(rSize)) { + DISPLAY("LZ4 compression failed on block %u", blockNb); + benchError =1 ; + } blockTable[blockNb].cSize = rSize; } } { U64 const clockSpan = UTIL_clockSpanNano(clockStart); @@ -524,7 +528,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, decString, blockNb, (unsigned)blockTable[blockNb].srcSize); if (g_decodeOnly) DISPLAY("Is input using LZ4 Frame format ? \n"); - END_PROCESS(2, "error during decoding"); + benchError = 1; break; } blockTable[blockNb].resSize = (size_t)regenSize; @@ -562,6 +566,7 @@ static int BMK_benchMem(const void* srcBuffer, size_t srcSize, if (crcOrig!=crcCheck) { size_t u; DISPLAY("\n!!! WARNING !!! %17s : Invalid Checksum : %x != %x \n", displayName, (unsigned)crcOrig, (unsigned)crcCheck); + benchError = 1; for (u=0; u 1) ? mfName : fileNamesTable[0]; - BMK_benchCLevel(srcBuffer, benchedSize, + benchError = BMK_benchCLevel(srcBuffer, benchedSize, displayName, cLevel, cLevelLast, fileSizes, nbFiles, dictBuf, dictSize); @@ -731,12 +739,14 @@ static void BMK_benchFileTable(const char** fileNamesTable, unsigned nbFiles, /* clean up */ free(srcBuffer); free(fileSizes); + return benchError; } -static void BMK_syntheticTest(int cLevel, int cLevelLast, double compressibility, - const char* dictBuf, int dictSize) +static int BMK_syntheticTest(int cLevel, int cLevelLast, double compressibility, + const char* dictBuf, int dictSize) { + int benchError = 0; char name[20] = {0}; size_t benchedSize = 10000000; void* const srcBuffer = malloc(benchedSize); @@ -749,10 +759,12 @@ static void BMK_syntheticTest(int cLevel, int cLevelLast, double compressibility /* Bench */ snprintf (name, sizeof(name), "Synthetic %2u%%", (unsigned)(compressibility*100)); - BMK_benchCLevel(srcBuffer, benchedSize, name, cLevel, cLevelLast, &benchedSize, 1, dictBuf, dictSize); + benchError = BMK_benchCLevel(srcBuffer, benchedSize, name, cLevel, cLevelLast, &benchedSize, 1, dictBuf, dictSize); /* clean up */ free(srcBuffer); + + return benchError; } @@ -761,15 +773,16 @@ BMK_benchFilesSeparately(const char** fileNamesTable, unsigned nbFiles, int cLevel, int cLevelLast, const char* dictBuf, int dictSize) { + int benchError = 0; unsigned fileNb; if (cLevel > LZ4HC_CLEVEL_MAX) cLevel = LZ4HC_CLEVEL_MAX; if (cLevelLast > LZ4HC_CLEVEL_MAX) cLevelLast = LZ4HC_CLEVEL_MAX; if (cLevelLast < cLevel) cLevelLast = cLevel; for (fileNb=0; fileNb $(FPREFIX)-data-128KB -- cgit v0.12