Skip to content

Commit

Permalink
[APM] Migrate service overview api test to apmApiClient (#125404)
Browse files Browse the repository at this point in the history
* [APM] Migrate service overview api test to apmApiClient

* Pass path values via path property
  • Loading branch information
kpatticha authored Feb 14, 2022
1 parent ae31eb8 commit 4c31b15
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand All @@ -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({});
Expand All @@ -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', () => {
Expand All @@ -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({});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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];

Expand All @@ -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: {} });
Expand All @@ -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,
Expand All @@ -86,8 +93,8 @@ export default function ApiTest({ getService }: FtrProviderContext) {
environment: 'ENVIRONMENT_ALL',
kuery: '',
},
})
);
},
});
});

it('returns a service node item', () => {
Expand Down Expand Up @@ -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),
Expand All @@ -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', () => {
Expand Down

0 comments on commit 4c31b15

Please sign in to comment.