[Alerting] Track fields usage in find api (#112096)

* Track fields usage

* Add test

* Add missing change
This commit is contained in:
Chris Roberson 2021-09-20 16:28:35 -04:00 committed by GitHub
parent 6c73b2ad2f
commit 49977b2e4b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 79 additions and 2 deletions

View file

@ -4,7 +4,7 @@
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { usageCountersServiceMock } from 'src/plugins/usage_collection/server/usage_counters/usage_counters_service.mock';
import { findRulesRoute } from './find_rules';
import { httpServiceMock } from 'src/core/server/mocks';
import { licenseStateMock } from '../lib/license_state.mock';
@ -12,7 +12,6 @@ import { verifyApiAccess } from '../lib/license_api_access';
import { mockHandlerArguments } from './_mock_handler_arguments';
import { rulesClientMock } from '../rules_client.mock';
import { trackLegacyTerminology } from './lib/track_legacy_terminology';
import { usageCountersServiceMock } from 'src/plugins/usage_collection/server/usage_counters/usage_counters_service.mock';
const rulesClient = rulesClientMock.create();
const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract();
@ -187,4 +186,40 @@ describe('findRulesRoute', () => {
'alertTypeId',
]);
});
it('should track calls to deprecated functionality', async () => {
const licenseState = licenseStateMock.create();
const router = httpServiceMock.createRouter();
findRulesRoute(router, licenseState, mockUsageCounter);
const findResult = {
page: 1,
perPage: 1,
total: 0,
data: [],
};
rulesClient.find.mockResolvedValueOnce(findResult);
const [, handler] = router.get.mock.calls[0];
const [context, req, res] = mockHandlerArguments(
{ rulesClient },
{
params: {},
query: {
fields: ['foo', 'bar'],
per_page: 1,
page: 1,
default_search_operator: 'OR',
},
},
['ok']
);
await handler(context, req, res);
expect(mockUsageCounter.incrementCounter).toHaveBeenCalledWith({
counterName: `alertingFieldsUsage`,
counterType: 'alertingFieldsUsage',
incrementBy: 1,
});
});
});

View file

@ -136,6 +136,14 @@ export const findRulesRoute = (
search_fields: searchFieldsAsArray(req.query.search_fields),
});
if (req.query.fields) {
usageCounter?.incrementCounter({
counterName: `alertingFieldsUsage`,
counterType: 'alertingFieldsUsage',
incrementBy: 1,
});
}
const findResult = await rulesClient.find({ options });
return res.ok({
body: rewriteBodyRes(findResult),

View file

@ -194,4 +194,30 @@ describe('findAlertRoute', () => {
'alertTypeId',
]);
});
it('should track calls to deprecated functionality', async () => {
const licenseState = licenseStateMock.create();
const router = httpServiceMock.createRouter();
const mockUsageCountersSetup = usageCountersServiceMock.createSetupContract();
const mockUsageCounter = mockUsageCountersSetup.createUsageCounter('test');
findAlertRoute(router, licenseState, mockUsageCounter);
const [, handler] = router.get.mock.calls[0];
const [context, req, res] = mockHandlerArguments(
{ rulesClient },
{
params: {},
query: {
fields: ['foo', 'bar'],
},
},
['ok']
);
await handler(context, req, res);
expect(mockUsageCounter.incrementCounter).toHaveBeenCalledWith({
counterName: `legacyAlertingFieldsUsage`,
counterType: 'alertingFieldsUsage',
incrementBy: 1,
});
});
});

View file

@ -89,6 +89,14 @@ export const findAlertRoute = (
: [query.search_fields];
}
if (query.fields) {
usageCounter?.incrementCounter({
counterName: `legacyAlertingFieldsUsage`,
counterType: 'alertingFieldsUsage',
incrementBy: 1,
});
}
const findResult = await rulesClient.find({ options });
return res.ok({
body: findResult,