From 9aa1c7aeb081f71e36fdfb1e5beb8a448ee52d8d Mon Sep 17 00:00:00 2001 From: Gard Rimestad Date: Tue, 27 Sep 2022 11:06:06 +0200 Subject: [PATCH] fix: client registration events are on eventStore (#2093) Client registration events are on eventStore and not on eventBus. This change makes us have sdk name and version metrics in unleash. --- src/lib/metrics.test.ts | 35 ++++++++++++++++++++++++++--------- src/lib/metrics.ts | 2 +- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/lib/metrics.test.ts b/src/lib/metrics.test.ts index 7d0e16e700..930590640a 100644 --- a/src/lib/metrics.test.ts +++ b/src/lib/metrics.test.ts @@ -1,5 +1,6 @@ import { register } from 'prom-client'; import EventEmitter from 'events'; +import { IEventStore } from './types/stores/event-store'; import { createTestConfig } from '../test/config/test-config'; import { REQUEST_TIME, DB_TIME } from './metric-events'; import { @@ -13,6 +14,7 @@ import createStores from '../test/fixtures/store'; const monitor = createMetricsMonitor(); const eventBus = new EventEmitter(); const prometheusRegister = register; +let eventStore: IEventStore; let stores; beforeAll(() => { const config = createTestConfig({ @@ -21,6 +23,7 @@ beforeAll(() => { }, }); stores = createStores(); + eventStore = stores.eventStore; const db = { client: { pool: { @@ -114,12 +117,24 @@ test('Should collect metrics for database', async () => { }); test('Should collect metrics for client sdk versions', async () => { - eventBus.emit(CLIENT_REGISTER, { sdkVersion: 'unleash-client-node:3.2.5' }); - eventBus.emit(CLIENT_REGISTER, { sdkVersion: 'unleash-client-node:3.2.5' }); - eventBus.emit(CLIENT_REGISTER, { sdkVersion: 'unleash-client-node:3.2.5' }); - eventBus.emit(CLIENT_REGISTER, { sdkVersion: 'unleash-client-java:5.0.0' }); - eventBus.emit(CLIENT_REGISTER, { sdkVersion: 'unleash-client-java:5.0.0' }); - eventBus.emit(CLIENT_REGISTER, { sdkVersion: 'unleash-client-java:5.0.0' }); + eventStore.emit(CLIENT_REGISTER, { + sdkVersion: 'unleash-client-node:3.2.5', + }); + eventStore.emit(CLIENT_REGISTER, { + sdkVersion: 'unleash-client-node:3.2.5', + }); + eventStore.emit(CLIENT_REGISTER, { + sdkVersion: 'unleash-client-node:3.2.5', + }); + eventStore.emit(CLIENT_REGISTER, { + sdkVersion: 'unleash-client-java:5.0.0', + }); + eventStore.emit(CLIENT_REGISTER, { + sdkVersion: 'unleash-client-java:5.0.0', + }); + eventStore.emit(CLIENT_REGISTER, { + sdkVersion: 'unleash-client-java:5.0.0', + }); const metrics = await prometheusRegister.getSingleMetricAsString( 'client_sdk_versions', ); @@ -129,7 +144,9 @@ test('Should collect metrics for client sdk versions', async () => { expect(metrics).toMatch( /client_sdk_versions\{sdk_name="unleash-client-java",sdk_version="5\.0\.0"} 3/, ); - eventBus.emit(CLIENT_REGISTER, { sdkVersion: 'unleash-client-node:3.2.5' }); + eventStore.emit(CLIENT_REGISTER, { + sdkVersion: 'unleash-client-node:3.2.5', + }); const newmetrics = await prometheusRegister.getSingleMetricAsString( 'client_sdk_versions', ); @@ -139,8 +156,8 @@ test('Should collect metrics for client sdk versions', async () => { }); test('Should not collect client sdk version if sdkVersion is of wrong format or non-existent', async () => { - eventBus.emit(CLIENT_REGISTER, { sdkVersion: 'unleash-client-rust' }); - eventBus.emit(CLIENT_REGISTER, {}); + eventStore.emit(CLIENT_REGISTER, { sdkVersion: 'unleash-client-rust' }); + eventStore.emit(CLIENT_REGISTER, {}); const metrics = await prometheusRegister.getSingleMetricAsString( 'client_sdk_versions', ); diff --git a/src/lib/metrics.ts b/src/lib/metrics.ts index be569136c4..f37191036b 100644 --- a/src/lib/metrics.ts +++ b/src/lib/metrics.ts @@ -226,7 +226,7 @@ export default class MetricsMonitor { .inc(entry[1].no); } }); - eventBus.on(CLIENT_REGISTER, (m) => { + eventStore.on(CLIENT_REGISTER, (m) => { if (m.sdkVersion && m.sdkVersion.indexOf(':') > -1) { const [sdkName, sdkVersion] = m.sdkVersion.split(':'); clientSdkVersionUsage.labels(sdkName, sdkVersion).inc();