]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Test DDSS A Little More Thoroughly
authorW. Felix Handte <w@felixhandte.com>
Thu, 10 Sep 2020 15:32:16 +0000 (11:32 -0400)
committerW. Felix Handte <w@felixhandte.com>
Fri, 11 Sep 2020 02:10:02 +0000 (22:10 -0400)
tests/fuzzer.c

index c354c42122b40c8c5b5024162ef27b7ac2bd3db0..2c37bb0f33ea5ba50f15da4af54df0d2b748497a 100644 (file)
@@ -571,7 +571,7 @@ static int basicUnitTests(U32 const seed, double compressibility)
         r = ZSTD_decompress(decodedBuffer, CNBuffSize, compressedBuffer, cSize);
         if (!ZSTD_isError(r)) goto _output_error;
         if (ZSTD_getErrorCode(r) != ZSTD_error_checksum_wrong) goto _output_error;
-        
+
         CHECK_Z(ZSTD_DCtx_setParameter(dctx, ZSTD_d_forceIgnoreChecksum, ZSTD_d_ignoreChecksum));
         r = ZSTD_decompressDCtx(dctx, decodedBuffer, CNBuffSize, compressedBuffer, cSize-1);
         if (!ZSTD_isError(r)) goto _output_error;   /* wrong checksum size should still throw error */
@@ -2926,7 +2926,7 @@ static int basicUnitTests(U32 const seed, double compressibility)
     {
         ZSTD_CCtx* const cctx = ZSTD_createCCtx();
         ZSTD_DCtx* const dctx = ZSTD_createDCtx();
-        size_t dictSize = CNBuffSize > 110 KB ? 110 KB : CNBuffSize;
+        size_t dictSize = CNBuffSize;
         void* dict = (void*)malloc(dictSize);
         ZSTD_CCtx_params* cctx_params = ZSTD_createCCtxParams();
         ZSTD_dictAttachPref_e const attachPrefs[] = {
@@ -2934,10 +2934,13 @@ static int basicUnitTests(U32 const seed, double compressibility)
             ZSTD_dictForceAttach,
             ZSTD_dictForceCopy,
             ZSTD_dictForceLoad,
-            ZSTD_dictForceAttach
+            ZSTD_dictDefaultAttach,
+            ZSTD_dictForceAttach,
+            ZSTD_dictForceCopy,
+            ZSTD_dictForceLoad
         };
-        int const enableDedicatedDictSearch[] = {0, 0, 0, 0, 1};
-        int const cLevel = 6;
+        int const enableDedicatedDictSearch[] = {0, 0, 0, 0, 1, 1, 1, 1};
+        int cLevel;
         int i;
 
         RDG_genBuffer(dict, dictSize, 0.5, 0.5, seed);
@@ -2945,28 +2948,34 @@ static int basicUnitTests(U32 const seed, double compressibility)
 
         CHECK(cctx_params != NULL);
 
-        for (i = 0; i < 5; ++i) {
-            ZSTD_dictAttachPref_e const attachPref = attachPrefs[i];
-            int const enableDDS = enableDedicatedDictSearch[i];
-            ZSTD_CDict* cdict;
+        for (dictSize = CNBuffSize; dictSize; dictSize = dictSize >> 1) {
+            for (cLevel = 4; cLevel < 12; cLevel++) {
+                for (i = 0; i < 8; ++i) {
+                    ZSTD_dictAttachPref_e const attachPref = attachPrefs[i];
+                    int const enableDDS = enableDedicatedDictSearch[i];
+                    ZSTD_CDict* cdict;
 
-            DISPLAYLEVEL(5, "\n  iter %d ", i);
+                    DISPLAYLEVEL(5, "\n  dictSize %lu cLevel %d iter %d ", dictSize, cLevel, i);
 
-            ZSTD_CCtxParams_init(cctx_params, cLevel);
-            CHECK_Z(ZSTD_CCtxParams_setParameter(cctx_params, ZSTD_c_enableDedicatedDictSearch, enableDDS));
+                    ZSTD_CCtxParams_init(cctx_params, cLevel);
+                    CHECK_Z(ZSTD_CCtxParams_setParameter(cctx_params, ZSTD_c_enableDedicatedDictSearch, enableDDS));
 
-            cdict = ZSTD_createCDict_advanced2(dict, dictSize, ZSTD_dlm_byRef, ZSTD_dct_auto, cctx_params, ZSTD_defaultCMem);
-            CHECK(cdict != NULL);
+                    cdict = ZSTD_createCDict_advanced2(dict, dictSize, ZSTD_dlm_byRef, ZSTD_dct_auto, cctx_params, ZSTD_defaultCMem);
+                    CHECK(cdict != NULL);
 
-            CHECK_Z(ZSTD_CCtx_refCDict(cctx, cdict));
-            CHECK_Z(ZSTD_CCtx_setParameter(cctx, ZSTD_c_forceAttachDict, attachPref));
+                    CHECK_Z(ZSTD_CCtx_refCDict(cctx, cdict));
+                    CHECK_Z(ZSTD_CCtx_setParameter(cctx, ZSTD_c_forceAttachDict, attachPref));
 
-            cSize = ZSTD_compress2(cctx, compressedBuffer, compressedBufferSize, CNBuffer, CNBuffSize);
-            CHECK_Z(cSize);
-            CHECK_Z(ZSTD_decompress_usingDict(dctx, decodedBuffer, CNBuffSize, compressedBuffer, cSize, dict, dictSize));
+                    cSize = ZSTD_compress2(cctx, compressedBuffer, compressedBufferSize, CNBuffer, CNBuffSize);
+                    CHECK_Z(cSize);
+                    CHECK_Z(ZSTD_decompress_usingDict(dctx, decodedBuffer, CNBuffSize, compressedBuffer, cSize, dict, dictSize));
 
-            CHECK_Z(ZSTD_CCtx_reset(cctx, ZSTD_reset_session_and_parameters));
-            ZSTD_freeCDict(cdict);
+                    DISPLAYLEVEL(5, "compressed to %lu bytes ", cSize);
+
+                    CHECK_Z(ZSTD_CCtx_reset(cctx, ZSTD_reset_session_and_parameters));
+                    ZSTD_freeCDict(cdict);
+                }
+            }
         }
 
         ZSTD_freeCCtx(cctx);