[APM] Migrate service overview api test to apmApiClient (#125404) (#125521)

* [APM] Migrate service overview api test to apmApiClient

* Pass path values via path property

(cherry picked from commit 4c31b157be)

Co-authored-by: Katerina Patticha <aikaterini.patticha@elastic.co>
This commit is contained in:
Kibana Machine 2022-02-14 11:16:36 -05:00 committed by GitHub
parent ef861a270a
commit ca3550998f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 70 additions and 50 deletions

View file

@ -6,22 +6,22 @@
*/
import { take } from 'lodash';
import { LatencyAggregationType } from '../../../../plugins/apm/common/latency_aggregation_types';
import { ApmApiSupertest } from '../../common/apm_api_supertest';
import { ApmServices } from '../../common/config';
export async function getServiceNodeIds({
apmApiSupertest,
apmApiClient,
start,
end,
serviceName = 'opbeans-java',
count = 1,
}: {
apmApiSupertest: ApmApiSupertest;
apmApiClient: Awaited<ReturnType<ApmServices['apmApiClient']>>;
start: string;
end: string;
serviceName?: string;
count?: number;
}) {
const { body } = await apmApiSupertest({
const { body } = await apmApiClient.readUser({
endpoint: `GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics`,
params: {
path: { serviceName },

View file

@ -4,22 +4,19 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import url from 'url';
import expect from '@kbn/expect';
import { omit } from 'lodash';
import { FtrProviderContext } from '../../common/ftr_provider_context';
import archives from '../../common/fixtures/es_archiver/archives_metadata';
import { APIReturnType } from '../../../../plugins/apm/public/services/rest/create_call_apm_api';
import { getServiceNodeIds } from './get_service_node_ids';
import { createApmApiClient } from '../../common/apm_api_supertest';
type ServiceOverviewInstanceDetails =
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}'>;
export default function ApiTest({ getService }: FtrProviderContext) {
const registry = getService('registry');
const supertest = getService('legacySupertestAsApmReadUser');
const apmApiSupertest = createApmApiClient(supertest);
const apmApiClient = getService('apmApiClient');
const archiveName = 'apm_8.0.0';
const { start, end } = archives[archiveName];
@ -30,16 +27,17 @@ export default function ApiTest({ getService }: FtrProviderContext) {
() => {
describe('when data is not loaded', () => {
it('handles empty state', async () => {
const response = await supertest.get(
url.format({
pathname:
'/internal/apm/services/opbeans-java/service_overview_instances/details/foo',
const response = await apmApiClient.readUser({
endpoint:
'GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}',
params: {
path: { serviceName: 'opbeans-java', serviceNodeName: 'foo' },
query: {
start,
end,
},
})
);
},
});
expect(response.status).to.be(200);
expect(response.body).to.eql({});
@ -62,16 +60,23 @@ export default function ApiTest({ getService }: FtrProviderContext) {
let serviceNodeIds: string[];
before(async () => {
serviceNodeIds = await getServiceNodeIds({ apmApiSupertest, start, end });
response = await supertest.get(
url.format({
pathname: `/internal/apm/services/opbeans-java/service_overview_instances/details/${serviceNodeIds[0]}`,
serviceNodeIds = await getServiceNodeIds({
apmApiClient,
start,
end,
});
response = await apmApiClient.readUser({
endpoint:
'GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}',
params: {
path: { serviceName: 'opbeans-node', serviceNodeName: serviceNodeIds[0] },
query: {
start,
end,
},
})
);
},
});
});
it('returns the instance details', () => {
@ -90,15 +95,17 @@ export default function ApiTest({ getService }: FtrProviderContext) {
{ config: 'basic', archives: [archiveName] },
() => {
it('handles empty state when instance id not found', async () => {
const response = await supertest.get(
url.format({
pathname: '/internal/apm/services/opbeans-java/service_overview_instances/details/foo',
const response = await apmApiClient.readUser({
endpoint:
'GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}',
params: {
path: { serviceName: 'opbeans-java', serviceNodeName: 'foo' },
query: {
start,
end,
},
})
);
},
});
expect(response.status).to.be(200);
expect(response.body).to.eql({});
});

View file

@ -6,21 +6,20 @@
*/
import expect from '@kbn/expect';
import url from 'url';
import moment from 'moment';
import { Coordinate } from '../../../../plugins/apm/typings/timeseries';
import { LatencyAggregationType } from '../../../../plugins/apm/common/latency_aggregation_types';
import { isFiniteNumber } from '../../../../plugins/apm/common/utils/is_finite_number';
import { APIReturnType } from '../../../../plugins/apm/public/services/rest/create_call_apm_api';
import { FtrProviderContext } from '../../common/ftr_provider_context';
import archives from '../../common/fixtures/es_archiver/archives_metadata';
import { createApmApiClient } from '../../common/apm_api_supertest';
import { getServiceNodeIds } from './get_service_node_ids';
export default function ApiTest({ getService }: FtrProviderContext) {
const registry = getService('registry');
const supertest = getService('legacySupertestAsApmReadUser');
const apmApiSupertest = createApmApiClient(supertest);
const apmApiClient = getService('apmApiClient');
const serviceName = 'opbeans-java';
const archiveName = 'apm_8.0.0';
const { start, end } = archives[archiveName];
@ -35,23 +34,25 @@ export default function ApiTest({ getService }: FtrProviderContext) {
() => {
describe('when data is not loaded', () => {
it('handles the empty state', async () => {
const response: Response = await supertest.get(
url.format({
pathname: `/internal/apm/services/opbeans-java/service_overview_instances/detailed_statistics`,
const response = await apmApiClient.readUser({
endpoint:
'GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics',
params: {
path: { serviceName },
query: {
latencyAggregationType: 'avg',
latencyAggregationType: LatencyAggregationType.avg,
start,
end,
numBuckets: 20,
transactionType: 'request',
serviceNodeIds: JSON.stringify(
await getServiceNodeIds({ apmApiSupertest, start, end })
await getServiceNodeIds({ apmApiClient, start, end })
),
environment: 'ENVIRONMENT_ALL',
kuery: '',
},
})
);
},
});
expect(response.status).to.be(200);
expect(response.body).to.be.eql({ currentPeriod: {}, previousPeriod: {} });
@ -69,15 +70,21 @@ export default function ApiTest({ getService }: FtrProviderContext) {
let serviceNodeIds: string[];
beforeEach(async () => {
serviceNodeIds = await getServiceNodeIds({ apmApiSupertest, start, end });
serviceNodeIds = await getServiceNodeIds({
apmApiClient,
start,
end,
});
});
beforeEach(async () => {
response = await supertest.get(
url.format({
pathname: `/internal/apm/services/opbeans-java/service_overview_instances/detailed_statistics`,
response = await apmApiClient.readUser({
endpoint:
'GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics',
params: {
path: { serviceName },
query: {
latencyAggregationType: 'avg',
latencyAggregationType: LatencyAggregationType.avg,
start,
end,
numBuckets: 20,
@ -86,8 +93,8 @@ export default function ApiTest({ getService }: FtrProviderContext) {
environment: 'ENVIRONMENT_ALL',
kuery: '',
},
})
);
},
});
});
it('returns a service node item', () => {
@ -123,15 +130,21 @@ export default function ApiTest({ getService }: FtrProviderContext) {
let serviceNodeIds: string[];
beforeEach(async () => {
serviceNodeIds = await getServiceNodeIds({ apmApiSupertest, start, end });
serviceNodeIds = await getServiceNodeIds({
apmApiClient,
start,
end,
});
});
beforeEach(async () => {
response = await supertest.get(
url.format({
pathname: `/internal/apm/services/opbeans-java/service_overview_instances/detailed_statistics`,
response = await apmApiClient.readUser({
endpoint:
'GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics',
params: {
path: { serviceName },
query: {
latencyAggregationType: 'avg',
latencyAggregationType: LatencyAggregationType.avg,
numBuckets: 20,
transactionType: 'request',
serviceNodeIds: JSON.stringify(serviceNodeIds),
@ -142,8 +155,8 @@ export default function ApiTest({ getService }: FtrProviderContext) {
environment: 'ENVIRONMENT_ALL',
kuery: '',
},
})
);
},
});
});
it('returns a service node item for current and previous periods', () => {