Skip to content

Commit bf64c22

Browse files
authored
[APM] Simplify cleanup of alerts in API tests (elastic#170111)
1 parent 508f309 commit bf64c22

7 files changed

+56
-134
lines changed

x-pack/test/apm_api_integration/configs/index.ts

+10-13
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,33 @@ const apmDebugLogger = {
1414
appenders: ['console'],
1515
};
1616

17+
const kibanaConfig = {
18+
'xpack.apm.forceSyntheticSource': 'true',
19+
'logging.loggers': [apmDebugLogger],
20+
'server.publicBaseUrl': 'http://mockedPublicBaseUrl',
21+
};
22+
1723
const apmFtrConfigs = {
1824
basic: {
1925
license: 'basic' as const,
20-
kibanaConfig: {
21-
'xpack.apm.forceSyntheticSource': 'true',
22-
'logging.loggers': [apmDebugLogger],
23-
'server.publicBaseUrl': 'http://mockedPublicBaseUrl',
24-
},
26+
kibanaConfig,
2527
},
2628
trial: {
2729
license: 'trial' as const,
28-
kibanaConfig: {
29-
'xpack.apm.forceSyntheticSource': 'true',
30-
'logging.loggers': [apmDebugLogger],
31-
},
30+
kibanaConfig,
3231
},
3332
rules: {
3433
license: 'trial' as const,
3534
kibanaConfig: {
35+
...kibanaConfig,
3636
'xpack.ruleRegistry.write.enabled': 'true',
37-
'xpack.apm.forceSyntheticSource': 'true',
38-
'logging.loggers': [apmDebugLogger],
3937
},
4038
},
4139
cloud: {
4240
license: 'basic' as const,
4341
kibanaConfig: {
42+
...kibanaConfig,
4443
'xpack.apm.agent.migrations.enabled': 'true',
45-
'xpack.apm.forceSyntheticSource': 'true',
46-
'logging.loggers': [apmDebugLogger],
4744
},
4845
},
4946
};

x-pack/test/apm_api_integration/tests/alerts/anomaly_alert.spec.ts

+5-9
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ import { range } from 'lodash';
1313
import { ML_ANOMALY_SEVERITY } from '@kbn/ml-anomaly-utils/anomaly_severity';
1414
import { FtrProviderContext } from '../../common/ftr_provider_context';
1515
import { createAndRunApmMlJobs } from '../../common/utils/create_and_run_apm_ml_jobs';
16-
import { createApmRule, deleteApmRules } from './helpers/alerting_api_helper';
16+
import { createApmRule } from './helpers/alerting_api_helper';
1717
import { waitForActiveRule } from './helpers/wait_for_active_rule';
18+
import { cleanupRuleAndAlertState } from './helpers/cleanup_rule_and_alert_state';
1819

1920
export default function ApiTest({ getService }: FtrProviderContext) {
2021
const registry = getService('registry');
@@ -69,14 +70,9 @@ export default function ApiTest({ getService }: FtrProviderContext) {
6970
});
7071

7172
async function cleanup() {
72-
try {
73-
await synthtraceEsClient.clean();
74-
await deleteApmRules(supertest);
75-
await ml.cleanMlIndices();
76-
logger.info('Completed cleaned up');
77-
} catch (e) {
78-
logger.info('Could not cleanup', e);
79-
}
73+
await synthtraceEsClient.clean();
74+
await cleanupRuleAndAlertState({ es, supertest, logger });
75+
await ml.cleanMlIndices();
8076
}
8177

8278
describe('with ml jobs', () => {

x-pack/test/apm_api_integration/tests/alerts/error_count_threshold.spec.ts

+3-19
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,13 @@ import { omit } from 'lodash';
1414
import { FtrProviderContext } from '../../common/ftr_provider_context';
1515
import {
1616
createApmRule,
17-
deleteRuleById,
18-
deleteAlertsByRuleId,
1917
fetchServiceInventoryAlertCounts,
2018
fetchServiceTabAlertCount,
2119
ApmAlertFields,
2220
createIndexConnector,
23-
deleteActionConnector,
2421
getIndexAction,
2522
} from './helpers/alerting_api_helper';
26-
import { cleanupAllState } from './helpers/cleanup_state';
23+
import { cleanupRuleAndAlertState } from './helpers/cleanup_rule_and_alert_state';
2724
import { waitForAlertsForRule } from './helpers/wait_for_alerts_for_rule';
2825
import { waitForIndexConnectorResults } from './helpers/wait_for_index_connector_results';
2926
import { waitForActiveRule } from './helpers/wait_for_active_rule';
@@ -55,8 +52,6 @@ export default function ApiTest({ getService }: FtrProviderContext) {
5552
};
5653

5754
before(async () => {
58-
cleanupAllState({ es, supertest });
59-
6055
const opbeansJava = apm
6156
.service({ name: 'opbeans-java', environment: 'production', agentName: 'java' })
6257
.instance('instance');
@@ -134,13 +129,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
134129
});
135130

136131
after(async () => {
137-
try {
138-
await deleteActionConnector({ supertest, es, actionId });
139-
await deleteRuleById({ supertest, ruleId });
140-
await deleteAlertsByRuleId({ es, ruleId });
141-
} catch (e) {
142-
logger.info('Could not delete rule or action connector', e);
143-
}
132+
await cleanupRuleAndAlertState({ es, supertest, logger });
144133
});
145134

146135
it('checks if rule is active', async () => {
@@ -285,12 +274,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
285274
});
286275

287276
after(async () => {
288-
try {
289-
await deleteRuleById({ supertest, ruleId });
290-
await deleteAlertsByRuleId({ es, ruleId });
291-
} catch (e) {
292-
logger.info('Could not delete rule', e);
293-
}
277+
await cleanupRuleAndAlertState({ es, supertest, logger });
294278
});
295279

296280
it('produces one alert for the opbeans-php service', async () => {

x-pack/test/apm_api_integration/tests/alerts/helpers/cleanup_state.ts x-pack/test/apm_api_integration/tests/alerts/helpers/cleanup_rule_and_alert_state.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77

88
import { Client } from '@elastic/elasticsearch';
9+
import { ToolingLog } from '@kbn/tooling-log';
910
import type { SuperTest, Test } from 'supertest';
1011
import {
1112
clearKibanaApmEventLog,
@@ -14,12 +15,14 @@ import {
1415
deleteActionConnectorIndex,
1516
} from './alerting_api_helper';
1617

17-
export async function cleanupAllState({
18+
export async function cleanupRuleAndAlertState({
1819
es,
1920
supertest,
21+
logger,
2022
}: {
2123
es: Client;
2224
supertest: SuperTest<Test>;
25+
logger: ToolingLog;
2326
}) {
2427
try {
2528
await Promise.all([
@@ -29,7 +32,6 @@ export async function cleanupAllState({
2932
await clearKibanaApmEventLog(es),
3033
]);
3134
} catch (e) {
32-
// eslint-disable-next-line no-console
33-
console.error(`An error occured while cleaning up the state: ${e}`);
35+
logger.error(`An error occured while cleaning up the state: ${e}`);
3436
}
3537
}

x-pack/test/apm_api_integration/tests/alerts/transaction_duration.spec.ts

+4-26
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,11 @@ import {
1515
createApmRule,
1616
fetchServiceInventoryAlertCounts,
1717
fetchServiceTabAlertCount,
18-
deleteAlertsByRuleId,
19-
deleteRuleById,
20-
clearKibanaApmEventLog,
2118
ApmAlertFields,
2219
createIndexConnector,
2320
getIndexAction,
24-
deleteActionConnector,
2521
} from './helpers/alerting_api_helper';
26-
import { cleanupAllState } from './helpers/cleanup_state';
22+
import { cleanupRuleAndAlertState } from './helpers/cleanup_rule_and_alert_state';
2723
import { waitForAlertsForRule } from './helpers/wait_for_alerts_for_rule';
2824
import { waitForActiveRule } from './helpers/wait_for_active_rule';
2925
import { waitForIndexConnectorResults } from './helpers/wait_for_index_connector_results';
@@ -49,8 +45,6 @@ export default function ApiTest({ getService }: FtrProviderContext) {
4945

5046
registry.when('transaction duration alert', { config: 'basic', archives: [] }, () => {
5147
before(async () => {
52-
cleanupAllState({ es, supertest });
53-
5448
const opbeansJava = apm
5549
.service({ name: 'opbeans-java', environment: 'production', agentName: 'java' })
5650
.instance('instance');
@@ -77,12 +71,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
7771
});
7872

7973
after(async () => {
80-
try {
81-
await synthtraceEsClient.clean();
82-
await clearKibanaApmEventLog(es);
83-
} catch (e) {
84-
logger.info('Could not clear apm event log', e);
85-
}
74+
await synthtraceEsClient.clean();
8675
});
8776

8877
describe('create rule for opbeans-java without kql filter', () => {
@@ -111,13 +100,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
111100
});
112101

113102
after(async () => {
114-
try {
115-
await deleteActionConnector({ supertest, es, actionId });
116-
await deleteRuleById({ supertest, ruleId });
117-
await deleteAlertsByRuleId({ es, ruleId });
118-
} catch (e) {
119-
logger.info('Could not delete rule or action connector', e);
120-
}
103+
await cleanupRuleAndAlertState({ es, supertest, logger });
121104
});
122105

123106
it('checks if rule is active', async () => {
@@ -229,12 +212,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
229212
});
230213

231214
after(async () => {
232-
try {
233-
await deleteAlertsByRuleId({ es, ruleId });
234-
await deleteRuleById({ supertest, ruleId });
235-
} catch (e) {
236-
logger.info('Could not delete rule or action connector', e);
237-
}
215+
await cleanupRuleAndAlertState({ es, supertest, logger });
238216
});
239217

240218
it('checks if rule is active', async () => {

x-pack/test/apm_api_integration/tests/alerts/transaction_error_rate.spec.ts

+4-26
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,11 @@ import {
1515
createApmRule,
1616
fetchServiceInventoryAlertCounts,
1717
fetchServiceTabAlertCount,
18-
deleteAlertsByRuleId,
19-
clearKibanaApmEventLog,
20-
deleteRuleById,
2118
ApmAlertFields,
2219
getIndexAction,
2320
createIndexConnector,
24-
deleteActionConnector,
2521
} from './helpers/alerting_api_helper';
26-
import { cleanupAllState } from './helpers/cleanup_state';
22+
import { cleanupRuleAndAlertState } from './helpers/cleanup_rule_and_alert_state';
2723
import { waitForAlertsForRule } from './helpers/wait_for_alerts_for_rule';
2824
import { waitForActiveRule } from './helpers/wait_for_active_rule';
2925
import { waitForIndexConnectorResults } from './helpers/wait_for_index_connector_results';
@@ -38,8 +34,6 @@ export default function ApiTest({ getService }: FtrProviderContext) {
3834

3935
registry.when('transaction error rate alert', { config: 'basic', archives: [] }, () => {
4036
before(async () => {
41-
cleanupAllState({ es, supertest });
42-
4337
const opbeansJava = apm
4438
.service({ name: 'opbeans-java', environment: 'production', agentName: 'java' })
4539
.instance('instance');
@@ -76,12 +70,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
7670
});
7771

7872
after(async () => {
79-
try {
80-
await synthtraceEsClient.clean();
81-
await clearKibanaApmEventLog(es);
82-
} catch (e) {
83-
logger.info('Could not clean up apm event log', e);
84-
}
73+
await synthtraceEsClient.clean();
8574
});
8675

8776
describe('create rule without kql query', () => {
@@ -121,13 +110,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
121110
});
122111

123112
after(async () => {
124-
try {
125-
await deleteActionConnector({ supertest, es, actionId });
126-
await deleteRuleById({ supertest, ruleId });
127-
await deleteAlertsByRuleId({ es, ruleId });
128-
} catch (e) {
129-
logger.info('Could not delete rule or action connector', e);
130-
}
113+
await cleanupRuleAndAlertState({ es, supertest, logger });
131114
});
132115

133116
it('checks if rule is active', async () => {
@@ -250,12 +233,7 @@ export default function ApiTest({ getService }: FtrProviderContext) {
250233
});
251234

252235
after(async () => {
253-
try {
254-
await deleteRuleById({ supertest, ruleId });
255-
await deleteAlertsByRuleId({ es, ruleId });
256-
} catch (e) {
257-
logger.info('Could not delete rule', e);
258-
}
236+
await cleanupRuleAndAlertState({ es, supertest, logger });
259237
});
260238

261239
it('indexes alert document with all group-by fields', async () => {

0 commit comments

Comments
 (0)