kibana/test/interactive_setup_api_integration/fixtures/test_helpers.ts
Luke Elmers b6287708f6
Adds AGPL 3.0 license (#192025)
Updates files outside of x-pack to be triple-licensed under Elastic
License 2.0, AGPL 3.0, or SSPL 1.0.
2024-09-06 19:02:41 -06:00

40 lines
1.4 KiB
TypeScript

/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/
import { setTimeout as setTimeoutAsync } from 'timers/promises';
import expect from '@kbn/expect';
import type { FtrProviderContext } from '../ftr_provider_context';
export async function hasKibanaBooted(context: FtrProviderContext) {
const supertest = context.getService('supertest');
const log = context.getService('log');
// Run 30 consecutive requests with 1.5s delay to check if Kibana is up and running.
let kibanaHasBooted = false;
for (const counter of [...Array(30).keys()]) {
await setTimeoutAsync(1500);
try {
expect((await supertest.get('/api/status').expect(200)).body).to.have.keys([
'version',
'status',
]);
log.debug(`Kibana has booted after ${(counter + 1) * 1.5}s.`);
kibanaHasBooted = true;
break;
} catch (err) {
log.debug(`Kibana is still booting after ${(counter + 1) * 1.5}s due to: ${err.message}`);
}
}
return kibanaHasBooted;
}