Funktionen zur Corpus-Minimierung

function HPDFMinimizeCorpusCase(const Input: TBytes;
  const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
  out AInfo: THPDFCorpusMinimizationInfo): TBytes;

Der Reduzierer entfernt zunächst vollständige Bereiche indirekter Objekte und wendet dann schrittweise kleinere Reduktionen von Bytebereichen an

Ein Kandidat wird nur akzeptiert, wenn das Prädikat weiterhin die ursprüngliche Fehlersignatur meldet

AInfo meldet Versuche, akzeptierte Reduktionen, entfernte Objektbereiche und Bytebereiche, ursprüngliche und endgültige Größe sowie die bewahrte Signatur

Fortlaufende Korpus-Speicherung

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;
function HPDFDefaultCorpusStoreOptions: THPDFCorpusStoreOptions;

function HPDFMinimizeAndStoreCorpusCase(const Input: TBytes;
  const Predicate: THPDFFailurePredicate;
  const CorpusDirectory: string;
  const Options: THPDFCorpusStoreOptions;
  out AInfo: THPDFCorpusMinimizationInfo): string;

Die Speicherung verwendet atomare Veröffentlichung und stabile Signaturen, damit identische Fehlerfälle in der Regression und bei der Triage wiederverwendet werden können

Ein prozessübergreifendes Lock serialisiert die Entscheidungen für ein Korpusverzeichnis, während Write-Through-Temporärdateien und atomarer Austausch verhindern, dass Leser partielle PDF- oder Metadatendateien zu sehen bekommen

THPDFCorpusStoreOptions begrenzt Minimierungsversuche, eingehende Bytes, gespeicherte Bytes und Lock-Wiederholungen, und THPDFCorpusCaseInfo.Action meldet, ob der Fall hinzugefügt, ersetzt oder behalten wurde

Das Sidecar-Schema hotpdf.corpus.case.v1 hält Fall-ID, exakte Fehlersignatur, Inhalts-SHA-256 und gespeicherte Byteanzahl in stabiler Feldreihenfolge fest

HPDFCompareRegressionResultsDeterministic vergleicht wiederholte engineübergreifende Signaturen über die Domänen Parse, Render, Text und Save und weist instabile oder fehlgeschlagene Läufe zurück