mirror of
https://github.com/elastic/kibana.git
synced 2025-04-25 02:09:32 -04:00
* bump to a pre-8.0 version * export KibanaClient from /lib sub-folder * workaround the problem of the absence of estypes * update es client usage in pacakges * export estypes from another path * import errors from root * import errors from root 2 * update transport import * update import path for /api/types * update import path for /api/types * import errors from top export * use TransportResult instead if ApiResponse * fix errors in client_config * fix src/core/server/saved_objects/migrationsv2/actions/integration_tests/actions.test.ts * use KibanaClient in mock. we dont export the original Client * fix client mocks * fix errors on SO * fix remaining core errors * update estype import path * fix errors in data plugin * fix data_views * fix es_ui_shared * fix errors in interactive_setup * fix errors in ./test folder * add @elastic/transport to the runtime deps * fix errors in packages * fix erros in src/core * fix errors in test/ * fix an error in actions plugin * woraround and fix errors in APM plugin * fix errors in canvas * fix errors in event_log * fix errors in fleet * fix errors in ILM * fix errors in infra * fix errors in ingest_pipeline * fix errors in lens * fix errors in license_management * fix errors in licensing * fix errors in logstash * fix errors in ml * fix errors in monitoring * fix errors in observability * fix errors in rule_registry * fix errors in reporting * fix errors in rule_registry * fix errors in security * fix errors in security_solution * fix errors in snapshot_restore * fix errors in transform * fix errors in UA * fix errors in uptime * fix errors in x-pack/test * fix eslint errors * fix new errors * use default HTTP Connection. Undici does not support agent config options keepAlive and maxSockets * create does not accept require_alias option * update deps * use transport types exported from ES client package * fix ErrorCause | string errors * do not use enum * fix errors in data plugin * update x-pack code * fix transport * fix apm search request * do not crash on reporting * fix kbn-test build * mute reporting error to start * fix ftr build * another attempt * update import path * address or mute new errors * REMOVE me. pin transport version temporarily. * remove deep imports from transport package * fix jest crash * fix product check tests * remove unnecessary ts-expect-error * fix a few failed unit tests * bump to canary 24 * remove unnecessary ts-expect-error * remove dependency on transport * fix types in tests * mute errors in xpack tests * product check doesn;t spam in logs anymore * filterPath --> filter_path * ignoreUnavailable --> ignore_unavailable * ignoreUnavailable --> ignore_unavailable * trackScores --> track_scores * trackTotalHits --> track_total_hits * fix es-arcives * fix data plugin crashes * fix watcher test utils * rollback unnecessary changes * fix another problem in es-archiver * fix scroll. for whatever reason scroll fails when request scroll_id in body * add meta: true in kbn-securitysolution-es-utils * bump client to canary 25 * fix errors in accordance with the es client spec * update securityscolution-es-utils * unify scroll api in reporting and fix tests * fix unit tests in watcher * refactor APM to abort request with AbortController API * fix missing es client calls in tests * fix missing meta in detection engine FTR tests * fix another bunch of errors in js tests * fix wrong coercion * remove test-grep pattern * fix apm unit test * rename terminateAfter to terminate_after in infra plugin * rename terminateAfter to terminate_after in uptime plugin * rename terminateAfter to terminate_after in apm plugin * fix security roles FTR tests * fix reference * fix post_privilidges test * fix post_privilidges * bump client to 26 * add meta for index_management test helpers * remove ts-expect-error caused by bad type in reason * bump client to 27 * REMOVE me. workaround until fixed in the es client * fix incorrect type casting * swtich from camelCase params * use `HttpConnection` for FTR-related clients * bump client to 29 * Revert "REMOVE me. workaround until fixed in the es client" This reverts commitc038850c09
. * fix new util * revert repository changes * do not crash if cannot store event_loop data * fix new estypes imports * fix more types * fix security test types and add ts-ignore for custom ES client * fix more estypes imports * yet more ts violations * line by line fixing is hard * adapt `evaluateAlert` from infra as it's also used from FTR tests * use convertToKibanaClient in FTR test instead of meta:true in plugin code * migrate from deprecated API in fleet * fix intergration tests * fix fleet tests * fix another fleet test * fix more tests * let's call it a day * Removes custom header check on 404 responses, includes es client ProductNotSupportedError in EsUnavailableError conditional (#116029) * Removes custom header check on 404 responses, includes es client ProductNotSupportedError in EsUnavailableError conditional * Updates proxy response integration test * disable APM until compatible with client v8 * skip async_search FTR test * use kbnClient in integration tests * bump version to 29 * bump to 30 * have configureClient return a KibanaClient instead of Client, remove resolved violations. * bump to 31 * bump to 31 * Revert "bump to 31" This reverts commit5ac713e640
. * trigger stop to unusubscribe * update generated docs * remove obsolete test * put "as" back * cleanup * skip test * remove new type errors in apm package * remove ErrorCause casting * update a comment * bump version to 32 * remove unnecessary ts-expect-error in apm code * update comments * update to client v33 * remove outdated type definition * bump to 34 without params mutation * unskip the test that should not fail anymore * remove unnecessary ts-expect-error comments * update to v35. body can be string * move `sort` to body and use body friendly syntax * fix a failing test. maps register the same SO that has been already registered by home Co-authored-by: pgayvallet <pierre.gayvallet@gmail.com> Co-authored-by: Christiane (Tina) Heiligers <christiane.heiligers@elastic.co>
111 lines
4.2 KiB
TypeScript
111 lines
4.2 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 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 or the Server
|
|
* Side Public License, v 1.
|
|
*/
|
|
|
|
import expect from '@kbn/expect';
|
|
import { ReportManager, METRIC_TYPE, UiCounterMetricType } from '@kbn/analytics';
|
|
import { UserAgentMetric } from '@kbn/analytics/target_types/metrics/user_agent';
|
|
import { FtrProviderContext } from '../../ftr_provider_context';
|
|
|
|
export default function ({ getService }: FtrProviderContext) {
|
|
const supertest = getService('supertest');
|
|
const esArchiver = getService('esArchiver');
|
|
const es = getService('es');
|
|
|
|
const createStatsMetric = (
|
|
eventName: string,
|
|
type: UiCounterMetricType = METRIC_TYPE.CLICK,
|
|
count = 1
|
|
) => ({
|
|
eventName,
|
|
appName: 'myApp',
|
|
type,
|
|
count,
|
|
});
|
|
|
|
const createUserAgentMetric = (appName: string): UserAgentMetric => ({
|
|
appName,
|
|
type: METRIC_TYPE.USER_AGENT,
|
|
userAgent:
|
|
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36',
|
|
});
|
|
|
|
describe('ui_metric savedObject data', () => {
|
|
before(async () => {
|
|
await esArchiver.emptyKibanaIndex();
|
|
});
|
|
|
|
it('increments the count field in the document defined by the {app}/{action_type} path', async () => {
|
|
const reportManager = new ReportManager();
|
|
const uiStatsMetric = createStatsMetric('myEvent');
|
|
const { report } = reportManager.assignReports([uiStatsMetric]);
|
|
await supertest
|
|
.post('/api/ui_counters/_report')
|
|
.set('kbn-xsrf', 'kibana')
|
|
.set('content-type', 'application/json')
|
|
.send({ report })
|
|
.expect(200);
|
|
|
|
const response = await es.search({ index: '.kibana', q: 'type:ui-metric' });
|
|
const ids = response.hits.hits.map(({ _id }: { _id: string }) => _id);
|
|
expect(ids.includes('ui-metric:myApp:myEvent')).to.eql(true);
|
|
});
|
|
|
|
it('supports multiple events', async () => {
|
|
const reportManager = new ReportManager();
|
|
const userAgentMetric = createUserAgentMetric('kibana');
|
|
const uiStatsMetric1 = createStatsMetric('myEvent');
|
|
const hrTime = process.hrtime();
|
|
const nano = hrTime[0] * 1000000000 + hrTime[1];
|
|
const uniqueEventName = `myEvent${nano}`;
|
|
const uiStatsMetric2 = createStatsMetric(uniqueEventName);
|
|
const { report } = reportManager.assignReports([
|
|
userAgentMetric,
|
|
uiStatsMetric1,
|
|
uiStatsMetric2,
|
|
]);
|
|
await supertest
|
|
.post('/api/ui_counters/_report')
|
|
.set('kbn-xsrf', 'kibana')
|
|
.set('content-type', 'application/json')
|
|
.send({ report })
|
|
.expect(200);
|
|
|
|
const response = await es.search({ index: '.kibana', q: 'type:ui-metric' });
|
|
const ids = response.hits.hits.map(({ _id }: { _id: string }) => _id);
|
|
expect(ids.includes('ui-metric:myApp:myEvent')).to.eql(true);
|
|
expect(ids.includes(`ui-metric:myApp:${uniqueEventName}`)).to.eql(true);
|
|
expect(ids.includes(`ui-metric:kibana-user_agent:${userAgentMetric.userAgent}`)).to.eql(true);
|
|
});
|
|
|
|
it('aggregates multiple events with same eventID', async () => {
|
|
const reportManager = new ReportManager();
|
|
const hrTime = process.hrtime();
|
|
const nano = hrTime[0] * 1000000000 + hrTime[1];
|
|
const uniqueEventName = `my_event_${nano}`;
|
|
const { report } = reportManager.assignReports([
|
|
createStatsMetric(uniqueEventName, METRIC_TYPE.CLICK, 2),
|
|
createStatsMetric(uniqueEventName, METRIC_TYPE.LOADED),
|
|
]);
|
|
await supertest
|
|
.post('/api/ui_counters/_report')
|
|
.set('kbn-xsrf', 'kibana')
|
|
.set('content-type', 'application/json')
|
|
.send({ report })
|
|
.expect(200);
|
|
|
|
const {
|
|
hits: { hits },
|
|
} = await es.search<any>({ index: '.kibana', q: 'type:ui-metric' });
|
|
|
|
const countTypeEvent = hits.find(
|
|
(hit: { _id: string }) => hit._id === `ui-metric:myApp:${uniqueEventName}`
|
|
);
|
|
expect(countTypeEvent?._source['ui-metric'].count).to.eql(3);
|
|
});
|
|
});
|
|
}
|