Funkce HPDFMinimizeCorpusCase
function HPDFMinimizeCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
out AInfo: THPDFCorpusMinimizationInfo): TBytes;
Reduktor nejprve odstraní kompletní spany nepřímých objektů a poté aplikuje postupně menší redukce bajtových rozsahů
Kandidát se přijme jen tehdy, když predikát stále hlásí původní signaturu selhání
AInfo hlásí pokusy, přijaté redukce, odstraněné spany objektů, odstraněné bajtové rozsahy, původní a finální velikost a zachovanou signaturu
Průběžné úložiště korpusu
function HPDFDefaultCorpusStoreOptions: THPDFCorpusStoreOptions;
function HPDFMinimizeAndStoreCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate;
const CorpusDirectory: string;
const Options: THPDFCorpusStoreOptions;
out AInfo: THPDFCorpusCaseInfo): Boolean;
function HPDFCorpusCaseInfoToJSON(
const AInfo: THPDFCorpusCaseInfo): AnsiString;
type
THPDFCorpusStoreAction = (csaAdded, csaReplaced, csaKeptExisting);
THPDFCorpusStoreOptions = record
MaximumAttempts: Integer;
MaximumInputBytes: Int64;
MaximumStoredBytes: Int64;
LockRetryCount: Integer;
end;
Úložiště odvodí stabilní ID případu z SHA-256 digestu signatury selhání, revaliduje jakýkoli existující případ, minimalizuje jak stávajícího, tak příchozího kandidáta a ponechá menší výsledek
Meziprocesový zámek serializuje rozhodnutí pro jeden adresář korpusu, zatímco write-through dočasné soubory a atomická výměna brání čtenářům vidět částečné PDF nebo metadata soubory
THPDFCorpusStoreOptions ohraničuje pokusy minimalizace, příchozí bajty, uložené bajty a opakování zámků a THPDFCorpusCaseInfo.Action hlásí, zda byl případ přidán, nahrazen, nebo ponechán
HPDFMinimizeCorpusCase minimalizuje vstupní případ korpusu při zachování zadané reprodukovatelné podmínky selhání
Funkce opakovaně testuje zmenšené varianty v mezích počtu pokusů, času a velikosti a vrací nejlepší nalezený případ spolu s diagnostikouHPDFCompareRegressionResultsDeterministic