Skip to content

Commit 9cec7a1

Browse files
Add unit tests
1 parent 0e415d5 commit 9cec7a1

File tree

3 files changed

+39
-14
lines changed

3 files changed

+39
-14
lines changed

src/sync/polling/updaters/__tests__/splitChangesUpdater.spec.ts

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ISplit } from '../../../../dtos/types';
1+
import { IRBSegment, ISplit } from '../../../../dtos/types';
22
import { readinessManagerFactory } from '../../../../readiness/readinessManager';
33
import { splitApiFactory } from '../../../../services/splitApi';
44
import { SegmentsCacheInMemory } from '../../../../storages/inMemory/SegmentsCacheInMemory';
@@ -165,6 +165,7 @@ describe('splitChangesUpdater', () => {
165165
const updateSplits = jest.spyOn(splits, 'update');
166166

167167
const rbSegments = new RBSegmentsCacheInMemory();
168+
const updateRbSegments = jest.spyOn(rbSegments, 'update');
168169

169170
const segments = new SegmentsCacheInMemory();
170171
const registerSegments = jest.spyOn(segments, 'registerSegments');
@@ -184,22 +185,29 @@ describe('splitChangesUpdater', () => {
184185

185186
test('test without payload', async () => {
186187
const result = await splitChangesUpdater();
188+
189+
expect(fetchSplitChanges).toBeCalledTimes(1);
190+
expect(fetchSplitChanges).lastCalledWith(-1, undefined, undefined, -1);
187191
expect(updateSplits).toBeCalledTimes(1);
188192
expect(updateSplits).lastCalledWith(splitChangesMock1.ff.d, [], splitChangesMock1.ff.t);
193+
expect(updateRbSegments).toBeCalledTimes(0); // no rbSegments to update
189194
expect(registerSegments).toBeCalledTimes(1);
190195
expect(splitsEmitSpy).toBeCalledWith('state::splits-arrived');
191196
expect(result).toBe(true);
192197
});
193198

194-
test('test with payload', async () => {
199+
test('test with ff payload', async () => {
195200
let index = 0;
196201
for (const notification of splitNotifications) {
197202
const payload = notification.decoded as Pick<ISplit, 'name' | 'changeNumber' | 'killed' | 'defaultTreatment' | 'trafficTypeName' | 'conditions' | 'status' | 'seed' | 'trafficAllocation' | 'trafficAllocationSeed' | 'configurations'>;
198203
const changeNumber = payload.changeNumber;
199204

200205
await expect(splitChangesUpdater(undefined, undefined, { payload, changeNumber: changeNumber })).resolves.toBe(true);
201-
// fetch not being called
206+
207+
// fetch and RBSegments.update not being called
202208
expect(fetchSplitChanges).toBeCalledTimes(0);
209+
expect(updateRbSegments).toBeCalledTimes(0);
210+
203211
expect(updateSplits).toBeCalledTimes(index + 1);
204212
// Change number being updated
205213
expect(updateSplits.mock.calls[index][2]).toEqual(changeNumber);
@@ -214,6 +222,23 @@ describe('splitChangesUpdater', () => {
214222
}
215223
});
216224

225+
test('test with rbsegment payload', async () => {
226+
const payload = { name: 'rbsegment', status: 'ACTIVE', changeNumber: 1684329854385, conditions: [] } as unknown as IRBSegment;
227+
const changeNumber = payload.changeNumber;
228+
229+
await expect(splitChangesUpdater(undefined, undefined, { payload, changeNumber: changeNumber })).resolves.toBe(true);
230+
231+
// fetch and Splits.update not being called
232+
expect(fetchSplitChanges).toBeCalledTimes(0);
233+
expect(updateSplits).toBeCalledTimes(0);
234+
235+
expect(updateRbSegments).toBeCalledTimes(1);
236+
expect(updateRbSegments).toBeCalledWith([payload], [], changeNumber);
237+
238+
expect(registerSegments).toBeCalledTimes(1);
239+
expect(registerSegments).toBeCalledWith([]);
240+
});
241+
217242
test('flag sets splits-arrived emission', async () => {
218243
const payload = splitNotifications[3].decoded as Pick<ISplit, 'name' | 'changeNumber' | 'killed' | 'defaultTreatment' | 'trafficTypeName' | 'conditions' | 'status' | 'seed' | 'trafficAllocation' | 'trafficAllocationSeed' | 'configurations'>;
219244
const setMocks = [

src/sync/polling/updaters/splitChangesUpdater.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { startsWith } from '../../../utils/lang';
1010
import { IN_RULE_BASED_SEGMENT, IN_SEGMENT } from '../../../utils/constants';
1111
import { setToArray } from '../../../utils/lang/sets';
1212

13-
type ISplitChangesUpdater = (noCache?: boolean, till?: number, splitUpdateNotification?: { payload: ISplit, changeNumber: number }) => Promise<boolean>
13+
type ISplitChangesUpdater = (noCache?: boolean, till?: number, splitUpdateNotification?: { payload: ISplit | IRBSegment, changeNumber: number }) => Promise<boolean>
1414

1515
// Checks that all registered segments have been fetched (changeNumber !== -1 for every segment).
1616
// Returns a promise that could be rejected.
@@ -134,7 +134,7 @@ export function splitChangesUpdaterFactory(
134134
* @param noCache - true to revalidate data to fetch
135135
* @param till - query param to bypass CDN requests
136136
*/
137-
return function splitChangesUpdater(noCache?: boolean, till?: number, splitUpdateNotification?: { payload: ISplit | IRBSegment, changeNumber: number }) {
137+
return function splitChangesUpdater(noCache?: boolean, till?: number, updateNotification?: { payload: ISplit | IRBSegment, changeNumber: number }) {
138138

139139
/**
140140
* @param since - current changeNumber at splitsCache
@@ -144,15 +144,15 @@ export function splitChangesUpdaterFactory(
144144
const [since, rbSince] = sinces;
145145
log.debug(SYNC_SPLITS_FETCH, sinces);
146146
const fetcherPromise = Promise.resolve(
147-
splitUpdateNotification ?
148-
isFF(splitUpdateNotification.payload) ?
147+
updateNotification ?
148+
isFF(updateNotification.payload) ?
149149
// IFFU edge case: a change to a flag that adds an IN_RULE_BASED_SEGMENT matcher that is not present yet
150-
Promise.resolve(rbSegments.contains(parseSegments(splitUpdateNotification.payload, IN_RULE_BASED_SEGMENT))).then((contains) => {
150+
Promise.resolve(rbSegments.contains(parseSegments(updateNotification.payload, IN_RULE_BASED_SEGMENT))).then((contains) => {
151151
return contains ?
152-
{ ff: { d: [splitUpdateNotification.payload as ISplit], t: splitUpdateNotification.changeNumber } } :
152+
{ ff: { d: [updateNotification.payload as ISplit], t: updateNotification.changeNumber } } :
153153
splitChangesFetcher(since, noCache, till, rbSince, _promiseDecorator);
154154
}) :
155-
{ rbs: { d: [splitUpdateNotification.payload as IRBSegment], t: splitUpdateNotification.changeNumber } } :
155+
{ rbs: { d: [updateNotification.payload as IRBSegment], t: updateNotification.changeNumber } } :
156156
splitChangesFetcher(since, noCache, till, rbSince, _promiseDecorator)
157157
)
158158
.then((splitChanges: ISplitChangesResponse) => {

src/sync/streaming/__tests__/dataMocks.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,21 +255,21 @@ export const splitNotifications = [
255255
{
256256
compression: 0,
257257
data: 'eyJ0cmFmZmljVHlwZU5hbWUiOiJ1c2VyIiwiaWQiOiJkNDMxY2RkMC1iMGJlLTExZWEtOGE4MC0xNjYwYWRhOWNlMzkiLCJuYW1lIjoibWF1cm9famF2YSIsInRyYWZmaWNBbGxvY2F0aW9uIjoxMDAsInRyYWZmaWNBbGxvY2F0aW9uU2VlZCI6LTkyMzkxNDkxLCJzZWVkIjotMTc2OTM3NzYwNCwic3RhdHVzIjoiQUNUSVZFIiwia2lsbGVkIjpmYWxzZSwiZGVmYXVsdFRyZWF0bWVudCI6Im9mZiIsImNoYW5nZU51bWJlciI6MTY4NDMyOTg1NDM4NSwiYWxnbyI6MiwiY29uZmlndXJhdGlvbnMiOnt9LCJjb25kaXRpb25zIjpbeyJjb25kaXRpb25UeXBlIjoiV0hJVEVMSVNUIiwibWF0Y2hlckdyb3VwIjp7ImNvbWJpbmVyIjoiQU5EIiwibWF0Y2hlcnMiOlt7Im1hdGNoZXJUeXBlIjoiV0hJVEVMSVNUIiwibmVnYXRlIjpmYWxzZSwid2hpdGVsaXN0TWF0Y2hlckRhdGEiOnsid2hpdGVsaXN0IjpbImFkbWluIiwibWF1cm8iLCJuaWNvIl19fV19LCJwYXJ0aXRpb25zIjpbeyJ0cmVhdG1lbnQiOiJvZmYiLCJzaXplIjoxMDB9XSwibGFiZWwiOiJ3aGl0ZWxpc3RlZCJ9LHsiY29uZGl0aW9uVHlwZSI6IlJPTExPVVQiLCJtYXRjaGVyR3JvdXAiOnsiY29tYmluZXIiOiJBTkQiLCJtYXRjaGVycyI6W3sia2V5U2VsZWN0b3IiOnsidHJhZmZpY1R5cGUiOiJ1c2VyIn0sIm1hdGNoZXJUeXBlIjoiSU5fU0VHTUVOVCIsIm5lZ2F0ZSI6ZmFsc2UsInVzZXJEZWZpbmVkU2VnbWVudE1hdGNoZXJEYXRhIjp7InNlZ21lbnROYW1lIjoibWF1ci0yIn19XX0sInBhcnRpdGlvbnMiOlt7InRyZWF0bWVudCI6Im9uIiwic2l6ZSI6MH0seyJ0cmVhdG1lbnQiOiJvZmYiLCJzaXplIjoxMDB9LHsidHJlYXRtZW50IjoiVjQiLCJzaXplIjowfSx7InRyZWF0bWVudCI6InY1Iiwic2l6ZSI6MH1dLCJsYWJlbCI6ImluIHNlZ21lbnQgbWF1ci0yIn0seyJjb25kaXRpb25UeXBlIjoiUk9MTE9VVCIsIm1hdGNoZXJHcm91cCI6eyJjb21iaW5lciI6IkFORCIsIm1hdGNoZXJzIjpbeyJrZXlTZWxlY3RvciI6eyJ0cmFmZmljVHlwZSI6InVzZXIifSwibWF0Y2hlclR5cGUiOiJBTExfS0VZUyIsIm5lZ2F0ZSI6ZmFsc2V9XX0sInBhcnRpdGlvbnMiOlt7InRyZWF0bWVudCI6Im9uIiwic2l6ZSI6MH0seyJ0cmVhdG1lbnQiOiJvZmYiLCJzaXplIjoxMDB9LHsidHJlYXRtZW50IjoiVjQiLCJzaXplIjowfSx7InRyZWF0bWVudCI6InY1Iiwic2l6ZSI6MH1dLCJsYWJlbCI6ImRlZmF1bHQgcnVsZSJ9XX0=',
258-
decoded: {trafficTypeName:'user',id:'d431cdd0-b0be-11ea-8a80-1660ada9ce39',name:'mauro_java',trafficAllocation:100,trafficAllocationSeed:-92391491,seed:-1769377604,status:'ACTIVE',killed:false,defaultTreatment:'off',changeNumber:1684329854385,algo:2,configurations:{},conditions:[{conditionType:'WHITELIST',matcherGroup:{combiner:'AND',matchers:[{matcherType:'WHITELIST',negate:false,whitelistMatcherData:{whitelist:['admin','mauro','nico']}}]},partitions:[{treatment:'off',size:100}],label:'whitelisted'},{conditionType:'ROLLOUT',matcherGroup:{combiner:'AND',matchers:[{keySelector:{trafficType:'user'},matcherType:'IN_SEGMENT',negate:false,userDefinedSegmentMatcherData:{segmentName:'maur-2'}}]},partitions:[{treatment:'on',size:0},{treatment:'off',size:100},{treatment:'V4',size:0},{treatment:'v5',size:0}],label:'in segment maur-2'},{conditionType:'ROLLOUT',matcherGroup:{combiner:'AND',matchers:[{keySelector:{trafficType:'user'},matcherType:'ALL_KEYS',negate:false}]},partitions:[{treatment:'on',size:0},{treatment:'off',size:100},{treatment:'V4',size:0},{treatment:'v5',size:0}],label:'default rule'}]}
258+
decoded: { trafficTypeName: 'user', id: 'd431cdd0-b0be-11ea-8a80-1660ada9ce39', name: 'mauro_java', trafficAllocation: 100, trafficAllocationSeed: -92391491, seed: -1769377604, status: 'ACTIVE', killed: false, defaultTreatment: 'off', changeNumber: 1684329854385, algo: 2, configurations: {}, conditions: [{ conditionType: 'WHITELIST', matcherGroup: { combiner: 'AND', matchers: [{ matcherType: 'WHITELIST', negate: false, whitelistMatcherData: { whitelist: ['admin', 'mauro', 'nico'] } }] }, partitions: [{ treatment: 'off', size: 100 }], label: 'whitelisted' }, { conditionType: 'ROLLOUT', matcherGroup: { combiner: 'AND', matchers: [{ keySelector: { trafficType: 'user' }, matcherType: 'IN_SEGMENT', negate: false, userDefinedSegmentMatcherData: { segmentName: 'maur-2' } }] }, partitions: [{ treatment: 'on', size: 0 }, { treatment: 'off', size: 100 }, { treatment: 'V4', size: 0 }, { treatment: 'v5', size: 0 }], label: 'in segment maur-2' }, { conditionType: 'ROLLOUT', matcherGroup: { combiner: 'AND', matchers: [{ keySelector: { trafficType: 'user' }, matcherType: 'ALL_KEYS', negate: false }] }, partitions: [{ treatment: 'on', size: 0 }, { treatment: 'off', size: 100 }, { treatment: 'V4', size: 0 }, { treatment: 'v5', size: 0 }], label: 'default rule' }] }
259259
},
260260
{
261261
compression: 1, // GZIP
262262
data: 'H4sIAAAAAAAA/8yT327aTBDFXyU612vJxoTgvUMfKB8qcaSapqoihAZ7DNusvWi9TpUiv3tl/pdQVb1qL+cwc3bOj/EGzlKeq3T6tuaYCoZEXbGFgMogkXXDIM0y31v4C/aCgMnrU9/3gl7Pp4yilMMIAuVusqDamvlXeiWIg/FAa5OSU6aEDHz/ip4wZ5Be1AmjoBsFAtVOCO56UXh31/O7ApUjV1eQGPw3HT+NIPCitG7bctIVC2ScU63d1DK5gksHCZPnEEhXVC45rosFW8ig1++GYej3g85tJEB6aSA7Aqkpc7Ws7XahCnLTbLVM7evnzalsUUHi8//j6WgyTqYQKMilK7b31tRryLa3WKiyfRCDeHhq2Dntiys+JS/J8THUt5VyrFXlHnYTQ3LU2h91yGdQVqhy+0RtTeuhUoNZ08wagTVZdxbBndF5vYVApb7z9m9pZgKaFqwhT+6coRHvg398nEweP/157Bd+S1hz6oxtm88O73B0jbhgM47nyej+YRRfgdNODDlXJWcJL9tUF5SqnRqfbtPr4LdcTHnk4rfp3buLOkG7+Pmp++vRM9w/wVblzX7Pm8OGfxf5YDKZfxh9SS6B/2Pc9t/7ja01o5k1PwIAAP//uTipVskEAAA=',
263-
decoded: {trafficTypeName:'user',id:'d431cdd0-b0be-11ea-8a80-1660ada9ce39',name:'mauro_java',trafficAllocation:100,trafficAllocationSeed:-92391491,seed:-1769377604,status:'ACTIVE',killed:false,defaultTreatment:'off',changeNumber:1684333081259,algo:2,configurations:{},conditions:[{conditionType:'WHITELIST',matcherGroup:{combiner:'AND',matchers:[{matcherType:'WHITELIST',negate:false,whitelistMatcherData:{whitelist:['admin','mauro','nico']}}]},partitions:[{treatment:'v5',size:100}],label:'whitelisted'},{conditionType:'ROLLOUT',matcherGroup:{combiner:'AND',matchers:[{keySelector:{trafficType:'user'},matcherType:'IN_SEGMENT',negate:false,userDefinedSegmentMatcherData:{segmentName:'maur-2'}}]},partitions:[{treatment:'on',size:0},{treatment:'off',size:100},{treatment:'V4',size:0},{treatment:'v5',size:0}],label:'in segment maur-2'},{conditionType:'ROLLOUT',matcherGroup:{combiner:'AND',matchers:[{keySelector:{trafficType:'user'},matcherType:'ALL_KEYS',negate:false}]},partitions:[{treatment:'on',size:0},{treatment:'off',size:100},{treatment:'V4',size:0},{treatment:'v5',size:0}],label:'default rule'}]}
263+
decoded: { trafficTypeName: 'user', id: 'd431cdd0-b0be-11ea-8a80-1660ada9ce39', name: 'mauro_java', trafficAllocation: 100, trafficAllocationSeed: -92391491, seed: -1769377604, status: 'ACTIVE', killed: false, defaultTreatment: 'off', changeNumber: 1684333081259, algo: 2, configurations: {}, conditions: [{ conditionType: 'WHITELIST', matcherGroup: { combiner: 'AND', matchers: [{ matcherType: 'WHITELIST', negate: false, whitelistMatcherData: { whitelist: ['admin', 'mauro', 'nico'] } }] }, partitions: [{ treatment: 'v5', size: 100 }], label: 'whitelisted' }, { conditionType: 'ROLLOUT', matcherGroup: { combiner: 'AND', matchers: [{ keySelector: { trafficType: 'user' }, matcherType: 'IN_SEGMENT', negate: false, userDefinedSegmentMatcherData: { segmentName: 'maur-2' } }] }, partitions: [{ treatment: 'on', size: 0 }, { treatment: 'off', size: 100 }, { treatment: 'V4', size: 0 }, { treatment: 'v5', size: 0 }], label: 'in segment maur-2' }, { conditionType: 'ROLLOUT', matcherGroup: { combiner: 'AND', matchers: [{ keySelector: { trafficType: 'user' }, matcherType: 'ALL_KEYS', negate: false }] }, partitions: [{ treatment: 'on', size: 0 }, { treatment: 'off', size: 100 }, { treatment: 'V4', size: 0 }, { treatment: 'v5', size: 0 }], label: 'default rule' }] }
264264
},
265265
{
266266
compression: 2, // ZLIB
267267
data: 'eJzMk99u2kwQxV8lOtdryQZj8N6hD5QPlThSTVNVEUKDPYZt1jZar1OlyO9emf8lVFWv2ss5zJyd82O8hTWUZSqZvW04opwhUVdsIKBSSKR+10vS1HWW7pIdz2NyBjRwHS8IXEopTLgbQqDYT+ZUm3LxlV4J4mg81LpMyKqygPRc94YeM6eQTtjphp4fegLVXvD6Qdjt9wPXF6gs2bqCxPC/2eRpDIEXpXXblpGuWCDljGptZ4bJ5lxYSJRZBoFkTcWKozpfsoH0goHfCXpB6PfcngDpVQnZEUjKIlOr2uwWqiC3zU5L1aF+3p7LFhUkPv8/mY2nk3gGgZxssmZzb8p6A9n25ktVtA9iGI3ODXunQ3HDp+AVWT6F+rZWlrWq7MN+YkSWWvuTDvkMSnNV7J6oTdl6qKTEvGnmjcCGjL2IYC/ovPYgUKnvvPtbmrmApiVryLM7p2jE++AfH6fTx09/HvuF32LWnNjStM0Xh3c8ukZcsZlEi3h8/zCObsBpJ0acqYLTmFdtqitK1V6NzrfpdPBbLmVx4uK26e27izpDu/r5yf/16AXun2Cr4u6w591xw7+LfDidLj6Mv8TXwP8xbofv/c7UmtHMmx8BAAD//0fclvU=',
268-
decoded: {trafficTypeName:'user',id:'d431cdd0-b0be-11ea-8a80-1660ada9ce39',name:'mauro_java',trafficAllocation:100,trafficAllocationSeed:-92391491,seed:-1769377604,status:'ACTIVE',killed:false,defaultTreatment:'off',changeNumber:1684265694505,algo:2,configurations:{},conditions:[{conditionType:'WHITELIST',matcherGroup:{combiner:'AND',matchers:[{matcherType:'WHITELIST',negate:false,whitelistMatcherData:{whitelist:['admin','mauro','nico']}}]},partitions:[{treatment:'v5',size:100}],label:'whitelisted'},{conditionType:'ROLLOUT',matcherGroup:{combiner:'AND',matchers:[{keySelector:{trafficType:'user'},matcherType:'IN_SEGMENT',negate:false,userDefinedSegmentMatcherData:{segmentName:'maur-2'}}]},partitions:[{treatment:'on',size:0},{treatment:'off',size:100},{treatment:'V4',size:0},{treatment:'v5',size:0}],label:'in segment maur-2'},{conditionType:'ROLLOUT',matcherGroup:{combiner:'AND',matchers:[{keySelector:{trafficType:'user'},matcherType:'ALL_KEYS',negate:false}]},partitions:[{treatment:'on',size:0},{treatment:'off',size:100},{treatment:'V4',size:0},{treatment:'v5',size:0}],label:'default rule'}]},
268+
decoded: { trafficTypeName: 'user', id: 'd431cdd0-b0be-11ea-8a80-1660ada9ce39', name: 'mauro_java', trafficAllocation: 100, trafficAllocationSeed: -92391491, seed: -1769377604, status: 'ACTIVE', killed: false, defaultTreatment: 'off', changeNumber: 1684265694505, algo: 2, configurations: {}, conditions: [{ conditionType: 'WHITELIST', matcherGroup: { combiner: 'AND', matchers: [{ matcherType: 'WHITELIST', negate: false, whitelistMatcherData: { whitelist: ['admin', 'mauro', 'nico'] } }] }, partitions: [{ treatment: 'v5', size: 100 }], label: 'whitelisted' }, { conditionType: 'ROLLOUT', matcherGroup: { combiner: 'AND', matchers: [{ keySelector: { trafficType: 'user' }, matcherType: 'IN_SEGMENT', negate: false, userDefinedSegmentMatcherData: { segmentName: 'maur-2' } }] }, partitions: [{ treatment: 'on', size: 0 }, { treatment: 'off', size: 100 }, { treatment: 'V4', size: 0 }, { treatment: 'v5', size: 0 }], label: 'in segment maur-2' }, { conditionType: 'ROLLOUT', matcherGroup: { combiner: 'AND', matchers: [{ keySelector: { trafficType: 'user' }, matcherType: 'ALL_KEYS', negate: false }] }, partitions: [{ treatment: 'on', size: 0 }, { treatment: 'off', size: 100 }, { treatment: 'V4', size: 0 }, { treatment: 'v5', size: 0 }], label: 'default rule' }] },
269269
},
270270
{
271271
compression: 2, // ZLIB
272272
data: 'eJxsUdFu4jAQ/JVqnx3JDjTh/JZCrj2JBh0EqtOBIuNswKqTIMeuxKH8+ykhiKrqiyXvzM7O7lzAGlEUSqbnEyaiRODgGjRAQOXAIQ/puPB96tHHIPQYQ/QmFNErxEgG44DKnI2AQHXtTOI0my6WcXZAmxoUtsTKvil7nNZVoQ5RYdFERh7VBwK5TY60rqWwqq6AM0q/qa8Qc+As/EHZ5HHMCDR9wQ/9kIajcEygscK6BjhEy+nLr008AwLvSuuOVgjdIIEcC+H03RZw2Hg/n88JEJBHUR0wceUeDXAWTAIWPAYsZEFAQOhDDdwnIPslnOk9NcAvNwEOly3IWtdmC3wLe+1wCy0Q2Hh/zNvTV9xg3sFtr5irQe3v5f7twgAOy8V8vlinQKAUVh7RPJvanbrBsi73qurMQpTM7oSrzjueV6hR2tp05E8J39MV1hq1d7YrWWxsZ2cQGYjzeLXK0pcoyRbLLP69juZZuuiyxoPo2oa7ukqYc+JKNEq+XgVmwopucC6sGMSS9etTvAQCH0I7BO7Ttt21BE7C2E8XsN+l06h/CJy25CveH/eGM0rbHQEt9qiHnR62jtKR7N/8wafQ7tr/AQAA//8S4fPB',
273-
decoded: {trafficTypeName:'user',id:'d704f220-0567-11ee-80ee-fa3c6460cd13',name:'NET_CORE_getTreatmentWithConfigAfterArchive',trafficAllocation:100,trafficAllocationSeed:179018541,seed:272707374,status:'ARCHIVED',killed:false,defaultTreatment:'V-FGyN',changeNumber:1686165617166,algo:2,configurations:{'V-FGyN':'{"color":"blue"}','V-YrWB':'{"color":"red"}'},conditions:[{conditionType:'ROLLOUT',matcherGroup:{combiner:'AND',matchers:[{keySelector:{trafficType:'user',attribute:'test'},matcherType:'LESS_THAN_OR_EQUAL_TO',negate:false,unaryNumericMatcherData:{dataType:'NUMBER',value:20}}]},partitions:[{treatment:'V-FGyN',size:0},{treatment:'V-YrWB',size:100}],label:'test \u003c\u003d 20'}]}
273+
decoded: { trafficTypeName: 'user', id: 'd704f220-0567-11ee-80ee-fa3c6460cd13', name: 'NET_CORE_getTreatmentWithConfigAfterArchive', trafficAllocation: 100, trafficAllocationSeed: 179018541, seed: 272707374, status: 'ARCHIVED', killed: false, defaultTreatment: 'V-FGyN', changeNumber: 1686165617166, algo: 2, configurations: { 'V-FGyN': '{"color":"blue"}', 'V-YrWB': '{"color":"red"}' }, conditions: [{ conditionType: 'ROLLOUT', matcherGroup: { combiner: 'AND', matchers: [{ keySelector: { trafficType: 'user', attribute: 'test' }, matcherType: 'LESS_THAN_OR_EQUAL_TO', negate: false, unaryNumericMatcherData: { dataType: 'NUMBER', value: 20 } }] }, partitions: [{ treatment: 'V-FGyN', size: 0 }, { treatment: 'V-YrWB', size: 100 }], label: 'test \u003c\u003d 20' }] }
274274
}
275275
];

0 commit comments

Comments
 (0)