kibana/x-pack/test_serverless/api_integration/services/synthtrace.ts
Carlos Crespo 4db61fa913
[APM] Add tests for service_map and critical_path endpoints to serverless integration tests suite (#186466)
closes [186450](https://github.com/elastic/kibana/issues/186450)

## Summary

Add tests for aggregate critical path and service map endpoints to
serverless test suite

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
2024-06-20 16:00:53 -07:00

61 lines
1.8 KiB
TypeScript

/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { Client } from '@elastic/elasticsearch';
import {
ApmSynthtraceEsClient,
ApmSynthtraceKibanaClient,
createLogger,
LogLevel,
} from '@kbn/apm-synthtrace';
import url, { format, UrlObject } from 'url';
import { FtrProviderContext } from '../ftr_provider_context';
async function getSynthtraceEsClient(client: Client, kibanaClient: ApmSynthtraceKibanaClient) {
const kibanaVersion = await kibanaClient.fetchLatestApmPackageVersion();
await kibanaClient.installApmPackage(kibanaVersion);
const esClient = new ApmSynthtraceEsClient({
client,
logger: createLogger(LogLevel.info),
version: kibanaVersion,
refreshAfterIndex: true,
});
return esClient;
}
function getSynthtraceKibanaClient(kibanaServerUrl: string) {
const kibanaServerUrlWithAuth = url
.format({
...url.parse(kibanaServerUrl),
})
.slice(0, -1);
const kibanaClient = new ApmSynthtraceKibanaClient({
target: kibanaServerUrlWithAuth,
logger: createLogger(LogLevel.debug),
});
return kibanaClient;
}
export function SynthtraceProvider({ getService }: FtrProviderContext) {
const es = getService('es');
const config = getService('config');
const servers = config.get('servers');
const kibanaServer = servers.kibana as UrlObject;
const kibanaServerUrl = format(kibanaServer);
const synthtraceKibanaClient = getSynthtraceKibanaClient(kibanaServerUrl);
return {
createSynthtraceKibanaClient: getSynthtraceKibanaClient,
async createSynthtraceEsClient() {
return getSynthtraceEsClient(es, synthtraceKibanaClient);
},
};
}