From 4d1430b445c46e00cf4448a7b2628c0634c3be74 Mon Sep 17 00:00:00 2001 From: Zeeshan Ashraf Date: Tue, 21 Jul 2020 13:52:18 -0700 Subject: [PATCH 1/4] integrated React native event processor --- packages/optimizely-sdk/lib/index.react_native.js | 2 ++ packages/optimizely-sdk/lib/optimizely/index.js | 10 +++++++--- .../lib/plugins/event_dispatcher/index.browser.js | 2 +- packages/optimizely-sdk/package-lock.json | 8 ++++---- packages/optimizely-sdk/package.json | 2 +- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/optimizely-sdk/lib/index.react_native.js b/packages/optimizely-sdk/lib/index.react_native.js index 38dccc1bc..a7b17a4f9 100644 --- a/packages/optimizely-sdk/lib/index.react_native.js +++ b/packages/optimizely-sdk/lib/index.react_native.js @@ -37,6 +37,7 @@ setLogLevel(LogLevel.INFO); var DEFAULT_EVENT_BATCH_SIZE = 10; var DEFAULT_EVENT_FLUSH_INTERVAL = 1000; // Unit is ms, default is 1s +var DEFAULT_EVENT_MAX_QUEUE_SIZE = 10000; /** * Creates an instance of the Optimizely class @@ -81,6 +82,7 @@ var createInstance = function(config) { clientEngine: enums.JAVASCRIPT_CLIENT_ENGINE, eventBatchSize: DEFAULT_EVENT_BATCH_SIZE, eventDispatcher: defaultEventDispatcher, + eventMaxQueueSize: DEFAULT_EVENT_MAX_QUEUE_SIZE, eventFlushInterval: DEFAULT_EVENT_FLUSH_INTERVAL, }, config, diff --git a/packages/optimizely-sdk/lib/optimizely/index.js b/packages/optimizely-sdk/lib/optimizely/index.js index 52056568e..78949d847 100644 --- a/packages/optimizely-sdk/lib/optimizely/index.js +++ b/packages/optimizely-sdk/lib/optimizely/index.js @@ -87,7 +87,7 @@ function Optimizely(config) { }.bind(this) ); - this.__readyPromise = this.projectConfigManager.onReady(); + var projectConfigManagerReadyPromise = this.projectConfigManager.onReady(); var userProfileService = null; if (config.userProfileService) { @@ -115,10 +115,14 @@ function Optimizely(config) { this.eventProcessor = new eventProcessor.LogTierV1EventProcessor({ dispatcher: this.eventDispatcher, flushInterval: config.eventFlushInterval, - maxQueueSize: config.eventBatchSize, + batchSize: config.eventBatchSize, + maxQueueSize: config.eventMaxQueueSize, notificationCenter: this.notificationCenter, }); - this.eventProcessor.start(); + + var eventProcessorStartedPromise = this.eventProcessor.start(); + + this.__readyPromise = Promise.all([projectConfigManagerReadyPromise, eventProcessorStartedPromise]); this.__readyTimeouts = {}; this.__nextReadyTimeoutId = 0; diff --git a/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.browser.js b/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.browser.js index 8f1438a02..8359cc912 100644 --- a/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.browser.js +++ b/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.browser.js @@ -34,7 +34,7 @@ export var dispatchEvent = function(eventObj, callback) { req.onreadystatechange = function() { if (req.readyState === READYSTATE_COMPLETE && callback && typeof callback === 'function') { try { - callback(params); + callback({ statusCode: req.status }); } catch (e) { // TODO: Log this somehow (consider adding a logger to the EventDispatcher interface) } diff --git a/packages/optimizely-sdk/package-lock.json b/packages/optimizely-sdk/package-lock.json index f6e27df64..2d908bb1b 100644 --- a/packages/optimizely-sdk/package-lock.json +++ b/packages/optimizely-sdk/package-lock.json @@ -391,12 +391,12 @@ } }, "@optimizely/js-sdk-event-processor": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@optimizely/js-sdk-event-processor/-/js-sdk-event-processor-0.4.0.tgz", - "integrity": "sha512-5fqBG9N66O+9KWktUTH/OmMiQ4SKi42gP7qqWNKe0Ciu5PlBMTREKmo8+EixcDvDW8yQBvIPBj6GWzKz0RVAxg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@optimizely/js-sdk-event-processor/-/js-sdk-event-processor-0.5.0.tgz", + "integrity": "sha512-2JDtzyMcFvc20i0wdxq0jdpum7lsd7u6P7vP3DkGc1HDDgz9uk3IKeWGhb6rrFABXyNbV3RfVSITlMhKdwHsXw==", "requires": { "@optimizely/js-sdk-logging": "^0.1.0", - "@optimizely/js-sdk-utils": "^0.2.0" + "@optimizely/js-sdk-utils": "0.2.0" } }, "@optimizely/js-sdk-logging": { diff --git a/packages/optimizely-sdk/package.json b/packages/optimizely-sdk/package.json index a7a850311..e9bfed6b4 100644 --- a/packages/optimizely-sdk/package.json +++ b/packages/optimizely-sdk/package.json @@ -42,7 +42,7 @@ "homepage": "https://github.com/optimizely/javascript-sdk/tree/master/packages/optimizely-sdk", "dependencies": { "@optimizely/js-sdk-datafile-manager": "^0.6.0", - "@optimizely/js-sdk-event-processor": "^0.4.0", + "@optimizely/js-sdk-event-processor": "^0.5.0", "@optimizely/js-sdk-logging": "^0.1.0", "@optimizely/js-sdk-utils": "^0.2.0", "json-schema": "^0.2.3", From b04dc60e607d82c8a76a677a3798967aaf292022 Mon Sep 17 00:00:00 2001 From: Zeeshan Ashraf Date: Tue, 21 Jul 2020 18:05:22 -0700 Subject: [PATCH 2/4] fixed unit tests --- packages/optimizely-sdk/lib/index.browser.tests.js | 6 +++--- packages/optimizely-sdk/lib/index.node.tests.js | 6 +++--- packages/optimizely-sdk/lib/index.react_native.tests.js | 6 +++--- packages/optimizely-sdk/lib/optimizely/index.js | 5 ++++- packages/optimizely-sdk/lib/optimizely/index.tests.js | 2 +- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/optimizely-sdk/lib/index.browser.tests.js b/packages/optimizely-sdk/lib/index.browser.tests.js index 3f2160f16..ca171fcf5 100644 --- a/packages/optimizely-sdk/lib/index.browser.tests.js +++ b/packages/optimizely-sdk/lib/index.browser.tests.js @@ -475,7 +475,7 @@ describe('javascript-sdk', function() { sinon.assert.calledWithExactly( eventProcessorSpy, sinon.match({ - maxQueueSize: 10, + batchSize: 10, }) ); }); @@ -500,7 +500,7 @@ describe('javascript-sdk', function() { sinon.assert.calledWithExactly( eventProcessorSpy, sinon.match({ - maxQueueSize: 10, + batchSize: 10, }) ); }); @@ -526,7 +526,7 @@ describe('javascript-sdk', function() { sinon.assert.calledWithExactly( eventProcessorSpy, sinon.match({ - maxQueueSize: 300, + batchSize: 300, }) ); }); diff --git a/packages/optimizely-sdk/lib/index.node.tests.js b/packages/optimizely-sdk/lib/index.node.tests.js index f683fa1ec..ebba652e0 100644 --- a/packages/optimizely-sdk/lib/index.node.tests.js +++ b/packages/optimizely-sdk/lib/index.node.tests.js @@ -161,7 +161,7 @@ describe('optimizelyFactory', function() { sinon.assert.calledWithExactly( eventProcessorSpy, sinon.match({ - maxQueueSize: 10, + batchSize: 10, }) ); }); @@ -176,7 +176,7 @@ describe('optimizelyFactory', function() { sinon.assert.calledWithExactly( eventProcessorSpy, sinon.match({ - maxQueueSize: 10, + batchSize: 10, }) ); }); @@ -192,7 +192,7 @@ describe('optimizelyFactory', function() { sinon.assert.calledWithExactly( eventProcessorSpy, sinon.match({ - maxQueueSize: 300, + batchSize: 300, }) ); }); diff --git a/packages/optimizely-sdk/lib/index.react_native.tests.js b/packages/optimizely-sdk/lib/index.react_native.tests.js index 9b8341b9d..27d3d6d9f 100644 --- a/packages/optimizely-sdk/lib/index.react_native.tests.js +++ b/packages/optimizely-sdk/lib/index.react_native.tests.js @@ -268,7 +268,7 @@ describe('javascript-sdk/react-native', function() { sinon.assert.calledWithExactly( eventProcessorSpy, sinon.match({ - maxQueueSize: 10, + batchSize: 10, }) ); }); @@ -293,7 +293,7 @@ describe('javascript-sdk/react-native', function() { sinon.assert.calledWithExactly( eventProcessorSpy, sinon.match({ - maxQueueSize: 10, + batchSize: 10, }) ); }); @@ -319,7 +319,7 @@ describe('javascript-sdk/react-native', function() { sinon.assert.calledWithExactly( eventProcessorSpy, sinon.match({ - maxQueueSize: 300, + batchSize: 300, }) ); }); diff --git a/packages/optimizely-sdk/lib/optimizely/index.js b/packages/optimizely-sdk/lib/optimizely/index.js index 78949d847..4237c4722 100644 --- a/packages/optimizely-sdk/lib/optimizely/index.js +++ b/packages/optimizely-sdk/lib/optimizely/index.js @@ -122,7 +122,10 @@ function Optimizely(config) { var eventProcessorStartedPromise = this.eventProcessor.start(); - this.__readyPromise = Promise.all([projectConfigManagerReadyPromise, eventProcessorStartedPromise]); + this.__readyPromise = Promise.all([projectConfigManagerReadyPromise, eventProcessorStartedPromise]).then(function([projectConfigStatus]) { + // Only return status from project config promise because event processor promise does not return any status. + return projectConfigStatus; + }) this.__readyTimeouts = {}; this.__nextReadyTimeoutId = 0; diff --git a/packages/optimizely-sdk/lib/optimizely/index.tests.js b/packages/optimizely-sdk/lib/optimizely/index.tests.js index 777d4c505..e2856f541 100644 --- a/packages/optimizely-sdk/lib/optimizely/index.tests.js +++ b/packages/optimizely-sdk/lib/optimizely/index.tests.js @@ -7682,7 +7682,7 @@ describe('lib/optimizely', function() { sinon.match({ dispatcher: eventDispatcher, flushInterval: 20000, - maxQueueSize: 100, + batchSize: 100, }) ); }); From b8f6f97f1a4d54a86408180af21146161936c9e0 Mon Sep 17 00:00:00 2001 From: Zeeshan Ashraf Date: Tue, 21 Jul 2020 19:04:14 -0700 Subject: [PATCH 3/4] fixed umd tests --- packages/optimizely-sdk/lib/optimizely/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/optimizely-sdk/lib/optimizely/index.js b/packages/optimizely-sdk/lib/optimizely/index.js index 4237c4722..3f2d86e5c 100644 --- a/packages/optimizely-sdk/lib/optimizely/index.js +++ b/packages/optimizely-sdk/lib/optimizely/index.js @@ -122,9 +122,9 @@ function Optimizely(config) { var eventProcessorStartedPromise = this.eventProcessor.start(); - this.__readyPromise = Promise.all([projectConfigManagerReadyPromise, eventProcessorStartedPromise]).then(function([projectConfigStatus]) { + this.__readyPromise = Promise.all([projectConfigManagerReadyPromise, eventProcessorStartedPromise]).then(function(promiseResults) { // Only return status from project config promise because event processor promise does not return any status. - return projectConfigStatus; + return promiseResults[0]; }) this.__readyTimeouts = {}; From 278013c4883470c7bb12c8e7df06c0604ba54d60 Mon Sep 17 00:00:00 2001 From: Zeeshan Ashraf Date: Wed, 22 Jul 2020 14:40:39 -0700 Subject: [PATCH 4/4] updated event processor version --- packages/optimizely-sdk/package-lock.json | 6 +++--- packages/optimizely-sdk/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/optimizely-sdk/package-lock.json b/packages/optimizely-sdk/package-lock.json index 2d908bb1b..e5f64e269 100644 --- a/packages/optimizely-sdk/package-lock.json +++ b/packages/optimizely-sdk/package-lock.json @@ -391,9 +391,9 @@ } }, "@optimizely/js-sdk-event-processor": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@optimizely/js-sdk-event-processor/-/js-sdk-event-processor-0.5.0.tgz", - "integrity": "sha512-2JDtzyMcFvc20i0wdxq0jdpum7lsd7u6P7vP3DkGc1HDDgz9uk3IKeWGhb6rrFABXyNbV3RfVSITlMhKdwHsXw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@optimizely/js-sdk-event-processor/-/js-sdk-event-processor-0.5.1.tgz", + "integrity": "sha512-Ua9IbULqXjd899MPuI4mkMvjepn2zpwvxvi/JOt/XCHEJNIDO7HR4o0Y9DsqZpHJnwtD3ODWdVSHSzZsQz/q7g==", "requires": { "@optimizely/js-sdk-logging": "^0.1.0", "@optimizely/js-sdk-utils": "0.2.0" diff --git a/packages/optimizely-sdk/package.json b/packages/optimizely-sdk/package.json index e9bfed6b4..777d0a183 100644 --- a/packages/optimizely-sdk/package.json +++ b/packages/optimizely-sdk/package.json @@ -42,7 +42,7 @@ "homepage": "https://github.com/optimizely/javascript-sdk/tree/master/packages/optimizely-sdk", "dependencies": { "@optimizely/js-sdk-datafile-manager": "^0.6.0", - "@optimizely/js-sdk-event-processor": "^0.5.0", + "@optimizely/js-sdk-event-processor": "^0.5.1", "@optimizely/js-sdk-logging": "^0.1.0", "@optimizely/js-sdk-utils": "^0.2.0", "json-schema": "^0.2.3",