From 184f3c18fe8c6dea2cc6098fea3ef49a4391339f Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Mon, 23 May 2022 17:10:51 -0300 Subject: [PATCH 1/4] removed minimum impressionsRefreshRate --- CHANGES.txt | 2 +- package-lock.json | 2 +- package.json | 2 +- src/utils/lang/index.ts | 2 +- .../__tests__/index.spec.ts | 23 ++++++++++--------- src/utils/settingsValidation/index.ts | 13 +++-------- 6 files changed, 19 insertions(+), 25 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index cb625471..00388146 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,4 @@ -1.4.0 (May 23, 2022) +1.4.0 (May 24, 2022) - Added `scheduler.telemetryRefreshRate` property to SDK configuration, and deprecated `scheduler.metricsRefreshRate` property. - Updated SDK telemetry storage, metrics and updater to be more effective and send less often. - Bugfixing - Updated default values for `scheduler.impressionsRefreshRate` config parameter: 300s for OPTIMIZED impression mode and 60s for DEBUG impression mode. diff --git a/package-lock.json b/package-lock.json index 2be921ba..445dd36f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.4.0", + "version": "1.3.2-rc.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 671e18f6..95e66f9f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.4.0", + "version": "1.3.2-rc.7", "description": "Split Javascript SDK common components", "main": "cjs/index.js", "module": "esm/index.js", diff --git a/src/utils/lang/index.ts b/src/utils/lang/index.ts index bd7c7a51..0a828dda 100644 --- a/src/utils/lang/index.ts +++ b/src/utils/lang/index.ts @@ -71,7 +71,7 @@ export function forOwn(obj: { [key: string]: T }, iteratee: (value: T, key: s * Safely retrieve the specified prop from obj. If we can't retrieve * that property value, we return the default value. */ -export function get(obj: any, prop: any, val: any): any { +export function get(obj: any, prop: any, val?: any): any { let res = val; try { // No risks nor lots of checks. diff --git a/src/utils/settingsValidation/__tests__/index.spec.ts b/src/utils/settingsValidation/__tests__/index.spec.ts index 5191d546..7e765c9d 100644 --- a/src/utils/settingsValidation/__tests__/index.spec.ts +++ b/src/utils/settingsValidation/__tests__/index.spec.ts @@ -246,17 +246,18 @@ describe('settingsValidation', () => { expect(settings.core.trafficType).toEqual(true); // traffic type is ignored }); - test('validate min values', () => { - const settings = settingsValidation({ - scheduler: { - telemetryRefreshRate: 0, - impressionsRefreshRate: 'invalid', - } - }, minimalSettingsParams); - - expect(settings.scheduler.telemetryRefreshRate).toBe(60000); - expect(settings.scheduler.impressionsRefreshRate).toBe(60000); - }); + // Not implemented yet + // test('validate min values', () => { + // const settings = settingsValidation({ + // scheduler: { + // telemetryRefreshRate: 0, + // impressionsRefreshRate: 'invalid', + // } + // }, minimalSettingsParams); + + // expect(settings.scheduler.telemetryRefreshRate).toBe(60000); + // expect(settings.scheduler.impressionsRefreshRate).toBe(60000); + // }); }); diff --git a/src/utils/settingsValidation/index.ts b/src/utils/settingsValidation/index.ts index faf860b3..2269721f 100644 --- a/src/utils/settingsValidation/index.ts +++ b/src/utils/settingsValidation/index.ts @@ -1,4 +1,4 @@ -import { merge } from '../lang'; +import { merge, get } from '../lang'; import { mode } from './mode'; import { validateSplitFilters } from './splitFilters'; import { STANDALONE_MODE, OPTIMIZED, LOCALHOST_MODE, DEBUG } from '../constants'; @@ -131,15 +131,8 @@ export function settingsValidation(config: unknown, validationParams: ISettingsV scheduler.eventsPushRate = fromSecondsToMillis(scheduler.eventsPushRate); scheduler.telemetryRefreshRate = fromSecondsToMillis(validateMinValue('telemetryRefreshRate', scheduler.telemetryRefreshRate, 60)); - if (scheduler.impressionsRefreshRate !== base.scheduler.impressionsRefreshRate) { - // Validate impressionsRefreshRate defined by user - scheduler.impressionsRefreshRate = validateMinValue('impressionsRefreshRate', scheduler.impressionsRefreshRate, - withDefaults.sync.impressionsMode === DEBUG ? 1 : 60 // Min is 1 sec for DEBUG and 60 secs for OPTIMIZED - ); - } else { - // Default impressionsRefreshRate for DEBUG mode is 60 secs - if (withDefaults.sync.impressionsMode === DEBUG) scheduler.impressionsRefreshRate = 60; - } + // Default impressionsRefreshRate for DEBUG mode is 60 secs + if (get(config, 'scheduler.impressionsRefreshRate') === undefined && withDefaults.sync.impressionsMode === DEBUG) scheduler.impressionsRefreshRate = 60; scheduler.impressionsRefreshRate = fromSecondsToMillis(scheduler.impressionsRefreshRate); // Log deprecation for old telemetry param From 5e5665a41624ae480a8d03d37ae3750c9da30d93 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Tue, 24 May 2022 12:40:27 -0300 Subject: [PATCH 2/4] stable version --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 445dd36f..2be921ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.3.2-rc.7", + "version": "1.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 95e66f9f..671e18f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.3.2-rc.7", + "version": "1.4.0", "description": "Split Javascript SDK common components", "main": "cjs/index.js", "module": "esm/index.js", From 72fdf8402fe313433a76db12781dac03098a6675 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Tue, 24 May 2022 12:56:53 -0300 Subject: [PATCH 3/4] additional unit test --- .../__tests__/index.spec.ts | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/utils/settingsValidation/__tests__/index.spec.ts b/src/utils/settingsValidation/__tests__/index.spec.ts index 7e765c9d..e9b826a8 100644 --- a/src/utils/settingsValidation/__tests__/index.spec.ts +++ b/src/utils/settingsValidation/__tests__/index.spec.ts @@ -42,32 +42,36 @@ describe('settingsValidation', () => { expect(settings.sync.impressionsMode).toBe(OPTIMIZED); }); - test('override with defaults', () => { - const settings = settingsValidation({ - core: { - authorizationKey: 'dummy token' - }, - sync: { - impressionsMode: 'some', - } - }, minimalSettingsParams); + test('override with default impressionMode if provided one is invalid', () => { + const config = { + core: { authorizationKey: 'dummy token' }, + sync: { impressionsMode: 'some' } + }; + let settings = settingsValidation(config, minimalSettingsParams); + + expect(settings.sync.impressionsMode).toBe(OPTIMIZED); + expect(settings.scheduler.impressionsRefreshRate).toBe(300000); // Default + + settings = settingsValidation({ ...config, scheduler: { impressionsRefreshRate: 10 } }, minimalSettingsParams); expect(settings.sync.impressionsMode).toBe(OPTIMIZED); - expect(settings.scheduler.impressionsRefreshRate).toBe(300000); + expect(settings.scheduler.impressionsRefreshRate).toBe(10000); }); test('impressionsMode should be configurable', () => { - const settings = settingsValidation({ - core: { - authorizationKey: 'dummy token' - }, - sync: { - impressionsMode: DEBUG - } - }, minimalSettingsParams); + const config = { + core: { authorizationKey: 'dummy token' }, + sync: { impressionsMode: DEBUG } + }; + let settings = settingsValidation(config, minimalSettingsParams); expect(settings.sync.impressionsMode).toEqual(DEBUG); expect(settings.scheduler.impressionsRefreshRate).toBe(60000); // Different default for DEBUG impressionsMode + + settings = settingsValidation({ ...config, scheduler: { impressionsRefreshRate: 10 } }, minimalSettingsParams); + + expect(settings.sync.impressionsMode).toBe(OPTIMIZED); + expect(settings.scheduler.impressionsRefreshRate).toBe(10000); }); test('urls should be configurable', () => { From 0b7d4bb52a6bd35b82eba379a293ce95614ae600 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Tue, 24 May 2022 13:15:56 -0300 Subject: [PATCH 4/4] fix unit test --- src/utils/settingsValidation/__tests__/index.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/settingsValidation/__tests__/index.spec.ts b/src/utils/settingsValidation/__tests__/index.spec.ts index e9b826a8..e82d1d99 100644 --- a/src/utils/settingsValidation/__tests__/index.spec.ts +++ b/src/utils/settingsValidation/__tests__/index.spec.ts @@ -70,7 +70,7 @@ describe('settingsValidation', () => { settings = settingsValidation({ ...config, scheduler: { impressionsRefreshRate: 10 } }, minimalSettingsParams); - expect(settings.sync.impressionsMode).toBe(OPTIMIZED); + expect(settings.sync.impressionsMode).toBe(DEBUG); expect(settings.scheduler.impressionsRefreshRate).toBe(10000); });