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