Skip to content

Commit

Permalink
Merge branch 'main' into 163239-doc-viewer-actions
Browse files Browse the repository at this point in the history
  • Loading branch information
jughosta committed Jan 10, 2024
2 parents 20264a6 + 797b29a commit 4c15b53
Show file tree
Hide file tree
Showing 266 changed files with 2,462 additions and 3,171 deletions.
1 change: 1 addition & 0 deletions .buildkite/ftr_configs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ enabled:
- x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group5.ts
- x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group6.ts
- x-pack/test_serverless/functional/test_suites/observability/config.screenshots.ts
- x-pack/test_serverless/functional/test_suites/security/config.screenshots.ts
- x-pack/test_serverless/functional/test_suites/search/config.ts
- x-pack/test_serverless/functional/test_suites/search/config.examples.ts
- x-pack/test_serverless/functional/test_suites/search/config.screenshots.ts
Expand Down
10 changes: 6 additions & 4 deletions .buildkite/pipelines/flaky_tests/pipeline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,11 +143,9 @@ for (const testSuite of testSuites) {
},
depends_on: 'build',
timeout_in_minutes: 150,
cancel_on_build_failing: true,
retry: {
automatic: [
{ exit_status: '-1', limit: 3 },
// { exit_status: '*', limit: 1 },
],
automatic: [{ exit_status: '-1', limit: 3 }],
},
});
continue;
Expand All @@ -173,6 +171,10 @@ for (const testSuite of testSuites) {
concurrency,
concurrency_group: process.env.UUID,
concurrency_method: 'eager',
cancel_on_build_failing: true,
retry: {
automatic: [{ exit_status: '-1', limit: 3 }],
},
env: {
// disable split of test cases between parallel jobs when running them in flaky test runner
// by setting chunks vars to value 1, which means all test will run in one job
Expand Down
270 changes: 270 additions & 0 deletions docs/CHANGELOG.asciidoc

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion examples/portable_dashboards_example/kibana.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
"dashboard",
"embeddable",
"navigation",
"savedObjects",
"unifiedSearch",
"developerExamples",
"embeddableExamples"
Expand Down
58 changes: 0 additions & 58 deletions packages/kbn-reporting/export_types/pdf/generate_pdf.ts

This file was deleted.

75 changes: 0 additions & 75 deletions packages/kbn-reporting/export_types/pdf/generate_pdf_v2.ts

This file was deleted.

42 changes: 23 additions & 19 deletions packages/kbn-reporting/export_types/pdf/printable_pdf.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,16 @@
* Side Public License, v 1.
*/

import { of } from 'rxjs';
import * as Rx from 'rxjs';
import { Writable } from 'stream';

import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks';
import { CancellationToken } from '@kbn/reporting-common';
import { TaskPayloadPDF } from '@kbn/reporting-export-types-pdf-common';
import { createMockConfigSchema } from '@kbn/reporting-mocks-server';
import { cryptoFactory } from '@kbn/reporting-server';
import { ScreenshottingStart } from '@kbn/screenshotting-plugin/server';

import { createMockScreenshottingStart } from '@kbn/screenshotting-plugin/server/mock';
import { PdfV1ExportType } from '.';
import { generatePdfObservable } from './generate_pdf';

jest.mock('./generate_pdf');

let content: string;
let mockPdfExportType: PdfV1ExportType;
Expand All @@ -34,6 +30,9 @@ const encryptHeaders = async (headers: Record<string, string>) => {
return await crypto.encrypt(headers);
};

const screenshottingMock = createMockScreenshottingStart();
const getScreenshotsSpy = jest.spyOn(screenshottingMock, 'getScreenshots');
const testContent = 'raw string from get_screenhots';
const getBasePayload = (baseObj: any) => baseObj as TaskPayloadPDF;

beforeEach(async () => {
Expand All @@ -54,15 +53,20 @@ beforeEach(async () => {
esClient: elasticsearchServiceMock.createClusterClient(),
savedObjects: mockCoreStart.savedObjects,
uiSettings: mockCoreStart.uiSettings,
screenshotting: {} as unknown as ScreenshottingStart,
screenshotting: screenshottingMock,
});
getScreenshotsSpy.mockImplementation(() => {
return Rx.of({
metrics: { cpu: 0, pages: 1 },
data: Buffer.from(testContent),
errors: [],
renderErrors: [],
});
});
});

afterEach(() => (generatePdfObservable as jest.Mock).mockReset());

test(`passes browserTimezone to generatePdf`, async () => {
const encryptedHeaders = await encryptHeaders({});
(generatePdfObservable as jest.Mock).mockReturnValue(of({ buffer: Buffer.from('') }));

const browserTimezone = 'UTC';
await mockPdfExportType.runTask(
Expand All @@ -76,17 +80,20 @@ test(`passes browserTimezone to generatePdf`, async () => {
stream
);

expect(generatePdfObservable).toHaveBeenCalledWith(
expect.anything(),
expect.objectContaining({ browserTimezone: 'UTC' })
);
expect(getScreenshotsSpy).toHaveBeenCalledWith({
browserTimezone: 'UTC',
format: 'pdf',
headers: {},
layout: undefined,
logo: false,
title: undefined,
urls: ['http://localhost:80/mock-server-basepath/app/kibana#/something'],
});
});

test(`returns content_type of application/pdf`, async () => {
const encryptedHeaders = await encryptHeaders({});

(generatePdfObservable as jest.Mock).mockReturnValue(of({ buffer: Buffer.from('') }));

const { content_type: contentType } = await mockPdfExportType.runTask(
'pdfJobId',
getBasePayload({ objects: [], headers: encryptedHeaders }),
Expand All @@ -97,9 +104,6 @@ test(`returns content_type of application/pdf`, async () => {
});

test(`returns content of generatePdf getBuffer base64 encoded`, async () => {
const testContent = 'test content';
(generatePdfObservable as jest.Mock).mockReturnValue(of({ buffer: Buffer.from(testContent) }));

const encryptedHeaders = await encryptHeaders({});
await mockPdfExportType.runTask(
'pdfJobId',
Expand Down
60 changes: 40 additions & 20 deletions packages/kbn-reporting/export_types/pdf/printable_pdf.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ import {
} from '@kbn/reporting-export-types-pdf-common';
import { ExportType, decryptJobHeaders } from '@kbn/reporting-server';

import { generatePdfObservable } from './generate_pdf';
import { validateUrls } from './validate_urls';
import { getCustomLogo } from './get_custom_logo';
import { getFullUrls } from './get_full_urls';
import { getTracker } from './pdf_tracker';
import { validateUrls } from './validate_urls';

/**
* @deprecated
Expand Down Expand Up @@ -76,15 +76,15 @@ export class PdfV1ExportType extends ExportType<JobParamsPDFDeprecated, TaskPayl
cancellationToken: CancellationToken,
stream: Writable
) => {
const jobLogger = this.logger.get(`execute-job:${jobId}`);
const logger = this.logger.get(`execute-job:${jobId}`);
const apmTrans = apm.startTransaction('execute-job-pdf', REPORTING_TRANSACTION_TYPE);
const apmGetAssets = apmTrans.startSpan('get-assets', 'setup');
let apmGeneratePdf: { end: () => void } | null | undefined;

const process$: Observable<TaskRunResult> = of(1).pipe(
mergeMap(() => decryptJobHeaders(this.config.encryptionKey, job.headers, jobLogger)),
mergeMap(() => decryptJobHeaders(this.config.encryptionKey, job.headers, logger)),
mergeMap(async (headers) => {
const fakeRequest = this.getFakeRequest(headers, job.spaceId, jobLogger);
const fakeRequest = this.getFakeRequest(headers, job.spaceId, logger);
const uiSettingsClient = await this.getUiSettingsClient(fakeRequest);
return getCustomLogo(uiSettingsClient, headers);
}),
Expand All @@ -96,27 +96,47 @@ export class PdfV1ExportType extends ExportType<JobParamsPDFDeprecated, TaskPayl

apmGeneratePdf = apmTrans.startSpan('generate-pdf-pipeline', 'execute');

return generatePdfObservable(
() =>
this.startDeps.screenshotting!.getScreenshots({
format: 'pdf',
title,
logo,
urls,
browserTimezone,
headers,
layout,
}),
{
const tracker = getTracker();
tracker.startScreenshots();

return this.startDeps
.screenshotting!.getScreenshots({
format: 'pdf',
title,
logo,
urls,
browserTimezone,
headers,
layout,
}
);
})
.pipe(
tap(({ metrics }) => {
if (metrics.cpu) {
tracker.setCpuUsage(metrics.cpu);
}
if (metrics.memory) {
tracker.setMemoryUsage(metrics.memory);
}
}),
mergeMap(async ({ data: buffer, errors, metrics, renderErrors }) => {
tracker.endScreenshots();
const warnings: string[] = [];
if (errors) {
warnings.push(...errors.map((error) => error.message));
}
if (renderErrors) {
warnings.push(...renderErrors);
}

tracker.end();

return {
buffer,
metrics,
warnings,
};
})
);
}),
tap(({ buffer }) => {
apmGeneratePdf?.end();
Expand All @@ -130,7 +150,7 @@ export class PdfV1ExportType extends ExportType<JobParamsPDFDeprecated, TaskPayl
warnings,
})),
catchError((err: any) => {
jobLogger.error(err);
logger.error(err);
return throwError(err);
})
);
Expand Down
Loading

0 comments on commit 4c15b53

Please sign in to comment.