Revert "[revert] comment out entire pdfmaker test file"

This reverts commit e6256f1f5b.
This commit is contained in:
Jean-Louis Leysens 2022-02-17 15:06:41 +01:00
parent e6256f1f5b
commit dcffac3117
No known key found for this signature in database
GPG key ID: 28B3B4DFF3677CDC

View file

@ -5,90 +5,90 @@
* 2.0.
*/
test('nothing', () => {});
/* eslint-disable max-classes-per-file */
// import path from 'path';
// import { isUint8Array } from 'util/types';
// import { createMockLayout } from '../../../../../../screenshotting/server/layouts/mock';
// import { PdfMaker } from '../';
// import { PdfWorkerOutOfMemoryError } from '../pdfmaker_errors';
import path from 'path';
import { isUint8Array } from 'util/types';
import { createMockLayout } from '../../../../../../screenshotting/server/layouts/mock';
import { PdfMaker } from '../';
import { PdfWorkerOutOfMemoryError } from '../pdfmaker_errors';
// const imageBase64 = Buffer.from(
// `iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAGFBMVEXy8vJpaWn7+/vY2Nj39/cAAACcnJzx8fFvt0oZAAAAi0lEQVR4nO3SSQoDIBBFwR7U3P/GQXKEIIJULXr9H3TMrHhX5Yysvj3jjM8+XRnVa9wec8QuHKv3h74Z+PNyGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/xu3Bxy026rXu4ljdUVW395xUFfGzLo946DK+QW+bgCTFcecSAAAAABJRU5ErkJggg==`,
// 'base64'
// );
const imageBase64 = Buffer.from(
`iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAGFBMVEXy8vJpaWn7+/vY2Nj39/cAAACcnJzx8fFvt0oZAAAAi0lEQVR4nO3SSQoDIBBFwR7U3P/GQXKEIIJULXr9H3TMrHhX5Yysvj3jjM8+XRnVa9wec8QuHKv3h74Z+PNyGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/xu3Bxy026rXu4ljdUVW395xUFfGzLo946DK+QW+bgCTFcecSAAAAABJRU5ErkJggg==`,
'base64'
);
// describe('PdfMaker', () => {
// let layout: ReturnType<typeof createMockLayout>;
// let pdf: PdfMaker;
describe('PdfMaker', () => {
let layout: ReturnType<typeof createMockLayout>;
let pdf: PdfMaker;
// beforeEach(() => {
// layout = createMockLayout();
// pdf = new PdfMaker(layout, undefined);
// });
beforeEach(() => {
layout = createMockLayout();
pdf = new PdfMaker(layout, undefined);
});
// describe('generate', () => {
// it('should generate PDF array buffer', async () => {
// pdf.setTitle('the best PDF in the world');
// pdf.addImage(imageBase64, { title: 'first viz', description: '☃️' });
// pdf.addImage(imageBase64, { title: 'second viz', description: '❄️' });
describe('generate', () => {
it('should generate PDF array buffer', async () => {
pdf.setTitle('the best PDF in the world');
pdf.addImage(imageBase64, { title: 'first viz', description: '☃️' });
pdf.addImage(imageBase64, { title: 'second viz', description: '❄️' });
// expect(isUint8Array(await pdf.generate())).toBe(true);
// });
// });
expect(isUint8Array(await pdf.generate())).toBe(true);
});
});
// describe('worker', () => {
// /**
// * Leave this test skipped! It is a proof-of-concept for demonstrating that
// * we correctly handle a worker OOM error. Due to the variability of when
// * Node will terminate the worker thread for exceeding resource
// * limits we cannot guarantee this test will always execute in a reasonable
// * amount of time.
// */
// it.skip('should report when the PDF worker runs out of memory instead of crashing the main thread', async () => {
// const leakyMaker = new (class MemoryLeakPdfMaker extends PdfMaker {
// // From local testing:
// // OOMs after 456.486 seconds with high young generation size
// // OOMs after 53.538 seconds low young generation size
// protected workerMaxOldHeapSizeMb = 2;
// protected workerMaxYoungHeapSizeMb = 2;
// protected workerModulePath = path.resolve(__dirname, './memory_leak_worker.js');
// })(layout, undefined);
// await expect(leakyMaker.generate()).rejects.toBeInstanceOf(PdfWorkerOutOfMemoryError);
// });
describe('worker', () => {
/**
* Leave this test skipped! It is a proof-of-concept for demonstrating that
* we correctly handle a worker OOM error. Due to the variability of when
* Node will terminate the worker thread for exceeding resource
* limits we cannot guarantee this test will always execute in a reasonable
* amount of time.
*/
it.skip('should report when the PDF worker runs out of memory instead of crashing the main thread', async () => {
const leakyMaker = new (class MemoryLeakPdfMaker extends PdfMaker {
// From local testing:
// OOMs after 456.486 seconds with high young generation size
// OOMs after 53.538 seconds low young generation size
protected workerMaxOldHeapSizeMb = 2;
protected workerMaxYoungHeapSizeMb = 2;
protected workerModulePath = path.resolve(__dirname, './memory_leak_worker.js');
})(layout, undefined);
await expect(leakyMaker.generate()).rejects.toBeInstanceOf(PdfWorkerOutOfMemoryError);
});
// it('restarts the PDF worker if it crashes', async () => {
// const buggyMaker = new (class BuggyPdfMaker extends PdfMaker {
// protected workerModulePath = path.resolve(__dirname, './buggy_worker.js');
// })(layout, undefined);
it('restarts the PDF worker if it crashes', async () => {
const buggyMaker = new (class BuggyPdfMaker extends PdfMaker {
protected workerModulePath = path.resolve(__dirname, './buggy_worker.js');
})(layout, undefined);
// await expect(buggyMaker.generate()).rejects.toEqual(new Error('This is a bug'));
// await expect(buggyMaker.generate()).rejects.toEqual(new Error('This is a bug'));
// await expect(buggyMaker.generate()).rejects.toEqual(new Error('This is a bug'));
// });
// });
await expect(buggyMaker.generate()).rejects.toEqual(new Error('This is a bug'));
await expect(buggyMaker.generate()).rejects.toEqual(new Error('This is a bug'));
await expect(buggyMaker.generate()).rejects.toEqual(new Error('This is a bug'));
});
});
// describe('getPageCount', () => {
// it('should return zero pages on no content', () => {
// expect(pdf.getPageCount()).toBe(0);
// });
describe('getPageCount', () => {
it('should return zero pages on no content', () => {
expect(pdf.getPageCount()).toBe(0);
});
// it('should return a number of generated pages', async () => {
// for (let i = 0; i < 100; i++) {
// pdf.addImage(imageBase64, { title: `${i} viz`, description: '☃️' });
// }
// await pdf.generate();
it('should return a number of generated pages', async () => {
for (let i = 0; i < 100; i++) {
pdf.addImage(imageBase64, { title: `${i} viz`, description: '☃️' });
}
await pdf.generate();
// expect(pdf.getPageCount()).toBe(100);
// });
expect(pdf.getPageCount()).toBe(100);
});
// it('should return a number of already flushed pages', async () => {
// for (let i = 0; i < 100; i++) {
// pdf.addImage(imageBase64, { title: `${i} viz`, description: '☃️' });
// }
// await pdf.generate();
it('should return a number of already flushed pages', async () => {
for (let i = 0; i < 100; i++) {
pdf.addImage(imageBase64, { title: `${i} viz`, description: '☃️' });
}
await pdf.generate();
// expect(pdf.getPageCount()).toBe(100);
// });
// });
// });
expect(pdf.getPageCount()).toBe(100);
});
});
});