Skip to content

Commit 0ded593

Browse files
committed
fix functional test flakiness
1 parent a033908 commit 0ded593

1 file changed

Lines changed: 32 additions & 8 deletions

File tree

x-pack/platform/test/alerting_api_integration/spaces_only/tests/alerting/group4/last_run_outcome_msg_migration.ts

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,30 @@ import type { RawRule } from '@kbn/alerting-plugin/server/types';
1111
import { ALERTING_CASES_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server';
1212
import { Spaces } from '../../../scenarios';
1313
import type { FtrProviderContext } from '../../../../common/ftr_provider_context';
14-
import { getUrlPrefix, getTestRuleData, ObjectRemover, checkAAD } from '../../../../common/lib';
14+
import {
15+
getUrlPrefix,
16+
getTestRuleData,
17+
ObjectRemover,
18+
checkAAD,
19+
getEventLog,
20+
} from '../../../../common/lib';
1521

1622
/** Simulates 7.x documents where lastRun.outcomeMsg was stored as a string. */
1723
const LEGACY_OUTCOME_MSG = 'legacy outcome message string';
1824

1925
export default function lastRunOutcomeMsgMigrationTests({ getService }: FtrProviderContext) {
2026
const es = getService('es');
2127
const supertest = getService('supertest');
28+
const retry = getService('retry');
2229

23-
// FLAKY: https://github.com/elastic/kibana/issues/259634
24-
describe.skip('lastRun outcomeMsg migration', () => {
30+
describe('lastRun outcomeMsg migration', () => {
2531
const objectRemover = new ObjectRemover(supertest);
2632

2733
afterEach(async () => {
2834
await objectRemover.removeAll();
2935
});
3036

31-
async function getAlertFromEs(ruleId: string): Promise<RawRule> {
37+
async function getRuleFromEs(ruleId: string): Promise<RawRule> {
3238
const response = await es.get<{ alert: RawRule }>(
3339
{
3440
index: ALERTING_CASES_SAVED_OBJECT_INDEX,
@@ -67,11 +73,13 @@ export default function lastRunOutcomeMsgMigrationTests({ getService }: FtrProvi
6773
})
6874
)
6975
.expect(200);
76+
// Wait for rule execution to complete to avoid race conditions with injectLegacyStringOutcomeMsg()
77+
await waitForEventLogDocs(createdRule.id, new Map());
7078
objectRemover.add(Spaces.space1.id, createdRule.id, 'rule', 'alerting');
7179

7280
await injectLegacyStringOutcomeMsg(createdRule.id);
7381

74-
const beforeBulk = await getAlertFromEs(createdRule.id);
82+
const beforeBulk = await getRuleFromEs(createdRule.id);
7583
expect((beforeBulk.lastRun as { outcomeMsg?: unknown } | undefined)?.outcomeMsg).to.eql(
7684
LEGACY_OUTCOME_MSG
7785
);
@@ -84,7 +92,7 @@ export default function lastRunOutcomeMsgMigrationTests({ getService }: FtrProvi
8492
})
8593
.expect(200);
8694

87-
const afterBulk = await getAlertFromEs(createdRule.id);
95+
const afterBulk = await getRuleFromEs(createdRule.id);
8896
expect(afterBulk.lastRun?.outcomeMsg).to.eql([LEGACY_OUTCOME_MSG]);
8997
expect(afterBulk.enabled).to.eql(false);
9098

@@ -118,7 +126,7 @@ export default function lastRunOutcomeMsgMigrationTests({ getService }: FtrProvi
118126

119127
await injectLegacyStringOutcomeMsg(createdRule.id);
120128

121-
const beforeBulk = await getAlertFromEs(createdRule.id);
129+
const beforeBulk = await getRuleFromEs(createdRule.id);
122130
expect((beforeBulk.lastRun as { outcomeMsg?: unknown } | undefined)?.outcomeMsg).to.eql(
123131
LEGACY_OUTCOME_MSG
124132
);
@@ -131,7 +139,7 @@ export default function lastRunOutcomeMsgMigrationTests({ getService }: FtrProvi
131139
})
132140
.expect(200);
133141

134-
const afterBulk = await getAlertFromEs(createdRule.id);
142+
const afterBulk = await getRuleFromEs(createdRule.id);
135143
expect(afterBulk.lastRun?.outcomeMsg).to.eql([LEGACY_OUTCOME_MSG]);
136144
expect(afterBulk.enabled).to.eql(true);
137145

@@ -150,4 +158,20 @@ export default function lastRunOutcomeMsgMigrationTests({ getService }: FtrProvi
150158
});
151159
});
152160
});
161+
162+
async function waitForEventLogDocs(
163+
id: string,
164+
actions: Map<string, { gte: number } | { equal: number }>
165+
) {
166+
return await retry.try(async () => {
167+
return await getEventLog({
168+
getService,
169+
spaceId: Spaces.space1.id,
170+
type: 'alert',
171+
id,
172+
provider: 'alerting',
173+
actions,
174+
});
175+
});
176+
}
153177
}

0 commit comments

Comments
 (0)