test(cert-manager): Laufzeitgrenzen der Scanner-Tests CI-tauglich
Der CI-Runner brauchte 141 ms fuer den 5-MiB-Fall, die Grenze lag bei 100 ms. Jetzt 1 s (der alte quadratische Scanner braeuchte Minuten), der Mischfall 2 s. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -211,7 +211,7 @@ describe('detectBlob: ZIP', () => {
|
||||
});
|
||||
|
||||
describe('detectBlob: viele BEGIN-Zeilen (Review CR-02)', () => {
|
||||
it('5 MiB BEGIN-Zeilen ohne END werden in weit unter 100 ms verarbeitet', () => {
|
||||
it('5 MiB BEGIN-Zeilen ohne END werden in unter einer Sekunde (alt: Minuten) verarbeitet', () => {
|
||||
const line = '-----BEGIN CERTIFICATE-----\n';
|
||||
const blob = Buffer.from(line.repeat(Math.ceil((5 * 1024 * 1024) / line.length)));
|
||||
let best = Number.POSITIVE_INFINITY;
|
||||
@@ -221,7 +221,7 @@ describe('detectBlob: viele BEGIN-Zeilen (Review CR-02)', () => {
|
||||
best = Math.min(best, performance.now() - started);
|
||||
expect(r.items).toEqual([]);
|
||||
}
|
||||
expect(best).toBeLessThan(100);
|
||||
expect(best).toBeLessThan(1000);
|
||||
});
|
||||
|
||||
it('ein echtes Zertifikat hinter vielen unvollstaendigen BEGIN-Zeilen wird gefunden', () => {
|
||||
@@ -229,7 +229,7 @@ describe('detectBlob: viele BEGIN-Zeilen (Review CR-02)', () => {
|
||||
const blob = Buffer.concat([Buffer.from(junk), fx('rsa-leaf.pem')]);
|
||||
const started = performance.now();
|
||||
const r = detectBlob(blob, ctx('mix.pem'));
|
||||
expect(performance.now() - started).toBeLessThan(500);
|
||||
expect(performance.now() - started).toBeLessThan(2000);
|
||||
expect(r.items.filter((i) => i.kind === 'certificate')).toHaveLength(1);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -49,7 +49,11 @@ describe('scanPemBlocks', () => {
|
||||
describe('scanPemBlocks: Laufzeit (Review CR-02)', () => {
|
||||
const MIB5 = 5 * 1024 * 1024;
|
||||
|
||||
/** Beste von drei Messungen: unabhaengig von Lastspitzen paralleler Testlaeufe (alt: Minuten). */
|
||||
/**
|
||||
* Beste von drei Messungen: unabhaengig von Lastspitzen paralleler Testlaeufe (alt: Minuten).
|
||||
* Grenze 1 s statt 100 ms: der CI-Runner brauchte am 09.10.2026 141 ms (Lauf zu cc713b5);
|
||||
* der quadratische alte Scanner laege um Groessenordnungen darueber.
|
||||
*/
|
||||
function timed(text: string): number {
|
||||
let best = Number.POSITIVE_INFINITY;
|
||||
for (let i = 0; i < 3; i++) {
|
||||
@@ -60,13 +64,13 @@ describe('scanPemBlocks: Laufzeit (Review CR-02)', () => {
|
||||
return best;
|
||||
}
|
||||
|
||||
it('5 MiB gleiche BEGIN-Zeilen ohne END: weit unter 100 ms', () => {
|
||||
it('5 MiB gleiche BEGIN-Zeilen ohne END: unter einer Sekunde (alt: Minuten)', () => {
|
||||
const line = '-----BEGIN A-----\n';
|
||||
const text = line.repeat(Math.ceil(MIB5 / line.length));
|
||||
expect(timed(text)).toBeLessThan(100);
|
||||
expect(timed(text)).toBeLessThan(1000);
|
||||
});
|
||||
|
||||
it('5 MiB BEGIN-Zeilen mit lauter verschiedenen Etiketten: weit unter 100 ms', () => {
|
||||
it('5 MiB BEGIN-Zeilen mit lauter verschiedenen Etiketten: unter einer Sekunde (alt: Minuten)', () => {
|
||||
const parts: string[] = [];
|
||||
let size = 0;
|
||||
for (let i = 0; size < MIB5; i++) {
|
||||
@@ -74,7 +78,7 @@ describe('scanPemBlocks: Laufzeit (Review CR-02)', () => {
|
||||
parts.push(line);
|
||||
size += line.length;
|
||||
}
|
||||
expect(timed(parts.join(''))).toBeLessThan(100);
|
||||
expect(timed(parts.join(''))).toBeLessThan(1000);
|
||||
});
|
||||
|
||||
it('5 MiB BEGIN-Zeilen und END-Zeilen mit anderem Etikett: unter einer Sekunde (alt: Minuten)', () => {
|
||||
@@ -82,8 +86,8 @@ describe('scanPemBlocks: Laufzeit (Review CR-02)', () => {
|
||||
expect(timed(pair.repeat(Math.ceil(MIB5 / pair.length)))).toBeLessThan(1000);
|
||||
});
|
||||
|
||||
it('5 MiB "-----BEGIN " ohne Etikett und "-----END " Wiederholungen: weit unter 100 ms', () => {
|
||||
expect(timed('-----BEGIN '.repeat(Math.ceil(MIB5 / 11)))).toBeLessThan(100);
|
||||
expect(timed(`${'-----END '.repeat(Math.ceil(MIB5 / 9))}-----BEGIN A-----`)).toBeLessThan(100);
|
||||
it('5 MiB "-----BEGIN " ohne Etikett und "-----END " Wiederholungen: unter einer Sekunde (alt: Minuten)', () => {
|
||||
expect(timed('-----BEGIN '.repeat(Math.ceil(MIB5 / 11)))).toBeLessThan(1000);
|
||||
expect(timed(`${'-----END '.repeat(Math.ceil(MIB5 / 9))}-----BEGIN A-----`)).toBeLessThan(1000);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user